31
31
32
32
from qgis .PyQt import uic
33
33
from qgis .PyQt .QtCore import (Qt ,
34
- QEvent
35
- )
34
+ QEvent )
36
35
from qgis .PyQt .QtWidgets import (QFileDialog ,
37
36
QDialog ,
38
37
QStyle ,
46
45
QPushButton )
47
46
from qgis .PyQt .QtGui import (QIcon ,
48
47
QStandardItemModel ,
49
- QStandardItem )
48
+ QStandardItem ,
49
+ QApplication ,
50
+ QCursor )
50
51
51
52
from qgis .gui import (QgsDoubleSpinBox ,
52
53
QgsSpinBox
58
59
Setting )
59
60
from processing .core .Processing import Processing
60
61
from processing .gui .DirectorySelectorDialog import DirectorySelectorDialog
61
- from processing .gui .menus import defaultMenuEntries , updateMenus
62
- from processing .gui .menus import menusSettingsGroup
62
+ from processing .gui .menus import defaultMenuEntries , updateMenus , menusSettingsGroup
63
63
64
64
65
65
pluginPath = os .path .split (os .path .dirname (__file__ ))[0 ]
@@ -93,7 +93,8 @@ def __init__(self, toolbox):
93
93
94
94
self .fillTree ()
95
95
96
- self .tree .expanded .connect (self .adjustColumns )
96
+ self .saveMenus = False
97
+ self .tree .expanded .connect (self .itemExpanded )
97
98
98
99
def textChanged (self ):
99
100
text = str (self .searchBox .text ().lower ())
@@ -192,14 +193,14 @@ def fillTreeUsingProviders(self):
192
193
"""
193
194
Filter 'Menus' items
194
195
"""
195
- menusItem = QStandardItem (self .tr ('Menus' ))
196
+ self . menusItem = QStandardItem (self .tr ('Menus' ))
196
197
icon = QIcon (os .path .join (pluginPath , 'images' , 'menu.png' ))
197
- menusItem .setIcon (icon )
198
- menusItem .setEditable (False )
198
+ self . menusItem .setIcon (icon )
199
+ self . menusItem .setEditable (False )
199
200
emptyItem = QStandardItem ()
200
201
emptyItem .setEditable (False )
201
202
202
- rootItem .insertRow (0 , [menusItem , emptyItem ])
203
+ rootItem .insertRow (0 , [self . menusItem , emptyItem ])
203
204
204
205
button = QPushButton (self .tr ('Reset to defaults' ))
205
206
button .clicked .connect (self .resetMenusToDefaults )
@@ -248,7 +249,7 @@ def fillTreeUsingProviders(self):
248
249
emptyItem = QStandardItem ()
249
250
emptyItem .setEditable (False )
250
251
251
- menusItem .appendRow ([groupItem , emptyItem ])
252
+ self . menusItem .appendRow ([groupItem , emptyItem ])
252
253
253
254
self .tree .sortByColumn (0 , Qt .AscendingOrder )
254
255
self .adjustColumns ()
@@ -261,24 +262,32 @@ def resetMenusToDefaults(self):
261
262
setting = ProcessingConfig .settings ["MENU_" + alg .commandLineName ()]
262
263
item = self .items [setting ]
263
264
item .setData (d , Qt .EditRole )
265
+ self .saveMenus = True
264
266
265
267
def accept (self ):
268
+ QApplication .setOverrideCursor (QCursor (Qt .WaitCursor ))
266
269
for setting in list (self .items .keys ()):
267
- if isinstance (setting .value , bool ):
268
- setting .setValue (self .items [setting ].checkState () == Qt .Checked )
269
- else :
270
- try :
271
- setting .setValue (str (self .items [setting ].text ()))
272
- except ValueError as e :
273
- QMessageBox .warning (self , self .tr ('Wrong value' ),
274
- self .tr ('Wrong value for parameter "%s":\n \n %s' % (setting .description , str (e ))))
275
- return
276
- setting .save ()
270
+ if setting .group != menusSettingsGroup or self .saveMenus :
271
+ if isinstance (setting .value , bool ):
272
+ setting .setValue (self .items [setting ].checkState () == Qt .Checked )
273
+ else :
274
+ try :
275
+ setting .setValue (str (self .items [setting ].text ()))
276
+ except ValueError as e :
277
+ QMessageBox .warning (self , self .tr ('Wrong value' ),
278
+ self .tr ('Wrong value for parameter "%s":\n \n %s' % (setting .description , str (e ))))
279
+ return
280
+ setting .save ()
277
281
Processing .updateAlgsList ()
278
282
settingsWatcher .settingsChanged .emit ()
279
-
283
+ QApplication . restoreOverrideCursor ()
280
284
QDialog .accept (self )
281
285
286
+ def itemExpanded (self , idx ):
287
+ if idx == self .menusItem .index ():
288
+ self .saveMenus = True
289
+ self .adjustColumns ()
290
+
282
291
def adjustColumns (self ):
283
292
self .tree .resizeColumnToContents (0 )
284
293
self .tree .resizeColumnToContents (1 )
0 commit comments