summaryrefslogtreecommitdiff
path: root/mainwin.cc
diff options
context:
space:
mode:
Diffstat (limited to 'mainwin.cc')
-rw-r--r--mainwin.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/mainwin.cc b/mainwin.cc
index 8032ff5..144959e 100644
--- a/mainwin.cc
+++ b/mainwin.cc
@@ -150,6 +150,7 @@ MainWindow::MainWindow(const char *filename)
if (filename) {
this->filename = QString(filename);
+ maybe_change_dir();
setWindowTitle(this->filename);
load();
} else {
@@ -200,6 +201,22 @@ void MainWindow::load()
}
}
+void MainWindow::maybe_change_dir()
+{
+ if (filename.isEmpty())
+ return;
+
+ int dir_end_index = filename.lastIndexOf("/");
+ if (dir_end_index < 0)
+ return;
+
+ QString dirname = filename.mid(0, dir_end_index);
+ if (chdir(dirname.toAscii().data()) < 0)
+ return;
+
+ filename = filename.mid(dir_end_index+1);
+}
+
void MainWindow::find_root_tag(AbstractNode *n)
{
foreach(AbstractNode *v, n->children) {
@@ -380,6 +397,7 @@ void MainWindow::actionOpen()
if (!new_filename.isEmpty())
{
filename = new_filename;
+ maybe_change_dir();
setWindowTitle(filename);
QString text;
@@ -420,6 +438,7 @@ void MainWindow::actionSaveAs()
QString new_filename = QFileDialog::getSaveFileName(this, "Save File", filename, "OpenSCAD Designs (*.scad)");
if (!new_filename.isEmpty()) {
filename = new_filename;
+ maybe_change_dir();
setWindowTitle(filename);
actionSave();
}
contact: Jan Huwald // Impressum