15 #include <vrvUtil/DtVirtualBaseClass.h>
16 #include <vrvCore/DtMenuConfiguration.h>
17 #include <vrvCoreQt/DtMenuItem.h>
18 #include <vrvCoreQt/DtMenu.h>
19 #include <vrvCoreQt/DtQtMenuAssembler.h>
20 #include <vrvCoreQt/DtMenuManager.h>
22 #include <QtCore/QString>
49 makVrv::DtMenuPath::operator=(rhs);
55 makVrv::DtMenuPath::operator=(rhs);
65 const std::string& path()
const
67 return makVrv::DtMenuPath::path();
80 void strip(
const std::string& str1,
const std::string& str2)
82 QString str = myPath.c_str();
83 str.replace(str1.c_str(), str2.c_str());
84 myPath = str.toLatin1().constData();
95 : makVrv::DtMenuConfiguration()
101 : makVrv::DtMenuConfiguration(c)
111 virtual bool isUnique(
const std::string&)
const;
115 return myMenuPaths.size();
118 void convert(
const std::string& str1,
const std::string& str2)
120 MenuPathSet::iterator curIter = myMenuPaths.begin();
121 for ( ; curIter != myMenuPaths.end(); curIter++)
123 if (curIter->isMenu() || curIter->isAbsolutePath())
129 MenuPathOrderMap newMap;
130 MenuPathOrderMap::const_iterator iter = myMenuOrder.begin();
131 for ( ; iter != myMenuOrder.end(); iter++)
133 if (iter->first.isMenu() || iter->first.isAbsolutePath())
136 path.
strip(str1, str2);
138 newMap[path] = iter->second;
142 newMap[iter->first] = iter->second;
145 myMenuOrder = newMap;
154 virtual void addMenuPath(
const makVrv::DtMenuPath& path,
int weight = -1);
159 virtual void removeMenuPath(
const makVrv::DtMenuPath& path);
164 virtual void addMenuPathAfter(
const makVrv::DtMenuPath& newPath,
const makVrv::DtMenuPath& relativeTo);
169 virtual void addMenuPathBefore(
const makVrv::DtMenuPath& newPath,
const makVrv::DtMenuPath& relativeTo);
174 virtual void addMenuItemAfter(
const std::string& menuItem,
const std::string& after);
177 virtual void removeMenuItem(
const std::string& menuItem);
182 virtual void addMenuItemBefore(
const std::string& menuItem,
const std::string& before);
185 virtual makVrv::DtMenuPath menuPathForItem(
const std::string& menuItem)
const;
188 virtual std::string mainMenu()
const;
192 makVrv::DtMenuConfiguration::operator=(rhs);
197 void makeChangesTo(makVrv::DtMenuConfiguration* c)
199 myMakeChangesTo.push_back(c);
202 void clearMakeChangesTo()
204 myMakeChangesTo.clear();
207 const MenuPathSet& pathsRemoved()
const
209 return myPathsRemoved;
212 const MenuPathSet& menuPaths()
const
217 void setProtected(
const std::string& p,
bool b)
221 myIsProtected[p] = b;
225 std::map<std::string, bool>::iterator iter = myIsProtected.find(p);
226 if (iter != myIsProtected.end())
228 myIsProtected.erase(iter);
233 bool isProtected(
const std::string& p)
const
235 return (myIsProtected.find(p) != myIsProtected.end());
238 bool isGoingToBeRemoved(
const makVrv::DtMenuPath& p)
const
240 return (myPathsRemoved.find(p) != myPathsRemoved.end());
246 virtual void reworkRelativeOrder();
261 , myDeleteMenus(false)
265 void setDeleteMenus(
bool b)
270 bool deleteMenus()
const
272 return myDeleteMenus;
277 if (myDeleteMenus) cleanup();
282 std::string findMenuPath(
QMenu*)
const;
283 std::string findItemPath(
QAction*)
const;
299 if (!myDeleteReferences)
301 myMenuBuilders.clear();
302 myMenuItemBuilders.clear();
310 void setDeleteReferences(
bool b)
312 myDeleteReferences = b;
315 bool deleteReferences()
const
317 return myDeleteReferences;
320 void setLocalOnly(
bool b)
325 bool localOnly()
const
333 makVrv::DtMenuManager& menuManager()
335 return myMenuManager;
338 const makVrv::DtMenuManager& menuManager()
const
340 return myMenuManager;
344 QMenu* findMenu(
const makVrv::DtMenuPath& path)
346 return menuManager().findMenu(path);
349 QAction* findMenuItem(
const makVrv::DtMenuPath& path)
351 return menuManager().findMenuItem(path);
355 virtual void registerMenu(makVrv::DtMenu*);
358 virtual void unregisterMenu(makVrv::DtMenu*,
bool deleteBuilder =
true);
361 virtual void registerMenu(makVrv::DtMenuItem*);
364 virtual void unregisterMenu(makVrv::DtMenuItem*,
bool deleteBuilder =
true);
368 virtual void merge(
const DtQtMenuAssembler::MenuBuilderMap&);
372 virtual void merge(
const DtQtMenuAssembler::MenuItemBuilderMap&);
374 void makeChangesTo(makVrv::DtQtMenuAssembler* c)
376 myMakeChangesTo.push_back(c);
379 void clearMakeChangesTo()
381 myMakeChangesTo.clear();
386 if (myLocalOnly)
return 0;
387 else return makVrv::DtQtMenuAssembler::menuBar();
392 if (myLocalOnly)
return 0;
393 else return makVrv::DtQtMenuAssembler::menuWindow();
397 void setCreateSubMenusForMissingMenus(
bool b)
399 myCreateSubMenusForMissingMenus = b;
402 virtual void assembleMenu(
const makVrv::DtMenuPath& menuPath);
413 public makVrv::DtMenu,
public makVrv::DtVirtualBaseClass
426 return myConfiguration;
438 virtual void registerMenu(makVrv::DtMenu* customMenu);
443 virtual void registerMenuItem(makVrv::DtMenuItem* customMenuItem);
445 virtual void createSimpleMenu(std::string menuText, makVrv::DtMenuPath menuIdPath,
int weight = -1);
446 virtual void createSimpleMenuAfter(std::string menuText, makVrv::DtMenuPath menuIdPath, makVrv::DtMenuPath afterIdPath);
447 virtual void createSimpleMenuBefore(std::string menuText, makVrv::DtMenuPath menuIdPath, makVrv::DtMenuPath beforeIdPath);
449 virtual void createSimpleMenuItem(std::string itemText, makVrv::DtMenuPath itemIdPath,
451 virtual void createSimpleMenuItemAfter(std::string itemText, makVrv::DtMenuPath itemIdPath, makVrv::DtMenuPath afterIdPath,
453 virtual void createSimpleMenuItemBefore(std::string itemText, makVrv::DtMenuPath itemIdPath, makVrv::DtMenuPath beforeIdPath,
458 virtual void mergeMenu(makVrv::DtQtMenuAssembler& assembler, makVrv::DtMenuConfiguration& configuration);
462 virtual void mergeMenu(makVrv::DtQtMenuAssembler& assembler);
465 virtual void mergeMenu(makVrv::DtMenuConfiguration& configuration);
468 virtual void initMenuItems(makVrv::DtDe& de);
477 return myConfiguration;
481 virtual void createMenuConfiguration(makVrv::DtDe&) {};