42 #ifdef CHECK_MEMORY_LEAKS
44 #endif // CHECK_MEMORY_LEAKS
67 const
char* name,
int x,
int y)
68 :
FXDialogBox(parent, name, DECOR_TITLE | DECOR_BORDER, x, y, 0, 0),
70 FXVerticalFrame* f1 =
new FXVerticalFrame(
this, LAYOUT_TOP | FRAME_NONE | LAYOUT_FILL_X, 0, 0, 0, 0, 0, 0, 1, 1);
73 new FXHorizontalFrame(f1, FRAME_THICK, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
74 new FXButton(frame0,
"\t\tLoad viewport from file",
76 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
77 new FXButton(frame0,
"\t\tSave viewport to file",
79 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
81 FXMatrix* m1 =
new FXMatrix(f1, 2, MATRIX_BY_COLUMNS);
83 new FXLabel(m1,
"Zoom:", 0, LAYOUT_CENTER_Y);
84 myZoom =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
85 myZoom->setRange(0.0001, 100000);
86 myZoom->setNumberFormat(4);
89 new FXLabel(m1,
"X:", 0, LAYOUT_CENTER_Y);
90 myXOff =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
91 myXOff->setRange(-1000000, 1000000);
92 myXOff->setNumberFormat(4);
95 new FXLabel(m1,
"Y:", 0, LAYOUT_CENTER_Y);
96 myYOff =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
97 myYOff->setRange(-1000000, 1000000);
98 myYOff->setNumberFormat(4);
102 new FXLabel(m1,
"LookAtX:", 0, LAYOUT_CENTER_Y);
103 myLookAtX =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
104 myLookAtX->setRange(-1000000, 100000);
105 myLookAtX->setNumberFormat(4);
108 new FXLabel(m1,
"LookAtY:", 0, LAYOUT_CENTER_Y);
109 myLookAtY =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
110 myLookAtY->setRange(-1000000, 1000000);
111 myLookAtY->setNumberFormat(4);
114 new FXLabel(m1,
"LookAtZ:", 0, LAYOUT_CENTER_Y);
115 myLookAtZ =
new FXRealSpinDial(m1, 16,
this, MID_CHANGED, LAYOUT_CENTER_Y | LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK);
116 myLookAtZ->setRange(-1000000, 1000000);
117 myLookAtZ->setNumberFormat(4);
121 new FXHorizontalSeparator(f1, SEPARATOR_GROOVE | LAYOUT_FILL_X);
125 BUTTON_INITIAL | BUTTON_DEFAULT | FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X,
126 0, 0, 0, 0, 4, 4, 3, 3);
128 FRAME_RAISED | FRAME_THICK | LAYOUT_TOP | LAYOUT_LEFT | LAYOUT_CENTER_X,
129 0, 0, 0, 0, 4, 4, 3, 3);
142 Position(myLookAtX->getValue(), myLookAtY->getValue(), myLookAtZ->getValue())
164 Position(myLookAtX->getValue(), myLookAtY->getValue(), myLookAtZ->getValue())
175 FXFileDialog opendialog(
this,
"Load Viewport");
177 opendialog.setSelectMode(SELECTFILE_ANY);
178 opendialog.setPatternList(
"*.xml");
182 if (opendialog.execute()) {
186 handler.setViewport(lookFrom, lookAt);
187 if (lookFrom.z() > 0) {
198 FXFileDialog opendialog(
this,
"Save Viewport");
200 opendialog.setSelectMode(SELECTFILE_ANY);
201 opendialog.setPatternList(
"*.xml");
210 dev <<
"<viewsettings>\n";
211 dev <<
" <viewport zoom=\"" <<
myZoom->getValue() <<
"\" x=\"" <<
myXOff->getValue() <<
"\" y=\"" <<
myYOff->getValue();
213 dev <<
"\" centerX=\"" << myLookAtX->getValue() <<
"\" centerY=\"" << myLookAtY->getValue() <<
"\" centerZ=\"" << myLookAtZ->getValue();
215 dev <<
"\"/>\n</viewsettings>\n";
218 FXMessageBox::error(
this, MBOX_OK,
"Storing failed!",
"%s", e.what());
234 myZoom->setValue(lookFrom.
z());
235 myXOff->setValue(lookFrom.
x());
236 myYOff->setValue(lookFrom.
y());
238 myLookAtX->setValue(lookAt.
x());
239 myLookAtY->setValue(lookAt.
y());
240 myLookAtZ->setValue(lookAt.
z());
255 return myZoom->getDial().grabbed() ||
myXOff->getDial().grabbed() ||
myYOff->getDial().grabbed();