00001
00021 #ifndef INC_MGUI_POPUP_H
00022 #define INC_MGUI_POPUP_H
00023
00024 #ifndef INC_MGUI_LAYOUT_H
00025 #include <mgui/layout.h>
00026 #endif
00027
00028 #if !defined(INC_MI32_XBASE_H) && defined(X_NATIVE)
00029 #include <mi32/xbase.h>
00030 #endif
00031
00032 namespace MGUI {
00033
00034
00041 class POPUP {
00042 public:
00043
00044 enum LOCATION {
00045 LOCATION_Xmin = 0x00,
00046 LOCATION_Xmax = 0x01,
00047 LOCATION_Xcenter = 0x02,
00048 LOCATION_Ymin = 0x00,
00049 LOCATION_Ymax = 0x04,
00050 LOCATION_Ycenter = 0x08,
00051 LOCATION_XminYmin = (LOCATION_Xmin|LOCATION_Ymin),
00052 LOCATION_XminYmax = (LOCATION_Xmin|LOCATION_Ymax),
00053 LOCATION_X = 0x03,
00054 LOCATION_Y = 0x0C,
00055 };
00056
00058 POPUP ();
00059
00061 virtual ~POPUP ();
00062
00064 ERRVALUE Create (
00065 MDLGPARENT dlgparent
00066 );
00067
00069 void Destroy ();
00070
00072 bool IsCreated (
00073 ) const {
00074 return (m_shell != 0);
00075 }
00076
00080 ERRVALUE Open (
00081 const MGUI::CTRL& ctrl,
00082 const LRECT2D *pRect = 0,
00083 int width = 0,
00084 int height = 0,
00085 LOCATION locInCtrl = LOCATION_XminYmax,
00086 LOCATION locInPopup = LOCATION_XminYmin
00087 );
00088
00092 ERRVALUE Open (
00093 MGUI::POINT pt,
00094 int width = 0,
00095 int height = 0,
00096 LOCATION locInPopup = LOCATION_XminYmin
00097 );
00098
00099 protected:
00100
00102 void Close (ERRVALUE RetValue);
00103
00105 MDLGPARENT GetDlgParent (
00106 ) const { return (m_dlgparent); }
00107
00110 LAYOUT_PANE_BASE& GetMainPane (
00111 ) { return (m_MainPane); }
00112
00116 void SetReturnValue (
00117 ERRVALUE RetValue
00118 );
00119
00120 private:
00121 #ifndef GENERATING_DOXYGEN_OUTPUT
00122
00123 Widget m_shell;
00124 MDLGPARENT m_dlgparent;
00125 LAYOUT_PANE_SHELL m_MainPane;
00126 ERRVALUE m_RetValue;
00127
00128 static void OnNotifyXEvent (Widget, POPUP*, XEvent*, Boolean*);
00129
00130
00131 POPUP (const POPUP&);
00132 POPUP& operator= (const POPUP&);
00133
00134 #endif // GENERATING_DOXYGEN_OUTPUT
00135
00136
00137
00145 virtual ERRVALUE v_CreateContent () = 0;
00146
00149 virtual void v_OnOpen ();
00150
00151 };
00152
00153 #ifndef GENERATING_DOXYGEN_OUTPUT
00154 DEFINE_ENUM_OP_BITWISE(POPUP::LOCATION)
00155 #endif
00156
00157
00158
00159 }
00160
00161 #endif // INC_MGUI_POPUP_H