![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtUserInterfaceAssembler.h,v $ $Revision: 1.20 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtUserInterfaceAssembler_H_ 00014 #define DtUserInterfaceAssembler_H_ 00015 00016 #include <vrvCore/vrvCore.h> 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 #include <vrvCore/DtDe.h> 00019 #include <vrvCore/DtUserInterfaceBuilder.h> 00020 #include <boost/unordered_map.hpp> 00021 #include <list> 00022 #include <string> 00023 00024 namespace makVrv 00025 { 00026 class DtDeMainWindow; 00027 00031 class DT_DLL_VRVCORE DtUserInterfaceAssembler : public DtVirtualBaseClass 00032 { 00033 public: 00034 00035 typedef std::pair<std::string, bool> WidgetCreationOrder; 00036 typedef boost::unordered_map<std::string, WidgetCreationOrder> WidgetCreationOrderMap; 00037 typedef std::list<std::string> BuilderList; 00038 00039 public: 00040 00043 static DtUserInterfaceAssembler& instance(DtDe& de); 00044 00046 virtual ~DtUserInterfaceAssembler(); 00047 00052 virtual bool destroyBuilder(const std::string& builderName, DtUserInterfaceBuilder* builder); 00053 00056 virtual DtUserInterfaceBuilder* findMenuBuilder(const std::string& builderName) const; 00057 00060 virtual void registerMenuBuilder(const std::string& builderName, DtUserInterfaceBuilder* builder, 00061 int modeFlags); 00062 00065 virtual DtUserInterfaceBuilder* findMenuItemBuilder(const std::string& builderName) const; 00066 00069 virtual void registerMenuItemBuilder(const std::string& builderName, DtUserInterfaceBuilder* builder, 00070 int modeFlags); 00071 00074 virtual DtUserInterfaceBuilder* findWidgetBuilder(const std::string& builderName) const; 00075 00078 virtual void registerWidgetBuilder(const std::string& builderName, DtUserInterfaceBuilder* builder, 00079 int modeFlags); 00080 00083 virtual void assemble(DtDe& de, DtDeMainWindow& mainWindow); 00084 00087 virtual void createControlBefore(const std::string& control, const std::string& before); 00088 00091 virtual void createControlAfter(const std::string& control, const std::string& after); 00092 00094 virtual void removeControlCreationOrder(const std::string& control); 00095 00097 virtual void setMasterModeAssembleList(const BuilderList& builderList); 00098 00100 virtual const BuilderList& masterModeAssembleList() const; 00101 00103 virtual void setSlaveModeAssembleList(const BuilderList& builderList); 00104 00106 virtual const BuilderList& slaveModeAssembleList() const; 00107 00108 protected: 00109 00110 typedef boost::unordered_map<std::string, DtUserInterfaceBuilder*> BuilderMap; 00111 00112 00114 DtUserInterfaceAssembler(); 00115 00118 static DtUserInterfaceAssembler* create(); 00119 00121 virtual void buildMenus(DtDe& de, DtDeMainWindow& mainWindow, BuilderList& builderList); 00122 00124 virtual void buildMenuItems(DtDe& de, DtDeMainWindow& mainWindow, BuilderList& builderList); 00125 00127 virtual void buildWidgets(DtDe& de, DtDeMainWindow& mainWindow, BuilderList& builderList); 00128 00130 virtual void build(DtDe& de, DtDeMainWindow& mainWindow, DtUserInterfaceBuilder* builder); 00131 00134 virtual void mapNameToMode(const std::string& name, int modeFlags); 00135 00137 virtual BuilderList widgetBuildOrder(const BuilderList&) const; 00138 00139 protected: 00140 00141 BuilderMap myMenuBuilderMap; 00142 BuilderMap myMenuItemBuilderMap; 00143 BuilderMap myWidgetBuilderMap; 00144 00145 BuilderList myMasterModeList; 00146 BuilderList mySlaveModeList; 00147 00148 WidgetCreationOrderMap myCreationOrder; 00149 }; 00150 00151 00152 00153 00154 } 00155 00156 #endif 00157