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()