1/*
2 * Copyright 2001-2009, Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _OPTION_POP_UP_H
6#define _OPTION_POP_UP_H
7
8
9#include <OptionControl.h>
10
11
12class BMenuField;
13
14
15class BOptionPopUp : public BOptionControl {
16public:
17								BOptionPopUp(BRect frame, const char* name,
18									const char* label, BMessage* message,
19									uint32 resizeMask = B_FOLLOW_LEFT
20										| B_FOLLOW_TOP,
21									uint32 flags = B_WILL_DRAW);
22								BOptionPopUp(BRect frame, const char* name,
23									const char* label,  BMessage* message,
24									bool fixed, uint32 resizeMask
25										= B_FOLLOW_LEFT | B_FOLLOW_TOP,
26									uint32 flags = B_WILL_DRAW);
27								BOptionPopUp(const char* name,
28									const char* label, BMessage* message,
29									uint32 flags = B_WILL_DRAW);
30
31	virtual						~BOptionPopUp();
32
33			BMenuField*			MenuField();
34
35	virtual	bool				GetOptionAt(int32 index, const char** _name,
36									int32* _value);
37	virtual	void				RemoveOptionAt(int32 index);
38	virtual	int32				CountOptions() const;
39	virtual	status_t 			AddOptionAt(const char* name, int32 value,
40									int32 index);
41
42	virtual	void				AllAttached();
43	virtual	void				MessageReceived(BMessage* message);
44	virtual	void				SetLabel(const char* text);
45	virtual	void				SetValue(int32 value);
46	virtual	void				SetEnabled(bool enabled);
47	virtual	void				GetPreferredSize(float* _width,
48									float* _height);
49	virtual	void				ResizeToPreferred();
50
51	virtual	int32				SelectedOption(const char** _name = 0,
52									int32* _value = 0) const;
53private:
54	// Forbidden and FBC padding
55								BOptionPopUp();
56								BOptionPopUp(const BOptionPopUp& other);
57			BOptionPopUp&		operator=(const BOptionPopUp& other);
58
59
60	virtual	status_t		 	_Reserved_OptionControl_0(void*, ...);
61	virtual	status_t 		 	_Reserved_OptionControl_1(void*, ...);
62	virtual	status_t 		 	_Reserved_OptionControl_2(void*, ...);
63	virtual	status_t 		 	_Reserved_OptionControl_3(void*, ...);
64
65	virtual	status_t 		 	_Reserved_OptionPopUp_0(void*, ...);
66	virtual	status_t 		 	_Reserved_OptionPopUp_1(void*, ...);
67	virtual	status_t 		 	_Reserved_OptionPopUp_2(void*, ...);
68	virtual	status_t 		 	_Reserved_OptionPopUp_3(void*, ...);
69	virtual	status_t 		 	_Reserved_OptionPopUp_4(void*, ...);
70	virtual	status_t 		 	_Reserved_OptionPopUp_5(void*, ...);
71	virtual	status_t		 	_Reserved_OptionPopUp_6(void*, ...);
72	virtual	status_t		 	_Reserved_OptionPopUp_7(void*, ...);
73
74private:
75			BMenuField*			fMenuField;
76
77			uint32				_reserved[8];
78};
79
80#endif // _OPTION_POP_UP_H
81