|
@@ -34,9 +34,9 @@ |
|
|
from qgis.utils import iface |
|
|
|
|
|
from processing.gui.Postprocessing import handleAlgorithmResults |
|
|
from processing.core.Processing import Processing |
|
|
from processing.core.Processing import Processing, algListWatcher |
|
|
from processing.core.ProcessingLog import ProcessingLog |
|
|
from processing.core.ProcessingConfig import ProcessingConfig |
|
|
from processing.core.ProcessingConfig import ProcessingConfig, settingsWatcher |
|
|
from processing.gui.MessageDialog import MessageDialog |
|
|
from processing.gui import AlgorithmClassification |
|
|
from processing.gui.AlgorithmDialog import AlgorithmDialog |
|
@@ -53,8 +53,6 @@ |
|
|
|
|
|
class ProcessingToolbox(BASE, WIDGET): |
|
|
|
|
|
updateAlgList = True |
|
|
|
|
|
def __init__(self): |
|
|
super(ProcessingToolbox, self).__init__(None) |
|
|
self.tipWasClosed = False |
|
@@ -83,6 +81,10 @@ def openSettings(url): |
|
|
|
|
|
self.fillTree() |
|
|
|
|
|
algListWatcher.providerRemoved.connect(self.removeProvider) |
|
|
algListWatcher.providerAdded.connect(self.addProvider) |
|
|
settingsWatcher.settingsChanged.connect(self.fillTree) |
|
|
|
|
|
def showDisabled(self): |
|
|
self.txtDisabled.setVisible(False) |
|
|
for providerName in self.disabledWithMatchingAlgs: |
|
@@ -154,27 +156,26 @@ def activateProvider(self, providerName): |
|
|
QMessageBox.warning(self, "Activate provider", |
|
|
"The provider has been activated, but it might need additional configuration.") |
|
|
|
|
|
def algsListHasChanged(self): |
|
|
if self.updateAlgList: |
|
|
self.fillTree() |
|
|
self.textChanged() |
|
|
def updateProvider(self, providerName): |
|
|
item = self._providerItem(providerName) |
|
|
if item is not None: |
|
|
item.refresh() |
|
|
item.sortChildren(0, Qt.AscendingOrder) |
|
|
for i in xrange(item.childCount()): |
|
|
item.child(i).sortChildren(0, Qt.AscendingOrder) |
|
|
self.addRecentAlgorithms(True) |
|
|
|
|
|
def removeProvider(self, providerName): |
|
|
item = self._providerItem(providerName) |
|
|
if item is not None: |
|
|
self.algorithmTree.invisibleRootItem().removeChild(item) |
|
|
|
|
|
def updateProvider(self, providerName, updateAlgsList=True): |
|
|
if updateAlgsList: |
|
|
self.updateAlgList = False |
|
|
Processing.updateAlgsList() |
|
|
self.updateAlgList = True |
|
|
def _providerItem(self, providerName): |
|
|
for i in xrange(self.algorithmTree.invisibleRootItem().childCount()): |
|
|
child = self.algorithmTree.invisibleRootItem().child(i) |
|
|
if isinstance(child, TreeProviderItem): |
|
|
if child.providerName == providerName: |
|
|
child.refresh() |
|
|
# sort categories and items in categories |
|
|
child.sortChildren(0, Qt.AscendingOrder) |
|
|
for i in xrange(child.childCount()): |
|
|
child.child(i).sortChildren(0, Qt.AscendingOrder) |
|
|
break |
|
|
self.addRecentAlgorithms(True) |
|
|
return child |
|
|
|
|
|
def showPopupMenu(self, point): |
|
|
item = self.algorithmTree.itemAt(point) |
|
@@ -304,6 +305,24 @@ def addRecentAlgorithms(self, updating): |
|
|
|
|
|
self.algorithmTree.setWordWrap(True) |
|
|
|
|
|
def addProvider(self, providerName): |
|
|
name = 'ACTIVATE_' + providerName.upper().replace(' ', '_') |
|
|
providerItem = TreeProviderItem(providerName, None, self) |
|
|
if ProcessingConfig.getSetting(name): |
|
|
providerItem.setHidden(providerItem.childCount() == 0) |
|
|
else: |
|
|
providerItem = TreeProviderItem(providerName, None, self) |
|
|
providerItem.setHidden(True) |
|
|
self.disabledProviderItems[providerName] = providerItem |
|
|
|
|
|
for i in xrange(self.algorithmTree.invisibleRootItem().childCount()): |
|
|
child = self.algorithmTree.invisibleRootItem().child(i) |
|
|
if isinstance(child, TreeProviderItem): |
|
|
if child.text(0) > providerItem.text(0): |
|
|
break |
|
|
self.algorithmTree.insertTopLevelItem(i, providerItem) |
|
|
|
|
|
|
|
|
def fillTreeUsingProviders(self): |
|
|
self.algorithmTree.clear() |
|
|
self.disabledProviderItems = {} |
|
|