Eclipse SUMO - Simulation of Urban MObility
GNESelectorFrame.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 /****************************************************************************/
14 // The Widget for modifying selections of network-elements
15 // (some elements adapted from GUIDialog_GLChosenEditor)
16 /****************************************************************************/
17 #ifndef GNESelectorFrame_h
18 #define GNESelectorFrame_h
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include "GNEFrame.h"
24 
25 // ===========================================================================
26 // class definitions
27 // ===========================================================================
32 class GNESelectorFrame : public GNEFrame {
33 
34 public:
35 
36  // ===========================================================================
37  // class LockGLObjectTypes
38  // ===========================================================================
39 
40  class LockGLObjectTypes : protected FXGroupBox {
41 
42  public:
44  class ObjectTypeEntry : protected FXObject {
47 
48  public:
50  ObjectTypeEntry(FXMatrix* matrixParent, const std::string& label);
51 
53  void showObjectTypeEntry();
54 
56  void hideObjectTypeEntry();
57 
59  void counterUp();
60 
62  void counterDown();
63 
65  bool isGLTypeLocked() const;
66 
70  long onCmdSetCheckBox(FXObject*, FXSelector, void*);
71 
73 
74  protected:
76 
77  private:
79  FXLabel* myLabelCounter;
80 
82  FXLabel* myLabelTypeName;
83 
85  FXCheckButton* myCheckBoxLocked;
86 
88  int myCounter;
89  };
90 
92  LockGLObjectTypes(GNESelectorFrame* selectorFrameParent);
93 
96 
98  void addedLockedObject(const GUIGlObjectType type);
99 
101  void removeLockedObject(const GUIGlObjectType type);
102 
104  bool IsObjectTypeLocked(const GUIGlObjectType type) const;
105 
107  void showTypeEntries();
108 
109  private:
112 
114  std::map<GUIGlObjectType, std::pair<Supermode, ObjectTypeEntry* > > myTypeEntries;
115  };
116 
117  // ===========================================================================
118  // class ModificationMode
119  // ===========================================================================
120 
121  class ModificationMode : protected FXGroupBox {
124 
125  public:
128  SET_ADD = 1,
129  SET_SUB = 2,
132  SET_DEFAULT = 5 // use mySetOperation instead of override
133  };
134 
136  ModificationMode(GNESelectorFrame* selectorFrameParent);
137 
140 
143 
147  long onCmdSelectModificationMode(FXObject*, FXSelector, void*);
148 
150 
151  protected:
153 
154  private:
156  FXRadioButton* myAddRadioButton;
157 
159  FXRadioButton* myRemoveRadioButton;
160 
162  FXRadioButton* myKeepRadioButton;
163 
165  FXRadioButton* myReplaceRadioButton;
166 
169  };
170 
171  // ===========================================================================
172  // class ElementSet
173  // ===========================================================================
174 
175  class ElementSet : protected FXGroupBox {
178 
179  public:
187  };
188 
190  ElementSet(GNESelectorFrame* selectorFrameParent);
191 
193  ~ElementSet();
194 
197 
199  void refreshElementSet();
200 
202 
205 
207  long onCmdSelectElementSet(FXObject*, FXSelector, void*);
208 
210 
211  protected:
213 
214  private:
217 
219  FXComboBox* mySetComboBox;
220 
223  };
224 
225  // ===========================================================================
226  // class MatchAttribute
227  // ===========================================================================
228 
229  class MatchAttribute : protected FXGroupBox {
232 
233  public:
235  MatchAttribute(GNESelectorFrame* selectorFrameParent);
236 
238  ~MatchAttribute();
239 
241  void enableMatchAttribute();
242 
244  void disableMatchAttribute();
245 
248 
252  long onCmdSelMBTag(FXObject*, FXSelector, void*);
253 
257  long onCmdSelMBAttribute(FXObject*, FXSelector, void*);
258 
262  long onCmdSelMBString(FXObject*, FXSelector, void*);
263 
267  long onCmdHelp(FXObject*, FXSelector, void*);
268 
270 
271  protected:
273 
274  private:
277 
279  FXComboBox* myMatchTagComboBox;
280 
282  FXComboBox* myMatchAttrComboBox;
283 
286 
289 
291  FXTextField* myMatchString;
292  };
293 
294  // ===========================================================================
295  // class VisualScaling
296  // ===========================================================================
297 
298  class VisualScaling : protected FXGroupBox {
301 
302  public:
304  VisualScaling(GNESelectorFrame* selectorFrameParent);
305 
307  ~VisualScaling();
308 
311 
313  long onCmdScaleSelection(FXObject*, FXSelector, void*);
314 
316 
317  protected:
319 
320  private:
323 
325  FXRealSpinner* mySelectionScaling;
326  };
327 
328  // ===========================================================================
329  // class SelectionOperation
330  // ===========================================================================
331 
332  class SelectionOperation : protected FXGroupBox {
335 
336  public:
338  SelectionOperation(GNESelectorFrame* selectorFrameParent);
339 
342 
345 
350  long onCmdLoad(FXObject*, FXSelector, void*);
351 
356  long onCmdSave(FXObject*, FXSelector, void*);
357 
361  long onCmdClear(FXObject*, FXSelector, void*);
362 
366  long onCmdInvert(FXObject*, FXSelector, void*);
367 
369 
370  protected:
372 
373  private:
376  };
377 
382  GNESelectorFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
383 
386 
388  void show();
389 
391  void hide();
392 
394  void clearCurrentSelection() const;
395 
399  void handleIDs(const std::vector<GNEAttributeCarrier*>& ACs, ModificationMode::SetOperation setop = ModificationMode::SET_DEFAULT);
400 
403 
406 
407 private:
410 
413 
416 
419 
422 
425 
427  bool ACsToSelected() const;
428 
429 private:
435  std::vector<GNEAttributeCarrier*> getMatches(SumoXMLTag ACTag, SumoXMLAttr ACAttr, char compOp, double val, const std::string& expr);
436 };
437 
438 
439 #endif
440 
441 /****************************************************************************/
442 
GNESelectorFrame::ModificationMode::myAddRadioButton
FXRadioButton * myAddRadioButton
add radio button
Definition: GNESelectorFrame.h:156
GNESelectorFrame::~GNESelectorFrame
~GNESelectorFrame()
Destructor.
Definition: GNESelectorFrame.cpp:108
GNESelectorFrame::ModificationMode::getModificationMode
SetOperation getModificationMode() const
get current modification mode
Definition: GNESelectorFrame.cpp:683
GNESelectorFrame::ModificationMode::SET_DEFAULT
Definition: GNESelectorFrame.h:132
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::ObjectTypeEntry
ObjectTypeEntry(FXMatrix *matrixParent, const std::string &label)
FOX-declaration.
Definition: GNESelectorFrame.cpp:603
GNESelectorFrame::handleIDs
void handleIDs(const std::vector< GNEAttributeCarrier * > &ACs, ModificationMode::SetOperation setop=ModificationMode::SET_DEFAULT)
apply list of ids to the current selection according to SetOperation,
Definition: GNESelectorFrame.cpp:370
GNESelectorFrame::getModificationModeModul
ModificationMode * getModificationModeModul() const
get modification mode modul
Definition: GNESelectorFrame.cpp:453
GNESelectorFrame::MatchAttribute::MatchAttribute
MatchAttribute(GNESelectorFrame *selectorFrameParent)
FOX-declaration.
Definition: GNESelectorFrame.cpp:808
GNESelectorFrame::VisualScaling::VisualScaling
VisualScaling(GNESelectorFrame *selectorFrameParent)
FOX-declaration.
Definition: GNESelectorFrame.cpp:1128
GNESelectorFrame::show
void show()
show Frame
Definition: GNESelectorFrame.cpp:112
GNESelectorFrame::ModificationMode::SET_RESTRICT
Definition: GNESelectorFrame.h:130
GNESelectorFrame::SelectionOperation::SelectionOperation
SelectionOperation(GNESelectorFrame *selectorFrameParent)
FOX-declaration.
Definition: GNESelectorFrame.cpp:1157
GNESelectorFrame::ModificationMode::myRemoveRadioButton
FXRadioButton * myRemoveRadioButton
remove radio button
Definition: GNESelectorFrame.h:159
GNESelectorFrame::mySelectionOperation
SelectionOperation * mySelectionOperation
modul for selection operations
Definition: GNESelectorFrame.h:424
GNESelectorFrame::VisualScaling::~VisualScaling
~VisualScaling()
destructor
Definition: GNESelectorFrame.cpp:1142
GNESelectorFrame::ModificationMode::myModificationModeType
SetOperation myModificationModeType
how to modify selection
Definition: GNESelectorFrame.h:168
GNESelectorFrame::ModificationMode
Definition: GNESelectorFrame.h:121
GNESelectorFrame::ModificationMode::SET_REPLACE
Definition: GNESelectorFrame.h:131
GNESelectorFrame::ModificationMode::myKeepRadioButton
FXRadioButton * myKeepRadioButton
keep button
Definition: GNESelectorFrame.h:162
GNESelectorFrame::ElementSet::getElementSet
ElementSetType getElementSet() const
get current selected element set
Definition: GNESelectorFrame.cpp:740
GNESelectorFrame::LockGLObjectTypes::~LockGLObjectTypes
~LockGLObjectTypes()
destructor
Definition: GNESelectorFrame.cpp:558
GNESelectorFrame::ElementSet::ELEMENTSET_NETELEMENT
Definition: GNESelectorFrame.h:182
GNESelectorFrame::SelectionOperation::~SelectionOperation
~SelectionOperation()
destructor
Definition: GNESelectorFrame.cpp:1171
GNESelectorFrame::ElementSet::ElementSet
ElementSet(GNESelectorFrame *selectorFrameParent)
constructor
Definition: GNESelectorFrame.cpp:727
GNEFrame
Definition: GNEFrame.h:34
GNESelectorFrame::MatchAttribute::disableMatchAttribute
void disableMatchAttribute()
disable match attributes
Definition: GNESelectorFrame.cpp:868
GNEViewNet
Definition: GNEViewNet.h:42
GNESelectorFrame::hide
void hide()
hide Frame
Definition: GNESelectorFrame.cpp:123
GNESelectorFrame::myElementSet
ElementSet * myElementSet
modul for select element set
Definition: GNESelectorFrame.h:415
GNESelectorFrame::ElementSet::ELEMENTSET_ADDITIONAL
Definition: GNESelectorFrame.h:183
GNESelectorFrame::MatchAttribute::enableMatchAttribute
void enableMatchAttribute()
enable match attributes
Definition: GNESelectorFrame.cpp:835
GNESelectorFrame::SelectionOperation::onCmdInvert
long onCmdInvert(FXObject *, FXSelector, void *)
Called when the user presses the Invert-button.
Definition: GNESelectorFrame.cpp:1265
GNESelectorFrame::GNESelectorFrame
GNESelectorFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
Definition: GNESelectorFrame.cpp:86
GNESelectorFrame::ModificationMode::SET_SUB
Definition: GNESelectorFrame.h:129
SumoXMLTag
SumoXMLTag
Numbers representing SUMO-XML - element names.
Definition: SUMOXMLDefinitions.h:41
GNESelectorFrame::MatchAttribute::myMatchTagComboBox
FXComboBox * myMatchTagComboBox
tag of the match box
Definition: GNESelectorFrame.h:279
GNESelectorFrame::MatchAttribute::myMatchAttrComboBox
FXComboBox * myMatchAttrComboBox
attributes of the match box
Definition: GNESelectorFrame.h:282
GNESelectorFrame
Definition: GNESelectorFrame.h:32
GUIGlObjectType
GUIGlObjectType
Definition: GUIGlObjectTypes.h:39
GNESelectorFrame::myMatchAttribute
MatchAttribute * myMatchAttribute
modul for matchA ttribute
Definition: GNESelectorFrame.h:418
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::myLabelCounter
FXLabel * myLabelCounter
label counter
Definition: GNESelectorFrame.h:79
GNESelectorFrame::ElementSet::~ElementSet
~ElementSet()
destructor
Definition: GNESelectorFrame.cpp:736
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::hideObjectTypeEntry
void hideObjectTypeEntry()
hide ObjectTypeEntry
Definition: GNESelectorFrame.cpp:622
GNESelectorFrame::VisualScaling::onCmdScaleSelection
long onCmdScaleSelection(FXObject *, FXSelector, void *)
Called when the user changes visual scaling.
Definition: GNESelectorFrame.cpp:1146
GNESelectorFrame::VisualScaling
Definition: GNESelectorFrame.h:298
GNESelectorFrame::LockGLObjectTypes
Definition: GNESelectorFrame.h:40
GNESelectorFrame::MatchAttribute::onCmdSelMBString
long onCmdSelMBString(FXObject *, FXSelector, void *)
Called when the user enters a new selection expression.
Definition: GNESelectorFrame.cpp:1020
GNESelectorFrame::LockGLObjectTypes::LockGLObjectTypes
LockGLObjectTypes(GNESelectorFrame *selectorFrameParent)
constructor
Definition: GNESelectorFrame.cpp:527
GNESelectorFrame::LockGLObjectTypes::showTypeEntries
void showTypeEntries()
show type Entries (depending if we're in Network or demand supermode)
Definition: GNESelectorFrame.cpp:589
GNESelectorFrame::ElementSet::ElementSetType
ElementSetType
FOX-declaration.
Definition: GNESelectorFrame.h:181
GNESelectorFrame::MatchAttribute::myMatchString
FXTextField * myMatchString
string of the match
Definition: GNESelectorFrame.h:291
GNESelectorFrame::myVisualScaling
VisualScaling * myVisualScaling
modul for visual scaling
Definition: GNESelectorFrame.h:421
FOX_CONSTRUCTOR
#define FOX_CONSTRUCTOR(classname)
Definition: config.h:13
GNESelectorFrame::SelectionOperation
Definition: GNESelectorFrame.h:332
GNESelectorFrame::ElementSet::ELEMENTSET_DEMANDELEMENT
Definition: GNESelectorFrame.h:185
GNESelectorFrame::MatchAttribute::myCurrentAttribute
SumoXMLAttr myCurrentAttribute
current SumoXMLTag Attribute
Definition: GNESelectorFrame.h:288
GNESelectorFrame::getMatches
std::vector< GNEAttributeCarrier * > getMatches(SumoXMLTag ACTag, SumoXMLAttr ACAttr, char compOp, double val, const std::string &expr)
return ACs of the given type with matching attrs
Definition: GNESelectorFrame.cpp:465
GNESelectorFrame::ModificationMode::ModificationMode
ModificationMode(GNESelectorFrame *selectorFrameParent)
constructor
Definition: GNESelectorFrame.cpp:663
GNESelectorFrame::ModificationMode::SET_ADD
Definition: GNESelectorFrame.h:128
GNESelectorFrame::ElementSet::refreshElementSet
void refreshElementSet()
refresh element set
Definition: GNESelectorFrame.cpp:746
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::myCheckBoxLocked
FXCheckButton * myCheckBoxLocked
check box to check if GLObject type is blocked
Definition: GNESelectorFrame.h:85
GNESelectorFrame::MatchAttribute::myCurrentTag
SumoXMLTag myCurrentTag
current SumoXMLTag tag
Definition: GNESelectorFrame.h:285
GNESelectorFrame::SelectionOperation::onCmdClear
long onCmdClear(FXObject *, FXSelector, void *)
Called when the user presses the Clear-button.
Definition: GNESelectorFrame.cpp:1257
GNESelectorFrame::ModificationMode::~ModificationMode
~ModificationMode()
destructor
Definition: GNESelectorFrame.cpp:679
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::myLabelTypeName
FXLabel * myLabelTypeName
label type nane
Definition: GNESelectorFrame.h:82
GNESelectorFrame::SelectionOperation::onCmdSave
long onCmdSave(FXObject *, FXSelector, void *)
Called when the user presses the Save-button.
Definition: GNESelectorFrame.cpp:1229
GNESelectorFrame::MatchAttribute::onCmdSelMBTag
long onCmdSelMBTag(FXObject *, FXSelector, void *)
Called when the user selectes a tag in the match box.
Definition: GNESelectorFrame.cpp:881
GNESelectorFrame::myModificationMode
ModificationMode * myModificationMode
modul for change modification mode
Definition: GNESelectorFrame.h:412
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry
class for object types entries
Definition: GNESelectorFrame.h:44
GNESelectorFrame::ElementSet::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:216
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::showObjectTypeEntry
void showObjectTypeEntry()
show ObjectTypeEntry
Definition: GNESelectorFrame.cpp:614
GNESelectorFrame::LockGLObjectTypes::myTypeEntries
std::map< GUIGlObjectType, std::pair< Supermode, ObjectTypeEntry * > > myTypeEntries
check boxes for type-based selection locking and selected object counts
Definition: GNESelectorFrame.h:114
GNESelectorFrame::MatchAttribute
Definition: GNESelectorFrame.h:229
GNESelectorFrame::ElementSet
Definition: GNESelectorFrame.h:175
GNESelectorFrame::VisualScaling::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:322
GNESelectorFrame::myLockGLObjectTypes
LockGLObjectTypes * myLockGLObjectTypes
modul for lock selected items
Definition: GNESelectorFrame.h:409
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::counterDown
void counterDown()
down count
Definition: GNESelectorFrame.cpp:637
GNESelectorFrame::clearCurrentSelection
void clearCurrentSelection() const
clear current selection with possibility of undo/redo
Definition: GNESelectorFrame.cpp:130
GNESelectorFrame::MatchAttribute::onCmdSelMBAttribute
long onCmdSelMBAttribute(FXObject *, FXSelector, void *)
Called when the user selectes a tag in the match box.
Definition: GNESelectorFrame.cpp:954
GNESelectorFrame::ElementSet::ELEMENTSET_SHAPE
Definition: GNESelectorFrame.h:184
GNESelectorFrame::ModificationMode::myReplaceRadioButton
FXRadioButton * myReplaceRadioButton
replace radio button
Definition: GNESelectorFrame.h:165
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::isGLTypeLocked
bool isGLTypeLocked() const
check if current GLType is blocked
Definition: GNESelectorFrame.cpp:644
GNESelectorFrame::ElementSet::ELEMENTSET_INVALID
Definition: GNESelectorFrame.h:186
GNESelectorFrame::LockGLObjectTypes::IsObjectTypeLocked
bool IsObjectTypeLocked(const GUIGlObjectType type) const
check if an object is locked
Definition: GNESelectorFrame.cpp:579
GNESelectorFrame::ElementSet::onCmdSelectElementSet
long onCmdSelectElementSet(FXObject *, FXSelector, void *)
Called when the user change the set of element to search (netElement, Additional or shape)
Definition: GNESelectorFrame.cpp:764
GNESelectorFrame::LockGLObjectTypes::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:111
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::onCmdSetCheckBox
long onCmdSetCheckBox(FXObject *, FXSelector, void *)
Definition: GNESelectorFrame.cpp:650
GNESelectorFrame::LockGLObjectTypes::removeLockedObject
void removeLockedObject(const GUIGlObjectType type)
set object unselected
Definition: GNESelectorFrame.cpp:573
GNESelectorFrame::VisualScaling::mySelectionScaling
FXRealSpinner * mySelectionScaling
Spinner for selection scaling.
Definition: GNESelectorFrame.h:325
GNESelectorFrame::ElementSet::myCurrentElementSet
ElementSetType myCurrentElementSet
current element set selected
Definition: GNESelectorFrame.h:222
GNESelectorFrame::MatchAttribute::onCmdHelp
long onCmdHelp(FXObject *, FXSelector, void *)
Called when the user clicks the help button.
Definition: GNESelectorFrame.cpp:1072
SumoXMLAttr
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
Definition: SUMOXMLDefinitions.h:372
GNESelectorFrame::ElementSet::mySetComboBox
FXComboBox * mySetComboBox
Combo Box with the element sets.
Definition: GNESelectorFrame.h:219
GNEFrame.h
GNESelectorFrame::ACsToSelected
bool ACsToSelected() const
check if there is ACs to select/unselect
Definition: GNESelectorFrame.cpp:1573
GNESelectorFrame::SelectionOperation::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:375
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::counterUp
void counterUp()
up count
Definition: GNESelectorFrame.cpp:630
GNESelectorFrame::MatchAttribute::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:276
GNESelectorFrame::ModificationMode::onCmdSelectModificationMode
long onCmdSelectModificationMode(FXObject *, FXSelector, void *)
Definition: GNESelectorFrame.cpp:689
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::myCounter
int myCounter
counter
Definition: GNESelectorFrame.h:88
GNESelectorFrame::getLockGLObjectTypes
LockGLObjectTypes * getLockGLObjectTypes() const
get selected items Modul
Definition: GNESelectorFrame.cpp:459
GNESelectorFrame::ModificationMode::SetOperation
SetOperation
FOX-declaration.
Definition: GNESelectorFrame.h:127
GNESelectorFrame::MatchAttribute::~MatchAttribute
~MatchAttribute()
destructor
Definition: GNESelectorFrame.cpp:831
GNESelectorFrame::LockGLObjectTypes::addedLockedObject
void addedLockedObject(const GUIGlObjectType type)
set object selected
Definition: GNESelectorFrame.cpp:567
GNESelectorFrame::SelectionOperation::onCmdLoad
long onCmdLoad(FXObject *, FXSelector, void *)
Called when the user presses the Load-button.
Definition: GNESelectorFrame.cpp:1175