From d67f2271dbd122fa4b4ef0a0b6692fdf14dd986c Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Sat, 28 Nov 2015 14:15:06 -0200 Subject: [PATCH] Improvements to the macro * Translatable texts * Options are hidden by default * Different icon for the 'Private' folder --- PartsLibrary.FCMacro | 123 +++++++++++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 44 deletions(-) diff --git a/PartsLibrary.FCMacro b/PartsLibrary.FCMacro index 809b58f5..542916dd 100644 --- a/PartsLibrary.FCMacro +++ b/PartsLibrary.FCMacro @@ -77,18 +77,16 @@ import FreeCAD, FreeCADGui, Part, zipfile, tempfile, Mesh, os, subprocess from PySide import QtGui, QtCore param = FreeCAD.ParamGet('User parameter:Plugins/partlib') -s=param.GetString('destination') -print('User parameter:Plugins/partlib : destination : ',s) +s = param.GetString('destination') +#print('User parameter:Plugins/partlib : destination : ',s) -if s<>'': +if s: LIBRARYPATH = s else: - folderDialog = QtGui.QFileDialog.getExistingDirectory(None,u"Choose folder library") + folderDialog = QtGui.QFileDialog.getExistingDirectory(None,QtGui.QApplication.translate("PartsLibrary", "Location of your existing Parts library", None, QtGui.QApplication.UnicodeUTF8)) param.SetString('destination',folderDialog) - s=param.GetString('destination') - LIBRARYPATH = s + LIBRARYPATH = param.GetString('destination') -#global ExpFileSystemModel why this line? class ExpFileSystemModel(QtGui.QFileSystemModel): "a custom QFileSystemModel that displays freecad file icons" def __init__(self): @@ -98,6 +96,8 @@ class ExpFileSystemModel(QtGui.QFileSystemModel): if index.column() == 0 and role == QtCore.Qt.DecorationRole: if index.data().lower().endswith('.fcstd'): return QtGui.QIcon(':icons/freecad-doc.png') + elif index.data().lower() == "private": + return QtGui.QIcon.fromTheme("folder-lock") return super(ExpFileSystemModel, self).data(index, role) class ExpDockWidget(QtGui.QDockWidget): @@ -107,9 +107,8 @@ class ExpDockWidget(QtGui.QDockWidget): QtGui.QDockWidget.__init__(self) self.setObjectName("PartsLibrary") - self.setWindowTitle("Parts Library") - # setting up a directory model that shows only fcstd and step + # setting up a directory model that shows only fcstd, step and brep self.dirmodel = ExpFileSystemModel() self.dirmodel.setRootPath(LIBRARYPATH) self.dirmodel.setNameFilters(["*.fcstd","*.FcStd","*.FCSTD","*.stp","*.STP","*.step","*.STEP", "*.brp", "*.BRP", "*.brep", "*.BREP"]) @@ -125,53 +124,66 @@ class ExpDockWidget(QtGui.QDockWidget): folder.hideColumn(2) folder.hideColumn(3) folder.setRootIndex(self.dirmodel.index(LIBRARYPATH)) + self.preview = QtGui.QLabel() self.preview.setFixedHeight(128) - updatebutton = QtGui.QPushButton("Update") - icon = QtGui.QIcon.fromTheme("edit-redo") - updatebutton.setIcon(icon) - updatebutton.clicked.connect(self.updatelibrary) + self.updatebutton = QtGui.QPushButton() + icon = QtGui.QIcon.fromTheme("emblem-synchronizing") + self.updatebutton.setIcon(icon) + self.updatebutton.clicked.connect(self.updatelibrary) + self.updatebutton.hide() - configbutton = QtGui.QPushButton() - icon = QtGui.QIcon.fromTheme("document-properties") - configbutton.setIcon(icon) - configbutton.clicked.connect(self.setconfig) + self.configbutton = QtGui.QPushButton() + icon = QtGui.QIcon.fromTheme("emblem-system") + self.configbutton.setIcon(icon) + self.configbutton.clicked.connect(self.setconfig) + self.configbutton.hide() - formatLabel = QtGui.QLabel("Add to library") + self.formatLabel = QtGui.QLabel() + self.formatLabel.hide() - savebutton = QtGui.QPushButton("Save") + self.savebutton = QtGui.QPushButton() icon = QtGui.QIcon.fromTheme("document-save") - savebutton.setIcon(icon) - savebutton.clicked.connect(self.addtolibrary) + self.savebutton.setIcon(icon) + self.savebutton.clicked.connect(self.addtolibrary) + self.savebutton.hide() - pushbutton = QtGui.QPushButton("Push") + self.pushbutton = QtGui.QPushButton() icon = QtGui.QIcon.fromTheme("document-export") - pushbutton.setIcon(icon) - pushbutton.clicked.connect(self.pushlibrary) + self.pushbutton.setIcon(icon) + self.pushbutton.clicked.connect(self.pushlibrary) + self.pushbutton.hide() - fcstdCB = QtGui.QCheckBox('FCStd') - fcstdCB.setCheckState(QtCore.Qt.Checked) - fcstdCB.setEnabled(False) + self.optbutton = QtGui.QPushButton() + self.optbutton.clicked.connect(self.showoptions) + + self.fcstdCB = QtGui.QCheckBox('FCStd') + self.fcstdCB.setCheckState(QtCore.Qt.Checked) + self.fcstdCB.setEnabled(False) + self.fcstdCB.hide() self.stepCB = QtGui.QCheckBox('STEP') self.stepCB.setCheckState(QtCore.Qt.Checked) + self.stepCB.hide() self.stlCB = QtGui.QCheckBox('STL') self.stlCB.setCheckState(QtCore.Qt.Checked) + self.stlCB.hide() container = QtGui.QWidget() grid = QtGui.QGridLayout() grid.setSpacing(10) - grid.addWidget(updatebutton,0,0,1,2) - grid.addWidget(configbutton,0,2,1,1) - grid.addWidget(folder,1,0,1,3) - grid.addWidget(self.preview,2,0,5,1) - grid.addWidget(formatLabel,2,1,1,2) - grid.addWidget(fcstdCB,3,1,1,2) + grid.addWidget(folder,0,0,1,3) + grid.addWidget(self.updatebutton,1,1,1,1) + grid.addWidget(self.configbutton,1,2,1,1) + grid.addWidget(self.preview,1,0,5,1) + grid.addWidget(self.formatLabel,2,1,1,2) + grid.addWidget(self.fcstdCB,3,1,1,2) grid.addWidget(self.stepCB,4,1,1,2) grid.addWidget(self.stlCB,5,1,1,2) - grid.addWidget(savebutton,6,1,1,1) - grid.addWidget(pushbutton,6,2,1,1) + grid.addWidget(self.savebutton,6,1,1,1) + grid.addWidget(self.pushbutton,6,2,1,1) + grid.addWidget(self.optbutton,6,0,1,1) global repo repo = None @@ -191,9 +203,19 @@ class ExpDockWidget(QtGui.QDockWidget): updatebutton.setEnabled(False) configbutton.setEnabled(False) pushbutton.setEnabled(False) - + + self.retranslateUi() container.setLayout(grid) self.setWidget(container) + + def retranslateUi(self): + self.setWindowTitle(QtGui.QApplication.translate("PartsLibrary", "PartsLibrary", None, QtGui.QApplication.UnicodeUTF8)) + self.updatebutton.setText(QtGui.QApplication.translate("PartsLibrary", "Update", None, QtGui.QApplication.UnicodeUTF8)) + self.configbutton.setText(QtGui.QApplication.translate("PartsLibrary", "Config", None, QtGui.QApplication.UnicodeUTF8)) + self.formatLabel.setText(QtGui.QApplication.translate("PartsLibrary", "Add to library", None, QtGui.QApplication.UnicodeUTF8)) + self.savebutton.setText(QtGui.QApplication.translate("PartsLibrary", "Save", None, QtGui.QApplication.UnicodeUTF8)) + self.pushbutton.setText(QtGui.QApplication.translate("PartsLibrary", "Push", None, QtGui.QApplication.UnicodeUTF8)) + self.optbutton.setText(QtGui.QApplication.translate("PartsLibrary", "Show options >>", None, QtGui.QApplication.UnicodeUTF8)) def clicked(self, index): path = self.dirmodel.filePath(index) @@ -273,6 +295,19 @@ class ExpDockWidget(QtGui.QDockWidget): else: d.lineEdit_2.setText(repo.remote().url) r = d.exec_() + + def showoptions(self): + controls = [self.updatebutton,self.configbutton,self.formatLabel, + self.fcstdCB,self.stepCB,self.stlCB,self.savebutton,self.pushbutton] + if self.updatebutton.isVisible(): + for c in controls: + c.hide() + self.optbutton.setText(QtGui.QApplication.translate("PartsLibrary", "Show options >>", None, QtGui.QApplication.UnicodeUTF8)) + else: + for c in controls: + c.show() + self.optbutton.setText(QtGui.QApplication.translate("PartsLibrary", "Hide options <<", None, QtGui.QApplication.UnicodeUTF8)) + class ConfigDialog(QtGui.QDialog): def __init__(self): @@ -316,14 +351,14 @@ class ConfigDialog(QtGui.QDialog): QtCore.QMetaObject.connectSlotsByName(self) def retranslateUi(self): - self.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox.setTitle(QtGui.QApplication.translate("Dialog", "pull server (where you get your updates from)", None, QtGui.QApplication.UnicodeUTF8)) - self.lineEdit.setToolTip(QtGui.QApplication.translate("Dialog", "Enter the URL of the pull server here", None, QtGui.QApplication.UnicodeUTF8)) - self.pushButton.setToolTip(QtGui.QApplication.translate("Dialog", "Use the official FreeCAD-library repository", None, QtGui.QApplication.UnicodeUTF8)) - self.pushButton.setText(QtGui.QApplication.translate("Dialog", "use official", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox_2.setTitle(QtGui.QApplication.translate("Dialog", "push server (where you push your changes to)", None, QtGui.QApplication.UnicodeUTF8)) - self.lineEdit_2.setToolTip(QtGui.QApplication.translate("Dialog", "Enter the URL of the push server here", None, QtGui.QApplication.UnicodeUTF8)) - self.label.setText(QtGui.QApplication.translate("Dialog", "Warning: You need write permission on this server", None, QtGui.QApplication.UnicodeUTF8)) + self.setWindowTitle(QtGui.QApplication.translate("PartsLibrary", "PartsLibrary", None, QtGui.QApplication.UnicodeUTF8)) + self.groupBox.setTitle(QtGui.QApplication.translate("PartsLibrary", "pull server (where you get your updates from)", None, QtGui.QApplication.UnicodeUTF8)) + self.lineEdit.setToolTip(QtGui.QApplication.translate("PartsLibrary", "Enter the URL of the pull server here", None, QtGui.QApplication.UnicodeUTF8)) + self.pushButton.setToolTip(QtGui.QApplication.translate("PartsLibrary", "Use the official FreeCAD-library repository", None, QtGui.QApplication.UnicodeUTF8)) + self.pushButton.setText(QtGui.QApplication.translate("PartsLibrary", "use official", None, QtGui.QApplication.UnicodeUTF8)) + self.groupBox_2.setTitle(QtGui.QApplication.translate("PartsLibrary", "push server (where you push your changes to)", None, QtGui.QApplication.UnicodeUTF8)) + self.lineEdit_2.setToolTip(QtGui.QApplication.translate("PartsLibrary", "Enter the URL of the push server here", None, QtGui.QApplication.UnicodeUTF8)) + self.label.setText(QtGui.QApplication.translate("PartsLibrary", "Warning: You need write permission on this server", None, QtGui.QApplication.UnicodeUTF8)) def setdefaulturl(self): self.lineEdit.setText("https://github.com/FreeCAD/FreeCAD-library.git")