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 /****************************************************************************/
15 // The Widget for modifying selections of network-elements
16 // (some elements adapted from GUIDialog_GLChosenEditor)
17 /****************************************************************************/
18 #ifndef GNESelectorFrame_h
19 #define GNESelectorFrame_h
20 
21 // ===========================================================================
22 // included modules
23 // ===========================================================================
24 #include "GNEFrame.h"
25 
26 // ===========================================================================
27 // class definitions
28 // ===========================================================================
33 class GNESelectorFrame : public GNEFrame {
34 
35 public:
36 
37  // ===========================================================================
38  // class LockGLObjectTypes
39  // ===========================================================================
40 
41  class LockGLObjectTypes : protected FXGroupBox {
42 
43  public:
45  class ObjectTypeEntry : protected FXObject {
48 
49  public:
51  ObjectTypeEntry(FXMatrix* matrixParent, const std::string& label);
52 
54  void showObjectTypeEntry();
55 
57  void hideObjectTypeEntry();
58 
60  void counterUp();
61 
63  void counterDown();
64 
66  bool isGLTypeLocked() const;
67 
71  long onCmdSetCheckBox(FXObject*, FXSelector, void*);
72 
74 
75  protected:
78 
79  private:
81  FXLabel* myLabelCounter;
82 
84  FXLabel* myLabelTypeName;
85 
87  FXCheckButton* myCheckBoxLocked;
88 
90  int myCounter;
91  };
92 
94  LockGLObjectTypes(GNESelectorFrame* selectorFrameParent);
95 
98 
100  void addedLockedObject(const GUIGlObjectType type);
101 
103  void removeLockedObject(const GUIGlObjectType type);
104 
106  bool IsObjectTypeLocked(const GUIGlObjectType type) const;
107 
109  void showTypeEntries();
110 
111  private:
114 
116  std::map<GUIGlObjectType, std::pair<Supermode, ObjectTypeEntry* > > myTypeEntries;
117  };
118 
119  // ===========================================================================
120  // class ModificationMode
121  // ===========================================================================
122 
123  class ModificationMode : protected FXGroupBox {
126 
127  public:
130  SET_ADD = 1,
131  SET_SUB = 2,
134  SET_DEFAULT = 5 // use mySetOperation instead of override
135  };
136 
138  ModificationMode(GNESelectorFrame* selectorFrameParent);
139 
142 
145 
149  long onCmdSelectModificationMode(FXObject*, FXSelector, void*);
150 
152 
153  protected:
156 
157  private:
159  FXRadioButton* myAddRadioButton;
160 
162  FXRadioButton* myRemoveRadioButton;
163 
165  FXRadioButton* myKeepRadioButton;
166 
168  FXRadioButton* myReplaceRadioButton;
169 
172  };
173 
174  // ===========================================================================
175  // class ElementSet
176  // ===========================================================================
177 
178  class ElementSet : protected FXGroupBox {
181 
182  public:
190  };
191 
193  ElementSet(GNESelectorFrame* selectorFrameParent);
194 
196  ~ElementSet();
197 
200 
202  void refreshElementSet();
203 
205 
208 
210  long onCmdSelectElementSet(FXObject*, FXSelector, void*);
211 
213 
214  protected:
217 
218  private:
221 
223  FXComboBox* mySetComboBox;
224 
227  };
228 
229  // ===========================================================================
230  // class MatchAttribute
231  // ===========================================================================
232 
233  class MatchAttribute : protected FXGroupBox {
236 
237  public:
239  MatchAttribute(GNESelectorFrame* selectorFrameParent);
240 
242  ~MatchAttribute();
243 
245  void enableMatchAttribute();
246 
248  void disableMatchAttribute();
249 
252 
256  long onCmdSelMBTag(FXObject*, FXSelector, void*);
257 
261  long onCmdSelMBAttribute(FXObject*, FXSelector, void*);
262 
266  long onCmdSelMBString(FXObject*, FXSelector, void*);
267 
271  long onCmdHelp(FXObject*, FXSelector, void*);
272 
274 
275  protected:
278 
279  private:
282 
284  FXComboBox* myMatchTagComboBox;
285 
287  FXComboBox* myMatchAttrComboBox;
288 
291 
294 
296  FXTextField* myMatchString;
297  };
298 
299  // ===========================================================================
300  // class VisualScaling
301  // ===========================================================================
302 
303  class VisualScaling : protected FXGroupBox {
306 
307  public:
309  VisualScaling(GNESelectorFrame* selectorFrameParent);
310 
312  ~VisualScaling();
313 
316 
318  long onCmdScaleSelection(FXObject*, FXSelector, void*);
319 
321 
322  protected:
325 
326  private:
329 
331  FXRealSpinner* mySelectionScaling;
332  };
333 
334  // ===========================================================================
335  // class SelectionOperation
336  // ===========================================================================
337 
338  class SelectionOperation : protected FXGroupBox {
341 
342  public:
344  SelectionOperation(GNESelectorFrame* selectorFrameParent);
345 
348 
351 
356  long onCmdLoad(FXObject*, FXSelector, void*);
357 
362  long onCmdSave(FXObject*, FXSelector, void*);
363 
367  long onCmdClear(FXObject*, FXSelector, void*);
368 
372  long onCmdInvert(FXObject*, FXSelector, void*);
373 
375 
376  protected:
379 
380  private:
383  };
384 
389  GNESelectorFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet);
390 
393 
395  void show();
396 
398  void hide();
399 
401  void clearCurrentSelection() const;
402 
406  void handleIDs(const std::vector<GNEAttributeCarrier*>& ACs, ModificationMode::SetOperation setop = ModificationMode::SET_DEFAULT);
407 
410 
413 
414 private:
417 
420 
423 
426 
429 
432 
434  bool ACsToSelected() const;
435 
436 private:
442  std::vector<GNEAttributeCarrier*> getMatches(SumoXMLTag ACTag, SumoXMLAttr ACAttr, char compOp, double val, const std::string& expr);
443 };
444 
445 
446 #endif
447 
448 /****************************************************************************/
449 
GNESelectorFrame::ModificationMode::myAddRadioButton
FXRadioButton * myAddRadioButton
add radio button
Definition: GNESelectorFrame.h:159
GNESelectorFrame::~GNESelectorFrame
~GNESelectorFrame()
Destructor.
Definition: GNESelectorFrame.cpp:109
GNESelectorFrame::ModificationMode::getModificationMode
SetOperation getModificationMode() const
get current modification mode
Definition: GNESelectorFrame.cpp:684
GNESelectorFrame::ModificationMode::SET_DEFAULT
Definition: GNESelectorFrame.h:134
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:371
GNESelectorFrame::getModificationModeModul
ModificationMode * getModificationModeModul() const
get modification mode modul
Definition: GNESelectorFrame.cpp:454
GNESelectorFrame::show
void show()
show Frame
Definition: GNESelectorFrame.cpp:113
GNESelectorFrame::ModificationMode::SET_RESTRICT
Definition: GNESelectorFrame.h:132
GNESelectorFrame::ModificationMode::myRemoveRadioButton
FXRadioButton * myRemoveRadioButton
remove radio button
Definition: GNESelectorFrame.h:162
GNESelectorFrame::mySelectionOperation
SelectionOperation * mySelectionOperation
modul for selection operations
Definition: GNESelectorFrame.h:431
GNESelectorFrame::VisualScaling::~VisualScaling
~VisualScaling()
destructor
Definition: GNESelectorFrame.cpp:1138
GNESelectorFrame::ModificationMode::myModificationModeType
SetOperation myModificationModeType
how to modify selection
Definition: GNESelectorFrame.h:171
GNESelectorFrame::ModificationMode
Definition: GNESelectorFrame.h:123
GNESelectorFrame::ModificationMode::SET_REPLACE
Definition: GNESelectorFrame.h:133
GNESelectorFrame::ModificationMode::myKeepRadioButton
FXRadioButton * myKeepRadioButton
keep button
Definition: GNESelectorFrame.h:165
GNESelectorFrame::ElementSet::getElementSet
ElementSetType getElementSet() const
get current selected element set
Definition: GNESelectorFrame.cpp:741
GNESelectorFrame::LockGLObjectTypes::~LockGLObjectTypes
~LockGLObjectTypes()
destructor
Definition: GNESelectorFrame.cpp:559
GNESelectorFrame::ElementSet::ELEMENTSET_NETELEMENT
Definition: GNESelectorFrame.h:185
GNESelectorFrame::SelectionOperation::~SelectionOperation
~SelectionOperation()
destructor
Definition: GNESelectorFrame.cpp:1167
GNEFrame
Definition: GNEFrame.h:35
GNESelectorFrame::MatchAttribute::disableMatchAttribute
void disableMatchAttribute()
disable match attributes
Definition: GNESelectorFrame.cpp:869
GNEViewNet
Definition: GNEViewNet.h:43
GNESelectorFrame::hide
void hide()
hide Frame
Definition: GNESelectorFrame.cpp:124
GNESelectorFrame::myElementSet
ElementSet * myElementSet
modul for select element set
Definition: GNESelectorFrame.h:422
GNESelectorFrame::ElementSet::ELEMENTSET_ADDITIONAL
Definition: GNESelectorFrame.h:186
GNESelectorFrame::MatchAttribute::enableMatchAttribute
void enableMatchAttribute()
enable match attributes
Definition: GNESelectorFrame.cpp:836
GNESelectorFrame::SelectionOperation::onCmdInvert
long onCmdInvert(FXObject *, FXSelector, void *)
Called when the user presses the Invert-button.
Definition: GNESelectorFrame.cpp:1261
GNESelectorFrame::GNESelectorFrame
GNESelectorFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
Definition: GNESelectorFrame.cpp:87
GNESelectorFrame::ModificationMode::SET_SUB
Definition: GNESelectorFrame.h:131
SumoXMLTag
SumoXMLTag
Numbers representing SUMO-XML - element names.
Definition: SUMOXMLDefinitions.h:42
GNESelectorFrame::MatchAttribute::myMatchTagComboBox
FXComboBox * myMatchTagComboBox
tag of the match box
Definition: GNESelectorFrame.h:284
GNESelectorFrame::VisualScaling::VisualScaling
VisualScaling()
FOX needs this.
Definition: GNESelectorFrame.h:324
GNESelectorFrame::ModificationMode::ModificationMode
ModificationMode()
FOX needs this.
Definition: GNESelectorFrame.h:155
GNESelectorFrame::MatchAttribute::myMatchAttrComboBox
FXComboBox * myMatchAttrComboBox
attributes of the match box
Definition: GNESelectorFrame.h:287
GNESelectorFrame
Definition: GNESelectorFrame.h:33
GUIGlObjectType
GUIGlObjectType
Definition: GUIGlObjectTypes.h:40
GNESelectorFrame::myMatchAttribute
MatchAttribute * myMatchAttribute
modul for matchA ttribute
Definition: GNESelectorFrame.h:425
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::myLabelCounter
FXLabel * myLabelCounter
label counter
Definition: GNESelectorFrame.h:81
GNESelectorFrame::ElementSet::~ElementSet
~ElementSet()
destructor
Definition: GNESelectorFrame.cpp:737
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::hideObjectTypeEntry
void hideObjectTypeEntry()
hide ObjectTypeEntry
Definition: GNESelectorFrame.cpp:623
GNESelectorFrame::ElementSet::ElementSet
ElementSet()
FOX needs this.
Definition: GNESelectorFrame.h:216
GNESelectorFrame::VisualScaling::onCmdScaleSelection
long onCmdScaleSelection(FXObject *, FXSelector, void *)
Called when the user changes visual scaling.
Definition: GNESelectorFrame.cpp:1142
GNESelectorFrame::VisualScaling
Definition: GNESelectorFrame.h:303
GNESelectorFrame::LockGLObjectTypes
Definition: GNESelectorFrame.h:41
GNESelectorFrame::MatchAttribute::onCmdSelMBString
long onCmdSelMBString(FXObject *, FXSelector, void *)
Called when the user enters a new selection expression.
Definition: GNESelectorFrame.cpp:1016
GNESelectorFrame::LockGLObjectTypes::LockGLObjectTypes
LockGLObjectTypes(GNESelectorFrame *selectorFrameParent)
constructor
Definition: GNESelectorFrame.cpp:528
GNESelectorFrame::LockGLObjectTypes::showTypeEntries
void showTypeEntries()
show type Entries (depending if we're in Network or demand supermode)
Definition: GNESelectorFrame.cpp:590
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::ObjectTypeEntry
ObjectTypeEntry()
FOX needs this.
Definition: GNESelectorFrame.h:77
GNESelectorFrame::ElementSet::ElementSetType
ElementSetType
FOX-declaration.
Definition: GNESelectorFrame.h:184
GNESelectorFrame::MatchAttribute::myMatchString
FXTextField * myMatchString
string of the match
Definition: GNESelectorFrame.h:296
GNESelectorFrame::myVisualScaling
VisualScaling * myVisualScaling
modul for visual scaling
Definition: GNESelectorFrame.h:428
GNESelectorFrame::SelectionOperation
Definition: GNESelectorFrame.h:338
GNESelectorFrame::ElementSet::ELEMENTSET_DEMANDELEMENT
Definition: GNESelectorFrame.h:188
GNESelectorFrame::MatchAttribute::myCurrentAttribute
SumoXMLAttr myCurrentAttribute
current SumoXMLTag Attribute
Definition: GNESelectorFrame.h:293
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:466
GNESelectorFrame::ModificationMode::SET_ADD
Definition: GNESelectorFrame.h:130
GNESelectorFrame::ElementSet::refreshElementSet
void refreshElementSet()
refresh element set
Definition: GNESelectorFrame.cpp:747
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::myCheckBoxLocked
FXCheckButton * myCheckBoxLocked
check box to check if GLObject type is blocked
Definition: GNESelectorFrame.h:87
GNESelectorFrame::MatchAttribute::myCurrentTag
SumoXMLTag myCurrentTag
current SumoXMLTag tag
Definition: GNESelectorFrame.h:290
GNESelectorFrame::SelectionOperation::onCmdClear
long onCmdClear(FXObject *, FXSelector, void *)
Called when the user presses the Clear-button.
Definition: GNESelectorFrame.cpp:1253
GNESelectorFrame::SelectionOperation::SelectionOperation
SelectionOperation()
FOX needs this.
Definition: GNESelectorFrame.h:378
GNESelectorFrame::ModificationMode::~ModificationMode
~ModificationMode()
destructor
Definition: GNESelectorFrame.cpp:680
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::myLabelTypeName
FXLabel * myLabelTypeName
label type nane
Definition: GNESelectorFrame.h:84
GNESelectorFrame::SelectionOperation::onCmdSave
long onCmdSave(FXObject *, FXSelector, void *)
Called when the user presses the Save-button.
Definition: GNESelectorFrame.cpp:1225
GNESelectorFrame::MatchAttribute::onCmdSelMBTag
long onCmdSelMBTag(FXObject *, FXSelector, void *)
Called when the user selectes a tag in the match box.
Definition: GNESelectorFrame.cpp:882
GNESelectorFrame::myModificationMode
ModificationMode * myModificationMode
modul for change modification mode
Definition: GNESelectorFrame.h:419
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry
class for object types entries
Definition: GNESelectorFrame.h:45
GNESelectorFrame::ElementSet::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:220
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::showObjectTypeEntry
void showObjectTypeEntry()
show ObjectTypeEntry
Definition: GNESelectorFrame.cpp:615
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:116
GNESelectorFrame::MatchAttribute
Definition: GNESelectorFrame.h:233
GNESelectorFrame::ElementSet
Definition: GNESelectorFrame.h:178
GNESelectorFrame::VisualScaling::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:328
GNESelectorFrame::myLockGLObjectTypes
LockGLObjectTypes * myLockGLObjectTypes
modul for lock selected items
Definition: GNESelectorFrame.h:416
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::counterDown
void counterDown()
down count
Definition: GNESelectorFrame.cpp:638
GNESelectorFrame::clearCurrentSelection
void clearCurrentSelection() const
clear current selection with possibility of undo/redo
Definition: GNESelectorFrame.cpp:131
GNESelectorFrame::MatchAttribute::onCmdSelMBAttribute
long onCmdSelMBAttribute(FXObject *, FXSelector, void *)
Called when the user selectes a tag in the match box.
Definition: GNESelectorFrame.cpp:950
GNESelectorFrame::ElementSet::ELEMENTSET_SHAPE
Definition: GNESelectorFrame.h:187
GNESelectorFrame::ModificationMode::myReplaceRadioButton
FXRadioButton * myReplaceRadioButton
replace radio button
Definition: GNESelectorFrame.h:168
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::isGLTypeLocked
bool isGLTypeLocked() const
check if current GLType is blocked
Definition: GNESelectorFrame.cpp:645
GNESelectorFrame::ElementSet::ELEMENTSET_INVALID
Definition: GNESelectorFrame.h:189
GNESelectorFrame::LockGLObjectTypes::IsObjectTypeLocked
bool IsObjectTypeLocked(const GUIGlObjectType type) const
check if an object is locked
Definition: GNESelectorFrame.cpp:580
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:765
GNESelectorFrame::LockGLObjectTypes::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:113
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::onCmdSetCheckBox
long onCmdSetCheckBox(FXObject *, FXSelector, void *)
Definition: GNESelectorFrame.cpp:651
GNESelectorFrame::LockGLObjectTypes::removeLockedObject
void removeLockedObject(const GUIGlObjectType type)
set object unselected
Definition: GNESelectorFrame.cpp:574
GNESelectorFrame::VisualScaling::mySelectionScaling
FXRealSpinner * mySelectionScaling
Spinner for selection scaling.
Definition: GNESelectorFrame.h:331
GNESelectorFrame::MatchAttribute::MatchAttribute
MatchAttribute()
FOX needs this.
Definition: GNESelectorFrame.h:277
GNESelectorFrame::ElementSet::myCurrentElementSet
ElementSetType myCurrentElementSet
current element set selected
Definition: GNESelectorFrame.h:226
GNESelectorFrame::MatchAttribute::onCmdHelp
long onCmdHelp(FXObject *, FXSelector, void *)
Called when the user clicks the help button.
Definition: GNESelectorFrame.cpp:1068
SumoXMLAttr
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
Definition: SUMOXMLDefinitions.h:373
GNESelectorFrame::ElementSet::mySetComboBox
FXComboBox * mySetComboBox
Combo Box with the element sets.
Definition: GNESelectorFrame.h:223
GNEFrame.h
GNESelectorFrame::ACsToSelected
bool ACsToSelected() const
check if there is ACs to select/unselect
Definition: GNESelectorFrame.cpp:1569
GNESelectorFrame::SelectionOperation::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:382
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::counterUp
void counterUp()
up count
Definition: GNESelectorFrame.cpp:631
GNESelectorFrame::MatchAttribute::mySelectorFrameParent
GNESelectorFrame * mySelectorFrameParent
pointer to Selector Frame Parent
Definition: GNESelectorFrame.h:281
GNESelectorFrame::ModificationMode::onCmdSelectModificationMode
long onCmdSelectModificationMode(FXObject *, FXSelector, void *)
Definition: GNESelectorFrame.cpp:690
GNESelectorFrame::LockGLObjectTypes::ObjectTypeEntry::myCounter
int myCounter
counter
Definition: GNESelectorFrame.h:90
GNESelectorFrame::getLockGLObjectTypes
LockGLObjectTypes * getLockGLObjectTypes() const
get selected items Modul
Definition: GNESelectorFrame.cpp:460
GNESelectorFrame::ModificationMode::SetOperation
SetOperation
FOX-declaration.
Definition: GNESelectorFrame.h:129
GNESelectorFrame::MatchAttribute::~MatchAttribute
~MatchAttribute()
destructor
Definition: GNESelectorFrame.cpp:832
GNESelectorFrame::LockGLObjectTypes::addedLockedObject
void addedLockedObject(const GUIGlObjectType type)
set object selected
Definition: GNESelectorFrame.cpp:568
GNESelectorFrame::SelectionOperation::onCmdLoad
long onCmdLoad(FXObject *, FXSelector, void *)
Called when the user presses the Load-button.
Definition: GNESelectorFrame.cpp:1171