86 myChosenTarget(myChosenValue,
nullptr, MID_OPTION),
89 mySpeedTarget(mySpeed),
91 myChosenTarget.setTarget(
this);
93 new FXVerticalFrame(
this, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0);
95 FXGroupBox* gp =
new FXGroupBox(f1,
"Change Speed",
96 GROUPBOX_TITLE_LEFT | FRAME_RIDGE,
97 0, 0, 0, 0, 4, 4, 1, 1, 2, 0);
100 FXHorizontalFrame* gf1 =
101 new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
102 new FXRadioButton(gf1,
"Default", &myChosenTarget, FXDataTarget::ID_OPTION + 0,
103 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP,
104 0, 0, 0, 0, 2, 2, 0, 0);
108 FXHorizontalFrame* gf0 =
109 new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
110 new FXRadioButton(gf0,
"Loaded", &myChosenTarget, FXDataTarget::ID_OPTION + 1,
111 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP,
112 0, 0, 0, 0, 2, 2, 0, 0);
116 FXHorizontalFrame* gf2 =
117 new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
118 new FXRadioButton(gf2,
"Predefined: ", &myChosenTarget, FXDataTarget::ID_OPTION + 2,
119 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP | LAYOUT_CENTER_Y,
120 0, 0, 0, 0, 2, 2, 0, 0);
123 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP | LAYOUT_CENTER_Y | COMBOBOX_STATIC);
124 myPredefinedValues->appendIconItem(
"20 km/h");
125 myPredefinedValues->appendIconItem(
"40 km/h");
126 myPredefinedValues->appendIconItem(
"60 km/h");
127 myPredefinedValues->appendIconItem(
"80 km/h");
128 myPredefinedValues->appendIconItem(
"100 km/h");
129 myPredefinedValues->appendIconItem(
"120 km/h");
130 myPredefinedValues->appendIconItem(
"140 km/h");
131 myPredefinedValues->appendIconItem(
"160 km/h");
132 myPredefinedValues->appendIconItem(
"180 km/h");
133 myPredefinedValues->appendIconItem(
"200 km/h");
137 FXHorizontalFrame* gf12 =
138 new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
139 new FXRadioButton(gf12,
"Free Entry: ", &myChosenTarget, FXDataTarget::ID_OPTION + 3,
140 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP | LAYOUT_CENTER_Y,
141 0, 0, 0, 0, 2, 2, 0, 0);
143 new FXRealSpinner(gf12, 10,
this, MID_USER_DEF,
144 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
147 myUserDefinedSpeed->setIncrement(10);
148 myUserDefinedSpeed->setRange(0, 300);
149 myUserDefinedSpeed->setValue(0);
153 BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X, 0, 0, 0, 0, 30, 30, 4, 4);
180 myChosenValue != 3 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
182 myParent->updateChildren();
199 myChosenValue != 2 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
201 myParent->updateChildren();
254 *myApplication, *myParent);
266 if (calibrator->
getEdge() !=
nullptr) {
267 const std::vector<MSLane*>& destLanes = calibrator->
getEdge()->
getLanes();
269 const double pos = calibrator->
myPos;
270 for (std::vector<MSLane*>::const_iterator i = destLanes.begin(); i != destLanes.end(); ++i) {
271 if (lane ==
nullptr || (*i) == lane) {
279 if (calibrator->
myNode !=
nullptr) {
313 ret->
mkItem(
TL(
"aspired flow [veh/h]"),
false, myCurrentStateInterval->q);
314 ret->
mkItem(
TL(
"aspired speed"),
false, myCurrentStateInterval->v);
325 const std::string nextStart =
329 ret->
mkItem(
TL(
"inactive until"),
false, nextStart);
341 std::string flow =
"-";
342 std::string speed =
"-";
345 if (myCurrentStateInterval->v >= 0) {
346 speed =
toString(myCurrentStateInterval->v) +
"m/s";
348 if (myCurrentStateInterval->q >= 0) {
349 flow =
toString((
int)myCurrentStateInterval->q) +
"v/h";
356 glTranslated(pos.
x(), pos.
y(),
getType());
357 glRotated(rot, 0, 0, 1);
359 glScaled(exaggeration, exaggeration, 1);
360 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
362 glBegin(GL_TRIANGLES);
363 glColor3d(1, .8f, 0);
365 glVertex2d(0 - 1.4, 0);
366 glVertex2d(0 - 1.4, 6);
367 glVertex2d(0 + 1.4, 6);
368 glVertex2d(0 + 1.4, 0);
369 glVertex2d(0 - 1.4, 0);
370 glVertex2d(0 + 1.4, 6);
374 if (s.
scale * exaggeration >= 1.) {
375 glTranslated(0, 0, .1);
@ MID_MANIP
Open the object's manipulator.
FXDEFMAP(GUICalibrator::GUICalibratorPopupMenu) GUICalibratorPopupMenuMap[]
#define GUIDesignComboBoxVisibleItems
@ GLO_CALIBRATOR
a Calibrator
GUIIcon
An enumeration of icons used by the gui applications.
std::string time2string(SUMOTime t, bool humanReadable)
convert SUMOTime to string (independently of global format setting)
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
Boundary & grow(double by)
extends the boundary by the given amount
static void pushName(unsigned int name)
push Name
static void popMatrix()
pop matrix
static void popName()
pop Name
static void pushMatrix()
push matrix
static void drawText(const std::string &text, const Position &pos, const double layer, const double size, const RGBColor &col=RGBColor::BLACK, const double angle=0, const int align=0, double width=-1)
long onCmdClose(FXObject *, FXSelector, void *)
long onCmdChangeOption(FXObject *, FXSelector, void *)
long onCmdUserDef(FXObject *, FXSelector, void *)
long onCmdPreDef(FXObject *, FXSelector, void *)
virtual ~GUIManip_Calibrator()
Destructor.
long onUpdUserDef(FXObject *, FXSelector, void *)
long onUpdPreDef(FXObject *, FXSelector, void *)
Changes the speed allowed on a set of lanes (gui version)
bool myShowAsKMH
The information whether the speed shall be shown in m/s or km/h.
MSCalibrator * myCalibrator
the calibrator being wrapped
double getExaggeration(const GUIVisualizationSettings &s) const
return exaggeration associated with this GLObject
RotCont myFGRotations
The rotations in full-geometry mode.
PosCont myFGPositions
The positions in full-geometry mode.
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own parameter window.
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
GUIManipulator * openManipulator(GUIMainWindow &app, GUISUMOAbstractView &parent)
Boundary myBoundary
The boundary of this rerouter.
GUICalibrator(MSCalibrator *calibrator)
Constructor.
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
static FXButton * buildFXButton(FXComposite *p, const std::string &text, const std::string &tip, const std::string &help, FXIcon *ic, FXObject *tgt, FXSelector sel, FXuint opts=BUTTON_NORMAL, FXint x=0, FXint y=0, FXint w=0, FXint h=0, FXint pl=DEFAULT_PAD, FXint pr=DEFAULT_PAD, FXint pt=DEFAULT_PAD, FXint pb=DEFAULT_PAD)
build button
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
const std::string & getFullName() const
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
void buildSelectionPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to (de)select the object.
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, const GUIMainWindow &app) const
Builds an entry which allows to copy the cursor position if geo projection is used,...
GUIGlID getGlID() const
Returns the numerical id of the object.
void drawName(const Position &pos, const double scale, const GUIVisualizationTextSettings &settings, const double angle=0, bool forceShow=false) const
draw name of item
A window containing a gl-object's parameter.
void mkItem(const char *name, bool dynamic, ValueSource< T > *src)
Adds a row which obtains its value from a ValueSource.
void closeBuilding(const Parameterised *p=0)
Closes the building of the table.
Stores the information about how to visualize structures.
GUIVisualizationTextSettings addName
GUIVisualizationSizeSettings addSize
double scale
information about a lane's width (temporary, used for a single view)
Calibrates the flow on a segment to a specified one.
double currentSpeed() const
measured speed in the current interval
virtual int passed() const
const MSLane * getLane() const
std::vector< AspiredState >::const_iterator myCurrentStateInterval
Iterator pointing to the current interval.
double currentFlow() const
flow in the current interval in veh/h
std::vector< AspiredState > myIntervals
List of adaptation intervals.
const double myPos
the position on the edge where this calibrator lies
int totalWished() const
number of vehicles expected to pass this interval
const MSEdge * getEdge() const
double myDefaultSpeed
The default (maximum) speed on the segment.
MSJunction *const myNode
the junction on which this calibrator lies (nullptr if is edge or lane specific)
const std::vector< MSLane * > & getLanes() const
Returns this edge's lanes.
const Position & getPosition(bool secondaryShape=false) const
Representation of a lane in the micro simulation.
A point in 2D or 3D with translation and scaling methods.
double x() const
Returns the x-position.
double y() const
Returns the y-position.
double rotationDegreeAtOffset(double pos) const
Returns the rotation at the given length.
Position positionAtOffset(double pos, double lateralOffset=0) const
Returns the position at the given length.
static const RGBColor BLACK
double getExaggeration(const GUIVisualizationSettings &s, const GUIGlObject *o, double factor=20) const
return the drawing size including exaggeration and constantSize values