Eclipse SUMO - Simulation of Urban MObility
GUIPropertySchemeStorage.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
17 //
18 /****************************************************************************/
19 #ifndef GUIPropertySchemeStorage_h
20 #define GUIPropertySchemeStorage_h
21 
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #include <config.h>
27 
28 #include <vector>
29 #include <fx.h>
33 #include "GUIPropertyScheme.h"
34 
35 
36 // ===========================================================================
37 // class declarations
38 // ===========================================================================
39 class OutputDevice;
40 
41 
42 // ===========================================================================
43 // class definitions
44 // ===========================================================================
50 template<class T>
52 public:
55 
58 
60  void fill(MFXIconComboBox& cb) {
61  for (const auto& scheme : mySchemes) {
62  cb.appendIconItem(scheme.getName().c_str(),
63  scheme.getIcon() == ICON_EMPTY ? nullptr : GUIIconSubSys::getIcon(scheme.getIcon()),
64  MFXUtils::getFXColor(scheme.getBackgroundColor()));
65  }
66  cb.setCurrentItem((FXint)myActiveScheme);
67  }
68 
69  void setActive(int scheme) {
70  if (scheme < (int)mySchemes.size()) {
71  myActiveScheme = scheme;
72  }
73  }
74 
75  int getActive() const {
76  return myActiveScheme;
77  }
78 
79  T& getScheme() {
80  return mySchemes[myActiveScheme];
81  }
82 
83  const T& getScheme() const {
84  return mySchemes[myActiveScheme];
85  }
86 
87  const std::vector<T>& getSchemes() const {
88  return mySchemes;
89  }
90 
91  T* getSchemeByName(std::string name) {
92  for (typename std::vector<T>::iterator i = mySchemes.begin(); i != mySchemes.end(); ++i) {
93  if ((*i).getName() == name) {
94  return &(*i);
95  }
96  }
97  return 0;
98  }
99 
100  void setSchemeByName(std::string name) {
101  for (int i = 0; i < (int)mySchemes.size(); i++) {
102  if (mySchemes[i].getName() == name) {
103  myActiveScheme = i;
104  break;
105  }
106  }
107  }
108 
109  void save(OutputDevice& dev) const {
110  for (typename std::vector<T>::const_iterator i = mySchemes.begin(); i != mySchemes.end(); ++i) {
111  i->save(dev);
112  }
113  }
114 
115  bool operator==(const GUIPropertySchemeStorage& c) const {
116  return myActiveScheme == c.myActiveScheme && mySchemes == c.mySchemes;
117  }
118 
119 
120  void addScheme(T scheme) {
121  mySchemes.push_back(scheme);
122  }
123 
124  int size() const {
125  return (int)mySchemes.size();
126  }
127 
128 
129 protected:
131  std::vector<T> mySchemes;
132 
133 };
134 
137 
138 #endif
139 
140 /****************************************************************************/
GUIPropertyScheme.h
GUIPropertySchemeStorage::getSchemeByName
T * getSchemeByName(std::string name)
Definition: GUIPropertySchemeStorage.h:91
GUIPropertySchemeStorage::setSchemeByName
void setSchemeByName(std::string name)
Definition: GUIPropertySchemeStorage.h:100
OutputDevice
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:63
ICON_EMPTY
Definition: GUIIcons.h:41
GUIPropertySchemeStorage::operator==
bool operator==(const GUIPropertySchemeStorage &c) const
Definition: GUIPropertySchemeStorage.h:115
GUIPropertySchemeStorage::size
int size() const
Definition: GUIPropertySchemeStorage.h:124
GUIIconSubSys::getIcon
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Definition: GUIIconSubSys.cpp:609
GUIPropertySchemeStorage::GUIPropertySchemeStorage
GUIPropertySchemeStorage()
Constructor.
Definition: GUIPropertySchemeStorage.h:54
GUIPropertySchemeStorage::save
void save(OutputDevice &dev) const
Definition: GUIPropertySchemeStorage.h:109
GUIPropertySchemeStorage::getScheme
T & getScheme()
Definition: GUIPropertySchemeStorage.h:79
GUIScaler
GUIPropertySchemeStorage< GUIScaleScheme > GUIScaler
Definition: GUIPropertySchemeStorage.h:136
GUIColorer
GUIPropertySchemeStorage< GUIColorScheme > GUIColorer
Definition: GUIPropertySchemeStorage.h:135
GUIPropertySchemeStorage::fill
void fill(MFXIconComboBox &cb)
Fills the given combobox with the names of available colorings.
Definition: GUIPropertySchemeStorage.h:60
GUIPropertySchemeStorage::addScheme
void addScheme(T scheme)
Definition: GUIPropertySchemeStorage.h:120
GUIIconSubSys.h
GUIPropertySchemeStorage::~GUIPropertySchemeStorage
virtual ~GUIPropertySchemeStorage()
Destructor.
Definition: GUIPropertySchemeStorage.h:57
MFXUtils.h
MFXIconComboBox::appendIconItem
FXint appendIconItem(const FXString &text, FXIcon *icon, FXColor bgColor=FXRGBA(0, 0, 0, 0), void *ptr=NULL)
Definition: MFXIconComboBox.cpp:86
GUIPropertySchemeStorage::mySchemes
std::vector< T > mySchemes
Definition: GUIPropertySchemeStorage.h:131
GUIPropertySchemeStorage::getScheme
const T & getScheme() const
Definition: GUIPropertySchemeStorage.h:83
config.h
MFXUtils::getFXColor
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
Definition: MFXUtils.cpp:113
MFXIconComboBox.h
GUIPropertySchemeStorage::setActive
void setActive(int scheme)
Definition: GUIPropertySchemeStorage.h:69
MFXIconComboBox
Definition: MFXIconComboBox.h:53
GUIPropertySchemeStorage::getSchemes
const std::vector< T > & getSchemes() const
Definition: GUIPropertySchemeStorage.h:87
GUIPropertySchemeStorage::getActive
int getActive() const
Definition: GUIPropertySchemeStorage.h:75
GUIPropertySchemeStorage::myActiveScheme
int myActiveScheme
Definition: GUIPropertySchemeStorage.h:130
GUIPropertySchemeStorage
Base class for coloring. Allows changing the used colors and sets the used color in dependence to a v...
Definition: GUIPropertySchemeStorage.h:51