/[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 6 by bh, Tue Aug 28 15:41:52 2001 UTC revision 34 by bh, Thu Sep 6 15:32:56 2001 UTC
# 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
17    from dialogs import NonModalDialog
18  from messages import SELECTED_SHAPE  from messages import SELECTED_SHAPE
19    
20  wx_value_type_map = {FIELDTYPE_INT: wxGRID_VALUE_NUMBER,  wx_value_type_map = {FIELDTYPE_INT: wxGRID_VALUE_NUMBER,
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 88  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 118  class TableGrid(wxGrid): Line 117  class TableGrid(wxGrid):
117                    
118          EVT_GRID_RANGE_SELECT(self, self.OnRangeSelect)          EVT_GRID_RANGE_SELECT(self, self.OnRangeSelect)
119          EVT_GRID_SELECT_CELL(self, self.OnSelectCell)          EVT_GRID_SELECT_CELL(self, self.OnSelectCell)
         import main  
         main.app.interactor.Subscribe(SELECTED_SHAPE, self.select_shape)  
120    
121      def SetTableObject(self, table):      def SetTableObject(self, table):
122          self.table.SetTable(table)          self.table.SetTable(table)
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 \
133               and shape is not None:
134              self.SelectRow(shape)              self.SelectRow(shape)
135              self.SetGridCursor(shape, 0)              self.SetGridCursor(shape, 0)
136              self.MakeCellVisible(shape, 0)              self.MakeCellVisible(shape, 0)
137    
138    
139  class TableFrame(wxFrame):  class TableFrame(NonModalDialog):
140    
141      def __init__(self, parent, table = None):      """Frame that displays a Thuban table in a grid view"""
142          wxFrame.__init__(self, parent, -1, "Thuban Table")  
143          grid = TableGrid(self, table)      def __init__(self, parent, interactor, name, title, layer = None,
144                     table = None):
145            NonModalDialog.__init__(self, parent, interactor, name, title)
146            self.layer = layer
147            self.table = table
148            self.grid = TableGrid(self, table)
149            self.grid.Subscribe(ROW_SELECTED, self.row_selected)
150            self.interactor.Subscribe(SELECTED_SHAPE, self.select_shape)
151    
152        def OnClose(self, event):
153            self.interactor.Unsubscribe(SELECTED_SHAPE, self.select_shape)
154            NonModalDialog.OnClose(self, event)
155    
156        def select_shape(self, layer, shape):
157            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.6  
changed lines
  Added in v.34

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26