GNEDialog_FixAdditionalElements::AdditionalList::AdditionalList(GNEDialog_FixAdditionalElements* fixAdditionalPositions, const std::vector<GNEAdditional*>& invalidSingleLaneAdditionals, const std::vector<GNEAdditional*>& invalidMultiLaneAdditionals) : FXGroupBox(fixAdditionalPositions->myMainFrame, "Stopping places and E2 detectors with conflicts", GUIDesignGroupBoxFrameFill), myInvalidSingleLaneAdditionals(invalidSingleLaneAdditionals), myInvalidMultiLaneAdditionals(invalidMultiLaneAdditionals) { // Create table, copy intervals and update table myTable = new FXTable(this, this, MID_GNE_FIXSTOPPINGPLACES_CHANGE, GUIDesignTableAdditionals); myTable->setSelBackColor(FXRGBA(255, 255, 255, 255)); myTable->setSelTextColor(FXRGBA(0, 0, 0, 255)); myTable->setEditable(false); // clear table myTable->clearItems(); // set number of rows myTable->setTableSize(int(myInvalidSingleLaneAdditionals.size() + myInvalidMultiLaneAdditionals.size()), 3); // Configure list myTable->setVisibleColumns(4); myTable->setColumnWidth(0, GUIDesignTableIconCellWidth); myTable->setColumnWidth(1, 160); myTable->setColumnWidth(2, 280); myTable->setColumnText(0, ""); myTable->setColumnText(1, toString(SUMO_ATTR_ID).c_str()); myTable->setColumnText(2, "Conflict"); myTable->getRowHeader()->setWidth(0); // Declare index for rows and pointer to FXTableItem int indexRow = 0; FXTableItem* item = nullptr; // iterate over single lane additionals for (auto i : myInvalidSingleLaneAdditionals) { // Set icon item = new FXTableItem("", i->getIcon()); item->setIconPosition(FXTableItem::CENTER_X); myTable->setItem(indexRow, 0, item); // Set ID item = new FXTableItem(i->getID().c_str()); item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y); myTable->setItem(indexRow, 1, item); // Set conflict item = new FXTableItem(i->getAdditionalProblem().c_str()); item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y); myTable->setItem(indexRow, 2, item); // Update index indexRow++; } // iterate over multi lane additionals for (auto i : myInvalidMultiLaneAdditionals) { // Set icon item = new FXTableItem("", i->getIcon()); item->setIconPosition(FXTableItem::CENTER_X); myTable->setItem(indexRow, 0, item); // Set ID item = new FXTableItem(i->getID().c_str()); item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y); myTable->setItem(indexRow, 1, item); // set conflict item = new FXTableItem((i->getAdditionalProblem()).c_str()); item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y); myTable->setItem(indexRow, 2, item); // Update index indexRow++; } }
GNEVariableSpeedSignDialog::GNEVariableSpeedSignDialog(GNEVariableSpeedSign* editedVariableSpeedSign) : GNEAdditionalDialog(editedVariableSpeedSign, false, 300, 400), myStepsValids(false) { // create Horizontal frame for row elements FXHorizontalFrame* myAddStepFrame = new FXHorizontalFrame(myContentFrame, GUIDesignAuxiliarHorizontalFrame); // create Button and Label for adding new Wors myAddStepButton = new FXButton(myAddStepFrame, "", GUIIconSubSys::getIcon(ICON_ADD), this, MID_GNE_VARIABLESPEEDSIGN_ADDROW, GUIDesignButtonIcon); new FXLabel(myAddStepFrame, ("Add new " + toString(SUMO_TAG_STEP)).c_str(), 0, GUIDesignLabelThick); // create Button and Label for sort intervals mySortStepButton = new FXButton(myAddStepFrame, "", GUIIconSubSys::getIcon(ICON_RELOAD), this, MID_GNE_VARIABLESPEEDSIGN_SORT, GUIDesignButtonIcon); new FXLabel(myAddStepFrame, ("Sort " + toString(SUMO_TAG_STEP) + "s").c_str(), 0, GUIDesignLabelThick); // create List with the data myStepsTable = new FXTable(myContentFrame, this, MID_GNE_VARIABLESPEEDSIGN_TABLE, GUIDesignTableAdditionals); myStepsTable->setSelBackColor(FXRGBA(255, 255, 255, 255)); myStepsTable->setSelTextColor(FXRGBA(0, 0, 0, 255)); // update table updateTableSteps(); // start a undo list for editing local to this additional initChanges(); // Open dialog as modal openAsModalDialog(); }
- Either simple pattern, or begin/end pattern. Special stop pattern to prevent scanning indefinitely. Patterns may have sub-patterns. - Simple pattern must be non-empty; begin/end patterns of a complex pattern may be zero-width assertions. - Capturing parenthesis are disabled, for speed reasons. - Sample text in FXSyntax is for displaying inside interactive style setup dialog; it is supposed to contain on instance of each pattern matched by the rule base */ /*******************************************************************************/ // Default style is all zeroes const FXHiliteStyle FXSyntax::defaultStyle={ FXRGBA(0,0,0,0), FXRGBA(0,0,0,0), FXRGBA(0,0,0,0), FXRGBA(0,0,0,0), FXRGBA(0,0,0,0), FXRGBA(0,0,0,0), FXRGBA(0,0,0,0), 0 }; FXIMPLEMENT(FXRule,FXObject,NULL,0) // Fill textstyle with style, returns position of last change+1 static inline void fillstyle(FXchar* textstyle,FXchar style,FXint f,FXint t){
FXColor MFXUtils::getFXColor(const RGBColor& col) { return FXRGBA(col.red(), col.green(), col.blue(), col.alpha()); }