OptionPopUp.cpp revision c278afde
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
18737a821f6SStefano Ceccherini/*! \brief Called to take special actions when the child views are attached.
18837a821f6SStefano Ceccherini	It's used to set correctly the divider for the BMenuField.
18937a821f6SStefano Ceccherini*/
19037a821f6SStefano Ceccherinivoid
19137a821f6SStefano CeccheriniBOptionPopUp::AllAttached()
19237a821f6SStefano Ceccherini{
193f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
19437a821f6SStefano Ceccherini	if (menu != NULL) {
1953c5bd344SStefano Ceccherini		float labelWidth = fMenuField->StringWidth(fMenuField->Label());
196d47ada16SAdrien Destugues		if (labelWidth > 0.f)
197c278afdeSAdrien Destugues			labelWidth += kLabelSpace;
198d47ada16SAdrien Destugues		fMenuField->SetDivider(labelWidth);
1990e726a56SJérôme Duval		menu->SetTargetForItems(this);
20037a821f6SStefano Ceccherini	}
20137a821f6SStefano Ceccherini}
20237a821f6SStefano Ceccherini
20337a821f6SStefano Ceccherini
20437a821f6SStefano Ceccherinivoid
205f95b5003SStefano CeccheriniBOptionPopUp::MessageReceived(BMessage* message)
20637a821f6SStefano Ceccherini{
20737a821f6SStefano Ceccherini	BOptionControl::MessageReceived(message);
20837a821f6SStefano Ceccherini}
20937a821f6SStefano Ceccherini
21037a821f6SStefano Ceccherini
21137a821f6SStefano Ceccherini/*! \brief Set the label of the control.
21237a821f6SStefano Ceccherini	\param text The new label of the control.
21337a821f6SStefano Ceccherini*/
21437a821f6SStefano Ceccherinivoid
215f95b5003SStefano CeccheriniBOptionPopUp::SetLabel(const char* text)
21637a821f6SStefano Ceccherini{
21737a821f6SStefano Ceccherini	BControl::SetLabel(text);
2183c5bd344SStefano Ceccherini	fMenuField->SetLabel(text);
21937a821f6SStefano Ceccherini	// We are not sure the menu can keep the whole
220f95b5003SStefano Ceccherini	// string as label, so we check against the current label
2213c5bd344SStefano Ceccherini	float newWidth = fMenuField->StringWidth(fMenuField->Label());
222c278afdeSAdrien Destugues	if (newWidth > 0.f)
223c278afdeSAdrien Destugues		newWidth += kLabelSpace;
224c278afdeSAdrien Destugues	fMenuField->SetDivider(newWidth);
22537a821f6SStefano Ceccherini}
22637a821f6SStefano Ceccherini
22737a821f6SStefano Ceccherini
22837a821f6SStefano Ceccherini/*! \brief Set the control's value.
22937a821f6SStefano Ceccherini	\param value The new value of the control.
23037a821f6SStefano Ceccherini	Selects the option which has the given value.
23137a821f6SStefano Ceccherini*/
23237a821f6SStefano Ceccherinivoid
23337a821f6SStefano CeccheriniBOptionPopUp::SetValue(int32 value)
23437a821f6SStefano Ceccherini{
23537a821f6SStefano Ceccherini	BControl::SetValue(value);
236f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
237ddd7b87dSStefano Ceccherini	if (menu == NULL)
238ddd7b87dSStefano Ceccherini		return;
239eb1086edSStefano Ceccherini
24037a821f6SStefano Ceccherini	int32 numItems = menu->CountItems();
24137a821f6SStefano Ceccherini	for (int32 i = 0; i < numItems; i++) {
242f95b5003SStefano Ceccherini		BMenuItem* item = menu->ItemAt(i);
24337a821f6SStefano Ceccherini		if (item && item->Message()) {
244ddd7b87dSStefano Ceccherini			int32 itemValue;
245ddd7b87dSStefano Ceccherini			item->Message()->FindInt32("be:value", &itemValue);
246ddd7b87dSStefano Ceccherini			if (itemValue == value) {
24737a821f6SStefano Ceccherini				item->SetMarked(true);
24837a821f6SStefano Ceccherini				break;
24937a821f6SStefano Ceccherini			}
25037a821f6SStefano Ceccherini		}
25137a821f6SStefano Ceccherini	}
25237a821f6SStefano Ceccherini}
25337a821f6SStefano Ceccherini
25437a821f6SStefano Ceccherini
25537a821f6SStefano Ceccherini/*! \brief Enables or disables the control.
25637a821f6SStefano Ceccherini	\param state The new control's state.
25737a821f6SStefano Ceccherini*/
25837a821f6SStefano Ceccherinivoid
25937a821f6SStefano CeccheriniBOptionPopUp::SetEnabled(bool state)
26037a821f6SStefano Ceccherini{
26137a821f6SStefano Ceccherini	BOptionControl::SetEnabled(state);
262c8b83b17SAdrien Destugues	if (fMenuField)
263c8b83b17SAdrien Destugues		fMenuField->SetEnabled(state);
26437a821f6SStefano Ceccherini}
26537a821f6SStefano Ceccherini
26637a821f6SStefano Ceccherini
26737a821f6SStefano Ceccherini/*! \brief Gets the preferred size for the control.
26837a821f6SStefano Ceccherini	\param width A pointer to a float which will held the control's
26937a821f6SStefano Ceccherini		preferred width.
27037a821f6SStefano Ceccherini	\param height A pointer to a float which will held the control's
27137a821f6SStefano Ceccherini		preferred height.
27237a821f6SStefano Ceccherini*/
27337a821f6SStefano Ceccherinivoid
2748643b098SAxel DörflerBOptionPopUp::GetPreferredSize(float* _width, float* _height)
27537a821f6SStefano Ceccherini{
2764ac5ee1cSStefano Ceccherini	float width, height;
2774ac5ee1cSStefano Ceccherini	fMenuField->GetPreferredSize(&width, &height);
2784ac5ee1cSStefano Ceccherini
2798643b098SAxel Dörfler	if (_height != NULL) {
2808643b098SAxel Dörfler		font_height fontHeight;
2814ac5ee1cSStefano Ceccherini		GetFontHeight(&fontHeight);
2824ac5ee1cSStefano Ceccherini
2834ac5ee1cSStefano Ceccherini		*_height = max_c(height, fontHeight.ascent + fontHeight.descent
2844ac5ee1cSStefano Ceccherini			+ fontHeight.leading + kHeightModifier);
2858643b098SAxel Dörfler	}
2868643b098SAxel Dörfler
2878643b098SAxel Dörfler	if (_width != NULL) {
2884ac5ee1cSStefano Ceccherini		width += fMenuField->StringWidth(BControl::Label())
2894ac5ee1cSStefano Ceccherini			+ kLabelSpace + kWidthModifier;
2904ac5ee1cSStefano Ceccherini		*_width = width;
29137a821f6SStefano Ceccherini	}
29237a821f6SStefano Ceccherini}
29337a821f6SStefano Ceccherini
29437a821f6SStefano Ceccherini
29537a821f6SStefano Ceccherini/*! \brief Resizes the control to its preferred size.
29637a821f6SStefano Ceccherini*/
29737a821f6SStefano Ceccherinivoid
29837a821f6SStefano CeccheriniBOptionPopUp::ResizeToPreferred()
29937a821f6SStefano Ceccherini{
30037a821f6SStefano Ceccherini	float width, height;
30137a821f6SStefano Ceccherini	GetPreferredSize(&width, &height);
30237a821f6SStefano Ceccherini	ResizeTo(width, height);
30337a821f6SStefano Ceccherini
3043c5bd344SStefano Ceccherini	float newWidth = fMenuField->StringWidth(BControl::Label());
3053c5bd344SStefano Ceccherini	fMenuField->SetDivider(newWidth + kLabelSpace);
30637a821f6SStefano Ceccherini}
30737a821f6SStefano Ceccherini
30837a821f6SStefano Ceccherini
30937a821f6SStefano Ceccherini/*! \brief Gets the currently selected option.
31037a821f6SStefano Ceccherini	\param outName A pointer to a string which will held the option's name.
31137a821f6SStefano Ceccherini	\param outValue A pointer to an integer which will held the option's value.
31237a821f6SStefano Ceccherini	\return The index of the selected option.
31337a821f6SStefano Ceccherini*/
31437a821f6SStefano Ceccheriniint32
315f95b5003SStefano CeccheriniBOptionPopUp::SelectedOption(const char** outName, int32* outValue) const
31637a821f6SStefano Ceccherini{
317f95b5003SStefano Ceccherini	BMenu* menu = fMenuField->Menu();
318f95b5003SStefano Ceccherini	if (menu == NULL)
319f95b5003SStefano Ceccherini		return B_ERROR;
320f95b5003SStefano Ceccherini
321f95b5003SStefano Ceccherini	BMenuItem* marked = menu->FindMarked();
322f95b5003SStefano Ceccherini	if (marked == NULL)
323f95b5003SStefano Ceccherini		return -1;
324f95b5003SStefano Ceccherini
325f95b5003SStefano Ceccherini	if (outName != NULL)
326f95b5003SStefano Ceccherini		*outName = marked->Label();
327f95b5003SStefano Ceccherini	if (outValue != NULL)
328f95b5003SStefano Ceccherini		marked->Message()->FindInt32("be:value", outValue);
32937a821f6SStefano Ceccherini
330f95b5003SStefano Ceccherini	return menu->IndexOf(marked);
33137a821f6SStefano Ceccherini}
33237a821f6SStefano Ceccherini
33337a821f6SStefano Ceccherini
334d8b4d83dSStefano Ceccherini// Private Unimplemented
335d8b4d83dSStefano CeccheriniBOptionPopUp::BOptionPopUp()
336d8b4d83dSStefano Ceccherini	:
337d8b4d83dSStefano Ceccherini	BOptionControl(BRect(), "", "", NULL)
338d8b4d83dSStefano Ceccherini{
339d8b4d83dSStefano Ceccherini}
340d8b4d83dSStefano Ceccherini
341d8b4d83dSStefano Ceccherini
342f95b5003SStefano CeccheriniBOptionPopUp::BOptionPopUp(const BOptionPopUp& clone)
343d8b4d83dSStefano Ceccherini	:
344d8b4d83dSStefano Ceccherini	BOptionControl(clone.Frame(), "", "", clone.Message())
345d8b4d83dSStefano Ceccherini{
346d8b4d83dSStefano Ceccherini}
347d8b4d83dSStefano Ceccherini
348d8b4d83dSStefano Ceccherini
349d8b4d83dSStefano CeccheriniBOptionPopUp &
350f95b5003SStefano CeccheriniBOptionPopUp::operator=(const BOptionPopUp& clone)
351d8b4d83dSStefano Ceccherini{
352b5cd88a5SStefano Ceccherini	return *this;
353d8b4d83dSStefano Ceccherini}
354d8b4d83dSStefano Ceccherini
355d8b4d83dSStefano Ceccherini
356d8b4d83dSStefano Ceccherini// FBC Stuff
35737a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionControl_0(void *, ...) { return B_ERROR; }
35837a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionControl_1(void *, ...) { return B_ERROR; }
35937a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionControl_2(void *, ...) { return B_ERROR; }
36037a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionControl_3(void *, ...) { return B_ERROR; }
36137a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_0(void *, ...) { return B_ERROR; }
36237a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_1(void *, ...) { return B_ERROR; }
36337a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_2(void *, ...) { return B_ERROR; }
36437a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_3(void *, ...) { return B_ERROR; }
36537a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_4(void *, ...) { return B_ERROR; }
36637a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_5(void *, ...) { return B_ERROR; }
36737a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_6(void *, ...) { return B_ERROR; }
36837a821f6SStefano Ceccherinistatus_t BOptionPopUp::_Reserved_OptionPopUp_7(void *, ...) { return B_ERROR; }
369