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