From 79ea979eb1957736398d25d3bf796d4f09890649 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Wed, 15 Feb 2023 14:53:15 +0100 Subject: [PATCH] Start: Allow to change the default import module for a filetype By setting a DefaultImportXXX preferences parameter under Mod/Start, one can specify a default import module to use when clicking a .XXX file on the Start page. This is specially useful for filetypes that have several importers, and the Start page would not let users choose which importer to use. Later on if this proves useful we can set up an UI to let the user set their preferences better. --- src/Mod/Start/StartPage/LoadCustom.py | 7 +++---- src/Mod/Start/StartPage/LoadMRU.py | 10 ++++++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Mod/Start/StartPage/LoadCustom.py b/src/Mod/Start/StartPage/LoadCustom.py index b6902b56c8..74b46ef838 100644 --- a/src/Mod/Start/StartPage/LoadCustom.py +++ b/src/Mod/Start/StartPage/LoadCustom.py @@ -35,10 +35,9 @@ if cfolders: if not os.path.isdir(cfolder): cfolder = os.path.dirname(cfolder) f = unquote(filename).replace("+", " ") - if f.lower().endswith(".fcstd"): - FreeCAD.open(os.path.join(cfolder, f)) - else: - FreeCAD.loadFile(os.path.join(cfolder, f)) + ext = os.path.splitext(filename)[1].lower().strip(".") + mod = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Start").GetString("DefaultImport"+ext,"") + FreeCAD.loadFile(os.path.join(cfolder, f),mod) FreeCADGui.activeDocument().sendMsgToViews("ViewFit") from StartPage import StartPage diff --git a/src/Mod/Start/StartPage/LoadMRU.py b/src/Mod/Start/StartPage/LoadMRU.py index 61fa84f934..35db24c7d8 100644 --- a/src/Mod/Start/StartPage/LoadMRU.py +++ b/src/Mod/Start/StartPage/LoadMRU.py @@ -19,10 +19,16 @@ #* * #*************************************************************************** +import os +import FreeCAD import FreeCADGui + # MRU will be given before this script is run -rf=FreeCAD.ParamGet("User parameter:BaseApp/Preferences/RecentFiles") -FreeCADGui.loadFile(rf.GetString("MRU"+str(MRU))) +rf = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/RecentFiles") +filename = rf.GetString("MRU"+str(MRU)) +ext = os.path.splitext(filename)[1].lower().strip(".") +mod = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Start").GetString("DefaultImport"+ext, "") +FreeCADGui.loadFile(filename, mod) from StartPage import StartPage StartPage.postStart()