From 4d23ef8e4c869e0bc08564dc4d359e9da18645dd Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 22 Oct 2024 13:23:19 +0200 Subject: [PATCH] BIM: Fixed online search mode - fixes #17353 --- src/Mod/BIM/bimcommands/BimLibrary.py | 41 +++++++++++++++------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/src/Mod/BIM/bimcommands/BimLibrary.py b/src/Mod/BIM/bimcommands/BimLibrary.py index 8e51ad6467..c601c40740 100644 --- a/src/Mod/BIM/bimcommands/BimLibrary.py +++ b/src/Mod/BIM/bimcommands/BimLibrary.py @@ -383,25 +383,30 @@ class BIM_Library_TaskPanel: import PartGui from PySide import QtGui + def add_line(f, dp): + if self.isAllowed(f) and (text.lower() in f.lower()): + it = QtGui.QStandardItem(f) + it.setToolTip(os.path.join(dp, f)) + self.filemodel.appendRow(it) + if f.endswith(".fcstd"): + it.setIcon(QtGui.QIcon(":icons/freecad-doc.png")) + elif f.endswith(".ifc"): + it.setIcon(QtGui.QIcon(":/icons/IFC.svg")) + else: + it.setIcon(QtGui.QIcon(":/icons/Part_document.svg")) + self.form.tree.setModel(self.filemodel) self.filemodel.clear() if self.form.checkOnline.isChecked(): res = self.getOfflineLib(structured=True) + for i in range(len(res[0])): + add_line(res[0][i], res[2][i]) else: res = os.walk(self.librarypath) - for dp, dn, fn in res: - for f in fn: - if self.isAllowed(f) and (text.lower() in f.lower()): + for dp, dn, fn in res: + for f in fn: if not os.path.isdir(os.path.join(dp, f)): - it = QtGui.QStandardItem(f) - it.setToolTip(os.path.join(dp, f)) - self.filemodel.appendRow(it) - if f.endswith(".fcstd"): - it.setIcon(QtGui.QIcon(":icons/freecad-doc.png")) - elif f.endswith(".ifc"): - it.setIcon(QtGui.QIcon(":/icons/IFC.svg")) - else: - it.setIcon(QtGui.QIcon(":/icons/Part_document.svg")) + add_line(f, dp) self.modelmode = 0 def getFilters(self): @@ -476,16 +481,16 @@ class BIM_Library_TaskPanel: dn = [] dp = [] for k, v in d.items(): - if isinstance(v, dict): + if isinstance(v, dict) and v: fn2, dn2, dp2 = addDir(v, root + "/" + k) fn.extend(fn2) dn.extend(dn2) dp.extend(dp2) - else: - fn += k - dn += root - dp += root + "/" + k - return dp, dn, fn + elif v: + fn.append(k) + dn.append(root) + dp.append(root) + return fn, dn, dp templibfile = os.path.join(TEMPLIBPATH, LIBINDEXFILE) if not os.path.exists(templibfile):