def __init__(self, parent=None): ''' Constructor ''' QtGui.QDialog.__init__(self, parent) self._ui = Ui_PluginManagerDialog() self._ui.setupUi(self) self._ui.removeButton.setEnabled(False) self._loadDefaultPlugins = True self._makeConnections()
class PluginManagerDialog(QtGui.QDialog): ''' Dialog for managing the list of plugin directories. ''' def __init__(self, parent=None): ''' Constructor ''' QtGui.QDialog.__init__(self, parent) self._ui = Ui_PluginManagerDialog() self._ui.setupUi(self) self._ui.removeButton.setEnabled(False) self._loadDefaultPlugins = True self._makeConnections() def _makeConnections(self): self._ui.addButton.clicked.connect(self._addDirectoryClicked) self._ui.directoryListing.itemSelectionChanged.connect(self._directorySelectionChanged) self._ui.removeButton.clicked.connect(self._removeButtonClicked) self._ui.reloadButton.clicked.connect(self.reloadPlugins) def _directorySelectionChanged(self): self._ui.removeButton.setEnabled(len(self._ui.directoryListing.selectedItems()) > 0) def _removeButtonClicked(self): for item in self._ui.directoryListing.selectedItems(): self._ui.directoryListing.takeItem(self._ui.directoryListing.row(item)) def _addDirectoryClicked(self): last = self._ui.directoryListing.item(self._ui.directoryListing.count() - 1) if last: last = last.text() directory = QtGui.QFileDialog.getExistingDirectory(self, caption='Select External Plugin Directory', directory=last, options=QtGui.QFileDialog.ShowDirsOnly | QtGui.QFileDialog.DontResolveSymlinks | QtGui.QFileDialog.ReadOnly) if len(directory) > 0: self._ui.directoryListing.addItem(directory) def reloadPlugins(self): ''' Set this to a callable that will reload the plugins from the current plugin directories. ''' pass def setDirectories(self, directories): self._ui.directoryListing.addItems([directory for directory in directories if os.path.exists(directory)]) def setLoadDefaultPlugins(self, loadDefaultPlugins): self._ui.defaultPluginCheckBox.setChecked(loadDefaultPlugins) def directories(self): directories = [] for index in range(self._ui.directoryListing.count()): directories.append(self._ui.directoryListing.item(index).text()) return directories def loadDefaultPlugins(self): return self._ui.defaultPluginCheckBox.isChecked()