70 myGenericDataFrameParent(genericDataFrameParent) {
81 myHorizontalFrameNewID->hide();
84 myCreateDataSetButton->hide();
86 refreshDataSetSelector(
nullptr);
98 myDataSetsComboBox->clearItems();
100 int currentItemIndex = -1;
102 for (
const auto& dataSet : myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDataSets()) {
104 if ((currentItemIndex == -1) && (dataSet == currentDataSet)) {
105 currentItemIndex = myDataSetsComboBox->getNumItems();
107 myDataSetsComboBox->appendItem(dataSet->getID().c_str());
110 myDataSetsComboBox->setNumVisible((
int)myDataSetsComboBox->getNumItems());
112 if (currentItemIndex != -1) {
113 myDataSetsComboBox->setCurrentItem(currentItemIndex, FALSE);
118 if (myGenericDataFrameParent->myIntervalSelector) {
119 myGenericDataFrameParent->myIntervalSelector->refreshIntervalSelector();
126 if ((myNewDataSetCheckButton->getCheck() == TRUE) || (myDataSetsComboBox->getNumItems() == 0)) {
137 const std::string dataSetID = myNewDataSetIDTextField->getText().text();
139 if (myNewDataSetIDTextField->getTextColor() == FXRGB(255, 0, 0)) {
141 }
else if (dataSetID.empty()) {
143 }
else if (myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveDataSet(dataSetID,
false) !=
nullptr) {
147 GNEDataHandler dataHandler(myGenericDataFrameParent->getViewNet()->getNet(),
"",
true);
150 refreshDataSetSelector(myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveDataSet(dataSetID));
152 myNewDataSetCheckButton->setCheck(FALSE, TRUE);
168 myGenericDataFrameParent->myIntervalSelector->refreshIntervalSelector();
175 if (myNewDataSetCheckButton->getCheck() == TRUE) {
177 myHorizontalFrameNewID->show();
178 myCreateDataSetButton->show();
180 myDataSetsComboBox->hide();
183 myHorizontalFrameNewID->hide();
184 myCreateDataSetButton->hide();
186 myDataSetsComboBox->show();
189 myGenericDataFrameParent->myIntervalSelector->refreshIntervalSelector();
199 myGenericDataFrameParent(genericDataFrameParent) {
236 myIntervalsTreelist->clearItems();
237 myTreeItemIntervalMap.clear();
239 const GNEDataSet* dataSet = myGenericDataFrameParent->myDataSetSelector->getDataSet();
243 FXTreeItem* dataSetItem = myIntervalsTreelist->insertItem(
249 dataSetItem->setExpanded(
true);
252 addIntervalItem(interval.second, dataSetItem);
256 if (myGenericDataFrameParent->myAttributeSelector) {
257 myGenericDataFrameParent->myAttributeSelector->refreshAttributeSelector();
267 if (myIntervalsTreelist->getNumItems() > 0) {
268 for (
const auto& treeItem : myTreeItemIntervalMap) {
269 if (treeItem.first->isSelected()) {
270 return treeItem.second;
282 if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text()) &&
283 GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
285 const double begin = GNEAttributeCarrier::parse<double>(myBeginTextField->getText().text());
286 const double end = GNEAttributeCarrier::parse<double>(myEndTextField->getText().text());
288 GNEDataSet* dataSet = myGenericDataFrameParent->myDataSetSelector->getDataSet();
291 GNEDataHandler dataHandler(myGenericDataFrameParent->getViewNet()->getNet(),
"",
true);
296 myNewIntervalCheckButton->setCheck(FALSE, TRUE);
305 myGenericDataFrameParent->myAttributeSelector->refreshAttributeSelector();
312 if (obj == myBeginTextField) {
314 if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
315 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
316 myBeginTextField->killFocus();
318 myBeginTextField->setTextColor(FXRGB(255, 0, 0));
320 }
else if (obj == myEndTextField) {
322 if (GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
323 myEndTextField->setTextColor(FXRGB(0, 0, 0));
324 myEndTextField->killFocus();
326 myEndTextField->setTextColor(FXRGB(255, 0, 0));
335 if (myNewIntervalCheckButton->getCheck() == TRUE) {
337 myHorizontalFrameBegin->show();
338 myHorizontalFrameEnd->show();
339 myCreateIntervalButton->show();
341 const GNEDataSet* dataSet = myGenericDataFrameParent->myDataSetSelector->getDataSet();
345 myBeginTextField->setText(
"0");
346 myEndTextField->setText(
"3600");
358 myHorizontalFrameBegin->hide();
359 myHorizontalFrameEnd->hide();
360 myCreateIntervalButton->hide();
363 refreshIntervalSelector();
371 FXTreeItem* item = myIntervalsTreelist->insertItem(
nullptr, itemParent,
376 myTreeItemIntervalMap[item] = dataInterval;
378 item->setExpanded(
true);
380 if (myTreeItemIntervalMap.size() == 1) {
381 item->setSelected(TRUE);
393 myGenericDataFrameParent(genericDataFrameParent),
394 myMinMaxLabel(nullptr),
413 myAttributesComboBox->clearItems();
415 myMinMaxLabel->setText(
"Scale: Min -> Max");
417 if (myGenericDataFrameParent->myDataSetSelector->getDataSet() ==
nullptr) {
418 myAttributesComboBox->appendItem(
"<no dataSet selected>");
419 myAttributesComboBox->disable();
422 myAttributesComboBox->appendItem(
"<all>");
424 if (myGenericDataFrameParent->myIntervalSelector->getDataInterval() ==
nullptr) {
425 const auto parameters = myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveGenericDataParameters(
428 for (
const auto& attribute : parameters) {
429 myAttributesComboBox->appendItem(attribute.c_str());
433 const auto parameters = myGenericDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveGenericDataParameters(
435 myGenericDataFrameParent->myIntervalSelector->getDataInterval()->getAttribute(
SUMO_ATTR_BEGIN),
436 myGenericDataFrameParent->myIntervalSelector->getDataInterval()->getAttribute(
SUMO_ATTR_END));
438 for (
const auto& attribute : parameters) {
439 myAttributesComboBox->appendItem(attribute.c_str());
443 myAttributesComboBox->enable();
445 if (myAttributesComboBox->getNumItems() < 10) {
446 myAttributesComboBox->setNumVisible(myAttributesComboBox->getNumItems());
448 myAttributesComboBox->setNumVisible(10);
454 myGenericDataFrameParent->getViewNet()->updateViewNet();
460 if (myAttributesComboBox->getNumItems() == 0) {
462 }
else if (myAttributesComboBox->getText() ==
"<all>") {
465 return myAttributesComboBox->getText().text();
473 myMinMaxLabel->setText((
"Min: " +
toString(min) +
" -> Max: " +
toString(max)).c_str());
482 if (myAttributesComboBox->getText().empty()) {
483 myAttributesComboBox->setText(
"<all>");
485 if (myAttributesComboBox->getText() ==
"<all>") {
486 myMinMaxLabel->setText(
"Scale: Min -> Max");
489 myGenericDataFrameParent->getViewNet()->updateViewNet();
545 edge.second->resetCandidateFlags();
FXDEFMAP(GNEGenericDataFrame::DataSetSelector) DataSetSelectorMap[]
@ MID_GNE_SET_ATTRIBUTE
attribute edited
@ MID_GNE_DATASET_SELECTED
GNEDataInterval selected in comboBox of IntervalBar.
@ MID_GNE_CREATE
create element
@ MID_GNE_DATAINTERVAL_SELECTED
GNEDataInterval selected in comboBox of IntervalBar.
@ MID_GNE_DATASET_NEW
create new data set
@ MID_GNE_SELECT
select element
#define GUIDesignComboBox
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignTextField
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
#define GUIDesignLabelAttribute
label extended over the matrix column with thick frame
#define GUIDesignTextFieldNCol
Num of column of text field.
#define GUIDesignTreeListFrame
Tree list used in frames to represent elements children.
#define GUIDesignCheckButton
checkButton placed in left position
#define WRITE_WARNING(msg)
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)
FXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toogled)
FXIcon * getIcon() const
get FXIcon associated to this AC
GNENet * getNet() const
get pointer to net
void buildDataSet(const std::string &dataSetID)
Builds DataSet (exlcusive 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 belongs to GNENet but has influency in the simulation.
double getAttributeDouble(SumoXMLAttr key) const
std::string getHierarchyName() const
get Hierarchy Name (Used in AC Hierarchy)
const std::string & getID() const
get ID
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
GNEViewNet * myViewNet
View Net.
FXVerticalFrame * myContentFrame
Vertical frame that holds all widgets of frame.
virtual void show()
show Frame
virtual void hide()
hide Frame
void showPathCreatorModule(SumoXMLTag element, const bool firstElement, const bool consecutives)
show PathCreator for the given tag
static FXLabel * buildRainbow(FXComposite *parent)
build rainbow in frame modul
AttributeSelector(GNEGenericDataFrame *genericDataFrameParent, SumoXMLTag tag)
FOX-declaration.
~AttributeSelector()
destructor
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.
~DataSetSelector()
destructor
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 *)
~IntervalSelector()
destructor
FXCheckButton * myNewIntervalCheckButton
check button to create a new interval
FXButton * myCreateIntervalButton
create interval button
IntervalSelector(GNEGenericDataFrame *genericDataFrameParent)
FOX-declaration.
FXTextField * myEndTextField
interval end
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
~GNEGenericDataFrame()
Destructor.
GNEFrameAttributeModules::GenericDataAttributes * myGenericDataAttributes
parameters editor creator
void intervalSelected()
interval selected
IntervalSelector * myIntervalSelector
interval selector modul
GNEFrameModules::PathCreator * myPathCreator
edge path creator (used for Walks, rides and trips)
DataSetSelector * myDataSetSelector
dataSet selector modul
const AttributeSelector * getAttributeSelector() const
getattribute selector modul
virtual void createPath()
create path
AttributeSelector * myAttributeSelector
attribute selector modul
const DataSetSelector * getDataSetSelector() const
get dataSet selector modul
SumoXMLTag getTag() const
@bried get element type of this data frame
GNEFrameModules::PathCreator * getPathCreator() const
get PathCreator modul
SumoXMLTag myGenericDataTag
generic data tag
const IntervalSelector * getIntervalSelector() const
get interval selector modul
GNEGenericDataFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet, SumoXMLTag tag, const bool pathCreator)
Constructor (protected due GNEGenericDataFrame is abtract)
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
GNENet * getNet() const
get the net object
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
static const RGBColor & getRainbowScaledColor(const double min, const double max, const double value)
get rainbow scaled color