69 myMeanDataFrameParent(meanDataFrameParent) {
74 for (
const auto& meanDataType : meanDataTypes) {
75 myTypeComboBox->appendIconItem(meanDataType.getTagStr().c_str(),
GUIIconSubSys::getIcon(meanDataType.getGUIIcon()));
78 myCurrentMeanData = meanDataTypes.front();
80 myTypeComboBox->setNumVisible((
int)myTypeComboBox->getNumItems());
91 return myCurrentMeanData;
98 myTypeComboBox->clearItems();
101 for (
const auto& meanDataType : meanDataTypes) {
102 myTypeComboBox->appendIconItem(meanDataType.getTagStr().c_str(),
GUIIconSubSys::getIcon(meanDataType.getGUIIcon()));
105 if (myCurrentMeanData.getTagStr() != myInvalidMeanData.getTagStr()) {
106 for (
int i = 0; i < (int)myTypeComboBox->getNumItems(); i++) {
107 if (myTypeComboBox->getItem(i).text() == myCurrentMeanData.getTagStr()) {
108 myTypeComboBox->setCurrentItem(i);
112 myCurrentMeanData = meanDataTypes.front();
115 myMeanDataFrameParent->myMeanDataEditor->refreshMeanDataEditorModule();
117 myMeanDataFrameParent->myMeanDataEditor->showMeanDataEditorModule();
118 myMeanDataFrameParent->myMeanDataSelector->showMeanDataSelector();
127 for (
const auto& meanDataType : meanDataTypes) {
128 if (meanDataType.getTagStr() == myTypeComboBox->getText().text()) {
130 myCurrentMeanData = meanDataType;
132 myTypeComboBox->setTextColor(FXRGB(0, 0, 0));
134 myMeanDataFrameParent->myMeanDataEditor->refreshMeanDataEditorModule();
136 myMeanDataFrameParent->myMeanDataEditor->showMeanDataEditorModule();
137 myMeanDataFrameParent->myMeanDataSelector->showMeanDataSelector();
139 WRITE_DEBUG((
"Selected item '" + myTypeComboBox->getText() +
"' in MeanDataTypeSelector").text());
143 myCurrentMeanData = myInvalidMeanData;
145 myMeanDataFrameParent->myMeanDataEditor->refreshMeanDataEditorModule();
147 myMeanDataFrameParent->myMeanDataEditor->hideMeanDataEditorModule();
148 myMeanDataFrameParent->myMeanDataSelector->hideMeanDataSelector();
150 myTypeComboBox->setTextColor(FXRGB(255, 0, 0));
152 WRITE_DEBUG(
"Selected invalid item in MeanDataTypeSelector");
162 myMeanDataFrameParent(meanDataFrameParent) {
180 refreshMeanDataEditorModule();
194 if (myMeanDataFrameParent->myMeanDataSelector->getCurrentMeanData() ==
nullptr) {
196 myDeleteMeanDataButton->disable();
197 myCopyMeanDataButton->disable();
200 myDeleteMeanDataButton->enable();
201 myCopyMeanDataButton->enable();
211 SumoXMLTag meanDataTag = myMeanDataFrameParent->myMeanDataTypeSelector->getCurrentMeanData().getTag();
213 const std::string typeID = myMeanDataFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateMeanDataID(meanDataTag);
216 myMeanDataFrameParent->myMeanDataTypeSelector->getCurrentMeanData().getTag(), typeID);
218 myMeanDataFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"create meanData");
219 myMeanDataFrameParent->myViewNet->getUndoList()->add(
new GNEChange_MeanData(meanData,
true),
true);
220 myMeanDataFrameParent->myViewNet->getUndoList()->end();
222 myMeanDataFrameParent->myMeanDataSelector->setCurrentMeanData(meanData);
230 myMeanDataFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"delete meanData");
232 myMeanDataFrameParent->myViewNet->getNet()->deleteMeanData(myMeanDataFrameParent->myMeanDataSelector->getCurrentMeanData(),
233 myMeanDataFrameParent->myViewNet->getUndoList());
235 myMeanDataFrameParent->myViewNet->getUndoList()->end();
237 myMeanDataFrameParent->myMeanDataSelector->refreshMeanDataSelector(
false);
245 SumoXMLTag meanDataTag = myMeanDataFrameParent->myMeanDataTypeSelector->getCurrentMeanData().getTag();
247 const std::string typeID = myMeanDataFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateMeanDataID(meanDataTag);
249 GNEMeanData* meanData =
dynamic_cast<GNEMeanData*
>(myMeanDataFrameParent->myMeanDataSelector->getCurrentMeanData());
254 myMeanDataFrameParent->myMeanDataTypeSelector->getCurrentMeanData().getTag(), typeID);
256 myMeanDataFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"copy meanData");
258 myMeanDataFrameParent->myViewNet->getUndoList()->add(
new GNEChange_MeanData(typeCopy,
true),
true);
260 myMeanDataFrameParent->myViewNet->getUndoList()->end();
262 myMeanDataFrameParent->myMeanDataSelector->refreshMeanDataSelector(
false);
264 myMeanDataFrameParent->myMeanDataSelector->setCurrentMeanData(typeCopy);
266 myMeanDataFrameParent->myMeanDataEditor->refreshMeanDataEditorModule();
277 myMeanDataFrameParent(typeFrameParent),
278 myCurrentMeanData(nullptr) {
309 refreshMeanDataSelector(
false);
318 myMeanDataFrameParent->myMeanDataAttributesEditor->hideAttributesEditorModule();
326 return myCurrentMeanData;
332 myCurrentMeanData = vMeanData;
333 refreshMeanDataSelector(
false);
340 SumoXMLTag meanDataTag = myMeanDataFrameParent->myMeanDataTypeSelector->getCurrentMeanData().getTag();
342 std::map<std::string, GNEMeanData*> sortedMeanDatas;
343 for (
const auto& meanData : myMeanDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getMeanDatas().at(meanDataTag)) {
344 sortedMeanDatas[meanData->getID()] = meanData;
347 myMeanDataComboBox->clearItems();
349 for (
const auto& sortedMeanData : sortedMeanDatas) {
350 myMeanDataComboBox->appendIconItem(sortedMeanData.first.c_str(), sortedMeanData.second->getACIcon());
353 if (myMeanDataComboBox->getNumItems() <= 20) {
354 myMeanDataComboBox->setNumVisible((
int)myMeanDataComboBox->getNumItems());
356 myMeanDataComboBox->setNumVisible(20);
359 if (myMeanDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveMeanData(myCurrentMeanData,
false)) {
360 bool validMeanData =
false;
361 for (
int i = 0; i < (int)myMeanDataComboBox->getNumItems(); i++) {
362 if (myMeanDataComboBox->getItem(i).text() == myCurrentMeanData->getID()) {
363 myMeanDataComboBox->setCurrentItem(i);
364 validMeanData =
true;
367 if (!validMeanData) {
368 myCurrentMeanData =
nullptr;
371 myCurrentMeanData =
nullptr;
374 if (sortedMeanDatas.size() > 0) {
375 myMeanDataComboBox->enable();
377 if (myCurrentMeanData ==
nullptr) {
378 myCurrentMeanData = sortedMeanDatas.begin()->second;
381 myMeanDataComboBox->disable();
384 myMeanDataFrameParent->myMeanDataEditor->refreshMeanDataEditorModule();
386 if (!afterChangingID) {
387 if (myCurrentMeanData) {
389 myMeanDataFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentMeanData});
390 myMeanDataFrameParent->myMeanDataAttributesEditor->showAttributeEditorModule(
false);
393 myMeanDataFrameParent->getViewNet()->setInspectedAttributeCarriers({});
394 myMeanDataFrameParent->myMeanDataAttributesEditor->hideAttributesEditorModule();
402 if (myCurrentMeanData) {
403 myMeanDataComboBox->setIconItem(myMeanDataComboBox->getCurrentItem(), myCurrentMeanData->getID().c_str(), myCurrentMeanData->getACIcon());
411 SumoXMLTag meanDataTag = myMeanDataFrameParent->myMeanDataTypeSelector->getCurrentMeanData().getTag();
413 for (
const auto& vMeanData : myMeanDataFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getMeanDatas().at(meanDataTag)) {
414 if (vMeanData->getID() == myMeanDataComboBox->getText().text()) {
416 myCurrentMeanData = vMeanData;
418 myMeanDataComboBox->setTextColor(FXRGB(0, 0, 0));
420 myMeanDataFrameParent->myMeanDataEditor->refreshMeanDataEditorModule();
422 myMeanDataFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentMeanData});
424 myMeanDataFrameParent->myMeanDataAttributesEditor->showAttributeEditorModule(
false);
426 WRITE_DEBUG((
"Selected item '" + myMeanDataComboBox->getText() +
"' in MeanDataSelector").text());
428 myMeanDataFrameParent->getViewNet()->updateViewNet();
432 myCurrentMeanData =
nullptr;
434 myMeanDataFrameParent->myMeanDataEditor->refreshMeanDataEditorModule();
436 myMeanDataFrameParent->myMeanDataAttributesEditor->hideAttributesEditorModule();
438 myMeanDataComboBox->setTextColor(FXRGB(255, 0, 0));
440 WRITE_DEBUG(
"Selected invalid item in MeanDataSelector");
442 myMeanDataFrameParent->getViewNet()->updateViewNet();
451 GNEFrame(viewParent, viewNet,
"MeanData") {
FXDEFMAP(GNEMeanDataFrame::MeanDataTypeSelector) meanDataSelectorMap[]
@ MID_GNE_DELETE
delete element
@ MID_GNE_COPY
copy element
@ MID_GNE_CREATE
create element
@ MID_GNE_SET_TYPE
used to select a type of element in a combo box
#define GUIDesignComboBox
#define GUIDesignComboBoxNCol
number of column of every combo box
SumoXMLTag
Numbers representing SUMO-XML - element names.
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
static const std::vector< GNETagProperties > getTagPropertiesByType(const int tagPropertyCategory)
get tagProperties associated to the given GNETagProperties::TagType (NETWORKELEMENT,...
GNEViewNet * getViewNet() const
get view net
virtual void show()
show Frame
virtual void hide()
hide Frame
void hideMeanDataEditorModule()
hide MeanDataEditor box
void refreshMeanDataEditorModule()
update MeanDataEditor modul
FXButton * myCopyMeanDataButton
"copy meanData"
~MeanDataEditor()
destructor
FXButton * myCreateMeanDataButton
"create meanData" button
long onCmdCopyMeanData(FXObject *, FXSelector, void *)
Called when "Copy Vehicle MeanData" button is clicked.
long onCmdCreateMeanData(FXObject *, FXSelector, void *)
MeanDataEditor(GNEMeanDataFrame *meanDataFrameParent)
FOX-declaration.
void showMeanDataEditorModule()
show MeanDataEditor modul
long onCmdDeletetMeanData(FXObject *, FXSelector, void *)
Called when "Delete Vehicle MeanData" button is clicked.
FXButton * myDeleteMeanDataButton
"delete meanData" button
~MeanDataSelector()
destructor
void showMeanDataSelector()
show MeanDataSelector
void hideMeanDataSelector()
hide MeanDataSelector
GNEMeanData * myCurrentMeanData
pointer to current meanData
MeanDataSelector(GNEMeanDataFrame *typeFrameParent)
FOX-declaration.
GNEMeanData * getCurrentMeanData() const
get current Vehicle MeanData
void refreshMeanDataSelectorIDs()
refresh meanData selector (only IDs, without refreshing attributes)
MFXComboBoxIcon * myMeanDataComboBox
comboBox with the list of meanDatas
void refreshMeanDataSelector(bool afterChangingID)
refresh meanData selector
void setCurrentMeanData(GNEMeanData *vMeanData)
set current Vehicle MeanData
GNEMeanDataFrame * myMeanDataFrameParent
pointer to Frame Parent
long onCmdSelectItem(FXObject *, FXSelector, void *)
void refreshMeanDataTypeSelector()
refresh meanData selector
const GNETagProperties & getCurrentMeanData() const
get current MeanData
~MeanDataTypeSelector()
destructor
long onCmdSelectItem(FXObject *, FXSelector, void *)
GNEFrameAttributeModules::AttributesEditor * myMeanDataAttributesEditor
meanData attributes editor
void attributeUpdated(SumoXMLAttr attribute)
function called after set a valid attribute in AttributeCreator/AttributeEditor/ParametersEditor/....
MeanDataSelector * myMeanDataSelector
meanData selector
~GNEMeanDataFrame()
Destructor.
GNEMeanDataFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor (protected due GNEMeanDataFrame is abtract)
MeanDataTypeSelector * myMeanDataTypeSelector
meanData type selector
void updateFrameAfterUndoRedo()
function called after undo/redo in the current frame
MeanDataEditor * myMeanDataEditor
meanData editor
An Element which don't belong to GNENet but has influence in the simulation.
const std::map< SumoXMLTag, std::set< GNEMeanData * > > & getMeanDatas() const
get meanDatas
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
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
FXint getNumItems() const
Return the number of items in the list.
void setNumVisible(FXint nvis)
Set the number of visible items in the drop down list.
FXint appendIconItem(const FXString &text, FXIcon *icon=nullptr, FXColor bgColor=FXRGB(255, 255, 255), void *ptr=nullptr)
append icon
MFXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toggled)
C++ TraCI client API implementation.