summaryrefslogtreecommitdiff
path: root/mainwin.cc
diff options
context:
space:
mode:
authorclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-07-25 19:45:38 (GMT)
committerclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-07-25 19:45:38 (GMT)
commit30682d9fb4fdb256fd5da4dcf337da920f5197f6 (patch)
treed26cbd28d7861d60d5e2ca9d563fc173e53133a1 /mainwin.cc
parent1dde2be94e63be2f9ab48942da031277b116a948 (diff)
Clifford Wolf:
Automatically change dir on file open or saveAs git-svn-id: http://svn.clifford.at/openscad/trunk@79 b57f626f-c46c-0410-a088-ec61d464b74c
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