浏览代码

wxGUI: continue replacing events (symbolSelectionChanged)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@55387 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 12 年之前
父节点
当前提交
b0246f4ff2
共有 2 个文件被更改,包括 15 次插入13 次删除
  1. 7 8
      gui/wxpython/gui_core/dialogs.py
  2. 8 5
      gui/wxpython/gui_core/widgets.py

+ 7 - 8
gui/wxpython/gui_core/dialogs.py

@@ -40,7 +40,6 @@ from bisect import bisect
 import wx
 import wx
 import wx.lib.filebrowsebutton as filebrowse
 import wx.lib.filebrowsebutton as filebrowse
 import wx.lib.mixins.listctrl as listmix
 import wx.lib.mixins.listctrl as listmix
-from wx.lib.newevent import NewEvent
 
 
 from grass.script import core as grass
 from grass.script import core as grass
 from grass.script import task as gtask
 from grass.script import task as gtask
@@ -51,7 +50,7 @@ from core             import globalvar
 from core.gcmd        import GError, RunCommand, GMessage
 from core.gcmd        import GError, RunCommand, GMessage
 from gui_core.gselect import LocationSelect, MapsetSelect, Select, OgrTypeSelect, GdalSelect, MapsetSelect
 from gui_core.gselect import LocationSelect, MapsetSelect, Select, OgrTypeSelect, GdalSelect, MapsetSelect
 from gui_core.forms   import GUI
 from gui_core.forms   import GUI
-from gui_core.widgets import SingleSymbolPanel, EVT_SYMBOL_SELECTION_CHANGED, GListCtrl, SimpleValidator
+from gui_core.widgets import SingleSymbolPanel, GListCtrl, SimpleValidator
 from core.utils       import GetLayerNameFromCmd, GetValidLayerName
 from core.utils       import GetLayerNameFromCmd, GetValidLayerName
 from core.settings    import UserSettings, GetDisplayVectSettings
 from core.settings    import UserSettings, GetDisplayVectSettings
 from core.debug       import Debug
 from core.debug       import Debug
@@ -2398,7 +2397,6 @@ class SymbolDialog(wx.Dialog):
         self.panels = self._createSymbolPanels(mainPanel)
         self.panels = self._createSymbolPanels(mainPanel)
         for panel in self.panels:
         for panel in self.panels:
             vSizer.Add(panel, proportion = 0, flag = wx.ALL | wx.EXPAND, border = 5)
             vSizer.Add(panel, proportion = 0, flag = wx.ALL | wx.EXPAND, border = 5)
-            panel.Bind(EVT_SYMBOL_SELECTION_CHANGED, self.SelectionChanged)
         
         
         mainSizer.Add(vSizer, proportion = 1, flag = wx.ALL| wx.EXPAND, border = 5)
         mainSizer.Add(vSizer, proportion = 1, flag = wx.ALL| wx.EXPAND, border = 5)
         self.btnCancel = wx.Button(parent = mainPanel, id = wx.ID_CANCEL)
         self.btnCancel = wx.Button(parent = mainPanel, id = wx.ID_CANCEL)
@@ -2459,6 +2457,7 @@ class SymbolDialog(wx.Dialog):
             symbolPanels = []
             symbolPanels = []
             for img in images:
             for img in images:
                 iP = SingleSymbolPanel(parent = panel, symbolPath = img)
                 iP = SingleSymbolPanel(parent = panel, symbolPath = img)
+                iP.symbolSelectionChanged.connect(self.SelectionChanged)
                 sizer.Add(item = iP, proportion = 0, flag = wx.ALIGN_CENTER)
                 sizer.Add(item = iP, proportion = 0, flag = wx.ALIGN_CENTER)
                 symbolPanels.append(iP)
                 symbolPanels.append(iP)
             
             
@@ -2492,22 +2491,22 @@ class SymbolDialog(wx.Dialog):
             self.btnOK.Disable()
             self.btnOK.Disable()
             self.infoLabel.SetLabel('')
             self.infoLabel.SetLabel('')
         
         
-    def SelectionChanged(self, event):
+    def SelectionChanged(self, name, doubleClick):
         """!Selected symbol changed."""
         """!Selected symbol changed."""
-        if event.doubleClick:
+        if doubleClick:
             self.EndModal(wx.ID_OK)
             self.EndModal(wx.ID_OK)
         # deselect all
         # deselect all
         for i in range(len(self.panels)):
         for i in range(len(self.panels)):
             for panel in self.symbolPanels[i]:
             for panel in self.symbolPanels[i]:
-                if panel.GetName() != event.name:
+                if panel.GetName() != name:
                     panel.Deselect()
                     panel.Deselect()
                 
                 
         self.btnOK.Enable()
         self.btnOK.Enable()
         
         
-        self.selected = event.name
+        self.selected = name
         self.selectedDir = self.folderChoice.GetStringSelection()
         self.selectedDir = self.folderChoice.GetStringSelection()
         
         
-        self.infoLabel.SetLabel(event.name)
+        self.infoLabel.SetLabel(name)
         
         
     def GetSelectedSymbolName(self):
     def GetSelectedSymbolName(self):
         """!Returns currently selected symbol name (e.g. 'basic/x').
         """!Returns currently selected symbol name (e.g. 'basic/x').

+ 8 - 5
gui/wxpython/gui_core/widgets.py

@@ -56,7 +56,6 @@ from core.gcmd   import GMessage, GError
 from core.debug  import Debug
 from core.debug  import Debug
 
 
 from wx.lib.newevent import NewEvent
 from wx.lib.newevent import NewEvent
-wxSymbolSelectionChanged, EVT_SYMBOL_SELECTION_CHANGED  = NewEvent()
 
 
 
 
 class NotebookController:
 class NotebookController:
@@ -731,9 +730,15 @@ class SingleSymbolPanel(wx.Panel):
     def __init__(self, parent, symbolPath):
     def __init__(self, parent, symbolPath):
         """!Panel constructor
         """!Panel constructor
         
         
+        Signal symbolSelectionChanged - symbol selected
+                                      - attribute 'name' (symbol name)
+                                      - attribute 'doubleClick' (underlying cause)
+
         @param parent parent (gui_core::dialog::SymbolDialog)
         @param parent parent (gui_core::dialog::SymbolDialog)
         @param symbolPath absolute path to symbol
         @param symbolPath absolute path to symbol
         """
         """
+        self.symbolSelectionChanged = Signal('SingleSymbolPanel.symbolSelectionChanged')
+
         wx.Panel.__init__(self, parent, id = wx.ID_ANY, style = wx.BORDER_RAISED)
         wx.Panel.__init__(self, parent, id = wx.ID_ANY, style = wx.BORDER_RAISED)
         self.SetName(os.path.splitext(os.path.basename(symbolPath))[0])
         self.SetName(os.path.splitext(os.path.basename(symbolPath))[0])
         self.sBmp = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap(symbolPath))
         self.sBmp = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap(symbolPath))
@@ -760,12 +765,10 @@ class SingleSymbolPanel(wx.Panel):
         self.SetBackgroundColour(self.selectColor)
         self.SetBackgroundColour(self.selectColor)
         event.Skip()
         event.Skip()
         
         
-        event = wxSymbolSelectionChanged(name = self.GetName(), doubleClick = False)
-        wx.PostEvent(self.GetParent(), event)
+        self.symbolSelectionChanged.emit(name=self.GetName(), doubleClick=False)
         
         
     def OnDoubleClick(self, event):
     def OnDoubleClick(self, event):
-        event = wxSymbolSelectionChanged(name = self.GetName(), doubleClick = True)
-        wx.PostEvent(self.GetParent(), event)
+        self.symbolSelectionChanged.emit(name=self.GetName(), doubleClick=True)
         
         
     def Deselect(self):
     def Deselect(self):
         """!Panel deselected, background changes back to default"""
         """!Panel deselected, background changes back to default"""