![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtQtMenuAssembler.h,v $ $Revision: 1.12 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 #include <vrvCoreQt/vrvCoreQt.h> 00015 #include <vrvCore/DtMenuAssembler.h> 00016 #include <boost/unordered_map.hpp> 00017 00018 class QMenuBar; 00019 class QWidget; 00020 00021 namespace makVrv 00022 { 00023 class DtMenu; 00024 class DtMenuItem; 00025 class DtMenuManager; 00026 00029 class DT_DLL_VRVCOREQT DtQtMenuAssembler : public DtMenuAssembler 00030 { 00031 public: 00032 00033 typedef boost::unordered_map<std::string,DtMenu*> MenuBuilderMap; 00034 typedef boost::unordered_map<std::string,DtMenuItem*> MenuItemBuilderMap; 00035 00036 friend class DtQtMenuAssemblerCreator; 00037 00039 virtual ~DtQtMenuAssembler(); 00040 00042 static DtQtMenuAssembler& instance(DtDe& de); 00043 00045 void registerMenu(DtMenu*); 00046 00048 DtMenu* menuBuilder(const std::string&) const; 00049 00051 void unregisterMenu(DtMenu*, bool deleteBuilder = true); 00052 00054 void registerMenu(DtMenuItem*); 00055 00057 DtMenuItem* menuItemBuilder(const std::string&) const; 00058 00060 void unregisterMenu(DtMenuItem*, bool deleteBuilder = true); 00061 00062 const MenuBuilderMap& menuBuilderMap() const 00063 { 00064 return myMenuBuilders; 00065 } 00066 00067 const MenuItemBuilderMap& menuItemBuilderMap() const 00068 { 00069 return myMenuItemBuilders; 00070 } 00071 00072 MenuBuilderMap& menuBuilderMap() 00073 { 00074 return myMenuBuilders; 00075 } 00076 00077 MenuItemBuilderMap& menuItemBuilderMap() 00078 { 00079 return myMenuItemBuilders; 00080 } 00081 00084 virtual void merge(const DtQtMenuAssembler::MenuBuilderMap&); 00085 00088 virtual void merge(const DtQtMenuAssembler::MenuItemBuilderMap&); 00089 00090 protected: 00091 00093 DtQtMenuAssembler(DtDe&); 00094 00096 virtual void assembleMenu(const DtMenuPath& menuPath); 00097 00099 virtual void assembleMenuItem(const DtMenuPath& menuPath); 00100 00101 virtual QMenuBar* menuBar(); 00102 virtual QWidget* menuWindow(); 00103 virtual DtMenuManager& menuManager(); 00104 00105 protected: 00106 MenuBuilderMap myMenuBuilders; 00107 MenuItemBuilderMap myMenuItemBuilders; 00108 }; 00109 00112 class DT_DLL_VRVCOREQT DtQtMenuAssemblerCreator : public DtMenuAssemblerCreator 00113 { 00114 public: 00115 00117 DtQtMenuAssemblerCreator(); 00118 00120 virtual ~DtQtMenuAssemblerCreator(); 00121 00123 virtual DtMenuAssembler* create(DtDe& de); 00124 00125 }; 00126 }