|
34 | 34 | from qgis.utils import iface
|
35 | 35 |
|
36 | 36 | from processing.gui.Postprocessing import handleAlgorithmResults
|
37 |
| -from processing.core.Processing import Processing |
| 37 | +from processing.core.Processing import Processing, algListWatcher |
38 | 38 | from processing.core.ProcessingLog import ProcessingLog
|
39 | 39 | from processing.core.ProcessingConfig import ProcessingConfig
|
40 | 40 | from processing.gui.MessageDialog import MessageDialog
|
@@ -83,6 +83,9 @@ def openSettings(url):
|
83 | 83 |
|
84 | 84 | self.fillTree()
|
85 | 85 |
|
| 86 | + algListWatcher.providerRemoved.connect(self.removeProvider) |
| 87 | + algListWatcher.providerAdded.connect(self.addProvider) |
| 88 | + |
86 | 89 | def showDisabled(self):
|
87 | 90 | self.txtDisabled.setVisible(False)
|
88 | 91 | for providerName in self.disabledWithMatchingAlgs:
|
@@ -154,27 +157,31 @@ def activateProvider(self, providerName):
|
154 | 157 | QMessageBox.warning(self, "Activate provider",
|
155 | 158 | "The provider has been activated, but it might need additional configuration.")
|
156 | 159 |
|
157 |
| - def algsListHasChanged(self): |
158 |
| - if self.updateAlgList: |
159 |
| - self.fillTree() |
160 |
| - self.textChanged() |
161 | 160 |
|
162 | 161 | def updateProvider(self, providerName, updateAlgsList=True):
|
163 | 162 | if updateAlgsList:
|
164 | 163 | self.updateAlgList = False
|
165 | 164 | Processing.updateAlgsList()
|
166 | 165 | self.updateAlgList = True
|
| 166 | + item = self._providerItem(providerName) |
| 167 | + if item is not None: |
| 168 | + item.refresh() |
| 169 | + item.sortChildren(0, Qt.AscendingOrder) |
| 170 | + for i in xrange(item.childCount()): |
| 171 | + item.child(i).sortChildren(0, Qt.AscendingOrder) |
| 172 | + self.addRecentAlgorithms(True) |
| 173 | + |
| 174 | + def removeProvider(self, providerName): |
| 175 | + item = self._providerItem(providerName) |
| 176 | + if item is not None: |
| 177 | + self.algorithmTree.invisibleRootItem().removeChild(item) |
| 178 | + |
| 179 | + def _providerItem(self, providerName): |
167 | 180 | for i in xrange(self.algorithmTree.invisibleRootItem().childCount()):
|
168 | 181 | child = self.algorithmTree.invisibleRootItem().child(i)
|
169 | 182 | if isinstance(child, TreeProviderItem):
|
170 | 183 | if child.providerName == providerName:
|
171 |
| - child.refresh() |
172 |
| - # sort categories and items in categories |
173 |
| - child.sortChildren(0, Qt.AscendingOrder) |
174 |
| - for i in xrange(child.childCount()): |
175 |
| - child.child(i).sortChildren(0, Qt.AscendingOrder) |
176 |
| - break |
177 |
| - self.addRecentAlgorithms(True) |
| 184 | + return child |
178 | 185 |
|
179 | 186 | def showPopupMenu(self, point):
|
180 | 187 | item = self.algorithmTree.itemAt(point)
|
@@ -304,6 +311,24 @@ def addRecentAlgorithms(self, updating):
|
304 | 311 |
|
305 | 312 | self.algorithmTree.setWordWrap(True)
|
306 | 313 |
|
| 314 | + def addProvider(self, providerName): |
| 315 | + name = 'ACTIVATE_' + providerName.upper().replace(' ', '_') |
| 316 | + providerItem = TreeProviderItem(providerName, None, self) |
| 317 | + if ProcessingConfig.getSetting(name): |
| 318 | + providerItem.setHidden(providerItem.childCount() == 0) |
| 319 | + else: |
| 320 | + providerItem = TreeProviderItem(providerName, None, self) |
| 321 | + providerItem.setHidden(True) |
| 322 | + self.disabledProviderItems[providerName] = providerItem |
| 323 | + |
| 324 | + for i in xrange(self.algorithmTree.invisibleRootItem().childCount()): |
| 325 | + child = self.algorithmTree.invisibleRootItem().child(i) |
| 326 | + if isinstance(child, TreeProviderItem): |
| 327 | + if child.text(0) > providerItem.text(0): |
| 328 | + break |
| 329 | + self.algorithmTree.insertTopLevelItem(i, providerItem) |
| 330 | + |
| 331 | + |
307 | 332 | def fillTreeUsingProviders(self):
|
308 | 333 | self.algorithmTree.clear()
|
309 | 334 | self.disabledProviderItems = {}
|
|
0 commit comments