/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/UI/tableview.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/UI/tableview.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 30 by bh, Thu Sep 6 13:31:57 2001 UTC revision 77 by bh, Mon Feb 4 19:27:13 2002 UTC
# Line 1  Line 1 
1  # Copyright (c) 2001 by Intevation GmbH  # Copyright (c) 2001, 2002 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 10  __version__ = "$Revision$" Line 10  __version__ = "$Revision$"
10  from wxPython.wx import *  from wxPython.wx import *
11  from wxPython.grid import *  from wxPython.grid import *
12    
13    from Thuban.Lib.connector import Publisher
14  from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_DOUBLE, \  from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_DOUBLE, \
15       FIELDTYPE_STRING       FIELDTYPE_STRING
16  import view  import view
# Line 20  wx_value_type_map = {FIELDTYPE_INT: wxGR Line 21  wx_value_type_map = {FIELDTYPE_INT: wxGR
21                       FIELDTYPE_DOUBLE: wxGRID_VALUE_FLOAT,                       FIELDTYPE_DOUBLE: wxGRID_VALUE_FLOAT,
22                       FIELDTYPE_STRING: wxGRID_VALUE_STRING}                       FIELDTYPE_STRING: wxGRID_VALUE_STRING}
23    
24    ROW_SELECTED = "ROW_SELECTED"
25    
26    
27  class DataTable(wxPyGridTableBase):  class DataTable(wxPyGridTableBase):
28    
29        """Wrapper around a Thuban table object suitable for a wxGrid"""
30    
31      def __init__(self, table = None):      def __init__(self, table = None):
32          wxPyGridTableBase.__init__(self)          wxPyGridTableBase.__init__(self)
33          self.num_cols = 0          self.num_cols = 0
# Line 89  class DataTable(wxPyGridTableBase): Line 95  class DataTable(wxPyGridTableBase):
95          return self.CanGetValueAs(row, col, typeName)          return self.CanGetValueAs(row, col, typeName)
96    
97    
98      # Thuban stuff  class TableGrid(wxGrid, Publisher):
     def SelectRow(self, row):  
         import main  
         interactor = main.app.interactor  
         return interactor.SelectShape(self.table, row)  
   
99    
100  class TableGrid(wxGrid):      """A grid view for a Thuban table"""
101    
102      def __init__(self, parent, table = None):      def __init__(self, parent, table = None):
103          wxGrid.__init__(self, parent, -1)          wxGrid.__init__(self, parent, -1)
# Line 105  class TableGrid(wxGrid): Line 106  class TableGrid(wxGrid):
106    
107          # The second parameter means that the grid is to take ownership          # The second parameter means that the grid is to take ownership
108          # of the table and will destroy it when done. Otherwise you          # of the table and will destroy it when done. Otherwise you
109          # would need to keep a reference to it and call it's Destroy          # would need to keep a reference to it and call its Destroy
110          # method later.          # method later.
111          self.SetTable(self.table, true)          self.SetTable(self.table, true)
112    
# Line 122  class TableGrid(wxGrid): Line 123  class TableGrid(wxGrid):
123    
124      def OnRangeSelect(self, event):      def OnRangeSelect(self, event):
125          if event.Selecting():          if event.Selecting():
126              if not self.table.SelectRow(event.GetTopLeftCoords().GetRow()):              self.issue(ROW_SELECTED, event.GetTopLeftCoords().GetRow())
                 event.Skip()  
127    
128      def OnSelectCell(self, event):      def OnSelectCell(self, event):
129          if not self.table.SelectRow(event.GetRow()):          self.issue(ROW_SELECTED, event.GetRow())
             event.Skip()  
130    
131      def select_shape(self, layer, shape):      def select_shape(self, layer, shape):
132          if layer is not None and layer.table is self.table.table \          if layer is not None and layer.table is self.table.table \
# Line 139  class TableGrid(wxGrid): Line 138  class TableGrid(wxGrid):
138    
139  class TableFrame(NonModalDialog):  class TableFrame(NonModalDialog):
140    
141      def __init__(self, parent, interactor, name, title, table = None):      """Frame that displays a Thuban table in a grid view"""
142    
143        def __init__(self, parent, interactor, name, title, layer = None,
144                     table = None):
145          NonModalDialog.__init__(self, parent, interactor, name, title)          NonModalDialog.__init__(self, parent, interactor, name, title)
146            self.layer = layer
147            self.table = table
148          self.grid = TableGrid(self, table)          self.grid = TableGrid(self, table)
149            self.grid.Subscribe(ROW_SELECTED, self.row_selected)
150          self.interactor.Subscribe(SELECTED_SHAPE, self.select_shape)          self.interactor.Subscribe(SELECTED_SHAPE, self.select_shape)
151    
152      def OnClose(self, event):      def OnClose(self, event):
# Line 150  class TableFrame(NonModalDialog): Line 155  class TableFrame(NonModalDialog):
155    
156      def select_shape(self, layer, shape):      def select_shape(self, layer, shape):
157          self.grid.select_shape(layer, shape)          self.grid.select_shape(layer, shape)
158    
159        def row_selected(self, row):
160            if self.layer is not None:
161                self.interactor.SelectLayerAndShape(self.layer, row)

Legend:
Removed from v.30  
changed lines
  Added in v.77

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26