43 #ifdef CHECK_MEMORY_LEAKS
45 #endif // CHECK_MEMORY_LEAKS
68 const
char* name,
int x,
int y)
69 :
FXDialogBox(parent, name, DECOR_TITLE | DECOR_BORDER, x, y, 0, 0),
71 FXVerticalFrame* f1 =
new FXVerticalFrame(
this, LAYOUT_TOP | FRAME_NONE | LAYOUT_FILL_X, 0, 0, 0, 0, 0, 0, 1, 1);
74 new FXHorizontalFrame(f1, FRAME_THICK, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
75 new FXButton(frame0,
"\t\tLoad viewport from file",
77 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
78 new FXButton(frame0,
"\t\tSave viewport to file",
80 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
82 FXMatrix* m1 =
new FXMatrix(f1, 2, MATRIX_BY_COLUMNS);
84 new FXLabel(m1,
"Zoom:", 0, LAYOUT_CENTER_Y);
85 myZoom =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
86 myZoom->setRange(0.0001, 100000);
87 myZoom->setNumberFormat(4);
90 new FXLabel(m1,
"X:", 0, LAYOUT_CENTER_Y);
91 myXOff =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
92 myXOff->setRange(-1000000, 1000000);
93 myXOff->setNumberFormat(4);
96 new FXLabel(m1,
"Y:", 0, LAYOUT_CENTER_Y);
97 myYOff =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
98 myYOff->setRange(-1000000, 1000000);
99 myYOff->setNumberFormat(4);
103 new FXLabel(m1,
"LookAtX:", 0, LAYOUT_CENTER_Y);
104 myLookAtX =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
105 myLookAtX->setRange(-1000000, 100000);
106 myLookAtX->setNumberFormat(4);
109 new FXLabel(m1,
"LookAtY:", 0, LAYOUT_CENTER_Y);
110 myLookAtY =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
111 myLookAtY->setRange(-1000000, 1000000);
112 myLookAtY->setNumberFormat(4);
115 new FXLabel(m1,
"LookAtZ:", 0, LAYOUT_CENTER_Y);
116 myLookAtZ =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
117 myLookAtZ->setRange(-1000000, 1000000);
118 myLookAtZ->setNumberFormat(4);
122 new FXHorizontalSeparator(f1, SEPARATOR_GROOVE | LAYOUT_FILL_X);
126 BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X,
127 0, 0, 0, 0, 4, 4, 3, 3);
129 FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X,
130 0, 0, 0, 0, 4, 4, 3, 3);
143 Position(myLookAtX->getValue(), myLookAtY->getValue(), myLookAtZ->getValue())
165 Position(myLookAtX->getValue(), myLookAtY->getValue(), myLookAtZ->getValue())
176 FXFileDialog opendialog(
this,
"Load Viewport");
178 opendialog.setSelectMode(SELECTFILE_ANY);
179 opendialog.setPatternList(
"*.xml");
183 if (opendialog.execute()) {
187 handler.setViewport(lookFrom, lookAt);
188 if (lookFrom.z() > 0) {
199 FXFileDialog opendialog(
this,
"Save Viewport");
201 opendialog.setSelectMode(SELECTFILE_ANY);
202 opendialog.setPatternList(
"*.xml");
211 dev <<
"<viewsettings>\n";
212 dev <<
" <viewport zoom=\"" <<
myZoom->getValue() <<
"\" x=\"" <<
myXOff->getValue() <<
"\" y=\"" <<
myYOff->getValue();
214 dev <<
"\" centerX=\"" << myLookAtX->getValue() <<
"\" centerY=\"" << myLookAtY->getValue() <<
"\" centerZ=\"" << myLookAtZ->getValue();
216 dev <<
"\"/>\n</viewsettings>\n";
219 FXMessageBox::error(
this, MBOX_OK,
"Storing failed!",
"%s", e.what());
235 myZoom->setValue(lookFrom.
z());
236 myXOff->setValue(lookFrom.
x());
237 myYOff->setValue(lookFrom.
y());
239 myLookAtX->setValue(lookAt.
x());
240 myLookAtY->setValue(lookAt.
y());
241 myLookAtZ->setValue(lookAt.
z());
258 return myZoom->getDial().grabbed() ||
myXOff->getDial().grabbed() ||
myYOff->getDial().grabbed();
void setValues(SUMOReal zoom, SUMOReal xoff, SUMOReal yoff)
Sets the given values into the dialog.
long onCmdOk(FXObject *, FXSelector, void *)
Called when the user wants to keep the viewport.
virtual void setViewport(const Position &lookFrom, const Position &lookAt)
applies the given viewport settings
long onCmdCancel(FXObject *, FXSelector, void *)
Called when the user wants to restore the viewport.
long onCmdChanged(FXObject *, FXSelector, void *)
Called when the user changes the viewport.
static FXbool userPermitsOverwritingWhenFileExists(FXWindow *const parent, const FXString &file)
Returns true if either the file given by its name does not exist or the user allows overwriting it...
FXString gCurrentFolder
The folder used as last.
long onCmdLoad(FXObject *, FXSelector, void *)
Called when the user wants to load a viewport.
FXRealSpinDial * myZoom
The spin dialers used to change the view.
SUMOReal x() const
Returns the x-position.
#define UNUSED_PARAMETER(x)
A point in 2D or 3D with translation and scaling methods.
SUMOReal z() const
Returns the z-position.
~GUIDialog_EditViewport()
Destructor.
long onCmdSave(FXObject *, FXSelector, void *)
Called when the user wants to save a viewport.
GUISUMOAbstractView * myParent
The calling view.
FXDEFMAP(GUIDialog_EditViewport) GUIDialog_EditViewportMap[]
Position myOldLookFrom
The old viewport.
static OutputDevice & getDevice(const std::string &name)
Returns the described OutputDevice.
SUMOReal y() const
Returns the y-position.
Static storage of an output device and its base (abstract) implementation.
An XML-handler for visualisation schemes.
A dialog to change the viewport.
bool haveGrabbed() const
Returns the information whether one of the spin dialers is grabbed.
static FXIcon * getIcon(GUIIcon which)
static const Position INVALID
void setOldValues(const Position &lookFrom, const Position &lookAt)
Resets old values.