@@ -116,6 +116,10 @@ def __init__(self, iface, layer, parent=None):
116116 self .presetCombo .activated [str ].connect (self .loadPreset )
117117 self .presetCombo .activated [str ].connect (self .presetName .setText )
118118
119+ self .editSql .textChanged .connect (self .updatePresetButtonsState )
120+ self .presetName .textChanged .connect (self .updatePresetButtonsState )
121+ self .presetCombo .currentIndexChanged .connect (self .updatePresetButtonsState )
122+
119123 self .updatePresetsCombobox ()
120124
121125 self .geomCombo .setEditable (True )
@@ -145,11 +149,11 @@ def __init__(self, iface, layer, parent=None):
145149 # First the SQL from QgsDataSourceUri table
146150 sql = uri .table ()
147151 if uri .keyColumn () == '_uid_' :
148- match = re .search ('^\(SELECT .+ AS _uid_,\* FROM \((.*)\) AS _subq_.+_\s*\)$' , sql , re .S )
152+ match = re .search (r '^\(SELECT .+ AS _uid_,\* FROM \((.*)\) AS _subq_.+_\s*\)$' , sql , re .S | re . X )
149153 if match :
150154 sql = match .group (1 )
151155 else :
152- match = re .search ('^\((SELECT .+ FROM .+)\)$' , sql , re .S )
156+ match = re .search (r '^\((SELECT .+ FROM .+)\)$' , sql , re .S | re . X )
153157 if match :
154158 sql = match .group (1 )
155159 # Need to check on table() since the parentheses were removed by the regexp
@@ -186,6 +190,12 @@ def __init__(self, iface, layer, parent=None):
186190 def getQueryHash (self , name ):
187191 return 'q%s' % md5 (name .encode ('utf8' )).hexdigest ()
188192
193+ def updatePresetButtonsState (self , * args ):
194+ """Slot called when the combo box or the sql or the query name have changed:
195+ sets store button state"""
196+ self .presetStore .setEnabled (bool (self ._getSqlQuery () and self .presetName .text ()))
197+ self .presetDelete .setEnabled (bool (self .presetCombo .currentIndex () != - 1 ))
198+
189199 def updatePresetsCombobox (self ):
190200 self .presetCombo .clear ()
191201
0 commit comments