Eclipse SUMO - Simulation of Urban MObility
GUIDialog_EditViewport.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2005-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
16 // A dialog to change the viewport
17 /****************************************************************************/
18 
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include <config.h>
24 
26 #include <utils/geom/Position.h>
35 
36 #include "GUISUMOAbstractView.h"
37 #include "GUIDialog_EditViewport.h"
38 
39 
40 // ===========================================================================
41 // FOX callback mapping
42 // ===========================================================================
43 FXDEFMAP(GUIDialog_EditViewport) GUIDialog_EditViewportMap[] = {
49 };
50 
51 // Object implementation
52 FXIMPLEMENT(GUIDialog_EditViewport, FXDialogBox, GUIDialog_EditViewportMap, ARRAYNUMBER(GUIDialog_EditViewportMap))
53 
54 // ===========================================================================
55 // method definitions
56 // ===========================================================================
57 
58 GUIDialog_EditViewport::GUIDialog_EditViewport(GUISUMOAbstractView* parent, const char* name, int x, int y) :
59  FXDialogBox(parent, name, GUIDesignDialogBox, x, y, 0, 0, 0, 0, 0, 0),
60  myParent(parent) {
61  // create contents frame
62  FXVerticalFrame* contentsFrame = new FXVerticalFrame(this, GUIDesignContentsFrame);
63  // create frame for file icons
64  FXHorizontalFrame* frameFiles = new FXHorizontalFrame(contentsFrame, GUIDesignHorizontalFrameIcons);
65  myLoadButton = new FXButton(frameFiles, "Load\t\tLoad viewport from file",
67  mySaveButton = new FXButton(frameFiles, "Save\t\tSave viewport to file",
69  // create horizontalframe for zoom elements and OSG
70  FXHorizontalFrame* editElementsFrame = new FXHorizontalFrame(contentsFrame, GUIDesignAuxiliarHorizontalFrame);
71 
72  // create vertical frame for XYZ values
73  FXVerticalFrame* lookFromFrame = new FXVerticalFrame(editElementsFrame, GUIDesignAuxiliarVerticalFrame);
74 
75  // create zoom elements
76  FXHorizontalFrame* zoomFrame = new FXHorizontalFrame(lookFromFrame, GUIDesignAuxiliarHorizontalFrame);
77  new FXLabel(zoomFrame, "Zoom:", nullptr, GUIDesignLabelLeftThick);
78  myZoom = new FXRealSpinner(zoomFrame, 16, this, MID_CHANGED, GUIDesignSpinDial);
79  myZoom->setRange(0.0001, 100000);
80  //myZoom->setNumberFormat(4);
81 
82  // create lookFromX elements
83  FXHorizontalFrame* lookFromXFrame = new FXHorizontalFrame(lookFromFrame, GUIDesignAuxiliarHorizontalFrame);
84  new FXLabel(lookFromXFrame, "X:", nullptr, GUIDesignLabelLeftThick);
85  myXOff = new FXRealSpinner(lookFromXFrame, 16, this, MID_CHANGED, GUIDesignSpinDial | SPIN_NOMIN | SPIN_NOMAX);
86 
87  // create lookFromY elements
88  FXHorizontalFrame* lookFromYFrame = new FXHorizontalFrame(lookFromFrame, GUIDesignAuxiliarHorizontalFrame);
89  new FXLabel(lookFromYFrame, "Y:", nullptr, GUIDesignLabelLeftThick);
90  myYOff = new FXRealSpinner(lookFromYFrame, 16, this, MID_CHANGED, GUIDesignSpinDial | SPIN_NOMIN | SPIN_NOMAX);
91 
92  // create lookFromZ elements
93  FXHorizontalFrame* lookFromZFrame = new FXHorizontalFrame(lookFromFrame, GUIDesignAuxiliarHorizontalFrame);
94  new FXLabel(lookFromZFrame, "Z:", nullptr, GUIDesignLabelLeftThick);
95  myZOff = new FXRealSpinner(lookFromZFrame, 16, this, MID_CHANGED, GUIDesignSpinDial | SPIN_NOMIN | SPIN_NOMAX);
96  myZOff->setRange(0.12, 100000000);
97 
98  // create rotation elements
99  FXHorizontalFrame* rotationFrame = new FXHorizontalFrame(lookFromFrame, GUIDesignAuxiliarHorizontalFrame);
100  new FXLabel(rotationFrame, "A:", nullptr, GUIDesignLabelLeftThick);
101  myRotation = new FXRealSpinner(rotationFrame, 16, this, MID_CHANGED, GUIDesignSpinDial | SPIN_NOMIN | SPIN_NOMAX);
102 
103  // create vertical frame for OSG
104  FXVerticalFrame* lookAtFrame = new FXVerticalFrame(editElementsFrame, GUIDesignAuxiliarVerticalFrame);
105  new FXLabel(lookAtFrame, "OSG", nullptr, GUIDesignLabelCenterThick);
106 
107  // create lookAtX elements
108  FXHorizontalFrame* lookAtXFrame = new FXHorizontalFrame(lookAtFrame, GUIDesignAuxiliarHorizontalFrame);
109  new FXLabel(lookAtXFrame, "LookAtX:", nullptr, GUIDesignLabelLeftThick);
110  myLookAtX = new FXRealSpinner(lookAtXFrame, 16, this, MID_CHANGED, GUIDesignSpinDial | SPIN_NOMIN | SPIN_NOMAX);
111 
112  // create lookAtY elements
113  FXHorizontalFrame* lookAtYFrame = new FXHorizontalFrame(lookAtFrame, GUIDesignAuxiliarHorizontalFrame);
114  new FXLabel(lookAtYFrame, "LookAtY:", nullptr, GUIDesignLabelLeftThick);
115  myLookAtY = new FXRealSpinner(lookAtYFrame, 16, this, MID_CHANGED, GUIDesignSpinDial | SPIN_NOMIN | SPIN_NOMAX);
116 
117  // create lookAtZ elements
118  FXHorizontalFrame* lookAtZFrame = new FXHorizontalFrame(lookAtFrame, GUIDesignAuxiliarHorizontalFrame);
119  new FXLabel(lookAtZFrame, "LookAtZ:", nullptr, GUIDesignLabelLeftThick);
120  myLookAtZ = new FXRealSpinner(lookAtZFrame, 16, this, MID_CHANGED, GUIDesignSpinDial | SPIN_NOMIN | SPIN_NOMAX);
121 
122  // only show LookAt elements if OSG is enabled
123 #ifdef HAVE_OSG
124  lookAtFrame->show();
125 #else
126  lookAtFrame->hide();
127 #endif
128 
129  // create buttons ok/cancel
130  new FXHorizontalSeparator(contentsFrame, GUIDesignHorizontalSeparator);
131  FXHorizontalFrame* frameButtons = new FXHorizontalFrame(contentsFrame, GUIDesignAuxiliarHorizontalFrame);
132  new FXHorizontalFrame(frameButtons, GUIDesignAuxiliarHorizontalFrame);
133  myOKButton = new FXButton(frameButtons, "&OK\t\taccept", GUIIconSubSys::getIcon(ICON_ACCEPT), this, GUIDialog_EditViewport::MID_OK, GUIDesignButtonOK);
134  myCancelButton = new FXButton(frameButtons, "&Cancel\t\tclose", GUIIconSubSys::getIcon(ICON_CANCEL), this, GUIDialog_EditViewport::MID_CANCEL, GUIDesignButtonCancel);
135  new FXHorizontalFrame(frameButtons, GUIDesignAuxiliarHorizontalFrame);
136  // set dialog icon
138 }
139 
140 
142 
143 
144 void
146  // If testing mode is enabled, we need to place focus in the Z dial
147  if (OptionsCont::getOptions().getBool("gui-testing")) {
148  myLoadButton->setFocus();
149  } else {
150  myOKButton->setFocus();
151  }
152  FXDialogBox::show();
153 }
154 
155 
156 long
157 GUIDialog_EditViewport::onCmdOk(FXObject*, FXSelector, void*) {
158  myParent->setViewportFromToRot(Position(myXOff->getValue(), myYOff->getValue(), myZOff->getValue()),
159 #ifdef HAVE_OSG
160  Position(myLookAtX->getValue(), myLookAtY->getValue(), myLookAtZ->getValue())
161 #else
163 #endif
164  , myRotation->getValue()
165  );
166  // write information of current zoom status
167  WRITE_DEBUG("Current Viewport values: " + toString(myXOff->getValue()) + ", " + toString(myYOff->getValue()) + ", " + toString(myZOff->getValue()) +
168  ". Zoom = '" + toString(myZoom->getValue()) + "'");
169  saveWindowPos();
170  hide();
171  return 1;
172 }
173 
174 
175 long
176 GUIDialog_EditViewport::onCmdCancel(FXObject*, FXSelector, void*) {
178  saveWindowPos();
179  hide();
180  return 1;
181 }
182 
183 
184 long
185 GUIDialog_EditViewport::onCmdChanged(FXObject* o, FXSelector, void*) {
186  if (o == myZOff) {
187  myZoom->setValue(myParent->getChanger().zPos2Zoom(myZOff->getValue()));
188  } else if (o == myZoom) {
189  myZOff->setValue(myParent->getChanger().zoom2ZPos(myZoom->getValue()));
190  }
191  myParent->setViewportFromToRot(Position(myXOff->getValue(), myYOff->getValue(), myZOff->getValue()),
192 #ifdef HAVE_OSG
193  Position(myLookAtX->getValue(), myLookAtY->getValue(), myLookAtZ->getValue())
194 #else
196 #endif
197  , myRotation->getValue()
198  );
199  return 1;
200 }
201 
202 
203 long
204 GUIDialog_EditViewport::onCmdLoad(FXObject*, FXSelector, void*) {
205  FXFileDialog opendialog(this, "Load Viewport");
206  opendialog.setIcon(GUIIconSubSys::getIcon(ICON_EMPTY));
207  opendialog.setSelectMode(SELECTFILE_ANY);
208  opendialog.setPatternList("*.xml");
209  if (gCurrentFolder.length() != 0) {
210  opendialog.setDirectory(gCurrentFolder);
211  }
212  if (opendialog.execute()) {
213  gCurrentFolder = opendialog.getDirectory();
214  GUISettingsHandler handler(opendialog.getFilename().text());
215  handler.applyViewport(myParent);
217  }
218  return 1;
219 }
220 
221 
222 long
223 GUIDialog_EditViewport::onCmdSave(FXObject*, FXSelector, void*) {
224  FXString file = MFXUtils::getFilename2Write(this, "Save Viewport", ".xml", GUIIconSubSys::getIcon(ICON_EMPTY), gCurrentFolder);
225  if (file == "") {
226  return 1;
227  }
228  try {
229  OutputDevice& dev = OutputDevice::getDevice(file.text());
231  writeXML(dev);
232  dev.closeTag();
233  dev.close();
234  } catch (IOError& e) {
235  FXMessageBox::error(this, MBOX_OK, "Storing failed!", "%s", e.what());
236  }
237  return 1;
238 }
239 
240 
241 void
244  dev.writeAttr(SUMO_ATTR_ZOOM, myZoom->getValue());
245  dev.writeAttr(SUMO_ATTR_X, myXOff->getValue());
246  dev.writeAttr(SUMO_ATTR_Y, myYOff->getValue());
247  dev.writeAttr(SUMO_ATTR_ANGLE, myRotation->getValue());
248 #ifdef HAVE_OSG
249  dev.writeAttr(SUMO_ATTR_CENTER_X, myLookAtX->getValue());
250  dev.writeAttr(SUMO_ATTR_CENTER_Y, myLookAtY->getValue());
251  dev.writeAttr(SUMO_ATTR_CENTER_Z, myLookAtZ->getValue());
252 #endif
253  dev.closeTag();
254 }
255 
256 
257 void
258 GUIDialog_EditViewport::setValues(double zoom, double xoff, double yoff, double rotation) {
259  myZoom->setValue(zoom);
260  myXOff->setValue(xoff);
261  myYOff->setValue(yoff);
262  myZOff->setValue(myParent->getChanger().zoom2ZPos(zoom));
263  myRotation->setValue(rotation);
264 }
265 
266 
267 void
268 GUIDialog_EditViewport::setValues(const Position& lookFrom, const Position& lookAt, double rotation) {
269  myXOff->setValue(lookFrom.x());
270  myYOff->setValue(lookFrom.y());
271  myZOff->setValue(lookFrom.z());
272  myZoom->setValue(myParent->getChanger().zPos2Zoom(lookFrom.z()));
273 #ifdef HAVE_OSG
274  myLookAtX->setValue(lookAt.x());
275  myLookAtY->setValue(lookAt.y());
276  myLookAtZ->setValue(lookAt.z());
277 #else
278  UNUSED_PARAMETER(lookAt);
279 #endif
280  myRotation->setValue(rotation);
281 }
282 
283 
284 void
285 GUIDialog_EditViewport::setOldValues(const Position& lookFrom, const Position& lookAt, double rotation) {
286  setValues(lookFrom, lookAt, rotation);
287  myOldLookFrom = lookFrom;
288  myOldLookAt = lookAt;
289  myOldRotation = rotation;
290 }
291 
292 
293 bool
295  return false;
296  //return myZoom->getDial().grabbed() || myXOff->getDial().grabbed() || myYOff->getDial().grabbed();
297 }
298 
299 void
301  getApp()->reg().writeIntEntry("VIEWPORT_DIALOG_SETTINGS", "x", getX());
302  getApp()->reg().writeIntEntry("VIEWPORT_DIALOG_SETTINGS", "y", getY());
303 }
304 
305 /****************************************************************************/
306 
GUIPerspectiveChanger::getYPos
virtual double getYPos() const =0
Returns the y-offset of the field to show stored in this changer.
UNUSED_PARAMETER
#define UNUSED_PARAMETER(x)
Definition: StdDefs.h:31
SUMO_ATTR_ANGLE
Definition: SUMOXMLDefinitions.h:794
GUIDesignAuxiliarHorizontalFrame
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition: GUIDesigns.h:273
ICON_ACCEPT
Definition: GUIIcons.h:386
GUISUMOAbstractView::setViewportFromToRot
virtual void setViewportFromToRot(const Position &lookFrom, const Position &lookAt, double rotation)
applies the given viewport settings
Definition: GUISUMOAbstractView.cpp:1366
GUIDesignSpinDial
#define GUIDesignSpinDial
Definition: GUIDesigns.h:341
GUIDialog_EditViewport::onCmdCancel
long onCmdCancel(FXObject *, FXSelector, void *)
Called when the user wants to restore the viewport.
Definition: GUIDialog_EditViewport.cpp:176
GUIDialog_EditViewport::onCmdOk
long onCmdOk(FXObject *, FXSelector, void *)
Called when the user wants to keep the viewport.
Definition: GUIDialog_EditViewport.cpp:157
GUISUMOAbstractView
Definition: GUISUMOAbstractView.h:72
OutputDevice
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:63
GUIDialog_EditViewport::writeXML
void writeXML(OutputDevice &dev)
write the settings to the given device
Definition: GUIDialog_EditViewport.cpp:242
Position::z
double z() const
Returns the z-position.
Definition: Position.h:66
Position::INVALID
static const Position INVALID
used to indicate that a position is valid
Definition: Position.h:284
OptionsCont.h
GUIDialog_EditViewport::myOldRotation
double myOldRotation
Definition: GUIDialog_EditViewport.h:128
SUMO_TAG_VIEWSETTINGS
Definition: SUMOXMLDefinitions.h:240
ICON_EMPTY
Definition: GUIIcons.h:41
MsgHandler.h
ICON_SAVE
Definition: GUIIcons.h:48
GUIDesignButtonToolbarWithText
#define GUIDesignButtonToolbarWithText
little button with text and icon
Definition: GUIDesigns.h:82
GUIDesignButtonOK
#define GUIDesignButtonOK
Definition: GUIDesigns.h:98
FXDEFMAP
FXDEFMAP(GUIDialog_EditViewport) GUIDialog_EditViewportMap[]
OptionsCont::getOptions
static OptionsCont & getOptions()
Retrieves the options.
Definition: OptionsCont.cpp:57
GUIPerspectiveChanger::getRotation
virtual double getRotation() const =0
Returns the rotation of the canvas stored in this changer.
ICON_OPEN_CONFIG
Definition: GUIIcons.h:42
GUIDialog_EditViewport::myZoom
FXRealSpinner * myZoom
The spin dialers used to change the view.
Definition: GUIDialog_EditViewport.h:137
GUIDesigns.h
SUMO_TAG_VIEWPORT
Definition: SUMOXMLDefinitions.h:259
GUISettingsHandler.h
GUIIconSubSys::getIcon
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Definition: GUIIconSubSys.cpp:609
OutputDevice::close
void close()
Closes the device and removes it from the dictionary.
Definition: OutputDevice.cpp:207
GUIDialog_EditViewport::myZOff
FXRealSpinner * myZOff
Definition: GUIDialog_EditViewport.h:137
GUIDialog_EditViewport::MID_CHANGED
Definition: GUIDialog_EditViewport.h:48
GUIDialog_EditViewport::setOldValues
void setOldValues(const Position &lookFrom, const Position &lookAt, double rotation)
Resets old values.
Definition: GUIDialog_EditViewport.cpp:285
MFXUtils::getFilename2Write
static FXString getFilename2Write(FXWindow *parent, const FXString &header, const FXString &extension, FXIcon *icon, FXString &currentFolder)
Returns the file name to write.
Definition: MFXUtils.cpp:83
OutputDevice::closeTag
bool closeTag(const std::string &comment="")
Closes the most recently opened tag and optionally adds a comment.
Definition: OutputDevice.cpp:253
GUIDialog_EditViewport::myLoadButton
FXButton * myLoadButton
load button
Definition: GUIDialog_EditViewport.h:131
GUIAppEnum.h
GUISUMOAbstractView.h
GUIDesignContentsFrame
#define GUIDesignContentsFrame
design for the main content frame of every frame/dialog
Definition: GUIDesigns.h:282
GUIDialog_EditViewport
A dialog to change the viewport.
Definition: GUIDialog_EditViewport.h:42
OutputDevice::writeAttr
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
Definition: OutputDevice.h:255
GUIDesignHorizontalFrameIcons
#define GUIDesignHorizontalFrameIcons
Horizontal frame used for pack icons.
Definition: GUIDesigns.h:230
GUIDialog_EditViewport::myOldLookAt
Position myOldLookAt
Definition: GUIDialog_EditViewport.h:127
GUIDialog_EditViewport::myXOff
FXRealSpinner * myXOff
Definition: GUIDialog_EditViewport.h:137
SUMO_ATTR_CENTER_Y
Definition: SUMOXMLDefinitions.h:402
GUIDialog_EditViewport::MID_CANCEL
Definition: GUIDialog_EditViewport.h:50
GUIDialog_EditViewport::myLookAtX
FXRealSpinner * myLookAtX
The spin dialers used to change the view at (osg only)
Definition: GUIDialog_EditViewport.h:140
GUIDialog_EditViewport::myParent
GUISUMOAbstractView * myParent
The calling view.
Definition: GUIDialog_EditViewport.h:124
GUIDialog_EditViewport::onCmdLoad
long onCmdLoad(FXObject *, FXSelector, void *)
Called when the user wants to load a viewport.
Definition: GUIDialog_EditViewport.cpp:204
GUIPerspectiveChanger.h
GUIDesignAuxiliarVerticalFrame
#define GUIDesignAuxiliarVerticalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition: GUIDesigns.h:276
GUIDesignHorizontalSeparator
#define GUIDesignHorizontalSeparator
Definition: GUIDesigns.h:321
GUIDialog_EditViewport::MID_SAVE
Definition: GUIDialog_EditViewport.h:52
GUIDialog_EditViewport::saveWindowPos
void saveWindowPos()
save window position to the registry
Definition: GUIDialog_EditViewport.cpp:300
GUIDialog_EditViewport::~GUIDialog_EditViewport
~GUIDialog_EditViewport()
Destructor.
Definition: GUIDialog_EditViewport.cpp:141
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:38
Position::x
double x() const
Returns the x-position.
Definition: Position.h:56
GUIPerspectiveChanger::getZoom
virtual double getZoom() const =0
Returns the zoom factor computed stored in this changer.
GUISettingsHandler
An XML-handler for visualisation schemes.
Definition: GUISettingsHandler.h:44
SUMO_ATTR_Y
Definition: SUMOXMLDefinitions.h:399
GUIIOGlobals.h
SUMO_ATTR_CENTER_Z
Definition: SUMOXMLDefinitions.h:403
GUISettingsHandler::applyViewport
void applyViewport(GUISUMOAbstractView *view) const
Sets the viewport which has been parsed.
Definition: GUISettingsHandler.cpp:382
gCurrentFolder
FXString gCurrentFolder
The folder used as last.
Definition: GUIIOGlobals.cpp:32
GUIDialog_EditViewport::myOldLookFrom
Position myOldLookFrom
The old viewport.
Definition: GUIDialog_EditViewport.h:127
GUIDesignLabelCenterThick
#define GUIDesignLabelCenterThick
label extended over frame with thick and with text justify to center and height of 23
Definition: GUIDesigns.h:167
GUIDialog_EditViewport::MID_OK
Definition: GUIDialog_EditViewport.h:49
GUIIconSubSys.h
Position.h
OutputDevice::openTag
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
Definition: OutputDevice.cpp:239
toString
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:47
OutputDevice::getDevice
static OutputDevice & getDevice(const std::string &name)
Returns the described OutputDevice.
Definition: OutputDevice.cpp:54
GUIDesignLabelLeftThick
#define GUIDesignLabelLeftThick
label extended over frame with thick and with text justify to left and height of 23
Definition: GUIDesigns.h:161
Position::y
double y() const
Returns the y-position.
Definition: Position.h:61
GUISUMOAbstractView::getChanger
GUIPerspectiveChanger & getChanger() const
get changer
Definition: GUISUMOAbstractView.cpp:175
GUIPerspectiveChanger::zoom2ZPos
virtual double zoom2ZPos(double zoom) const =0
Returns the camera height at which the given zoom level is reached.
GUIDialog_EditViewport::onCmdSave
long onCmdSave(FXObject *, FXSelector, void *)
Called when the user wants to save a viewport.
Definition: GUIDialog_EditViewport.cpp:223
GUIDialog_EditViewport::show
void show()
overload show function to focus always in OK Button
Definition: GUIDialog_EditViewport.cpp:145
ICON_CANCEL
Definition: GUIIcons.h:387
SUMO_ATTR_CENTER_X
Definition: SUMOXMLDefinitions.h:401
MFXUtils.h
GUIDialog_EditViewport::myOKButton
FXButton * myOKButton
OK button.
Definition: GUIDialog_EditViewport.h:143
GUIPerspectiveChanger::zPos2Zoom
virtual double zPos2Zoom(double zPos) const =0
Returns the zoom level that is achieved at a given camera height.
GUIDialog_EditViewport::myYOff
FXRealSpinner * myYOff
Definition: GUIDialog_EditViewport.h:137
IOError
Definition: UtilExceptions.h:161
ICON_EDITVIEWPORT
Definition: GUIIcons.h:103
GUIDialog_EditViewport.h
GUIDialog_EditViewport::MID_LOAD
Definition: GUIDialog_EditViewport.h:51
GUIDialog_EditViewport::setValues
void setValues(double zoom, double xoff, double yoff, double rotation)
Sets the given values into the dialog.
Definition: GUIDialog_EditViewport.cpp:258
GUIDesignButtonCancel
#define GUIDesignButtonCancel
Cancel Button.
Definition: GUIDesigns.h:104
config.h
GUIDialog_EditViewport::myRotation
FXRealSpinner * myRotation
Definition: GUIDialog_EditViewport.h:137
GUIPerspectiveChanger::getXPos
virtual double getXPos() const =0
Returns the x-offset of the field to show stored in this changer.
SUMO_ATTR_ZOOM
Definition: SUMOXMLDefinitions.h:823
GUIDialog_EditViewport::haveGrabbed
bool haveGrabbed() const
Returns the information whether one of the spin dialers is grabbed.
Definition: GUIDialog_EditViewport.cpp:294
GUIDialog_EditViewport::myLookAtZ
FXRealSpinner * myLookAtZ
Definition: GUIDialog_EditViewport.h:140
SUMO_ATTR_X
Definition: SUMOXMLDefinitions.h:398
GUIDialog_EditViewport::myLookAtY
FXRealSpinner * myLookAtY
Definition: GUIDialog_EditViewport.h:140
WRITE_DEBUG
#define WRITE_DEBUG(msg)
Definition: MsgHandler.h:284
GUIDialog_EditViewport::onCmdChanged
long onCmdChanged(FXObject *, FXSelector, void *)
Called when the user changes the viewport.
Definition: GUIDialog_EditViewport.cpp:185
GUIDesignDialogBox
#define GUIDesignDialogBox
Definition: GUIDesigns.h:433