Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNEGenericDataFrame.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2023 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
18// The Widget for add genericData elements
19/****************************************************************************/
20#include <config.h>
21
22#include <netedit/GNENet.h>
23#include <netedit/GNEViewNet.h>
28
29#include "GNEGenericDataFrame.h"
30
31
32// ===========================================================================
33// FOX callback mapping
34// ===========================================================================
35
43
50
54
55// Object implementation
56FXIMPLEMENT(GNEGenericDataFrame::DataSetSelector, MFXGroupBoxModule, DataSetSelectorMap, ARRAYNUMBER(DataSetSelectorMap))
57FXIMPLEMENT(GNEGenericDataFrame::IntervalSelector, MFXGroupBoxModule, IntervalSelectorMap, ARRAYNUMBER(IntervalSelectorMap))
58FXIMPLEMENT(GNEGenericDataFrame::AttributeSelector, MFXGroupBoxModule, AttributeSelectorMap, ARRAYNUMBER(AttributeSelectorMap))
59
60// ===========================================================================
61// method definitions
62// ===========================================================================
63
64// ---------------------------------------------------------------------------
65// GNEGenericDataFrame::DataSetSelector - methods
66// ---------------------------------------------------------------------------
67
69 MFXGroupBoxModule(genericDataFrameParent, TL("DataSet")),
70 myGenericDataFrameParent(genericDataFrameParent) {
71 // create check button for new data set
72 myNewDataSetCheckButton = new FXCheckButton(getCollapsableFrame(), TL("Create new dataSet"), this, MID_GNE_SELECT, GUIDesignCheckButton);
73 // Create FXComboBox
74 myDataSetsComboBox = new FXComboBox(getCollapsableFrame(), GUIDesignComboBoxNCol, this, MID_GNE_DATASET_SELECTED, GUIDesignComboBox);
75 // create new id label
76 myHorizontalFrameNewID = new FXHorizontalFrame(getCollapsableFrame(), GUIDesignAuxiliarHorizontalFrame);
77 new FXLabel(myHorizontalFrameNewID, "new dataSet ID", nullptr, GUIDesignLabelThickedFixed(100));
78 // create new id textField
79 myNewDataSetIDTextField = new FXTextField(myHorizontalFrameNewID, GUIDesignTextFieldNCol, this, MID_GNE_SET_ATTRIBUTE, GUIDesignTextField);
80 // hide horizontal frame
81 myHorizontalFrameNewID->hide();
82 // create dataSet button
83 myCreateDataSetButton = new FXButton(getCollapsableFrame(), TL("Create dataSet"), GUIIconSubSys::getIcon(GUIIcon::DATASET), this, MID_GNE_CREATE, GUIDesignButton);
84 myCreateDataSetButton->hide();
85 // refresh interval selector
86 refreshDataSetSelector(nullptr);
87 // DataSetSelector is always shown
88 show();
89}
90
91
93
94
95void
97 // clear items
98 myDataSetsComboBox->clearItems();
99 // declare item index
100 int currentItemIndex = -1;
101 // fill myDataSetsComboBox with all DataSets
102 for (const auto& dataSet : myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDataSets()) {
103 // check if we have to set currentItemIndex
104 if ((currentItemIndex == -1) && (dataSet == currentDataSet)) {
105 currentItemIndex = myDataSetsComboBox->getNumItems();
106 }
107 myDataSetsComboBox->appendItem(dataSet->getID().c_str());
108 }
109 // Set visible items
110 myDataSetsComboBox->setNumVisible((int)myDataSetsComboBox->getNumItems());
111 // check if we have to set current element
112 if (currentItemIndex != -1) {
113 myDataSetsComboBox->setCurrentItem(currentItemIndex, FALSE);
114 }
115 // recalc frame
116 recalc();
117 // refresh interval selector
118 if (myGenericDataFrameParent->myIntervalSelector) {
119 myGenericDataFrameParent->myIntervalSelector->refreshIntervalSelector();
120 }
121}
122
123
126 if ((myNewDataSetCheckButton->getCheck() == TRUE) || (myDataSetsComboBox->getNumItems() == 0)) {
127 return nullptr;
128 } else {
129 return myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveDataSet(myDataSetsComboBox->getItem(myDataSetsComboBox->getCurrentItem()).text(), false);
130 }
131}
132
133
134long
136 // get string
137 const std::string dataSetID = myNewDataSetIDTextField->getText().text();
138 // check conditions
139 if (myNewDataSetIDTextField->getTextColor() == FXRGB(255, 0, 0)) {
140 WRITE_WARNING(TL("Invalid dataSet ID"));
141 } else if (dataSetID.empty()) {
142 WRITE_WARNING(TL("Invalid empty dataSet ID"));
143 } else if (myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveDataSet(dataSetID, false) != nullptr) {
144 WRITE_WARNING(TL("Invalid duplicated dataSet ID"));
145 } else {
146 // build data set
147 GNEDataHandler dataHandler(myGenericDataFrameParent->getViewNet()->getNet(), "", true, false);
148 dataHandler.buildDataSet(dataSetID);
149 // refresh tag selector
150 refreshDataSetSelector(myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveDataSet(dataSetID));
151 // change check button
152 myNewDataSetCheckButton->setCheck(FALSE, TRUE);
153 }
154 return 1;
155}
156
157
158long
160 //
161 return 1;
162}
163
164
165long
167 // update interval modul
168 myGenericDataFrameParent->myIntervalSelector->refreshIntervalSelector();
169 return 1;
170}
171
172
173long
175 if (myNewDataSetCheckButton->getCheck() == TRUE) {
176 // enable textfield and label
177 myHorizontalFrameNewID->show();
178 myCreateDataSetButton->show();
179 // disable comboBox
180 myDataSetsComboBox->hide();
181 } else {
182 // disable textfield and label
183 myHorizontalFrameNewID->hide();
184 myCreateDataSetButton->hide();
185 // enable comboBox
186 myDataSetsComboBox->show();
187 }
188 // update interval modul
189 myGenericDataFrameParent->myIntervalSelector->refreshIntervalSelector();
190 return 1;
191}
192
193// ---------------------------------------------------------------------------
194// GNEGenericDataFrame::IntervalSelector - methods
195// ---------------------------------------------------------------------------
196
198 MFXGroupBoxModule(genericDataFrameParent, TL("Interval")),
199 myGenericDataFrameParent(genericDataFrameParent) {
200 // create check button for new interval
201 myNewIntervalCheckButton = new FXCheckButton(getCollapsableFrame(), TL("Create new interval"), this, MID_GNE_SELECT, GUIDesignCheckButton);
202 // create begin label
205 // create begin TextField
207 myBeginTextField->setText("0");
208 // hide horizontal frame begin
210 // create end label
212 new FXLabel(myHorizontalFrameEnd, toString(SUMO_ATTR_END).c_str(), nullptr, GUIDesignLabelThickedFixed(100));
213 // create end textfield
215 myEndTextField->setText("3600");
216 // hide horizontal frame end
217 myHorizontalFrameEnd->hide();
218 // create interval button
221 // Create tree list with fixed height
223 myIntervalsTreelist->setHeight(200);
224 // refresh interval selector
226 // IntervalSelector is always shown
227 show();
228}
229
230
232
233
234void
236 // first clear items from tree and intervalMap
237 myIntervalsTreelist->clearItems();
238 myTreeItemIntervalMap.clear();
239 // obtain data set
240 const GNEDataSet* dataSet = myGenericDataFrameParent->myDataSetSelector->getDataSet();
241 // add intervals
242 if (dataSet) {
243 // insert dataSetItem in Tree list
244 FXTreeItem* dataSetItem = myIntervalsTreelist->insertItem(
245 nullptr, nullptr,
246 dataSet->getHierarchyName().c_str(),
249 // by default item is expanded
250 dataSetItem->setExpanded(true);
251 // iterate over intevals
252 for (const auto& interval : dataSet->getDataIntervalChildren()) {
253 addIntervalItem(interval.second, dataSetItem);
254 }
255 }
256 // refresh attribute selector
257 if (myGenericDataFrameParent->myAttributeSelector) {
258 myGenericDataFrameParent->myAttributeSelector->refreshAttributeSelector();
259 }
260 // recalc frame
261 recalc();
262}
263
264
267 // first check if there is elements in interval tree
268 if (myIntervalsTreelist->getNumItems() > 0) {
269 for (const auto& treeItem : myTreeItemIntervalMap) {
270 if (treeItem.first->isSelected()) {
271 return treeItem.second;
272 }
273 }
274 }
275 // no GNEDataInterval found, then return nullptr
276 return nullptr;
277}
278
279
280long
282 // first check that begin and end are valid
283 if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text()) &&
284 GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
285 // obtain begin and end
286 const double begin = GNEAttributeCarrier::parse<double>(myBeginTextField->getText().text());
287 const double end = GNEAttributeCarrier::parse<double>(myEndTextField->getText().text());
288 // get data set parent
289 GNEDataSet* dataSet = myGenericDataFrameParent->myDataSetSelector->getDataSet();
290 if (dataSet && dataSet->checkNewInterval(begin, end)) {
291 // declare dataHandler
292 GNEDataHandler dataHandler(myGenericDataFrameParent->getViewNet()->getNet(), "", true, false);
293 // build data interval
294 dataHandler.buildDataInterval(nullptr, dataSet->getID(), begin, end);
295 }
296 // disable select interval check button
297 myNewIntervalCheckButton->setCheck(FALSE, TRUE);
298 }
299 return 1;
300}
301
302
303long
305 // refresh attribute selector
306 myGenericDataFrameParent->myAttributeSelector->refreshAttributeSelector();
307 return 1;
308}
309
310
311long
313 if (obj == myBeginTextField) {
314 // check if begin value can be parsed to double
315 if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
316 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
317 myBeginTextField->killFocus();
318 } else {
319 myBeginTextField->setTextColor(FXRGB(255, 0, 0));
320 }
321 } else if (obj == myEndTextField) {
322 // check if end value can be parsed to double
323 if (GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
324 myEndTextField->setTextColor(FXRGB(0, 0, 0));
325 myEndTextField->killFocus();
326 } else {
327 myEndTextField->setTextColor(FXRGB(255, 0, 0));
328 }
329 }
330 return 1;
331}
332
333
334long
336 if (myNewIntervalCheckButton->getCheck() == TRUE) {
337 // enable begin and end elements
338 myHorizontalFrameBegin->show();
339 myHorizontalFrameEnd->show();
340 myCreateIntervalButton->show();
341 // refresh begin and end text fields
342 const GNEDataSet* dataSet = myGenericDataFrameParent->myDataSetSelector->getDataSet();
343 if (dataSet) {
344 if (dataSet->getDataIntervalChildren().empty()) {
345 // set default interval (1 hour)
346 myBeginTextField->setText("0");
347 myEndTextField->setText("3600");
348 } else {
349 // obtain last data interval
350 const GNEDataInterval* lastDataInterval = dataSet->getDataIntervalChildren().rbegin()->second;
351 const double intervalDuration = lastDataInterval->getAttributeDouble(SUMO_ATTR_END) - lastDataInterval->getAttributeDouble(SUMO_ATTR_BEGIN);
352 // set new begin end
353 myBeginTextField->setText(toString(lastDataInterval->getAttributeDouble(SUMO_ATTR_END)).c_str());
354 myEndTextField->setText(toString(lastDataInterval->getAttributeDouble(SUMO_ATTR_END) + intervalDuration).c_str());
355 }
356 }
357 } else {
358 // disable begin and end elements
359 myHorizontalFrameBegin->hide();
360 myHorizontalFrameEnd->hide();
361 myCreateIntervalButton->hide();
362 }
363 // refresh interval seletor
364 refreshIntervalSelector();
365 return 1;
366}
367
368
369FXTreeItem*
371 // insert item in Tree list
372 FXTreeItem* item = myIntervalsTreelist->insertItem(nullptr, itemParent,
373 dataInterval->getHierarchyName().c_str(),
376 // insert item in map
377 myTreeItemIntervalMap[item] = dataInterval;
378 // by default item is expanded
379 item->setExpanded(true);
380 // select first item
381 if (myTreeItemIntervalMap.size() == 1) {
382 item->setSelected(TRUE);
383 }
384 // return created FXTreeItem
385 return item;
386}
387
388// ---------------------------------------------------------------------------
389// GNEGenericDataFrame::AttributeSelector - methods
390// ---------------------------------------------------------------------------
391
393 MFXGroupBoxModule(genericDataFrameParent, TL("Data attributes")),
394 myGenericDataFrameParent(genericDataFrameParent),
395 myMinMaxLabel(nullptr),
396 myGenericDataTag(tag) {
397 // Create FXComboBox
399 // build rainbow
401 // refresh interval selector
403 // AttributeSelector is always shown
404 show();
405}
406
407
409
410
411void
413 // save current attribute
414 const auto currentAttribute = myAttributesComboBox->getText();
415 // clear items
416 myAttributesComboBox->clearItems();
417 // restore myMinMaxLabel
418 myMinMaxLabel->setText(TL("Scale: Min -> Max"));
419 // fill myAttributesComboBox depending of data sets
420 if (myGenericDataFrameParent->myDataSetSelector->getDataSet() == nullptr) {
421 myAttributesComboBox->appendItem("<no dataSet selected>");
422 myAttributesComboBox->disable();
423 } else {
424 // add all item
425 myAttributesComboBox->appendItem("<all>");
426 // add attributes depending of interval
427 if (myGenericDataFrameParent->myIntervalSelector->getDataInterval() == nullptr) {
428 const auto parameters = myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveGenericDataParameters(
429 myGenericDataFrameParent->myDataSetSelector->getDataSet()->getID(), toString(myGenericDataTag), "", "");
430 // add all parameters
431 for (const auto& attribute : parameters) {
432 myAttributesComboBox->appendItem(attribute.c_str());
433 }
434 } else {
435 // retrieve all parameters within begin and end
436 const auto parameters = myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveGenericDataParameters(
437 myGenericDataFrameParent->myDataSetSelector->getDataSet()->getID(), toString(myGenericDataTag),
438 myGenericDataFrameParent->myIntervalSelector->getDataInterval()->getAttribute(SUMO_ATTR_BEGIN),
439 myGenericDataFrameParent->myIntervalSelector->getDataInterval()->getAttribute(SUMO_ATTR_END));
440 // add all parameters
441 for (const auto& attribute : parameters) {
442 myAttributesComboBox->appendItem(attribute.c_str());
443 }
444 }
445 // enable combo Box
446 myAttributesComboBox->enable();
447 // adjust visible items
448 if (myAttributesComboBox->getNumItems() < 10) {
449 myAttributesComboBox->setNumVisible(myAttributesComboBox->getNumItems());
450 } else {
451 myAttributesComboBox->setNumVisible(10);
452 }
453 // set current item
454 for (int i = 0; i < myAttributesComboBox->getNumItems(); i++) {
455 if (myAttributesComboBox->getItem(i).text() == currentAttribute) {
456 myAttributesComboBox->setCurrentItem(i, TRUE);
457 }
458 }
459 }
460 // recalc frame
461 recalc();
462 // update view net
463 myGenericDataFrameParent->getViewNet()->updateViewNet();
464}
465
466
467std::string
469 if (myAttributesComboBox->getNumItems() == 0) {
470 return "";
471 } else if (myAttributesComboBox->getText() == "<all>") {
472 return "";
473 } else {
474 return myAttributesComboBox->getText().text();
475 }
476}
477
478
479const RGBColor&
480GNEGenericDataFrame::AttributeSelector::getScaledColor(const double min, const double max, const double value) const {
481 // update myMinMaxLabel
482 myMinMaxLabel->setText(("Min: " + toString(min) + " -> Max: " + toString(max)).c_str());
483 // return scaled color
484 return GNEViewNetHelper::getRainbowScaledColor(min, max, value);
485}
486
487
488long
490 // empty attribute means <all>
491 if (myAttributesComboBox->getText().empty()) {
492 myAttributesComboBox->setText("<all>");
493 }
494 if (myAttributesComboBox->getText() == "<all>") {
495 myMinMaxLabel->setText(TL("Scale: Min -> Max"));
496 }
497 // update view
498 myGenericDataFrameParent->getViewNet()->updateViewNet();
499 return 1;
500}
501
502// ---------------------------------------------------------------------------
503// GNEGenericDataFrame - methods
504// ---------------------------------------------------------------------------
505
510
511
516
517
522
523
528
529
534
535
536void
538 // first refresh data set selector
540 // check if there is an edge path creator
541 if (myPathCreator) {
543 }
544 // show frame
546}
547
548
549void
551 if (myPathCreator) {
552 // reset candidate edges
553 for (const auto& edge : myViewNet->getNet()->getAttributeCarriers()->getEdges()) {
554 edge.second->resetCandidateFlags();
555 }
556 }
557 // hide frame
559}
560
561
562void
564 // refresh data set selector
566 // check if there is an edge path creator
567 if (myPathCreator) {
569 }
570}
571
572
573GNEGenericDataFrame::GNEGenericDataFrame(GNEViewParent* viewParent, GNEViewNet* viewNet, SumoXMLTag tag, const bool pathCreator) :
574 GNEFrame(viewParent, viewNet, toString(tag)),
575 myDataSetSelector(nullptr),
576 myIntervalSelector(nullptr),
577 myAttributeSelector(nullptr),
579 myPathCreator(nullptr),
580 myGenericDataTag(tag) {
581 // create DataSetSelector
583 // create IntervalSelector modul
585 // create AttributeSelector modul
586 myAttributeSelector = new AttributeSelector(this, tag);
587 // create parameter editor modul
589 // create GNEPathCreator modul
590 if (pathCreator) {
591 myPathCreator = new GNEPathCreator(this);
592 }
593}
594
595
597
598
599void
603
604
605bool
606GNEGenericDataFrame::createPath(const bool /*useLastRoute*/) {
607 // this function has to be reimplemente in all child frames that uses a GNEPathCreator
608 return false;
609}
610
611/****************************************************************************/
FXDEFMAP(GNEGenericDataFrame::DataSetSelector) DataSetSelectorMap[]
@ MID_GNE_SET_ATTRIBUTE
attribute edited
Definition GUIAppEnum.h:907
@ MID_GNE_DATASET_SELECTED
GNEDataInterval selected in comboBox of IntervalBar.
Definition GUIAppEnum.h:935
@ MID_GNE_CREATE
create element
Definition GUIAppEnum.h:909
@ MID_GNE_DATAINTERVAL_SELECTED
GNEDataInterval selected in comboBox of IntervalBar.
Definition GUIAppEnum.h:937
@ MID_GNE_DATASET_NEW
create new data set
Definition GUIAppEnum.h:933
@ MID_GNE_SELECT
select element
Definition GUIAppEnum.h:925
#define GUIDesignTreeListFixedHeight
tree list with fixed height
Definition GUIDesigns.h:669
#define GUIDesignButton
Definition GUIDesigns.h:74
#define GUIDesignComboBox
Definition GUIDesigns.h:288
#define GUIDesignComboBoxNCol
number of column of every combo box
Definition GUIDesigns.h:306
#define GUIDesignTextField
Definition GUIDesigns.h:51
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition GUIDesigns.h:394
#define GUIDesignTextFieldNCol
Num of column of text field.
Definition GUIDesigns.h:66
#define GUIDesignCheckButton
checkButton placed in left position
Definition GUIDesigns.h:187
#define GUIDesignLabelThickedFixed(width)
label thicked, icon before text, text centered and custom width
Definition GUIDesigns.h:247
@ DATAINTERVAL
#define WRITE_WARNING(msg)
Definition MsgHandler.h:270
#define TL(string)
Definition MsgHandler.h:287
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ SUMO_ATTR_BEGIN
weights: time range begin
@ SUMO_ATTR_END
weights: time range end
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition ToString.h:46
const std::string getID() const
get ID (all Attribute Carriers have one)
GNENet * getNet() const
get pointer to net
void buildDataSet(const std::string &dataSetID)
Builds DataSet (exclusive of netedit)
void buildDataInterval(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &dataSetID, const double begin, const double end)
Builds DataInterval.
An Element which don't belong to GNENet but has influence in the simulation.
double getAttributeDouble(SumoXMLAttr key) const
std::string getHierarchyName() const
get Hierarchy Name (Used in AC Hierarchy)
std::string getHierarchyName() const
get Hierarchy Name (Used in AC Hierarchy)
const std::map< const double, GNEDataInterval * > & getDataIntervalChildren() const
get data interval children
bool checkNewInterval(const double newBegin, const double newEnd)
check if a new GNEDataInterval with the given begin and end can be inserted in current GNEDataSet
static FXLabel * buildRainbow(FXComposite *parent)
build rainbow in frame modul
Definition GNEFrame.cpp:317
GNEViewNet * myViewNet
FOX need this.
Definition GNEFrame.h:117
virtual void show()
show Frame
Definition GNEFrame.cpp:115
virtual void hide()
hide Frame
Definition GNEFrame.cpp:124
AttributeSelector(GNEGenericDataFrame *genericDataFrameParent, SumoXMLTag tag)
FOX-declaration.
long onCmdSelectAttribute(FXObject *, FXSelector, void *)
Called when the user select a attribute in the combo boz.
const RGBColor & getScaledColor(const double min, const double max, const double value) const
get color for the given value
FXLabel * myMinMaxLabel
label for min/max attribute
void refreshAttributeSelector()
refresh interval selector
std::string getFilteredAttribute() const
get filtered attribute
FXComboBox * myAttributesComboBox
combo box for attributes
GNEDataSet * getDataSet() const
get current select data set ID
long onCmdSelectDataSet(FXObject *obj, FXSelector, void *)
Called when the user select an existent data set.
long onCmdCreateDataSet(FXObject *, FXSelector, void *)
void refreshDataSetSelector(const GNEDataSet *currentDataSet)
refresh interval selector
long onCmdSetNewDataSetID(FXObject *, FXSelector, void *)
Called when the user set a new data set ID.
long onCmdSelectCheckButton(FXObject *obj, FXSelector, void *)
Called when the user select check button.
FXTreeList * myIntervalsTreelist
tree list to show the interval list
FXTreeItem * addIntervalItem(GNEDataInterval *dataInterval, FXTreeItem *itemParent=nullptr)
add interval item into list
FXHorizontalFrame * myHorizontalFrameEnd
interval end horizontal frame
GNEDataInterval * getDataInterval() const
get current select data set ID
long onCmdCreateInterval(FXObject *, FXSelector, void *)
FXCheckButton * myNewIntervalCheckButton
check button to create a new interval
FXButton * myCreateIntervalButton
create interval button
IntervalSelector(GNEGenericDataFrame *genericDataFrameParent)
FOX-declaration.
FXHorizontalFrame * myHorizontalFrameBegin
interval begin horizontal frame
long onCmdSetIntervalAttribute(FXObject *, FXSelector, void *)
Called when the user changes begin or end.
long onCmdSelectInterval(FXObject *, FXSelector, void *)
Called when the user select an interval in the list.
void refreshIntervalSelector()
refresh interval selector
long onCmdSelectCheckButton(FXObject *obj, FXSelector, void *)
Called when the user select check button.
FXTextField * myBeginTextField
interval begin text field
void updateFrameAfterUndoRedo()
function called after undo/redo in the current frame
GNEFrameAttributeModules::GenericDataAttributes * myGenericDataAttributes
parameters editor creator
virtual bool createPath(const bool useLastRoute)
create path
void intervalSelected()
interval selected
IntervalSelector * myIntervalSelector
interval selector modul
DataSetSelector * myDataSetSelector
dataSet selector modul
const AttributeSelector * getAttributeSelector() const
getattribute selector modul
GNEGenericDataFrame(GNEViewParent *viewParent, GNEViewNet *viewNet, SumoXMLTag tag, const bool pathCreator)
Constructor (protected due GNEGenericDataFrame is abtract)
GNEPathCreator * getPathCreator() const
get GNEPathCreator modul
AttributeSelector * myAttributeSelector
attribute selector modul
const DataSetSelector * getDataSetSelector() const
get dataSet selector modul
SumoXMLTag getTag() const
@bried get element type of this data frame
SumoXMLTag myGenericDataTag
generic data tag
GNEPathCreator * myPathCreator
edge path creator (used for Walks, rides and trips)
const IntervalSelector * getIntervalSelector() const
get interval selector modul
GNEDataSet * retrieveDataSet(const std::string &id, bool hardFail=true) const
Returns the named data set.
const std::map< std::string, GNEEdge * > & getEdges() const
map with the ID and pointer to edges of net
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
Definition GNENet.cpp:120
void showPathCreatorModule(SumoXMLTag element, const bool firstElement, const bool consecutives)
show GNEPathCreator for the given tag
GNENet * getNet() const
get the net object
A single child window which contains a view of the simulation area.
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
MFXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toggled)
static const RGBColor & getRainbowScaledColor(const double min, const double max, const double value)
get rainbow scaled color