Added thumbnail preview to macro script
This commit is contained in:
parent
f75ebe44c1
commit
5452d21384
1 changed files with 40 additions and 15 deletions
|
@ -52,7 +52,7 @@ which you can browse and install items from the library.
|
||||||
LIBRARYPATH = "/home/yorik/Sources/FreeCAD-library"
|
LIBRARYPATH = "/home/yorik/Sources/FreeCAD-library"
|
||||||
# END CONFIGURATION - THAT'S DONE, NO NEED TO EDIT ANYTHING MORE
|
# END CONFIGURATION - THAT'S DONE, NO NEED TO EDIT ANYTHING MORE
|
||||||
|
|
||||||
import FreeCAD, FreeCADGui, Part
|
import FreeCAD, FreeCADGui, Part, zipfile, tempfile
|
||||||
from PySide import QtGui, QtCore
|
from PySide import QtGui, QtCore
|
||||||
|
|
||||||
class ExpFileSystemModel(QtGui.QFileSystemModel):
|
class ExpFileSystemModel(QtGui.QFileSystemModel):
|
||||||
|
@ -78,26 +78,51 @@ class ExpDockWidget(QtGui.QDockWidget):
|
||||||
# setting up a directory model that shows only fcstd and step
|
# setting up a directory model that shows only fcstd and step
|
||||||
self.dirmodel = ExpFileSystemModel()
|
self.dirmodel = ExpFileSystemModel()
|
||||||
self.dirmodel.setRootPath(LIBRARYPATH)
|
self.dirmodel.setRootPath(LIBRARYPATH)
|
||||||
self.dirmodel.setNameFilters(["*.fcstd","*.FcStd","*.FCSTD","*.stp","*.STP","*.step","*.STEP", "*.brep", "*.BREP"])
|
self.dirmodel.setNameFilters(["*.fcstd","*.FcStd","*.FCSTD","*.stp","*.STP","*.step","*.STEP", "*.brp", "*.BRP", "*.brep", "*.BREP"])
|
||||||
self.dirmodel.setNameFilterDisables(0)
|
self.dirmodel.setNameFilterDisables(0)
|
||||||
|
|
||||||
self.folder_view = QtGui.QTreeView();
|
container = QtGui.QWidget()
|
||||||
self.folder_view.setModel(self.dirmodel)
|
layout = QtGui.QVBoxLayout(container)
|
||||||
self.folder_view.doubleClicked[QtCore.QModelIndex].connect(self.clicked)
|
folder = QtGui.QTreeView()
|
||||||
|
folder.setModel(self.dirmodel)
|
||||||
|
folder.clicked[QtCore.QModelIndex].connect(self.clicked)
|
||||||
|
folder.doubleClicked[QtCore.QModelIndex].connect(self.doubleclicked)
|
||||||
# Don't show columns for size, file type, and last modified
|
# Don't show columns for size, file type, and last modified
|
||||||
self.folder_view.setHeaderHidden(True)
|
folder.setHeaderHidden(True)
|
||||||
self.folder_view.hideColumn(1)
|
folder.hideColumn(1)
|
||||||
self.folder_view.hideColumn(2)
|
folder.hideColumn(2)
|
||||||
self.folder_view.hideColumn(3)
|
folder.hideColumn(3)
|
||||||
self.folder_view.setRootIndex(self.dirmodel.index(LIBRARYPATH))
|
folder.setRootIndex(self.dirmodel.index(LIBRARYPATH))
|
||||||
|
layout.addWidget(folder)
|
||||||
self.setWidget(self.folder_view)
|
self.preview = QtGui.QLabel()
|
||||||
|
self.preview.setFixedHeight(128)
|
||||||
|
layout.addWidget(self.preview)
|
||||||
|
self.setWidget(container)
|
||||||
|
|
||||||
def clicked(self, index):
|
def clicked(self, index):
|
||||||
path = self.dirmodel.filePath(index)
|
path = self.dirmodel.filePath(index)
|
||||||
if path.lower().endswith(".stp") or path.lower().endswith(".step") or path.lower().endswith(".brep"):
|
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"):
|
||||||
Part.show(Part.read(path))
|
Part.show(Part.read(path))
|
||||||
else:
|
elif path.lower().endswith(".fcstd"):
|
||||||
FreeCADGui.ActiveDocument.mergeProject(path)
|
FreeCADGui.ActiveDocument.mergeProject(path)
|
||||||
|
|
||||||
if QtCore.QDir(LIBRARYPATH).exists():
|
if QtCore.QDir(LIBRARYPATH).exists():
|
||||||
|
|
Loading…
Add table
Reference in a new issue