From d8488027d78f22841e418a4b7708e77ab421f47f Mon Sep 17 00:00:00 2001 From: Przemo Firszt Date: Sun, 18 Oct 2015 14:34:09 +0100 Subject: [PATCH] FEM: Fix WorkingDir problem Signed-off-by: Przemo Firszt --- src/Mod/Fem/_JobControlTaskPanel.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/Mod/Fem/_JobControlTaskPanel.py b/src/Mod/Fem/_JobControlTaskPanel.py index 23e2d9a2a..913e21fc4 100644 --- a/src/Mod/Fem/_JobControlTaskPanel.py +++ b/src/Mod/Fem/_JobControlTaskPanel.py @@ -167,13 +167,14 @@ class _JobControlTaskPanel: FreeCADGui.Control.closeDialog() def choose_working_dir(self): - self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") - self.working_dir = QtGui.QFileDialog.getExistingDirectory(None, - 'Choose CalculiX working directory', - self.fem_prefs.GetString("WorkingDir", '/tmp')) - if self.working_dir: - self.fem_prefs.SetString("WorkingDir", str(self.working_dir)) - self.form.le_working_dir.setText(self.working_dir) + current_wd = get_working_dir() + wd = QtGui.QFileDialog.getExistingDirectory(None, 'Choose CalculiX working directory', + current_wd) + if wd: + self.analysis_object.WorkingDir = wd + else: + self.analysis_object.WorkingDir = current_wd + self.form.le_working_dir.setText(self.analysis_object.WorkingDir) def write_input_file_handler(self): QApplication.restoreOverrideCursor() @@ -240,3 +241,17 @@ class _JobControlTaskPanel: self.Calculix.start(self.CalculixBinary, ['-i', fi.baseName()]) QApplication.restoreOverrideCursor() + +#Code duplication!!!! +def get_working_dir(): + fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") + working_dir = fem_prefs.GetString("WorkingDir", "") + if not (os.path.isdir(working_dir)): + try: + os.path.makedirs(working_dir) + except: + print ("Dir \'{}\' from FEM preferences doesn't exist and cannot be created.".format(working_dir)) + import tempfile + working_dir = tempfile.gettempdir() + print ("Dir \'{}\' will be used instead.".format(working_dir)) + return working_dir