00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef INC_MGUI_FORMRBTN_H
00038 #define INC_MGUI_FORMRBTN_H
00039
00040 #ifndef INC_MGUI_CTRL_H
00041 #include <mgui/ctrl.h>
00042 #endif
00043
00044 #ifndef INC_MGUI_LISTITEM_H
00045 #include <mgui/listitem.h>
00046 #endif
00047
00048
00049 namespace MGUI {
00050
00051
00052
00053 class FORM_RADIOBUTTONS : public MGUI::FORM_COMPOSITE {
00054 public:
00055
00056
00057 FORM_RADIOBUTTONS (
00058 );
00059
00060
00061 virtual ~FORM_RADIOBUTTONS (
00062 );
00063
00064
00065 void AddButton (
00066 ID id,
00067 const char *string
00068 );
00069
00070
00071 void AddButton (
00072 ID id,
00073 const UNICODE* string
00074 );
00075
00076
00077 void AddButton (
00078 ID id,
00079 ICONID iconid,
00080 const char *tooltip,
00081 int iconsize = 0
00082 );
00083
00084
00085 void AddButton (
00086 ID id,
00087 ICONID iconid,
00088 const UNICODE* tooltip,
00089 int iconsize = 0
00090 );
00091
00092
00093 void AddButtons (
00094 const MGUI::LISTITEMDEF *buttons
00095 );
00096
00097
00098 void Create (
00099 MGUI::LAYOUT_PANE_BASE& ParentPane,
00100 const MGUI::LISTITEMDEF *buttons = 0,
00101 MGUI::LAYOUT_ORIENTATION orientation = MGUI::LAYOUT_ORIENTATION_Vertical,
00102 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00103 int ChildSpacing = 4
00104 );
00105
00106
00107
00108 ID GetSelectedID (
00109 ) const;
00110
00111
00112 void SetEnabled (
00113 ID id,
00114 bool enabled = true
00115 );
00116
00117
00118
00119 void SetSelectedID (
00120 ID id
00121 );
00122
00123 protected:
00124
00125
00126 virtual void OnSelection ();
00127
00128 private:
00129 #ifndef GENERATING_DOXYGEN_OUTPUT
00130
00131 class BUTTON : public MGUI::CTRL_TOGGLEBUTTON {
00132 public:
00133 BUTTON (FORM_RADIOBUTTONS& Container) : m_Container(Container) { }
00134 private:
00135 FORM_RADIOBUTTONS& m_Container;
00136 virtual void OnPressed ();
00137 };
00138 friend class MGUI::FORM_RADIOBUTTONS::BUTTON;
00139
00140 typedef MILIST<BUTTON*> BUTTONLIST;
00141
00142 BUTTONLIST m_ButtonList;
00143 SIMPLE_ARRAY<ID> m_IdArray;
00144
00145 CTRL_TOGGLEBUTTON::STYLE GetRadioStyle (
00146 ) const {
00147 #ifdef WIN32_MFC
00148 return (m_ButtonList.IsEmpty() ? CTRL_TOGGLEBUTTON::STYLE_RadioFirst : CTRL_TOGGLEBUTTON::STYLE_Radio);
00149 #else
00150 return (CTRL_TOGGLEBUTTON::STYLE_Radio);
00151 #endif
00152 }
00153
00154 FORM_RADIOBUTTONS (const FORM_RADIOBUTTONS&);
00155 FORM_RADIOBUTTONS& operator= (const FORM_RADIOBUTTONS&);
00156 #endif // GENERATING_DOXYGEN_OUTPUT
00157 };
00158
00159
00160
00161 template <class _CT> class FORM_RADIOBUTTONS_T : public MGUI::FORM_RADIOBUTTONS {
00162 public:
00163
00164
00165 explicit FORM_RADIOBUTTONS_T (
00166 ): m_pContainer(0), m_pfOnSelection(0) { }
00167
00168
00169 void Create (
00170 MGUI::LAYOUT_PANE_BASE& ParentPane,
00171 _CT *pContainer,
00172 void (_CT::*pfOnSelection)(),
00173 const MGUI::LISTITEMDEF *buttons = 0,
00174 MGUI::LAYOUT_ORIENTATION orientation = MGUI::LAYOUT_ORIENTATION_Vertical,
00175 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00176 int ChildSpacing = 4
00177 ) {
00178 m_pContainer = pContainer;
00179 m_pfOnSelection = pfOnSelection;
00180 FORM_RADIOBUTTONS::Create(ParentPane,buttons,orientation,sizealign,ChildSpacing);
00181 }
00182
00183 private:
00184 #ifndef GENERATING_DOXYGEN_OUTPUT
00185 _CT *m_pContainer;
00186 void (_CT::*m_pfOnSelection)();
00187
00188 virtual void OnSelection (
00189 ) { (m_pContainer->*m_pfOnSelection)(); }
00190 #endif // GENERATING_DOXYGEN_OUTPUT
00191 };
00192
00193
00194
00195
00196 }
00197
00198 #endif // INC_MGUI_FORMRBTN_H