Преглед изворни кода

i.group dialog: bug fixes

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@57918 15284696-431f-4ddb-bdfa-cd5b030d7da7
Štěpán Turek пре 11 година
родитељ
комит
25dc1d0a3f
1 измењених фајлова са 35 додато и 22 уклоњено
  1. 35 22
      gui/wxpython/gui_core/dialogs.py

+ 35 - 22
gui/wxpython/gui_core/dialogs.py

@@ -524,6 +524,8 @@ class GroupDialog(wx.Dialog):
         self.defaultGroup = defaultGroup
         self.defaultSubgroup = defaultSubgroup
         self.currentGroup = self.defaultGroup
+        self.currentSubgroup = self.defaultGroup
+
         self.dataChanged = False
 
         self.bodySizer = self._createDialogBody()
@@ -665,14 +667,17 @@ class GroupDialog(wx.Dialog):
         self.Layout()
     
     def OnSubgChbox(self, event):
-        self.edit_subg = self.subg_chbox.GetValue()
-
-        if self.edit_subg:
+        if not self.edit_subg:
             self.subg_panel.Show()
+            self._checkGroupChange()
             self.SubGroupSelected()
         else:
             self.subg_panel.Hide()
+            self._checkSubgroupChange()
             self.GroupSelected()
+            
+        self.edit_subg = self.subg_chbox.GetValue()
+
         self.SetMinSize(self.GetBestSize())
         self.Layout()
 
@@ -705,21 +710,15 @@ class GroupDialog(wx.Dialog):
     def OnGroupSelected(self, event):
         """!Text changed in group selector"""
         # callAfter must be called to close popup before other actions
-        wx.CallAfter(self.GroupSelected)
-        
+        wx.CallAfter(self.GroupSel)
+     
+    def GroupSel(self):
+        self._checkGroupChange()
+        self.GroupSelected()
+
     def GroupSelected(self):
         """!Group was selected, check if changes were apllied"""
         group, s = self.GetSelectedGroup()
-        if  self.currentGroup and self.dataChanged:
-            dlg = wx.MessageDialog(self, message = _("Group <%s> was changed, "
-                                                     "do you want to apply changes?") % self.currentGroup,
-                                   caption = _("Unapplied changes"),
-                                   style = wx.YES_NO | wx.ICON_QUESTION | wx.YES_DEFAULT)
-            if dlg.ShowModal() == wx.ID_YES:
-                self.ApplyChanges()
-                
-            dlg.Destroy()
-        
         maps = list()
         groups = self.GetExistGroups()
         if group in groups:
@@ -729,18 +728,15 @@ class GroupDialog(wx.Dialog):
 
         self.ShowGroupLayers(maps)
         self.currentGroup = group
-        self.dataChanged = False
 
         if self.edit_subg:
+            self._checkSubgroupChange()
             self.SubGroupSelected()
         self.ClearNotification()
 
-    def SubGroupSelected(self):
-        """!Group was selected, check if changes were apllied"""
-        subgroup = self.subGroupSelect.GetValue().strip()
-        group = self.currentGroup
+    def _checkGroupChange(self):
         if  self.currentGroup and self.dataChanged:
-            dlg = wx.MessageDialog(self, message = _("Subgroup <%s> was changed, "
+            dlg = wx.MessageDialog(self, message = _("Group <%s> was changed, "
                                                      "do you want to apply changes?") % self.currentGroup,
                                    caption = _("Unapplied changes"),
                                    style = wx.YES_NO | wx.ICON_QUESTION | wx.YES_DEFAULT)
@@ -748,6 +744,24 @@ class GroupDialog(wx.Dialog):
                 self.ApplyChanges()
                 
             dlg.Destroy()
+        self.dataChanged = False
+
+    def _checkSubgroupChange(self):
+        if self.currentSubgroup and self.dataChanged:
+            dlg = wx.MessageDialog(self, message = _("Subgroup <%s> was changed, "
+                                                     "do you want to apply changes?") % self.currentSubgroup,
+                                   caption = _("Unapplied changes"),
+                                   style = wx.YES_NO | wx.ICON_QUESTION | wx.YES_DEFAULT)
+            if dlg.ShowModal() == wx.ID_YES:
+                self.ApplyChanges()
+                
+            dlg.Destroy()
+        self.dataChanged = False
+
+    def SubGroupSelected(self):
+        """!Group was selected, check if changes were apllied"""
+        subgroup = self.subGroupSelect.GetValue().strip()
+        group = self.currentGroup
         
         maps = list()
         groups = self.GetExistGroups()
@@ -755,7 +769,6 @@ class GroupDialog(wx.Dialog):
             maps = self.GetGroupLayers(group, subgroup)
         
         self.ShowGroupLayers(maps)
-        self.dataChanged = False
         
         self.currentSubgroup = subgroup
         self.ClearNotification()