83 myChosenTarget(myChosenValue,
nullptr, MID_OPTION),
86 mySpeedTarget(mySpeed),
88 myChosenTarget.setTarget(
this);
90 new FXVerticalFrame(
this, LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 0, 0, 0, 0);
92 FXGroupBox* gp =
new FXGroupBox(f1,
"Change Speed", GROUPBOX_TITLE_LEFT | FRAME_RIDGE,
93 0, 0, 0, 0, 4, 4, 1, 1, 2, 0);
96 FXHorizontalFrame* gf1 =
new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
97 new FXRadioButton(gf1,
"Default", &myChosenTarget, FXDataTarget::ID_OPTION + 0, ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP,
98 0, 0, 0, 0, 2, 2, 0, 0);
102 FXHorizontalFrame* gf0 =
new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
103 new FXRadioButton(gf0,
"Loaded", &myChosenTarget, FXDataTarget::ID_OPTION + 1, ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP,
104 0, 0, 0, 0, 2, 2, 0, 0);
108 FXHorizontalFrame* gf2 =
new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
109 new FXRadioButton(gf2,
"Predefined: ", &myChosenTarget, FXDataTarget::ID_OPTION + 2, ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP | LAYOUT_CENTER_Y,
110 0, 0, 0, 0, 2, 2, 0, 0);
112 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP | LAYOUT_CENTER_Y | COMBOBOX_STATIC);
113 myPredefinedValues->appendIconItem(
"20 km/h");
114 myPredefinedValues->appendIconItem(
"40 km/h");
115 myPredefinedValues->appendIconItem(
"60 km/h");
116 myPredefinedValues->appendIconItem(
"80 km/h");
117 myPredefinedValues->appendIconItem(
"100 km/h");
118 myPredefinedValues->appendIconItem(
"120 km/h");
119 myPredefinedValues->appendIconItem(
"140 km/h");
120 myPredefinedValues->appendIconItem(
"160 km/h");
121 myPredefinedValues->appendIconItem(
"180 km/h");
122 myPredefinedValues->appendIconItem(
"200 km/h");
126 FXHorizontalFrame* gf12 =
new FXHorizontalFrame(gp, LAYOUT_TOP | LAYOUT_LEFT, 0, 0, 0, 0, 10, 10, 5, 5);
127 new FXRadioButton(gf12,
"Free Entry: ", &myChosenTarget, FXDataTarget::ID_OPTION + 3,
128 ICON_BEFORE_TEXT | LAYOUT_SIDE_TOP | LAYOUT_CENTER_Y,
129 0, 0, 0, 0, 2, 2, 0, 0);
130 myUserDefinedSpeed =
new FXRealSpinner(gf12, 10,
this, MID_USER_DEF, LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
133 myUserDefinedSpeed->setIncrement(10);
134 myUserDefinedSpeed->setRange(0, 300);
135 myUserDefinedSpeed->setValue(0);
139 BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X, 0, 0, 0, 0, 30, 30, 4, 4);
166 myChosenValue != 3 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
168 myParent->updateChildren();
185 myChosenValue != 2 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
187 myParent->updateChildren();
240 *myApplication, *myParent);
252 if (calibrator->
getEdge() !=
nullptr) {
253 const std::vector<MSLane*>& destLanes = calibrator->
getEdge()->
getLanes();
255 const double pos = calibrator->
myPos;
256 for (std::vector<MSLane*>::const_iterator i = destLanes.begin(); i != destLanes.end(); ++i) {
257 if (lane ==
nullptr || (*i) == lane) {
265 if (calibrator->
myNode !=
nullptr) {
297 ret->
mkItem(
TL(
"aspired flow [veh/h]"),
false, myCurrentStateInterval->q);
298 ret->
mkItem(
TL(
"aspired speed"),
false, myCurrentStateInterval->v);
309 const std::string nextStart =
313 ret->
mkItem(
TL(
"inactive until"),
false, nextStart);
325 std::string flow =
"-";
326 std::string speed =
"-";
329 if (myCurrentStateInterval->v >= 0) {
330 speed =
toString(myCurrentStateInterval->v) +
"m/s";
332 if (myCurrentStateInterval->q >= 0) {
333 flow =
toString((
int)myCurrentStateInterval->q) +
"v/h";
340 glTranslated(pos.
x(), pos.
y(),
getType());
341 glRotated(rot, 0, 0, 1);
343 glScaled(exaggeration, exaggeration, 1);
344 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
346 glBegin(GL_TRIANGLES);
347 glColor3d(1, .8f, 0);
349 glVertex2d(0 - 1.4, 0);
350 glVertex2d(0 - 1.4, 6);
351 glVertex2d(0 + 1.4, 6);
352 glVertex2d(0 + 1.4, 0);
353 glVertex2d(0 - 1.4, 0);
354 glVertex2d(0 + 1.4, 6);
358 if (s.
scale * exaggeration >= 1.) {
359 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 buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, const GUIMainWindow &app, bool addSeparator=true) const
Builds an entry which allows to copy the cursor position if geo projection is used,...
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.
virtual Position getCenter() const
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