VR-Forces 4.8 Class Documentation
 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, int weight = -1);
137 
141  virtual void removeMenuPath(const makVrv::DtMenuPath& path);
142 
146  virtual void addMenuPathAfter(const makVrv::DtMenuPath& newPath, const makVrv::DtMenuPath& relativeTo);
147 
151  virtual void addMenuPathBefore(const makVrv::DtMenuPath& newPath, const makVrv::DtMenuPath& relativeTo);
152 
156  virtual void addMenuItemAfter(const std::string& menuItem, const std::string& after);
157 
159  virtual void removeMenuItem(const std::string& menuItem);
160 
164  virtual void addMenuItemBefore(const std::string& menuItem, const std::string& before);
165 
167  virtual makVrv::DtMenuPath menuPathForItem(const std::string& menuItem) const;
168 
170  virtual std::string mainMenu() const;
171 
173  {
175 
176  return *this;
177  }
178 
180  virtual bool fixSortChildren(makVrv::DtMenuConfiguration::MenuPathList&, bool checkOnly = false);
181 
183  {
184  myMakeChangesTo.push_back(c);
185  }
186 
188  {
189  myMakeChangesTo.clear();
190  }
191 
192  const MenuPathSet& pathsRemoved() const
193  {
194  return myPathsRemoved;
195  }
196 
197  const MenuPathSet& menuPaths() const
198  {
199  return myMenuPaths;
200  }
201 
202  void setProtected(const std::string& p, bool b)
203  {
204  if (b)
205  {
206  myIsProtected[p] = b;
207  }
208  else
209  {
210  std::map<std::string, bool>::iterator iter = myIsProtected.find(p);
211  if (iter != myIsProtected.end())
212  {
213  myIsProtected.erase(iter);
214  }
215  }
216  }
217 
218  bool isProtected(const std::string& p) const
219  {
220  return (myIsProtected.find(p) != myIsProtected.end());
221  }
222 
224  {
225  return (myPathsRemoved.find(p) != myPathsRemoved.end());
226  }
227 
231  virtual void reworkRelativeOrder();
232 
233  protected:
234  bool sortAbsolute(const makVrv::DtMenuPath& a, const makVrv::DtMenuPath& b) const;
235 
236  protected:
238 
239  std::vector<makVrv::DtMenuConfiguration*> myMakeChangesTo;
241  std::map<std::string, bool> myIsProtected;
242  };
243 }
DtSubMenuConfiguration(const makVrv::DtMenuConfiguration &c)
Definition: subMenuConfiguration.h:82
int size() const
Definition: subMenuConfiguration.h:95
std::list< DtMenuPath > MenuPathList
Definition: DtMenuConfiguration.h:32
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:197
DtSubMenuPath & operator=(const SubMenuPathBuilder &rhs)
Definition: subMenuConfiguration.h:37
DtSubMenuConfiguration & operator=(const makVrv::DtMenuConfiguration &rhs)
Definition: subMenuConfiguration.h:172
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:182
Definition: subMenuConfiguration.h:19
Definition: DtMenuPath.h:36
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
DtMenuConfiguration & operator=(const DtMenuConfiguration &rhs)
Definition: DtMenuConfiguration.h:80
Contains makVrv::DtMenuPath class.
std::map< std::string, bool > myIsProtected
Definition: subMenuConfiguration.h:241
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:239
void strip(const std::string &str1, const std::string &str2)
Definition: subMenuConfiguration.h:64
MenuPathSet myPathsRemoved
Definition: subMenuConfiguration.h:240
a Class which represents a menu path.
Definition: DtMenuPath.h:30
Contains makVrv::DtMenuConfiguration class.
std::set< DtMenuPath > MenuPathSet
Definition: DtMenuConfiguration.h:34
makVrv::DtDe * myDe
Definition: subMenuConfiguration.h:237
const std::string & path() const
Definition: subMenuConfiguration.h:49
DtSubMenuConfiguration()
Definition: subMenuConfiguration.h:76
const MenuPathSet & pathsRemoved() const
Definition: subMenuConfiguration.h:192
DtSubMenuPath & operator=(const std::string &rhs)
Definition: subMenuConfiguration.h:43
A configuration of the menu layout.
Definition: DtMenuConfiguration.h:27
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
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:202
void clearMakeChangesTo()
Definition: subMenuConfiguration.h:187
std::map< DtMenuPath, OrderParameters > MenuPathOrderMap
Definition: DtMenuConfiguration.h:119
bool isGoingToBeRemoved(const makVrv::DtMenuPath &p) const
Definition: subMenuConfiguration.h:223
static SubMenuPathBuilder path(const makVrv::DtMenuPath &p)
Definition: subMenuConfiguration.h:54
bool isProtected(const std::string &p) const
Definition: subMenuConfiguration.h:218

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)