4 #ifndef SWIFT_GUI_MENUS_MENUACTION_H
5 #define SWIFT_GUI_MENUS_MENUACTION_H
8 #include <QKeySequence>
20 namespace swift::gui::menus
29 CMenuAction(
const QIcon &icon,
const QString &title,
const QString &path =
pathNone(),
bool separator =
false);
38 void setTitle(
const QString &title) { m_title = title; }
41 void setIcon(
const QIcon &icon) { m_icon = icon; }
44 void setPath(
const QString &path) { m_path = path; }
62 const QString &
getPath()
const {
return m_path; }
68 const QString &
getTitle()
const {
return m_title; }
71 bool hasTitle()
const {
return !m_title.isEmpty(); }
89 const QIcon &
getIcon()
const {
return m_icon; }
95 bool hasIcon()
const {
return !m_icon.isNull(); }
101 operator QAction *()
const {
return this->m_action; }
110 static const QString p(
"_NONE");
117 static const QString p(
"_SEPARATOR");
124 static const QString p(
"Custom.10.Simulator/Simulator");
131 static const QString p(
"Custom.10.Simulator/Simulator/Reload models");
138 static const QString p(
"Custom.10.Simulator/Simulator/Clear model caches");
145 static const QString p(
"Custom.11.Model");
152 static const QString p(
"Custom.11.Model/Model set");
159 static const QString p(
"Custom.11.Model/Model set/New set");
166 static const QString p(
"Custom.11.Model/Consolidate");
173 static const QString p(
"Custom.11.Model/Stash/Stash");
180 static const QString p(
"Custom.11.Model/Stash/Editor");
188 static const QString p(
"Custom.14.vPilot/vPilot");
195 static const QString p(
"Custom15.Log");
202 static const QString p(
"Custom20.Font");
211 static const QString p(
"Client.ATC/COM");
218 static const QString p(
"Client.FlightPlan");
225 static const QString p(
"Client.FollowInSim");
232 static const QString p(
"ClientSimulation");
239 static const QString p(
"ClientSimulation.Display/Display");
246 static const QString p(
"ClientSimulation.Display/Render");
253 static const QString p(
"ClientSimulation.Transfer/Transfer");
260 static const QString p(
"Client.Model set");
267 static const QString p(
"ClientNetwork/Network");
276 static const QString p(
"View.10.Database/Database");
283 static const QString p(
"View.12.AddRemove");
290 static const QString p(
"View.13.Selection/Selection");
297 static const QString p(
"View.14.Order/Order");
304 static const QString p(
"View.15.Resize");
311 static const QString p(
"View.16.WordWrap");
318 static const QString p(
"View.17.ClearHighlight");
325 static const QString p(
"View.18.Filter");
332 static const QString p(
"View.19.Updates");
339 static const QString p(
"View.19.LoadSave");
346 static const QString p(
"View.19.CutPaste");
355 static const QString p(
"DockWidget.Nested");
372 QAction *m_action =
nullptr;
376 bool m_separator =
false;
377 bool m_isMenu =
false;
405 bool isEmpty()
const {
return m_actions.isEmpty(); }
408 int size()
const {
return m_actions.size(); }
439 CMenuAction addAction(QAction *action,
const QString &text,
const QString &path, QObject *actionOwner,
443 CMenuAction addAction(QAction *action,
const QIcon &icon,
const QString &text,
const QString &path,
447 CMenuAction addAction(QAction *action,
const QIcon &icon,
const QString &text,
const QString &path,
449 const QKeySequence &shortcut = 0);
453 const QKeySequence &shortcut = 0);
456 CMenuAction addAction(
const QIcon &actionIcon,
const QString &text,
const QString &path, QObject *actionOwner,
457 const QKeySequence &shortcut = 0);
460 CMenuAction addAction(
const QIcon &actionIcon,
const QString &text,
const QString &path, QObject *actionOwner,
472 const QKeySequence &shortcut = 0);
479 void toQMenu(QMenu &menu,
bool separateGroups)
const;
482 QList<CMenuAction>
toQList()
const;
491 operator QList<QAction *>()
const;
494 operator QList<CMenuAction>()
const {
return toQList(); }
538 QMultiMap<QString, CMenuAction> m_actions;
541 void splitSubMenus(
const QString &key, QList<CMenuAction> &actions, QList<CMenuAction> &menus)
const;
544 static int pathDepth(
const QString &path);
547 static QMenu *currentMenuForAction(QMenu &menu,
const CMenuAction &menuAction,
const QList<CMenuAction> &menus,
551 static QString parentPath(
const QString &cuurentPath);
554 static QString keyRoot(
const QString &key);
557 static bool isSameKeyRoot(
const QString &key1,
const QString &key2);
Callable wrapper for a member function with function signature F.