From f7fd04aa2b46de1ad7575f07b03c3f29c0917b54 Mon Sep 17 00:00:00 2001 From: Przemo Firszt Date: Thu, 9 Apr 2015 11:49:30 +0100 Subject: [PATCH] FEM: Add option to define custom material directory That commit also tidies up FEM preferences, so all file choosers have the same width Signed-off-by: Przemo Firszt --- src/Mod/Fem/Gui/DlgSettingsFem.ui | 219 ++++++++++++++++++-------- src/Mod/Fem/Gui/DlgSettingsFemImp.cpp | 2 + src/Mod/Fem/MechanicalMaterial.py | 7 + 3 files changed, 162 insertions(+), 66 deletions(-) diff --git a/src/Mod/Fem/Gui/DlgSettingsFem.ui b/src/Mod/Fem/Gui/DlgSettingsFem.ui index 38908d73d..f3fb8c91c 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFem.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFem.ui @@ -21,30 +21,30 @@ 6 - - - - 0 - 0 - - - - Qt::LeftToRight - - - CalculiX - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - QLayout::SetNoConstraint - - - - - + + + + + + 0 + 0 + + + + Qt::LeftToRight + + + CalculiX + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + QLayout::SetNoConstraint + + + @@ -62,18 +62,24 @@ - - + + false + + + 100 + 0 + + External editor: - + false @@ -86,38 +92,119 @@ + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Leave blank to use default CalculiX ccx binary file + + + ccxBinaryPath + + + Mod/Fem + + + + + + + + 100 + 0 + + + + ccx binary + + + - - + + + + + + + Materials + + + + - - - ccx binary - - - - - - - Leave blank to use default CalculiX ccx binary file - - - ccxBinaryPath - - - Mod/Fem - - + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Gui::FileChooser::Directory + + + CustomMaterialsDir + + + Mod/Fem + + + + + + + + 100 + 0 + + + + User directory + + + + - - - + + + @@ -172,22 +259,6 @@ - - cb_int_editor - toggled(bool) - l_ext_editor - setDisabled(bool) - - - 125 - 49 - - - 120 - 74 - - - cb_int_editor toggled(bool) @@ -204,6 +275,22 @@ + + cb_int_editor + toggled(bool) + l_ext_editor + setDisabled(bool) + + + 125 + 49 + + + 120 + 74 + + + cb_int_editor toggled(bool) diff --git a/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp b/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp index a0b4c3a85..9e7e53e46 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp +++ b/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp @@ -46,6 +46,7 @@ void DlgSettingsFemImp::saveSettings() cb_int_editor->onSave(); fc_ext_editor->onSave(); fc_ccx_binary->onSave(); + fc_custom_mat_dir->onSave(); } void DlgSettingsFemImp::loadSettings() @@ -53,6 +54,7 @@ void DlgSettingsFemImp::loadSettings() cb_int_editor->onRestore(); fc_ext_editor->onRestore(); fc_ccx_binary->onRestore(); + fc_custom_mat_dir->onRestore(); } /** diff --git a/src/Mod/Fem/MechanicalMaterial.py b/src/Mod/Fem/MechanicalMaterial.py index 7a411d77a..29620bf61 100644 --- a/src/Mod/Fem/MechanicalMaterial.py +++ b/src/Mod/Fem/MechanicalMaterial.py @@ -207,5 +207,12 @@ class _MechanicalMaterialTaskPanel: material_name = os.path.basename(i[:-l]) self.form.comboBox_MaterialsInDir.addItem(material_name) self.pathList = self.pathList + user_mat_path_list + self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") + custom_mat_dir = self.fem_prefs.GetString("CustomMaterialsDir","") + custom_mat_path_list = glob.glob(custom_mat_dir + '/*' + mat_file_extension) + for i in custom_mat_path_list: + material_name = os.path.basename(i[:-l]) + self.form.comboBox_MaterialsInDir.addItem(material_name) + self.pathList = self.pathList + custom_mat_path_list FreeCADGui.addCommand('Fem_MechanicalMaterial',_CommandMechanicalMaterial())