VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtMenuConfiguration.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 #include <vrvCore/DtMenuPath.h>
15 
16 #include <list>
17 #include <set>
18 
19 namespace makVrv
20 {
44  {
45  public:
46 
47  //Ordered vector of paths.
48  typedef std::list<DtMenuPath> MenuPathList;
49 
50  typedef std::set<DtMenuPath> MenuPathSet;
51 
56  {
57  NoSort = 0x00000000, // Do not sort the menu at all
58  SortAllAlphabetically = 0x00000001, // Sorts all individual items and sub menus on a menu alphabetically
59  SortWithinSubmenus = 0x00000002, // Goes into sub menus recursively and sorts their contents
60  SortBetweenSeparators = 0x00000004, // Sorts all items alphabetically between action separators
61  SortBetweenSubMenus = 0x00000010 // Sorts all items alphabetically between sub menus without sorting the sub menus
62  };
63 
64  public:
67 
69  virtual ~DtMenuConfiguration();
70 
72  void addMenuPath(const DtMenuPath&, const MenuSortFlags& sortFlagsIfMenu
73  = (MenuSortFlags)(SortAllAlphabetically | SortWithinSubmenus | SortBetweenSeparators));
74 
76  void addMenuPathAfter(const DtMenuPath& newPath, const DtMenuPath& relativeTo
77  , const MenuSortFlags& sortFlagsIfMenu = (MenuSortFlags)
78  (SortAllAlphabetically | SortWithinSubmenus | SortBetweenSeparators));
79 
81  void addMenuPathBefore(const DtMenuPath& newPath, const DtMenuPath& relativeTo
82  , const MenuSortFlags& sortFlagsIfMenu = (MenuSortFlags)
83  (SortAllAlphabetically | SortWithinSubmenus | SortBetweenSeparators));
84 
86  void addConfiguration(const DtMenuConfiguration& subConfiguration);
87 
89  void removeMenuPath(const DtMenuPath&);
90 
92  void getRootPaths(MenuPathList& children) const;
93 
103  void getChildren(const DtMenuPath& path, MenuPathList& children) const;
104 
106  void sortChildren(MenuPathList& children) const;
107 
109  {
110  if (this != &rhs)
111  {
112  myMenuPaths = rhs.myMenuPaths;
113  myMenuOrder = rhs.myMenuOrder;
114  myCurrentWeight = rhs.myCurrentWeight;
115  myMenuSortFlags = rhs.myMenuSortFlags;
116  }
117 
118  return *this;
119  }
120 
123  void merge(const DtMenuConfiguration& rhs);
124 
126  bool hasMenuPath(const DtMenuPath& p) const;
127 
129  bool menuSortFlags(const DtMenuPath& p, MenuSortFlags& flags) const;
130 
131  protected:
132 
134  int getNewWeight();
135 
136  void addMenuPath(const DtMenuPath&, int weight);
137 
138  bool sortAbsolute(const DtMenuPath& a, const DtMenuPath& b) const;
139 
141  {
143  : orderWeight(0)
144  , relative(DtMenuPath::empty())
145  , beforeRelative(false)
146  {
147  }
148 
152  };
153 
155 
156  typedef std::map<DtMenuPath,OrderParameters> MenuPathOrderMap;
157  typedef std::map<DtMenuPath, MenuSortFlags> MenuPathSortFlagsMap;
160 
162  };
163 }
std::list< DtMenuPath > MenuPathList
Definition: DtMenuConfiguration.h:48
MenuPathSortFlagsMap myMenuSortFlags
Definition: DtMenuConfiguration.h:159
MenuPathSet myMenuPaths
Definition: DtMenuConfiguration.h:154
MenuPathOrderMap myMenuOrder
Definition: DtMenuConfiguration.h:158
DtMenuConfiguration & operator=(const DtMenuConfiguration &rhs)
Definition: DtMenuConfiguration.h:108
Contains makVrv::DtMenuPath class.
DtMenuPath relative
Definition: DtMenuConfiguration.h:150
std::map< DtMenuPath, MenuSortFlags > MenuPathSortFlagsMap
Definition: DtMenuConfiguration.h:157
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Definition: DtMenuConfiguration.h:140
a Class which represents a menu path. The specific strings are not menu text, but the names used when...
Definition: DtMenuPath.h:27
OrderParameters()
Definition: DtMenuConfiguration.h:142
Contains makVrv::DtConfiguration class.
std::set< DtMenuPath > MenuPathSet
Definition: DtMenuConfiguration.h:50
int orderWeight
Definition: DtMenuConfiguration.h:149
The base implementation of a configuration.
Definition: DtConfiguration.h:24
int myCurrentWeight
Definition: DtMenuConfiguration.h:161
A configuration of a menu layout. A menu configuration manages an ordered collection of menu paths th...
Definition: DtMenuConfiguration.h:43
bool beforeRelative
Definition: DtMenuConfiguration.h:151
std::map< DtMenuPath, OrderParameters > MenuPathOrderMap
Definition: DtMenuConfiguration.h:156
MenuSortFlags
The SortAllAlphabetically, SortWithinSubmenus, SortBetweenSeparators, and SortBetweenSubMenus flags c...
Definition: DtMenuConfiguration.h:55
Contains DLL export macros.

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)