00001 00066 #ifndef INC_GRE_SYSTEM_H 00067 #define INC_GRE_SYSTEM_H 00068 00069 #ifndef INC_GRE_OBJECTBASE_H 00070 #include <gre/objectbase.h> 00071 #endif 00072 00073 #ifndef INC_MI32_CRITSEC_H 00074 #include <mi32/critsec.h> 00075 #endif 00076 00077 #ifndef INC_MI32_SIMPLEAR_H 00078 #include <mi32/simplear.h> 00079 #endif 00080 00081 00082 #ifndef GENERATING_DOXYGEN_OUTPUT 00083 class MILOG; 00084 namespace RVC { 00085 class OBJITEMLIST; 00086 } 00087 namespace MITHREAD { 00088 class POOL; 00089 } 00090 #endif 00091 00092 00093 namespace GRE { 00094 //=================================================================================================================== 00095 00102 class SYSTEM : public GRE::OBJECT { 00103 public: 00104 00105 enum AUTOOPEN { 00106 AUTOOPEN_None, 00107 AUTOOPEN_Layout, 00108 AUTOOPEN_Group, 00109 AUTOOPEN_Layer 00110 }; 00111 00114 static GRE::GROUP* GetActiveGroup (); 00115 00118 static GRE::LAYER* GetActiveLayer (); 00119 00122 static GRE::LAYOUT* GetActiveLayout (); 00123 00125 static GRE::VIEW* GetActiveView ( 00126 ) { return (GetRef().m_ActiveView); } 00127 00129 static GRE::VIEWABLE* GetActiveViewable ( 00130 ) { return (GetRef().m_ActiveViewable); } 00131 00134 static AUTOOPEN GetAutoOpenList ( 00135 MDLGPARENT dlgparent, 00136 const SIMPLE_ARRAY<const char*>& cmdparms, 00137 RVC::OBJITEMLIST& ObjItemList 00138 ); 00139 00142 static GRE::GROUP* GetFirstGroup ( 00143 ) { return (GetRef().m_FirstGroup); } 00144 00147 static GRE::LAYOUT* GetFirstLayout ( 00148 ) { return (GetRef().m_FirstLayout); } 00149 00152 static GRE::VIEW* GetFirstView ( 00153 ) { return (GetRef().m_FirstView); } 00154 00157 static const char* GetGlobalIniGroup ( 00158 ) { return (GetRef().m_GlobalIniGroup); } 00159 00161 static MITHREAD::CRITICALSECTION& GetGroupCriticalSection ( 00162 ) { return (GetRef().m_GroupListSec); } 00163 00166 static GRE::GROUP* GetLastGroup ( 00167 ) { return (GetRef().m_LastGroup); } 00168 00171 static GRE::LAYOUT* GetLastLayout ( 00172 ) { return (GetRef().m_LastLayout); } 00173 00175 static MITHREAD::CRITICALSECTION& GetLayoutCriticalSection ( 00176 ) { return (GetRef().m_LayoutListSec); } 00177 00179 static MILOG& GetLog (); 00180 00182 static SYSTEM& GetRef (); 00183 00185 static bool GetReturnSerialReadErr ( 00186 ) { return (GetRef().m_ReturnSerialReadErr); } 00187 00188 #ifdef X_NATIVE 00191 static void* GetRgnMgrHandle ( 00192 ) { return (GetRef().PrivGetRgnMgrHandle()); } 00193 #endif 00194 00196 static MITHREAD::POOL& GetThreadPoolWeb ( 00197 ) { return (GetRef().PrivGetThreadPoolWeb()); } 00198 00200 static MITHREAD::CRITICALSECTION& GetViewCriticalSection ( 00201 ) { return (GetRef().m_ViewListSec); } 00202 00204 static bool HasDoneWarningGeoMixed ( 00205 ) { return (GetRef().m_DoneWarningGeoMixed); } 00206 00208 static bool HasOwnCustomization ( 00209 ) { return (GetRef().m_HasOwnCustomization); } 00210 00214 static void Init (); 00215 00216 #ifdef X_NATIVE 00221 static void InitX (); 00222 #endif 00223 00225 static bool IsMultiThreaded ( 00226 ) { return (GetRef().m_pThreadPool != 0); } 00227 00230 static void RegisterLayoutLayerTypes (); 00231 00234 static void SetActiveView ( 00235 GRE::VIEW *view 00236 ); 00237 00240 static void SetActiveViewable ( 00241 GRE::VIEWABLE *viewable 00242 ); 00243 00250 static void SetDoneWarningGeoMixed ( 00251 bool set = true 00252 ) { GetRef().m_DoneWarningGeoMixed = set; } 00253 00256 static void SetFirstGroup ( 00257 GRE::GROUP* group 00258 ) { GetRef().m_FirstGroup = group; } 00259 00262 static void SetFirstLayout ( 00263 GRE::LAYOUT* layout 00264 ) { GetRef().m_FirstLayout = layout; } 00265 00268 static void SetFirstView ( 00269 GRE::VIEW* view 00270 ) { GetRef().m_FirstView = view; } 00271 00274 static void SetGlobalIniGroup ( 00275 const char *IniGroup 00276 ); 00277 00280 static void SetLastGroup ( 00281 GRE::GROUP* group 00282 ) { GetRef().m_LastGroup = group; } 00283 00286 static void SetLastLayout ( 00287 GRE::LAYOUT* layout 00288 ) { GetRef().m_LastLayout = layout; } 00289 00292 static void SetLogOwnFile ( 00293 bool LogOwnFile = true 00294 ); 00295 00298 static void SetMultiThreaded ( 00299 ); 00300 00302 static void SetReturnSerialReadErr ( 00303 bool set = true 00304 ) { GetRef().m_ReturnSerialReadErr = set; }; 00305 00308 static void Stop ( 00309 ); 00310 00311 #ifdef X_NATIVE 00314 static void StopX ( 00315 ); 00316 #endif 00317 00318 #ifdef USE_MGUI 00320 static GRE::CTRL_TREEVIEW* TreeViewGetPtr ( 00321 ) { return (GetRef().m_pTreeView); } 00322 #endif 00323 00324 #ifdef USE_MGUI 00327 static void TreeViewSetPtr ( 00328 GRE::CTRL_TREEVIEW *pTreeView 00329 ) { GetRef().m_pTreeView = pTreeView; } 00330 #endif 00331 00332 #ifndef GENERATING_DOXYGEN_OUTPUT 00333 ~SYSTEM (); 00334 #endif 00335 00336 private: 00337 #ifndef GENERATING_DOXYGEN_OUTPUT 00338 00339 static bool s_InitDone; 00340 00341 void *m_RgnMgrHandle; // Region manager handle 00342 #ifdef USE_MGUI 00343 GRE::CTRL_TREEVIEW *m_pTreeView; 00344 #endif 00345 bool m_DoneWarningGeoMixed; 00346 bool m_ReturnSerialReadErr; // Return error when loading group/layout instead of continuing 00347 bool m_HasOwnCustomization; 00348 MITHREAD::CRITICALSECTION m_GroupListSec; 00349 MITHREAD::CRITICALSECTION m_LayoutListSec; 00350 MITHREAD::CRITICALSECTION m_ViewListSec; 00351 GRE::GROUP *m_FirstGroup; 00352 GRE::GROUP *m_LastGroup; 00353 GRE::LAYOUT *m_FirstLayout; 00354 GRE::LAYOUT *m_LastLayout; 00355 GRE::VIEW *m_FirstView; 00356 GRE::VIEWABLE *m_ActiveViewable; 00357 GRE::VIEW *m_ActiveView; 00358 char *m_GlobalIniGroup; 00359 MITHREAD::POOL *m_pThreadPool; 00360 MITHREAD::POOL *m_pThreadPoolWeb; // Thread pool for web layers 00361 MILOG *m_pLog; 00362 00363 SYSTEM (); 00364 #ifdef X_NATIVE 00365 void* PrivGetRgnMgrHandle (); 00366 #endif 00367 MITHREAD::POOL& PrivGetThreadPoolWeb (); 00368 00370 virtual bool v_Destroy (bool NotifyParent); 00371 virtual MICONSTRUCT* v_GetIcon () const; 00372 virtual const char* v_GetTypeName () const; 00373 00374 SYSTEM (const SYSTEM&); 00375 SYSTEM& operator= (const SYSTEM&); 00376 00377 #endif 00378 }; 00379 00380 //=================================================================================================================== 00381 } // End namespace GRE 00382 00383 00384 #endif // INC_GRE_SYSTEM_H
1.6.1