Ver código fonte

wxGUI/gmodeler: fix ModelListCtrl editable mode (variables)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@58517 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 11 anos atrás
pai
commit
314d2b67ca
2 arquivos alterados com 12 adições e 5 exclusões
  1. 11 5
      gui/wxpython/gmodeler/dialogs.py
  2. 1 0
      gui/wxpython/gmodeler/frame.py

+ 11 - 5
gui/wxpython/gmodeler/dialogs.py

@@ -581,9 +581,9 @@ class ModelConditionDialog(ModelItemDialog):
 
 
 class ModelListCtrl(wx.ListCtrl,
 class ModelListCtrl(wx.ListCtrl,
                     listmix.ListCtrlAutoWidthMixin,
                     listmix.ListCtrlAutoWidthMixin,
-#                    listmix.TextEditMixin,
+                    listmix.TextEditMixin,
                     listmix.ColumnSorterMixin):
                     listmix.ColumnSorterMixin):
-    def __init__(self, parent, columns, frame, id = wx.ID_ANY,
+    def __init__(self, parent, columns, frame, id = wx.ID_ANY, columnsNotEditable = [],
                  style = wx.LC_REPORT | wx.BORDER_NONE |
                  style = wx.LC_REPORT | wx.BORDER_NONE |
                  wx.LC_SORT_ASCENDING |wx.LC_HRULES |
                  wx.LC_SORT_ASCENDING |wx.LC_HRULES |
                  wx.LC_VRULES, **kwargs):
                  wx.LC_VRULES, **kwargs):
@@ -592,10 +592,11 @@ class ModelListCtrl(wx.ListCtrl,
         self.columns = columns
         self.columns = columns
         self.shape = None
         self.shape = None
         self.frame  = frame
         self.frame  = frame
-        
+        self.columnNotEditable = columnsNotEditable
+
         wx.ListCtrl.__init__(self, parent, id = id, style = style, **kwargs)
         wx.ListCtrl.__init__(self, parent, id = id, style = style, **kwargs)
         listmix.ListCtrlAutoWidthMixin.__init__(self)
         listmix.ListCtrlAutoWidthMixin.__init__(self)
-#        listmix.TextEditMixin.__init__(self)
+        listmix.TextEditMixin.__init__(self)
         listmix.ColumnSorterMixin.__init__(self, 4)
         listmix.ColumnSorterMixin.__init__(self, 4)
         
         
         i = 0
         i = 0
@@ -615,7 +616,12 @@ class ModelListCtrl(wx.ListCtrl,
                 
                 
     def OnBeginEdit(self, event):
     def OnBeginEdit(self, event):
         """!Editing of item started"""
         """!Editing of item started"""
-        event.Allow()
+        if self.columnNotEditable and event.m_col in self.columnNotEditable:
+            event.Veto()
+            self.SetItemState(event.m_itemIndex,
+                              wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED | wx.LIST_STATE_FOCUSED)
+        else:
+            event.Allow()
 
 
     def OnEndEdit(self, event):
     def OnEndEdit(self, event):
         """!Finish editing of item"""
         """!Finish editing of item"""

+ 1 - 0
gui/wxpython/gmodeler/frame.py

@@ -1475,6 +1475,7 @@ class ItemPanel(wx.Panel):
         self.list = ItemListCtrl(parent = self,
         self.list = ItemListCtrl(parent = self,
                                  columns = [_("Name"), _("In loop"),
                                  columns = [_("Name"), _("In loop"),
                                             _("Command")],
                                             _("Command")],
+                                 columnsNotEditable = [1, 2],
                                  frame = self.parent)
                                  frame = self.parent)
         
         
         self.btnMoveUp = wx.Button(parent=self, id=wx.ID_UP)
         self.btnMoveUp = wx.Button(parent=self, id=wx.ID_UP)