From 6a9653b1db1f735fd0ee053b9bb615be335e1160 Mon Sep 17 00:00:00 2001 From: kintel Date: Fri, 2 Jul 2010 20:59:16 +0000 Subject: [PATCH] Some fixes by Jestin Stoffel git-svn-id: http://svn.clifford.at/openscad/trunk@566 b57f626f-c46c-0410-a088-ec61d464b74c --- src/glview.cc | 15 ++++++++++----- src/mainwin.cc | 29 ++++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/glview.cc b/src/glview.cc index 270aed66..d51714b2 100644 --- a/src/glview.cc +++ b/src/glview.cc @@ -215,8 +215,8 @@ void GLView::resizeGL(int w, int h) void GLView::paintGL() { - const QColor &col = Preferences::inst()->color(Preferences::BACKGROUND_COLOR); - glClearColor(col.redF(), col.greenF(), col.blueF(), 0.0); + const QColor &bgcol = Preferences::inst()->color(Preferences::BACKGROUND_COLOR); + glClearColor(bgcol.redF(), bgcol.greenF(), bgcol.blueF(), 0.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); @@ -253,6 +253,8 @@ void GLView::paintGL() glRotated(object_rot_y, 0.0, 1.0, 0.0); glRotated(object_rot_z, 0.0, 0.0, 1.0); + // FIXME: Crosshairs and axes are lighted, this doesn't make sense and causes them + // to change color based on view orientation. if (showcrosshairs) { glLineWidth(3); @@ -271,6 +273,7 @@ void GLView::paintGL() glTranslated(object_trans_x, object_trans_y, object_trans_z); // Large gray axis cross inline with the model + // FIXME: This is always gray - adjust color to keep contrast with background if (showaxes) { glLineWidth(1); @@ -296,7 +299,6 @@ void GLView::paintGL() renderfunc(renderfunc_vp); // Small axis cross in the lower left corner - // FIXME: Adjust color to keep contrast with background if (showaxes) { glDepthFunc(GL_ALWAYS); @@ -354,8 +356,11 @@ void GLView::paintGL() glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - // FIXME: Adjust color to keep contrast with background - glColor3d(0.0, 0.0, 0.0); + // FIXME: This was an attempt to keep contrast with background, but is suboptimal + // (e.g. nearly invisible against a gray background). + int r,g,b; + bgcol.getRgb(&r, &g, &b); + glColor3d((255.0-r)/255.0, (255.0-g)/255.0, (255.0-b)/255.0); glBegin(GL_LINES); // X Label glVertex3d(xlabel_x-3, xlabel_y-3, 0); glVertex3d(xlabel_x+3, xlabel_y+3, 0); diff --git a/src/mainwin.cc b/src/mainwin.cc index f6b7a535..ef738fce 100644 --- a/src/mainwin.cc +++ b/src/mainwin.cc @@ -812,6 +812,9 @@ void MainWindow::actionNew() #ifdef ENABLE_MDI new MainWindow(QString()); #else + if (!maybeSave()) + return; + setFileName(""); editor->setPlainText(""); #endif @@ -819,18 +822,35 @@ void MainWindow::actionNew() void MainWindow::actionOpen() { - setCurrentOutput(); QString new_filename = QFileDialog::getOpenFileName(this, "Open File", "", "OpenSCAD Designs (*.scad)"); - if (!new_filename.isEmpty()) openFile(new_filename); - clearCurrentOutput(); +#ifdef ENABLE_MDI + new MainWindow(new_filename); +#else + if (!new_filename.isEmpty()) { + if (!maybeSave()) + return; + + setCurrentOutput(); + openFile(new_filename); + clearCurrentOutput(); + } +#endif } void MainWindow::actionOpenRecent() { QAction *action = qobject_cast(sender()); + +#ifdef ENABLE_MDI + new MainWindow(action->data().toString()); +#else + if (!maybeSave()) + return; + if (action) { openFile(action->data().toString()); } +#endif } void MainWindow::clearRecentFiles() @@ -1800,8 +1820,7 @@ MainWindow::helpManual() } /*! - FIXME: In SDI mode, this should be called also on New and Open - In MDI mode; also call on both reload functions? + FIXME: In MDI mode, should this be called on both reload functions? */ bool MainWindow::maybeSave()