VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
subMenuConfiguration.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 #pragma once
7 
10 #include <vrvCore/DtMenuPath.h>
11 
12 #include <QtCore/QString>
13 
14 namespace makVrf
15 {
17  {
18  public:
20  {
21  public:
22  SubMenuPathBuilder(const std::string& path)
23  : MenuPathBuilder(path)
24  {
25  }
26  };
27 
28  DtSubMenuPath(const makVrv::DtMenuPath& p) : makVrv::DtMenuPath(p) {};
29  DtSubMenuPath(const std::string& p) : makVrv::DtMenuPath(SubMenuPathBuilder(p)) {};
30 
32  {
33  makVrv::DtMenuPath::operator=(rhs);
34  return *this;
35  }
36 
38  {
39  makVrv::DtMenuPath::operator=(rhs);
40  return *this;
41  }
42 
43  DtSubMenuPath& operator=(const std::string& rhs)
44  {
45  myPath = rhs;
46  return *this;
47  }
48 
49  const std::string& path() const
50  {
51  return makVrv::DtMenuPath::path();
52  }
53 
55  {
56  return SubMenuPathBuilder(p.path());
57  }
58 
59  static SubMenuPathBuilder path(const std::string& p)
60  {
61  return SubMenuPathBuilder(p);
62  }
63 
64  void strip(const std::string& str1, const std::string& str2)
65  {
66  QString str = myPath.c_str();
67  str.replace(str1.c_str(), str2.c_str());
68  myPath = str.toLatin1().constData();
69  }
70  };
71 
74  {
75  public:
77  : makVrv::DtMenuConfiguration()
78  , myDe(0)
79  {
80  }
81 
83  : makVrv::DtMenuConfiguration(c)
84  , myDe(0)
85  {
86  }
87 
89 
90  virtual ~DtSubMenuConfiguration();
91 
93  virtual bool isUnique(const std::string&) const;
94 
95  int size() const
96  {
97  return myMenuPaths.size();
98  }
99 
100  void convert(const std::string& str1, const std::string& str2)
101  {
102  MenuPathSet::iterator curIter = myMenuPaths.begin();
103  for ( ; curIter != myMenuPaths.end(); curIter++)
104  {
105  if (curIter->isMenu() || curIter->isAbsolutePath())
106  {
107  ((DtSubMenuPath&)*curIter).strip(str1, str2);
108  }
109  }
110 
111  MenuPathOrderMap newMap;
112  MenuPathOrderMap::const_iterator iter = myMenuOrder.begin();
113  for ( ; iter != myMenuOrder.end(); iter++)
114  {
115  if (iter->first.isMenu() || iter->first.isAbsolutePath())
116  {
117  DtSubMenuPath path(iter->first);
118  path.strip(str1, str2);
119 
120  newMap[path] = iter->second;
121  }
122  else
123  {
124  newMap[iter->first] = iter->second;
125  }
126  }
127  myMenuOrder = newMap;
128  }
129 
136  virtual void addMenuPath( const makVrv::DtMenuPath& path, const MenuSortFlags& sortFlagsIfMenu
137  = (MenuSortFlags)(SortAllAlphabetically | SortWithinSubmenus | SortBetweenSeparators));
138 
142  virtual void removeMenuPath(const makVrv::DtMenuPath& path);
143 
147  virtual void addMenuPathAfter(const makVrv::DtMenuPath& newPath, const makVrv::DtMenuPath& relativeTo, const MenuSortFlags& sortFlagsIfMenu
148  = (MenuSortFlags)(SortAllAlphabetically | SortWithinSubmenus | SortBetweenSeparators));
149 
153  virtual void addMenuPathBefore(const makVrv::DtMenuPath& newPath, const makVrv::DtMenuPath& relativeTo, const MenuSortFlags& sortFlagsIfMenu
154  = (MenuSortFlags)(SortAllAlphabetically | SortWithinSubmenus | SortBetweenSeparators));
155 
159  virtual void addMenuItemAfter(const std::string& menuItem, const std::string& after);
160 
162  virtual void removeMenuItem(const std::string& menuItem);
163 
167  virtual void addMenuItemBefore(const std::string& menuItem, const std::string& before);
168 
170  virtual makVrv::DtMenuPath menuPathForItem(const std::string& menuItem) const;
171 
173  virtual std::string mainMenu() const;
174 
176  {
178 
179  return *this;
180  }
181 
183  virtual bool fixSortChildren(makVrv::DtMenuConfiguration::MenuPathList&, bool checkOnly = false);
184 
186  {
187  myMakeChangesTo.push_back(c);
188  }
189 
191  {
192  myMakeChangesTo.clear();
193  }
194 
195  const MenuPathSet& pathsRemoved() const
196  {
197  return myPathsRemoved;
198  }
199 
200  const MenuPathSet& menuPaths() const
201  {
202  return myMenuPaths;
203  }
204 
205  void setProtected(const std::string& p, bool b)
206  {
207  if (b)
208  {
209  myIsProtected[p] = b;
210  }
211  else
212  {
213  std::map<std::string, bool>::iterator iter = myIsProtected.find(p);
214  if (iter != myIsProtected.end())
215  {
216  myIsProtected.erase(iter);
217  }
218  }
219  }
220 
221  bool isProtected(const std::string& p) const
222  {
223  return (myIsProtected.find(p) != myIsProtected.end());
224  }
225 
227  {
228  return (myPathsRemoved.find(p) != myPathsRemoved.end());
229  }
230 
234  virtual void reworkRelativeOrder();
235 
236  protected:
237  bool sortAbsolute(const makVrv::DtMenuPath& a, const makVrv::DtMenuPath& b) const;
238 
239  protected:
241 
242  std::vector<makVrv::DtMenuConfiguration*> myMakeChangesTo;
244  std::map<std::string, bool> myIsProtected;
245  };
246 }
DtSubMenuConfiguration(const makVrv::DtMenuConfiguration &c)
Definition: subMenuConfiguration.h:82
int size() const
Definition: subMenuConfiguration.h:95
std::list< DtMenuPath > MenuPathList
Definition: DtMenuConfiguration.h:48
static SubMenuPathBuilder path(const std::string &p)
Definition: subMenuConfiguration.h:59
void convert(const std::string &str1, const std::string &str2)
Definition: subMenuConfiguration.h:100
const MenuPathSet & menuPaths() const
Definition: subMenuConfiguration.h:200
DtSubMenuPath & operator=(const SubMenuPathBuilder &rhs)
Definition: subMenuConfiguration.h:37
DtSubMenuConfiguration & operator=(const makVrv::DtMenuConfiguration &rhs)
Definition: subMenuConfiguration.h:175
DtSubMenuPath & operator=(const DtSubMenuPath &rhs)
Definition: subMenuConfiguration.h:31
Definition: subMenuConfiguration.h:16
Subclass for additional functionality needed by VRF.
Definition: subMenuConfiguration.h:73
void makeChangesTo(makVrv::DtMenuConfiguration *c)
Definition: subMenuConfiguration.h:185
Definition: subMenuConfiguration.h:19
Definition: DtMenuPath.h:33
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
DtMenuConfiguration & operator=(const DtMenuConfiguration &rhs)
Definition: DtMenuConfiguration.h:108
Contains makVrv::DtMenuPath class.
std::map< std::string, bool > myIsProtected
Definition: subMenuConfiguration.h:244
const std::string & path() const
Definition: DtMenuPath.h:91
DtSubMenuPath(const makVrv::DtMenuPath &p)
Definition: subMenuConfiguration.h:28
std::vector< makVrv::DtMenuConfiguration * > myMakeChangesTo
Definition: subMenuConfiguration.h:242
void strip(const std::string &str1, const std::string &str2)
Definition: subMenuConfiguration.h:64
MenuPathSet myPathsRemoved
Definition: subMenuConfiguration.h:243
a Class which represents a menu path. The specific strings are not menu text, but the names used when...
Definition: DtMenuPath.h:27
Contains makVrv::DtMenuConfiguration class.
std::set< DtMenuPath > MenuPathSet
Definition: DtMenuConfiguration.h:50
makVrv::DtDe * myDe
Definition: subMenuConfiguration.h:240
const std::string & path() const
Definition: subMenuConfiguration.h:49
DtSubMenuConfiguration()
Definition: subMenuConfiguration.h:76
const MenuPathSet & pathsRemoved() const
Definition: subMenuConfiguration.h:195
DtSubMenuPath & operator=(const std::string &rhs)
Definition: subMenuConfiguration.h:43
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:72
SubMenuPathBuilder(const std::string &path)
Definition: subMenuConfiguration.h:22
DtSubMenuPath(const std::string &p)
Definition: subMenuConfiguration.h:29
void setProtected(const std::string &p, bool b)
Definition: subMenuConfiguration.h:205
void clearMakeChangesTo()
Definition: subMenuConfiguration.h:190
std::map< DtMenuPath, OrderParameters > MenuPathOrderMap
Definition: DtMenuConfiguration.h:156
bool isGoingToBeRemoved(const makVrv::DtMenuPath &p) const
Definition: subMenuConfiguration.h:226
static SubMenuPathBuilder path(const makVrv::DtMenuPath &p)
Definition: subMenuConfiguration.h:54
bool isProtected(const std::string &p) const
Definition: subMenuConfiguration.h:221

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)