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 #ifndef INC_MGUI_FORMBTXT_H
00031 #define INC_MGUI_FORMBTXT_H
00032
00033 #ifndef INC_MGUI_CTRL_H
00034 #include <mgui/ctrl.h>
00035 #endif
00036
00037
00038 namespace MGUI {
00039
00040
00041
00042 class FORM_BUTTONTEXT : public MGUI::FORM_COMPOSITE {
00043 public:
00044
00045
00046 FORM_BUTTONTEXT (
00047 );
00048
00049
00050 void ClearText (
00051 ) {
00052 #ifdef WIN32_MFC
00053 m_Text.SetWindowText("");
00054 #else
00055 m_Text.ClearValue(false);
00056 #endif
00057 }
00058
00059
00060 void Create (
00061 MGUI::LAYOUT_PANE_BASE& ParentPane,
00062 const char *label,
00063 int width = 0,
00064 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_Expand
00065 );
00066
00067
00068 void Create (
00069 MGUI::LAYOUT_PANE_BASE& ParentPane,
00070 const MISTRING& label,
00071 int width = 0,
00072 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_Expand
00073 );
00074
00075
00076 CTRL_PUSHBUTTON& GetButton (
00077 ) { return (m_Button); }
00078
00079
00080 void SetText (
00081 const MISTRING& string
00082 );
00083
00084 protected:
00085
00086 virtual void OnPressed (
00087 ) = 0;
00088
00089 private:
00090 #ifndef GENERATING_DOXYGEN_OUTPUT
00091 #ifdef WIN32_MFC
00092 class MyEdit : public CEdit {
00093 public:
00094 virtual BOOL PreCreateWindow (CREATESTRUCT& cs);
00095 };
00096 MyEdit m_Text;
00097 #else
00098 CTRL_EDIT_STRING m_Text;
00099 #endif
00100
00101 CTRL_PUSHBUTTON_T<FORM_BUTTONTEXT> m_Button;
00102
00103 void CreateText (int width, LAYOUT_SIZEALIGN sizealign);
00104
00105 FORM_BUTTONTEXT (const FORM_BUTTONTEXT&);
00106 FORM_BUTTONTEXT& operator= (const FORM_BUTTONTEXT&);
00107 #endif // GENERATING_DOXYGEN_OUTPUT
00108 };
00109
00110
00111
00112
00113 template <class _CT> class FORM_BUTTONTEXT_T : public MGUI::FORM_BUTTONTEXT {
00114 public:
00115
00116
00117 FORM_BUTTONTEXT_T (
00118 ): m_pContainer(0), m_pfOnPressed(0) { }
00119
00120
00121 void Create (
00122 MGUI::LAYOUT_PANE_BASE& ParentPane,
00123 const char* label,
00124 _CT *pContainer,
00125 void (_CT::*pfOnPressed)(),
00126 int width = 0,
00127 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_Expand
00128 ) {
00129 m_pContainer = pContainer;
00130 m_pfOnPressed = pfOnPressed;
00131 FORM_BUTTONTEXT::Create(ParentPane,label,width,sizealign);
00132 return;
00133 }
00134
00135
00136 void Create (
00137 MGUI::LAYOUT_PANE_BASE& ParentPane,
00138 const MISTRING& label,
00139 _CT *pContainer,
00140 void (_CT::*pfOnPressed)(),
00141 int width = 0,
00142 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_Expand
00143 ) {
00144 m_pContainer = pContainer;
00145 m_pfOnPressed = pfOnPressed;
00146 FORM_BUTTONTEXT::Create(ParentPane,label,width,sizealign);
00147 return;
00148 }
00149
00150 private:
00151 #ifndef GENERATING_DOXYGEN_OUTPUT
00152 _CT *m_pContainer;
00153 void (_CT::*m_pfOnPressed)();
00154
00155
00156 virtual void OnPressed (
00157 ) { (m_pContainer->*m_pfOnPressed)(); }
00158 #endif // GENERATING_DOXYGEN_OUTPUT
00159 };
00160
00161
00162
00163
00164 }
00165
00166 #endif // INC_MGUI_FORMBTXT_H