00001
00044 #ifndef INC_MGUI_TOPSHELL_H
00045 #define INC_MGUI_TOPSHELL_H
00046
00047 #ifndef INC_MGUI_SHELLBASE_H
00048 #include <mgui/shell.h>
00049 #endif
00050
00051 #ifndef INC_MGUI_CTRL_H
00052 #include <mgui/ctrl.h>
00053 #endif
00054
00055
00056 namespace MGUI {
00057
00058 enum DOCKEDGE {
00059 DOCKEDGE_Left = 0x1000,
00060 DOCKEDGE_Top = 0x2000,
00061 DOCKEDGE_Right = 0x4000,
00062 DOCKEDGE_Bottom = 0x8000,
00063 DOCKEDGE_Any = 0xF000
00064 };
00065
00066 #ifndef GENERATING_DOXYGEN_OUTPUT
00067 DEFINE_ENUM_OP_BITWISE(DOCKEDGE)
00068 #endif
00069
00070
00073 class TOPSHELL : public MGUI::SHELL {
00074 public:
00075
00076 enum BUTTONS {
00077 BUTTON_RunJob = 0x02,
00078 BUTTON_SaveJob = 0x04,
00079 BUTTON_Close = 0x08,
00080 BUTTON_Help = 0x10,
00081 BUTTON_Run = 0x20,
00082 BUTTON_Exit = 0x40,
00083 BUTTONS_Default = 0x00
00084 };
00085
00086 enum STYLE {
00087 STYLE_Default = 0x0000,
00088 STYLE_NoClose = 0x0001,
00089 STYLE_NoMinimize = 0x0002,
00090 STYLE_NoMaximize = 0x0004,
00091 STYLE_NoResize = 0x0008,
00092 STYLE_RightAlignButtons = 0x0010,
00093 };
00094
00096 TOPSHELL (
00097 HELPID helpid
00098 );
00099
00101 virtual ~TOPSHELL ();
00102
00104 void Create (
00105 const char *PlacementKey = 0,
00106 TEXTID TitleID = TEXTID__None,
00107 STYLE style = TOPSHELL::STYLE_Default,
00108 ICONID WindowIcon = ICONID_TITLE_TNTMIPS
00109 );
00110
00114 void EnableDocking (
00115 DOCKEDGE dockedges = DOCKEDGE_Any
00116 );
00117
00119 bool IsVisible () const;
00120
00123 void SetVisible (
00124 bool visible = true
00125 );
00126
00127 protected:
00128
00131 MGUI::CTRL_PUSHBUTTON& CreateButton (
00132 BUTTONS button
00133 );
00134
00137 MGUI::CTRL_PUSHBUTTON& CreateButton (
00138 BUTTONS button,
00139 const MISTRING& label
00140 );
00141
00149 void CreateButton (
00150 MGUI::CTRL_PUSHBUTTON& Button,
00151 const MISTRING& label
00152 );
00153
00156 void CreateButtons (
00157 BUTTONS buttons = BUTTONS_Default
00158 );
00159
00163 void SetIgnoreNonVisible (
00164 bool IgnoreNonVisible = true
00165 ) { m_IgnoreNonVisible = IgnoreNonVisible; return; }
00166
00170 void SetRootSpacing (
00171 int RootSpacing,
00172 int RootBorder = 0
00173 ) { m_RootSpacing = RootSpacing; m_RootBorder = RootBorder; }
00174
00176 void SetRunEnabled (
00177 bool enabled = true
00178 );
00179
00180 private:
00181 #ifndef GENERATING_DOXYGEN_OUTPUT
00182
00183 Widget m_form;
00184 bool m_IgnoreNonVisible;
00185 int m_RootSpacing;
00186 int m_RootBorder;
00187 STYLE m_Style;
00188
00189 LAYOUT_PANE m_ButtonPane;
00190 CTRL_PUSHBUTTON m_RunJobPB;
00191 CTRL_PUSHBUTTON m_SaveJobPB;
00192 CTRL_PUSHBUTTON m_RunPB;
00193 CTRL_PUSHBUTTON m_ExitPB;
00194 CTRL_PUSHBUTTON m_HelpPB;
00195 LAYOUT_EQUALIZER *m_Equalizer;
00196
00200 MGUI::LAYOUT_PANE& GetButtonPane (
00201 bool AddSpace = true
00202 );
00203
00204 void EqualizeButtons ();
00205
00206
00207 void v_Destroy ();
00208
00209 #endif // GENERATING_DOXYGEN_OUTPUT
00210
00211
00212
00219 virtual int v_CreateContent () = 0;
00220
00222 virtual void v_OnClose ();
00223
00227 virtual void v_OnCloseRequest () = 0;
00228
00230 virtual void v_OnOpen ();
00231
00233 virtual void v_OnRun ();
00234
00236 virtual void v_OnRunJob ();
00237
00239 virtual void v_OnSaveJob ();
00240 };
00241
00242 #ifndef GENERATING_DOXYGEN_OUTPUT
00243 DEFINE_ENUM_OP_BITWISE(TOPSHELL::BUTTONS)
00244 DEFINE_ENUM_OP_BITWISE(TOPSHELL::STYLE)
00245 #endif
00246
00247 }
00248
00249 #endif // INC_MGUI_TOPSHELL_H