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 /****************************************************************************/
18 //
19 /****************************************************************************/
20 #ifndef GUIPropertySchemeStorage_h
21 #define GUIPropertySchemeStorage_h
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #include <config.h>
28 
29 #include <vector>
30 #include <fx.h>
34 #include "GUIPropertyScheme.h"
35 
36 
37 // ===========================================================================
38 // class declarations
39 // ===========================================================================
40 class OutputDevice;
41 
42 
43 // ===========================================================================
44 // class definitions
45 // ===========================================================================
51 template<class T>
53 public:
56 
59 
61  void fill(MFXIconComboBox& cb) {
62  for (const auto& scheme : mySchemes) {
63  cb.appendIconItem(scheme.getName().c_str(),
64  scheme.getIcon() == ICON_EMPTY ? nullptr : GUIIconSubSys::getIcon(scheme.getIcon()),
65  MFXUtils::getFXColor(scheme.getBackgroundColor()));
66  }
67  cb.setCurrentItem((FXint)myActiveScheme);
68  }
69 
70  void setActive(int scheme) {
71  if (scheme < (int)mySchemes.size()) {
72  myActiveScheme = scheme;
73  }
74  }
75 
76  int getActive() const {
77  return myActiveScheme;
78  }
79 
80  T& getScheme() {
81  return mySchemes[myActiveScheme];
82  }
83 
84  const T& getScheme() const {
85  return mySchemes[myActiveScheme];
86  }
87 
88  const std::vector<T>& getSchemes() const {
89  return mySchemes;
90  }
91 
92  T* getSchemeByName(std::string name) {
93  for (typename std::vector<T>::iterator i = mySchemes.begin(); i != mySchemes.end(); ++i) {
94  if ((*i).getName() == name) {
95  return &(*i);
96  }
97  }
98  return 0;
99  }
100 
101  void setSchemeByName(std::string name) {
102  for (int i = 0; i < (int)mySchemes.size(); i++) {
103  if (mySchemes[i].getName() == name) {
104  myActiveScheme = i;
105  break;
106  }
107  }
108  }
109 
110  void save(OutputDevice& dev) const {
111  for (typename std::vector<T>::const_iterator i = mySchemes.begin(); i != mySchemes.end(); ++i) {
112  i->save(dev);
113  }
114  }
115 
116  bool operator==(const GUIPropertySchemeStorage& c) const {
117  return myActiveScheme == c.myActiveScheme && mySchemes == c.mySchemes;
118  }
119 
120 
121  void addScheme(T scheme) {
122  mySchemes.push_back(scheme);
123  }
124 
125  int size() const {
126  return (int)mySchemes.size();
127  }
128 
129 
130 protected:
132  std::vector<T> mySchemes;
133 
134 };
135 
138 
139 #endif
140 
141 /****************************************************************************/
GUIPropertyScheme.h
GUIPropertySchemeStorage::getSchemeByName
T * getSchemeByName(std::string name)
Definition: GUIPropertySchemeStorage.h:92
GUIPropertySchemeStorage::setSchemeByName
void setSchemeByName(std::string name)
Definition: GUIPropertySchemeStorage.h:101
OutputDevice
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:64
ICON_EMPTY
Definition: GUIIcons.h:42
GUIPropertySchemeStorage::operator==
bool operator==(const GUIPropertySchemeStorage &c) const
Definition: GUIPropertySchemeStorage.h:116
GUIPropertySchemeStorage::size
int size() const
Definition: GUIPropertySchemeStorage.h:125
GUIIconSubSys::getIcon
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Definition: GUIIconSubSys.cpp:602
GUIPropertySchemeStorage::GUIPropertySchemeStorage
GUIPropertySchemeStorage()
Constructor.
Definition: GUIPropertySchemeStorage.h:55
GUIPropertySchemeStorage::save
void save(OutputDevice &dev) const
Definition: GUIPropertySchemeStorage.h:110
GUIPropertySchemeStorage::getScheme
T & getScheme()
Definition: GUIPropertySchemeStorage.h:80
GUIScaler
GUIPropertySchemeStorage< GUIScaleScheme > GUIScaler
Definition: GUIPropertySchemeStorage.h:137
GUIColorer
GUIPropertySchemeStorage< GUIColorScheme > GUIColorer
Definition: GUIPropertySchemeStorage.h:136
GUIPropertySchemeStorage::fill
void fill(MFXIconComboBox &cb)
Fills the given combobox with the names of available colorings.
Definition: GUIPropertySchemeStorage.h:61
GUIPropertySchemeStorage::addScheme
void addScheme(T scheme)
Definition: GUIPropertySchemeStorage.h:121
GUIIconSubSys.h
GUIPropertySchemeStorage::~GUIPropertySchemeStorage
virtual ~GUIPropertySchemeStorage()
Destructor.
Definition: GUIPropertySchemeStorage.h:58
MFXUtils.h
MFXIconComboBox::appendIconItem
FXint appendIconItem(const FXString &text, FXIcon *icon, FXColor bgColor=FXRGBA(0, 0, 0, 0), void *ptr=NULL)
Definition: MFXIconComboBox.cpp:87
GUIPropertySchemeStorage::mySchemes
std::vector< T > mySchemes
Definition: GUIPropertySchemeStorage.h:132
GUIPropertySchemeStorage::getScheme
const T & getScheme() const
Definition: GUIPropertySchemeStorage.h:84
config.h
MFXUtils::getFXColor
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
Definition: MFXUtils.cpp:114
MFXIconComboBox.h
GUIPropertySchemeStorage::setActive
void setActive(int scheme)
Definition: GUIPropertySchemeStorage.h:70
MFXIconComboBox
Definition: MFXIconComboBox.h:54
GUIPropertySchemeStorage::getSchemes
const std::vector< T > & getSchemes() const
Definition: GUIPropertySchemeStorage.h:88
GUIPropertySchemeStorage::getActive
int getActive() const
Definition: GUIPropertySchemeStorage.h:76
GUIPropertySchemeStorage::myActiveScheme
int myActiveScheme
Definition: GUIPropertySchemeStorage.h:131
GUIPropertySchemeStorage
Base class for coloring. Allows changing the used colors and sets the used color in dependence to a v...
Definition: GUIPropertySchemeStorage.h:52