00001
00047 #ifndef INC_MGUI_DLGSHELL_H
00048 #define INC_MGUI_DLGSHELL_H
00049
00050 #ifndef INC_MGUI_SHELL_H
00051 #include <mgui/shell.h>
00052 #endif
00053
00054 #ifndef INC_MGUI_CTRL_H
00055 #include <mgui/ctrl.h>
00056 #endif
00057
00058
00059 namespace MGUI {
00060
00069 class DLGSHELL : public MGUI::SHELL {
00070 public:
00071
00073 enum STYLE {
00074 STYLE_Default = 0x0000,
00075 STYLE_Resizable = 0x0001,
00076 STYLE_ContextHelp = 0x0002,
00077 STYLE_AllowMinimize = 0x0004,
00078 STYLE_AllowMaximize = 0x0008,
00079 STYLE_CenterOnScreen = 0x0010,
00080 STYLE_CenterOnMouse = 0x0020,
00081 STYLE_DeleteOnClose = 0x0040,
00082 STYLE_ToolWindow = 0x0080,
00083 STYLE_AllowMenuBar = 0x0100,
00084 STYLE_NoDestroyModal = 0x0200,
00085 STYLE_KeepOnTop = 0x0400,
00086 };
00087
00089 enum BUTTONS {
00090 BUTTONS_Default = 0x00,
00091 BUTTON_OK = 0x01,
00092 BUTTON_Cancel = 0x02,
00093 BUTTON_Apply = 0x04,
00094 BUTTON_Close = 0x08,
00095 BUTTON_Help = 0x10
00096 };
00097
00099 virtual ~DLGSHELL (
00100 ) = 0;
00101
00103 operator MDLGPARENT (
00104 ) const { return (GetDlgParent()); }
00105
00107 void Close (
00108 bool notify = true
00109 );
00110
00112 ERRVALUE CreateModeless (
00113 MDLGPARENT dlgparent,
00114 bool AllowMinimize = false
00115 );
00116
00119 ERRVALUE DoModal (
00120 MDLGPARENT dlgparent
00121 );
00122
00124 bool GetKeepOnTop (
00125 ) const;
00126
00128 bool IsOpen (
00129 ) const;
00130
00132 ERRVALUE Open (
00133 );
00134
00136 void SetApplyEnabled (
00137 bool enabled = true
00138 ) { m_ApplyPB.SetEnabled(enabled); }
00139
00143 void SetDeleteOnClose (
00144 bool DeleteOnClose = true
00145 );
00146
00148 void SetKeepOnTop (
00149 bool KeepOnTop = true
00150 );
00151
00153 void SetOkEnabled (
00154 bool enabled = true
00155 ) { m_OkPB.SetEnabled(enabled); }
00156
00157 protected:
00158
00160 DLGSHELL (
00161 const MISTRING& title,
00162 HELPID HelpID,
00163 STYLE style = STYLE_Default
00164 );
00165
00168 MGUI::CTRL_PUSHBUTTON& CreateButton (
00169 BUTTONS button
00170 );
00171
00174 MGUI::CTRL_PUSHBUTTON& CreateButton (
00175 BUTTONS button,
00176 const MISTRING& label
00177 );
00178
00185 void CreateButtons (
00186 BUTTONS buttons = BUTTONS_Default
00187 );
00188
00190 bool IsModal (
00191 ) const { return (m_IsModal); }
00192
00196 MGUI::LAYOUT_PANE& GetButtonPane (
00197 bool AddSpace = true
00198 );
00199
00202 ERRVALUE OpenModal (
00203 MDLGPARENT dlgparent
00204 );
00205
00207 void NotifyCancel (
00208 ) { v_OnCancel(); }
00209
00211 void NotifyOK (
00212 ) { v_OnOK(); }
00213
00217 void SetIgnoreNonVisible (
00218 bool IgnoreNonVisible = true
00219 ) { m_IgnoreNonVisible = IgnoreNonVisible; return; }
00220
00222 void SetReturnValue (
00223 int RetValue
00224 ) { m_RetValue = RetValue; }
00225
00229 void SetRootMargin (
00230 int RootMargin
00231 ) { m_RootMargin = RootMargin; }
00232
00236 void SetRootSpacing (
00237 int RootSpacing
00238 ) { m_RootSpacing = RootSpacing; }
00239
00243 void SetStyle (
00244 STYLE style
00245 ) { m_Style = style; }
00246
00248 DEPRECATED void UpdateLayout (
00249 ) { }
00250
00253 ERRVALUE WaitForClose ();
00254
00255
00256
00264 virtual void v_OnCancel ();
00265
00275 virtual void v_OnOK ();
00276
00277 private:
00278
00279 #ifndef GENERATING_DOXYGEN_OUTPUT
00280
00281 STYLE m_Style;
00282 bool m_IsModal;
00283 bool m_IgnoreNonVisible;
00284 ERRVALUE m_RetValue;
00285 int m_RootSpacing;
00286 int m_RootMargin;
00287
00288 LAYOUT_PANE m_ButtonPane;
00289 CTRL_PUSHBUTTON m_OkPB;
00290 CTRL_PUSHBUTTON m_CancelPB;
00291 CTRL_PUSHBUTTON m_ApplyPB;
00292 CTRL_PUSHBUTTON m_HelpPB;
00293
00295 ERRVALUE CreateDlg (
00296 MDLGPARENT dlgparent,
00297 bool modal = false,
00298 bool AllowMinimize = false
00299 );
00300
00301 void OnOpen () { v_OnOpen(); }
00302
00303 DLGSHELL (const DLGSHELL&);
00304 DLGSHELL& operator= (const DLGSHELL&);
00305
00306
00307
00308 void v_Destroy ();
00309
00310 #endif // GENERATING_DOXYGEN_OUTPUT
00311
00312
00313
00322 virtual ERRVALUE v_CreateContent () = 0;
00323
00326 virtual void v_OnApply ();
00327
00329 virtual void v_OnClose ();
00330
00333 virtual void v_OnCloseRequest ();
00334
00336 virtual void v_OnDestroy ();
00337
00339 virtual void v_OnOpen ();
00340
00341 };
00342
00343 #ifndef GENERATING_DOXYGEN_OUTPUT
00344 DEFINE_ENUM_OP_BITWISE(DLGSHELL::BUTTONS)
00345 DEFINE_ENUM_OP_BITWISE(DLGSHELL::STYLE)
00346 #endif
00347
00348 }
00349
00350
00351 #endif // INC_MGUI_DLGSHELL_H