From 3212cfa0507860312870d8c817606b841583db09 Mon Sep 17 00:00:00 2001 From: microelly2 Date: Mon, 8 Jun 2015 00:13:44 +0200 Subject: [PATCH] Update PartsLibrary.FCMacro --- PartsLibrary.FCMacro | 71 +++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/PartsLibrary.FCMacro b/PartsLibrary.FCMacro index de3bb90d..52299961 100644 --- a/PartsLibrary.FCMacro +++ b/PartsLibrary.FCMacro @@ -52,7 +52,17 @@ which you can browse and install items from the library. LIBRARYPATH = "/home/yorik/Sources/FreeCAD-library" # END CONFIGURATION - THAT'S DONE, NO NEED TO EDIT ANYTHING MORE -import FreeCAD, FreeCADGui, Part, zipfile, tempfile + + +s=FreeCAD.ParamGet('User parameter:Plugins/partlib').GetString('destination') +print s + +if s<>'': + LIBRARYPATH = s +else: + pass + +import FreeCAD, FreeCADGui, Part from PySide import QtGui, QtCore class ExpFileSystemModel(QtGui.QFileSystemModel): @@ -69,7 +79,8 @@ class ExpFileSystemModel(QtGui.QFileSystemModel): class ExpDockWidget(QtGui.QDockWidget): "a library explorer dock widget" - def __init__(self): + + def __init__(self,LIBRARYPATH): QtGui.QDockWidget.__init__(self) self.setObjectName("PartsLibrary") @@ -78,52 +89,26 @@ class ExpDockWidget(QtGui.QDockWidget): # setting up a directory model that shows only fcstd and step self.dirmodel = ExpFileSystemModel() self.dirmodel.setRootPath(LIBRARYPATH) - self.dirmodel.setNameFilters(["*.fcstd","*.FcStd","*.FCSTD","*.stp","*.STP","*.step","*.STEP", "*.brp", "*.BRP", "*.brep", "*.BREP"]) + self.dirmodel.setNameFilters(["*.fcstd","*.FcStd","*.FCSTD","*.stp","*.STP","*.step","*.STEP", "*.brep", "*.BREP"]) self.dirmodel.setNameFilterDisables(0) - container = QtGui.QWidget() - layout = QtGui.QVBoxLayout(container) - folder = QtGui.QTreeView() - folder.setModel(self.dirmodel) - folder.clicked[QtCore.QModelIndex].connect(self.clicked) - folder.doubleClicked[QtCore.QModelIndex].connect(self.doubleclicked) + self.folder_view = QtGui.QTreeView(); + self.folder_view.setModel(self.dirmodel) + self.folder_view.doubleClicked[QtCore.QModelIndex].connect(self.clicked) # Don't show columns for size, file type, and last modified - folder.setHeaderHidden(True) - folder.hideColumn(1) - folder.hideColumn(2) - folder.hideColumn(3) - folder.setRootIndex(self.dirmodel.index(LIBRARYPATH)) - layout.addWidget(folder) - self.preview = QtGui.QLabel() - self.preview.setFixedHeight(128) - layout.addWidget(self.preview) - layout.setAlignment(self.preview, QtCore.Qt.AlignHCenter) - self.setWidget(container) - + self.folder_view.setHeaderHidden(True) + self.folder_view.hideColumn(1) + self.folder_view.hideColumn(2) + self.folder_view.hideColumn(3) + self.folder_view.setRootIndex(self.dirmodel.index(LIBRARYPATH)) + + self.setWidget(self.folder_view) + def clicked(self, index): path = self.dirmodel.filePath(index) - if path.lower().endswith(".fcstd"): - zfile=zipfile.ZipFile(path) - files=zfile.namelist() - # check for meta-file if it's really a FreeCAD document - if files[0] == "Document.xml": - image="thumbnails/Thumbnail.png" - if image in files: - image=zfile.read(image) - thumbfile = tempfile.mkstemp(suffix='.png')[1] - thumb = open(thumbfile,"wb") - thumb.write(image) - thumb.close() - im = QtGui.QPixmap(thumbfile) - self.preview.setPixmap(im) - return - self.preview.clear() - - def doubleclicked(self, index): - path = self.dirmodel.filePath(index) - if path.lower().endswith(".stp") or path.lower().endswith(".step") or path.lower().endswith(".brp") or path.lower().endswith(".brep"): + if path.lower().endswith(".stp") or path.lower().endswith(".step") or path.lower().endswith(".brep"): Part.show(Part.read(path)) - elif path.lower().endswith(".fcstd"): + else: FreeCADGui.ActiveDocument.mergeProject(path) if QtCore.QDir(LIBRARYPATH).exists(): @@ -135,7 +120,7 @@ if QtCore.QDir(LIBRARYPATH).exists(): else: w.show() else: - m.addDockWidget(QtCore.Qt.RightDockWidgetArea,ExpDockWidget()) + m.addDockWidget(QtCore.Qt.RightDockWidgetArea,ExpDockWidget(LIBRARYPATH)) else: print "Library path ", LIBRARYPATH, "not found." print "Please set the correct path to your Parts library in the macro script"