18643b098SAxel Dörfler/*
2f95b5003SStefano Ceccherini * Copyright 2003-2010, Haiku, Inc.
38643b098SAxel Dörfler * Distributed under the terms of the MIT license.
48643b098SAxel Dörfler *
58643b098SAxel Dörfler * Authors:
63c5bd344SStefano Ceccherini *		Stefano Ceccherini <stefano.ceccherini@gmail.com>
78643b098SAxel Dörfler */
88643b098SAxel Dörfler
94ac5ee1cSStefano Ceccherini#include <GroupLayout.h>
1037a821f6SStefano Ceccherini#include <MenuField.h>
1137a821f6SStefano Ceccherini#include <MenuItem.h>
1237a821f6SStefano Ceccherini#include <OptionPopUp.h>
1337a821f6SStefano Ceccherini#include <PopUpMenu.h>
1437a821f6SStefano Ceccherini
158643b098SAxel Dörfler#include <stdio.h>
168643b098SAxel Dörfler
1737a821f6SStefano Ceccherini
1837a821f6SStefano Ceccheriniconst float kLabelSpace = 8.0;
1937a821f6SStefano Ceccheriniconst float kWidthModifier = 25.0;
2037a821f6SStefano Ceccheriniconst float kHeightModifier = 10.0;
2137a821f6SStefano Ceccherini
22d8b4d83dSStefano Ceccherini
2337a821f6SStefano Ceccherini/*! \brief Creates and initializes a BOptionPopUp.
2437a821f6SStefano Ceccherini	\param frame The frame of the control.
2537a821f6SStefano Ceccherini	\param name The name of the control.
2637a821f6SStefano Ceccherini	\param label The label which will be displayed by the control.
2737a821f6SStefano Ceccherini	\param message The message which the control will send when operated.
2837a821f6SStefano Ceccherini	\param resize Resizing flags. They will be passed to the base class.
2937a821f6SStefano Ceccherini	\param flags View flags. They will be passed to the base class.
3037a821f6SStefano Ceccherini*/
31f95b5003SStefano CeccheriniBOptionPopUp::BOptionPopUp(BRect frame, const char* name, const char* label,
32f95b5003SStefano Ceccherini		BMessage* message, uint32 resize, uint32 flags)
338643b098SAxel Dörfler	: BOptionControl(frame, name, label, message, resize, flags)
3437a821f6SStefano Ceccherini{
35f95b5003SStefano Ceccherini	BPopUpMenu* popUp = new BPopUpMenu(label, true, true);
363c5bd344SStefano Ceccherini	fMenuField = new BMenuField(Bounds(), "_menu", label, popUp);
373c5bd344SStefano Ceccherini	AddChild(fMenuField);
3837a821f6SStefano Ceccherini}
3937a821f6SStefano Ceccherini
4037a821f6SStefano Ceccherini
4137a821f6SStefano Ceccherini/*! \brief Creates and initializes a BOptionPopUp.
4237a821f6SStefano Ceccherini	\param frame The frame of the control.
4337a821f6SStefano Ceccherini	\param name The name of the control.
4437a821f6SStefano Ceccherini	\param label The label which will be displayed by the control.
4537a821f6SStefano Ceccherini	\param message The message which the control will send when operated.
46d8b4d83dSStefano Ceccherini	\param fixed It's passed to the BMenuField constructor. If it's true,
47d8b4d83dSStefano Ceccherini		the BMenuField size will never change.
4837a821f6SStefano Ceccherini	\param resize Resizing flags. They will be passed to the base class.
4937a821f6SStefano Ceccherini	\param flags View flags. They will be passed to the base class.
5037a821f6SStefano Ceccherini*/
51f95b5003SStefano CeccheriniBOptionPopUp::BOptionPopUp(BRect frame, const char* name, const char* label,
52f95b5003SStefano Ceccherini		BMessage* message, bool fixed, uint32 resize, uint32 flags)
538643b098SAxel Dörfler	: BOptionControl(frame, name, label, message, resize, flags)
5437a821f6SStefano Ceccherini{
55f95b5003SStefano Ceccherini	BPopUpMenu* popUp = new BPopUpMenu(label, true, true);
563c5bd344SStefano Ceccherini	fMenuField = new BMenuField(Bounds(), "_menu", label, popUp, fixed);
573c5bd344SStefano Ceccherini	AddChild(fMenuField);
5837a821f6SStefano Ceccherini}
5937a821f6SStefano Ceccherini
6037a821f6SStefano Ceccherini
61510fae5fSStefano CeccheriniBOptionPopUp::BOptionPopUp(const char* name, const char* label,
62510fae5fSStefano Ceccherini		BMessage* message, uint32 flags)
63510fae5fSStefano Ceccherini	: BOptionControl(name, label, message, flags)
64510fae5fSStefano Ceccherini{
654ac5ee1cSStefano Ceccherini	// TODO: Is this really needed ? Without this, the view
664ac5ee1cSStefano Ceccherini	// doesn't get layoutted properly
674ac5ee1cSStefano Ceccherini	SetLayout(new BGroupLayout(B_HORIZONTAL));
684ac5ee1cSStefano Ceccherini
69f95b5003SStefano Ceccherini	BPopUpMenu* popUp = new BPopUpMenu(label, true, true);
70510fae5fSStefano Ceccherini	fMenuField = new BMenuField("_menu", label, popUp);
71510fae5fSStefano Ceccherini	AddChild(fMenuField);
72510fae5fSStefano Ceccherini}
73510fae5fSStefano Ceccherini
74510fae5fSStefano Ceccherini
7537a821f6SStefano CeccheriniBOptionPopUp::~BOptionPopUp()
7637a821f6SStefano Ceccherini{
7737a821f6SStefano Ceccherini}
7837a821f6SStefano Ceccherini
7937a821f6SStefano Ceccherini
8037a821f6SStefano Ceccherini/*! \brief Returns a pointer to the BMenuField used internally.
8137a821f6SStefano Ceccherini	\return A Pointer to the BMenuField which the class uses internally.
8237a821f6SStefano Ceccherini*/
83f95b5003SStefano CeccheriniBMenuField*
8437a821f6SStefano CeccheriniBOptionPopUp::MenuField()
8537a821f6SStefano Ceccherini{
863c5bd344SStefano Ceccherini	return fMenuField;
8737a821f6SStefano Ceccherini}
8837a821f6SStefano Ceccherini
8937a821f6SStefano Ceccherini
9037a821f6SStefano Ceccherini/*! \brief Gets the option at the given index.
9137a821f6SStefano Ceccherini	\param index The option's index.
9237a821f6SStefano Ceccherini	\param outName A pointer to a string which will held the option's name,
9337a821f6SStefano Ceccherini		as soon as the function returns.
9437a821f6SStefano Ceccherini	\param outValue A pointer to an integer which will held the option's value,
9537a821f6SStefano Ceccherini		as soon as the funciton returns.
9637a821f6SStefano Ceccherini	\return \c true if The wanted option was found,
9737a821f6SStefano Ceccherini			\c false otherwise.
9837a821f6SStefano Ceccherini*/
9937a821f6SStefano Ceccherinibool
100f95b5003SStefano CeccheriniBOptionPopUp::GetOptionAt(int32 index, const char** outName, int32* outValue)
10137a821f6SStefano Ceccherini{
10237a821f6SStefano Ceccherini	bool result = false;
103f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
1048643b098SAxel Dörfler
10537a821f6SStefano Ceccherini	if (menu != NULL) {
106f95b5003SStefano Ceccherini		BMenuItem* item = menu->ItemAt(index);
10737a821f6SStefano Ceccherini		if (item != NULL) {
10837a821f6SStefano Ceccherini			if (outName != NULL)
10937a821f6SStefano Ceccherini				*outName = item->Label();
110076cb5a7SCedric Degea			if (outValue != NULL && item->Message() != NULL)
11137a821f6SStefano Ceccherini				item->Message()->FindInt32("be:value", outValue);
11237a821f6SStefano Ceccherini
11337a821f6SStefano Ceccherini			result = true;
11437a821f6SStefano Ceccherini		}
11537a821f6SStefano Ceccherini	}
1168643b098SAxel Dörfler
11737a821f6SStefano Ceccherini	return result;
11837a821f6SStefano Ceccherini}
11937a821f6SStefano Ceccherini
12037a821f6SStefano Ceccherini
12137a821f6SStefano Ceccherini/*! \brief Removes the option at the given index.
12237a821f6SStefano Ceccherini	\param index The index of the option to remove.
12337a821f6SStefano Ceccherini*/
12437a821f6SStefano Ceccherinivoid
12537a821f6SStefano CeccheriniBOptionPopUp::RemoveOptionAt(int32 index)
12637a821f6SStefano Ceccherini{
127f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
128f95b5003SStefano Ceccherini	if (menu != NULL)
129f95b5003SStefano Ceccherini		delete menu->RemoveItem(index);
13037a821f6SStefano Ceccherini}
13137a821f6SStefano Ceccherini
13237a821f6SStefano Ceccherini
13337a821f6SStefano Ceccherini/*! \brief Returns the amount of "Options" (entries) contained in the control.
13437a821f6SStefano Ceccherini*/
13537a821f6SStefano Ceccheriniint32
13637a821f6SStefano CeccheriniBOptionPopUp::CountOptions() const
13737a821f6SStefano Ceccherini{
138f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
13937a821f6SStefano Ceccherini	return (menu != NULL) ? menu->CountItems() : 0;
14037a821f6SStefano Ceccherini}
14137a821f6SStefano Ceccherini
142d8b4d83dSStefano Ceccherini
14337a821f6SStefano Ceccherini/*! \brief Adds an option to the control, at the given position.
14437a821f6SStefano Ceccherini	\param name The name of the option to add.
14537a821f6SStefano Ceccherini	\param value The value of the option.
14637a821f6SStefano Ceccherini	\param index The index which the new option will have in the control.
14737a821f6SStefano Ceccherini	\return \c B_OK if the option was added succesfully,
14837a821f6SStefano Ceccherini		\c B_BAD_VALUE if the given index was invalid.
14937a821f6SStefano Ceccherini		\c B_ERROR if something else happened.
15037a821f6SStefano Ceccherini*/
15137a821f6SStefano Ceccherinistatus_t
152f95b5003SStefano CeccheriniBOptionPopUp::AddOptionAt(const char* name, int32 value, int32 index)
15337a821f6SStefano Ceccherini{
154f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
155ddd7b87dSStefano Ceccherini	if (menu == NULL)
156ddd7b87dSStefano Ceccherini		return B_ERROR;
157ddd7b87dSStefano Ceccherini
158ddd7b87dSStefano Ceccherini	int32 numItems = menu->CountItems();
159ddd7b87dSStefano Ceccherini	if (index < 0 || index > numItems)
160ddd7b87dSStefano Ceccherini		return B_BAD_VALUE;
161ddd7b87dSStefano Ceccherini
162f95b5003SStefano Ceccherini	BMessage* message = MakeValueMessage(value);
163ddd7b87dSStefano Ceccherini	if (message == NULL)
164b5cd88a5SStefano Ceccherini		return B_NO_MEMORY;
165ddd7b87dSStefano Ceccherini
166f95b5003SStefano Ceccherini	BMenuItem* newItem = new BMenuItem(name, message);
167ddd7b87dSStefano Ceccherini	if (newItem == NULL) {
168ddd7b87dSStefano Ceccherini		delete message;
169b5cd88a5SStefano Ceccherini		return B_NO_MEMORY;
17037a821f6SStefano Ceccherini	}
171ddd7b87dSStefano Ceccherini
172f95b5003SStefano Ceccherini	if (!menu->AddItem(newItem, index)) {
173f95b5003SStefano Ceccherini		delete newItem;
174f95b5003SStefano Ceccherini		return B_NO_MEMORY;
175f95b5003SStefano Ceccherini	}
176f95b5003SStefano Ceccherini
1770e726a56SJérôme Duval	newItem->SetTarget(this);
178ddd7b87dSStefano Ceccherini
179ddd7b87dSStefano Ceccherini	// We didnt' have any items before, so select the newly added one
180ddd7b87dSStefano Ceccherini	if (numItems == 0)
181ddd7b87dSStefano Ceccherini		SetValue(value);
182ddd7b87dSStefano Ceccherini
183ddd7b87dSStefano Ceccherini	return B_OK;
18437a821f6SStefano Ceccherini}
18537a821f6SStefano Ceccherini
18637a821f6SStefano Ceccherini
1873d06e082SAdrien Destugues// BeOS R5 compatibility, do not remove
18837a821f6SStefano Ceccherinivoid
18937a821f6SStefano CeccheriniBOptionPopUp::AllAttached()
1903d06e082SAdrien Destugues{
1913d06e082SAdrien Destugues	BOptionControl::AllAttached();
1923d06e082SAdrien Destugues}
1933d06e082SAdrien Destugues
1943d06e082SAdrien Destugues
1953d06e082SAdrien Destugues/*! \brief Sets the divider for the BMenuField and target the menu items to ourselves.
1963d06e082SAdrien Destugues*/
1973d06e082SAdrien Destuguesvoid
1983d06e082SAdrien DestuguesBOptionPopUp::AttachedToWindow()
19937a821f6SStefano Ceccherini{
2003bcb6981SAdrien Destugues	BOptionControl::AttachedToWindow();
2013bcb6981SAdrien Destugues
202f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
20337a821f6SStefano Ceccherini	if (menu != NULL) {
2043c5bd344SStefano Ceccherini		float labelWidth = fMenuField->StringWidth(fMenuField->Label());
205d47ada16SAdrien Destugues		if (labelWidth > 0.f)
206c278afdeSAdrien Destugues			labelWidth += kLabelSpace;
207d47ada16SAdrien Destugues		fMenuField->SetDivider(labelWidth);
2080e726a56SJérôme Duval		menu->SetTargetForItems(this);
20937a821f6SStefano Ceccherini	}
21037a821f6SStefano Ceccherini}
21137a821f6SStefano Ceccherini
21237a821f6SStefano Ceccherini
21337a821f6SStefano Ceccherinivoid
214f95b5003SStefano CeccheriniBOptionPopUp::MessageReceived(BMessage* message)
21537a821f6SStefano Ceccherini{
21637a821f6SStefano Ceccherini	BOptionControl::MessageReceived(message);
21737a821f6SStefano Ceccherini}
21837a821f6SStefano Ceccherini
21937a821f6SStefano Ceccherini
22037a821f6SStefano Ceccherini/*! \brief Set the label of the control.
22137a821f6SStefano Ceccherini	\param text The new label of the control.
22237a821f6SStefano Ceccherini*/
22337a821f6SStefano Ceccherinivoid
224f95b5003SStefano CeccheriniBOptionPopUp::SetLabel(const char* text)
22537a821f6SStefano Ceccherini{
22637a821f6SStefano Ceccherini	BControl::SetLabel(text);
2273c5bd344SStefano Ceccherini	fMenuField->SetLabel(text);
22837a821f6SStefano Ceccherini	// We are not sure the menu can keep the whole
229f95b5003SStefano Ceccherini	// string as label, so we check against the current label
2303c5bd344SStefano Ceccherini	float newWidth = fMenuField->StringWidth(fMenuField->Label());
231c278afdeSAdrien Destugues	if (newWidth > 0.f)
232c278afdeSAdrien Destugues		newWidth += kLabelSpace;
233c278afdeSAdrien Destugues	fMenuField->SetDivider(newWidth);
23437a821f6SStefano Ceccherini}
23537a821f6SStefano Ceccherini
23637a821f6SStefano Ceccherini
23737a821f6SStefano Ceccherini/*! \brief Set the control's value.
23837a821f6SStefano Ceccherini	\param value The new value of the control.
23937a821f6SStefano Ceccherini	Selects the option which has the given value.
24037a821f6SStefano Ceccherini*/
24137a821f6SStefano Ceccherinivoid
24237a821f6SStefano CeccheriniBOptionPopUp::SetValue(int32 value)
24337a821f6SStefano Ceccherini{
24437a821f6SStefano Ceccherini	BControl::SetValue(value);
245f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
246ddd7b87dSStefano Ceccherini	if (menu == NULL)
247ddd7b87dSStefano Ceccherini		return;
248eb1086edSStefano Ceccherini
24937a821f6SStefano Ceccherini	int32 numItems = menu->CountItems();
25037a821f6SStefano Ceccherini	for (int32 i = 0; i < numItems; i++) {
251f95b5003SStefano Ceccherini		BMenuItem* item = menu->ItemAt(i);
25237a821f6SStefano Ceccherini		if (item && item->Message()) {
253ddd7b87dSStefano Ceccherini			int32 itemValue;
254ddd7b87dSStefano Ceccherini			item->Message()->FindInt32("be:value", &itemValue);
255ddd7b87dSStefano Ceccherini			if (itemValue == value) {
25637a821f6SStefano Ceccherini				item->SetMarked(true);
25737a821f6SStefano Ceccherini				break;
25837a821f6SStefano Ceccherini			}
25937a821f6SStefano Ceccherini		}
26037a821f6SStefano Ceccherini	}
26137a821f6SStefano Ceccherini}
26237a821f6SStefano Ceccherini
26337a821f6SStefano Ceccherini
26437a821f6SStefano Ceccherini/*! \brief Enables or disables the control.
26537a821f6SStefano Ceccherini	\param state The new control's state.
26637a821f6SStefano Ceccherini*/
26737a821f6SStefano Ceccherinivoid
26837a821f6SStefano CeccheriniBOptionPopUp::SetEnabled(bool state)
26937a821f6SStefano Ceccherini{
27037a821f6SStefano Ceccherini	BOptionControl::SetEnabled(state);
271c8b83b17SAdrien Destugues	if (fMenuField)
272c8b83b17SAdrien Destugues		fMenuField->SetEnabled(state);
27337a821f6SStefano Ceccherini}
27437a821f6SStefano Ceccherini
27537a821f6SStefano Ceccherini
27637a821f6SStefano Ceccherini/*! \brief Gets the preferred size for the control.
27737a821f6SStefano Ceccherini	\param width A pointer to a float which will held the control's
27837a821f6SStefano Ceccherini		preferred width.
27937a821f6SStefano Ceccherini	\param height A pointer to a float which will held the control's
28037a821f6SStefano Ceccherini		preferred height.
28137a821f6SStefano Ceccherini*/
28237a821f6SStefano Ceccherinivoid
2838643b098SAxel DörflerBOptionPopUp::GetPreferredSize(float* _width, float* _height)
28437a821f6SStefano Ceccherini{
2854ac5ee1cSStefano Ceccherini	float width, height;
2864ac5ee1cSStefano Ceccherini	fMenuField->GetPreferredSize(&width, &height);
2874ac5ee1cSStefano Ceccherini
2888643b098SAxel Dörfler	if (_height != NULL) {
2898643b098SAxel Dörfler		font_height fontHeight;
2904ac5ee1cSStefano Ceccherini		GetFontHeight(&fontHeight);
2914ac5ee1cSStefano Ceccherini
2924ac5ee1cSStefano Ceccherini		*_height = max_c(height, fontHeight.ascent + fontHeight.descent
2934ac5ee1cSStefano Ceccherini			+ fontHeight.leading + kHeightModifier);
2948643b098SAxel Dörfler	}
2958643b098SAxel Dörfler
2968643b098SAxel Dörfler	if (_width != NULL) {
2974ac5ee1cSStefano Ceccherini		width += fMenuField->StringWidth(BControl::Label())
2984ac5ee1cSStefano Ceccherini			+ kLabelSpace + kWidthModifier;
2994ac5ee1cSStefano Ceccherini		*_width = width;
30037a821f6SStefano Ceccherini	}
30137a821f6SStefano Ceccherini}
30237a821f6SStefano Ceccherini
30337a821f6SStefano Ceccherini
30437a821f6SStefano Ceccherini/*! \brief Resizes the control to its preferred size.
30537a821f6SStefano Ceccherini*/
30637a821f6SStefano Ceccherinivoid
30737a821f6SStefano CeccheriniBOptionPopUp::ResizeToPreferred()
30837a821f6SStefano Ceccherini{
30937a821f6SStefano Ceccherini	float width, height;
31037a821f6SStefano Ceccherini	GetPreferredSize(&width, &height);
31137a821f6SStefano Ceccherini	ResizeTo(width, height);
31237a821f6SStefano Ceccherini
3133c5bd344SStefano Ceccherini	float newWidth = fMenuField->StringWidth(BControl::Label());
3143c5bd344SStefano Ceccherini	fMenuField->SetDivider(newWidth + kLabelSpace);
31537a821f6SStefano Ceccherini}
31637a821f6SStefano Ceccherini
31737a821f6SStefano Ceccherini
31837a821f6SStefano Ceccherini/*! \brief Gets the currently selected option.
31937a821f6SStefano Ceccherini	\param outName A pointer to a string which will held the option's name.
32037a821f6SStefano Ceccherini	\param outValue A pointer to an integer which will held the option's value.
32137a821f6SStefano Ceccherini	\return The index of the selected option.
32237a821f6SStefano Ceccherini*/
32337a821f6SStefano Ceccheriniint32
324f95b5003SStefano CeccheriniBOptionPopUp::SelectedOption(const char** outName, int32* outValue) const
32537a821f6SStefano Ceccherini{
326f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
327f95b5003SStefano Ceccherini	if (menu == NULL)
328f95b5003SStefano Ceccherini		return B_ERROR;
329f95b5003SStefano Ceccherini
330f95b5003SStefano Ceccherini	BMenuItem* marked = menu->FindMarked();
331f95b5003SStefano Ceccherini	if (marked == NULL)
332f95b5003SStefano Ceccherini		return -1;
333f95b5003SStefano Ceccherini
334f95b5003SStefano Ceccherini	if (outName != NULL)
335f95b5003SStefano Ceccherini		*outName = marked->Label();
336f95b5003SStefano Ceccherini	if (outValue != NULL)
337f95b5003SStefano Ceccherini		marked->Message()->FindInt32("be:value", outValue);
33837a821f6SStefano Ceccherini
339f95b5003SStefano Ceccherini	return menu->IndexOf(marked);
34037a821f6SStefano Ceccherini}
34137a821f6SStefano Ceccherini
34237a821f6SStefano Ceccherini
343d8b4d83dSStefano Ceccherini// Private Unimplemented
344d8b4d83dSStefano CeccheriniBOptionPopUp::BOptionPopUp()
345d8b4d83dSStefano Ceccherini	:
346d8b4d83dSStefano Ceccherini	BOptionControl(BRect(), "", "", NULL)
347d8b4d83dSStefano Ceccherini{
348d8b4d83dSStefano Ceccherini}
349d8b4d83dSStefano Ceccherini
350d8b4d83dSStefano Ceccherini
351f95b5003SStefano CeccheriniBOptionPopUp::BOptionPopUp(const BOptionPopUp& clone)
352d8b4d83dSStefano Ceccherini	:
353d8b4d83dSStefano Ceccherini	BOptionControl(clone.Frame(), "", "", clone.Message())
354d8b4d83dSStefano Ceccherini{
355d8b4d83dSStefano Ceccherini}
356d8b4d83dSStefano Ceccherini
357d8b4d83dSStefano Ceccherini
358d8b4d83dSStefano CeccheriniBOptionPopUp &
359f95b5003SStefano CeccheriniBOptionPopUp::operator=(const BOptionPopUp& clone)
360d8b4d83dSStefano Ceccherini{
361b5cd88a5SStefano Ceccherini	return *this;
362d8b4d83dSStefano Ceccherini}
363d8b4d83dSStefano Ceccherini
364d8b4d83dSStefano Ceccherini
365d8b4d83dSStefano Ceccherini// FBC Stuff
36637a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionControl_0(void *, ...) { return B_ERROR; }
36737a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionControl_1(void *, ...) { return B_ERROR; }
36837a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionControl_2(void *, ...) { return B_ERROR; }
36937a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionControl_3(void *, ...) { return B_ERROR; }
37037a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_0(void *, ...) { return B_ERROR; }
37137a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_1(void *, ...) { return B_ERROR; }
37237a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_2(void *, ...) { return B_ERROR; }
37337a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_3(void *, ...) { return B_ERROR; }
37437a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_4(void *, ...) { return B_ERROR; }
37537a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_5(void *, ...) { return B_ERROR; }
37637a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_6(void *, ...) { return B_ERROR; }
37737a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_7(void *, ...) { return B_ERROR; }
378