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