VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtMenuManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCoreQt/vrvCoreQt.h>
13 
15 
16 #include <vrvCore/DtMenuPath.h>
18 
19 #include <QtCore/QObject>
20 #include <QtCore/QPointer>
21 
22 #include <QtWidgets/QMenu>
23 
24 class QAction;
25 
26 namespace makVrv
27 {
28  class DtDe;
29 
30 
39  {
40  Q_OBJECT;
41  public:
42 
44  static DtMenuManager& instance(DtDe& de);
45 
46  public:
48  virtual ~DtMenuManager();
49 
51  virtual void registerMenu(const DtMenuPath& path, QMenu* menu);
52 
54  virtual void registerMenuItem(const DtMenuPath& path, QAction* action);
55 
57  virtual QMenu* findMenu(const DtMenuPath& path) const;
58 
60  virtual QAction* findMenuItem(const DtMenuPath& path) const;
61 
66  virtual void sortMenuConfiguration(const DtMenuConfiguration& configuration) const;
67 
71  virtual bool showMenu(const DtMenuPath& path);
72 
76  virtual bool hideMenu(const DtMenuPath& path);
77 
80  virtual bool setMenuVisible(const DtMenuPath& path, bool visible);
81 
85  virtual bool showMenuItem(const DtMenuPath& path);
86 
90  virtual bool hideMenuItem(const DtMenuPath& path);
91 
94  virtual bool setMenuItemVisible(const DtMenuPath& path, bool visible);
95 
98  const std::map<DtMenuPath,QMenu*>& menus() const;
99  const std::map<DtMenuPath,QAction*> menuItems() const;
100 
101  boost::signalslib::signal<void (const DtMenuPath&)> signal_menuDeleted;
102  boost::signalslib::signal<void (const DtMenuPath&)> signal_menuItemDeleted;
103 
104  protected slots:
105 
107  virtual void onMenuDestroyed(QObject* obj);
108 
110  virtual void onActionDestroyed(QObject* obj);
111 
112  protected:
113 
115  DtMenuManager();
116 
118  virtual void addSortedNamesToMenu(QStringList sortedByName,
119  std::map<QString, std::vector<QAction*> > sorted, QMenu* menu) const;
120 
124  virtual void sortMenu(QMenu*, const DtMenuConfiguration::MenuSortFlags& flags,
125  const DtMenuConfiguration& configuration) const;
126 
127  protected:
128 
129  std::map<QPointer<QMenu>, DtMenuPath> myMenuPaths;
130  std::map<DtMenuPath,QMenu*> myMenus;
131  std::map<DtMenuPath,QAction*> myMenuItems;
132  };
133 }
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
std::map< QPointer< QMenu >, DtMenuPath > myMenuPaths
Definition: DtMenuManager.h:129
#define DT_DLL_VRVCOREQT
Definition: vrvCoreQt.h:20
Contains DLL export macros.
std::map< DtMenuPath, QAction * > myMenuItems
Definition: DtMenuManager.h:131
Contains makVrv::DtMenuPath class.
Contains makVrv::DtVirtualBaseClass class.
boost::signalslib::signal< void(const DtMenuPath &)> signal_menuItemDeleted
Definition: DtMenuManager.h:102
The menu manager can be used to lookup registered QMenu and QAction objects based on their menu paths...
Definition: DtMenuManager.h:38
a Class which represents a menu path. The specific strings are not menu text, but the names used when...
Definition: DtMenuPath.h:27
std::map< DtMenuPath, QMenu * > myMenus
Definition: DtMenuManager.h:130
Contains makVrv::DtMenuConfiguration class.
boost::signalslib::signal< void(const DtMenuPath &)> signal_menuDeleted
Definition: DtMenuManager.h:101
A configuration of a menu layout. A menu configuration manages an ordered collection of menu paths th...
Definition: DtMenuConfiguration.h:43
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
MenuSortFlags
The SortAllAlphabetically, SortWithinSubmenus, SortBetweenSeparators, and SortBetweenSubMenus flags c...
Definition: DtMenuConfiguration.h:55

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)