/[thuban]/trunk/thuban/Thuban/UI/classifier.py
ViewVC logotype

Diff of /trunk/thuban/Thuban/UI/classifier.py

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

revision 391 by jonathan, Tue Jan 28 12:54:01 2003 UTC revision 392 by jonathan, Mon Feb 10 15:26:30 2003 UTC
# Line 16  from wxPython.grid import * Line 16  from wxPython.grid import *
16    
17  from Thuban import _  from Thuban import _
18    
19    from Thuban.Model.classification import Classification
20    
21    from Thuban.Model.layer import SHAPETYPE_ARC, SHAPETYPE_POLYGON, SHAPETYPE_POINT
22    
23  ID_PROPERTY_SELECT = 4010  ID_PROPERTY_SELECT = 4010
24  ID_CLASS_TABLE = 40011  ID_CLASS_TABLE = 40011
25    
# Line 30  class ClassTable(wxPyGridTableBase): Line 34  class ClassTable(wxPyGridTableBase):
34    
35          self.tdata = []          self.tdata = []
36    
37            self.tdata.append([self.clinfo.DefaultData, 'DEFAULT'])
38    
39          for value, data in self.clinfo.points.items():          for value, data in self.clinfo.points.items():
40              self.tdata.append([data, value])              self.tdata.append([data, value])
41    
# Line 51  class ClassTable(wxPyGridTableBase): Line 57  class ClassTable(wxPyGridTableBase):
57          return self.tdata[row][col]          return self.tdata[row][col]
58    
59      def SetValue(self, row, col, value):      def SetValue(self, row, col, value):
60          pass          self.tdata[row][col] = value
61        
62        def GetValueAsCustom(self, row, col, typeName):
63            return self.tdata[row][col]
64    
65    
66  class Classifier(wxDialog):  class Classifier(wxDialog):
# Line 79  class Classifier(wxDialog): Line 87  class Classifier(wxDialog):
87              self.properties.Append(name)              self.properties.Append(name)
88    
89          self.properties.SetSelection(cur_hilight)          self.properties.SetSelection(cur_hilight)
90          propertyBox.Add(self.properties, 0, wxGROW, 4)          propertyBox.Add(self.properties, 1, wxGROW, 4)
91          EVT_COMBOBOX(self, ID_PROPERTY_SELECT, self.OnPropertySelect)          EVT_COMBOBOX(self, ID_PROPERTY_SELECT, self.OnPropertySelect)
92    
93          topBox.Add(propertyBox, 0, wxGROW, 4)          topBox.Add(propertyBox, 0, wxGROW, 4)
# Line 92  class Classifier(wxDialog): Line 100  class Classifier(wxDialog):
100    
101          table = ClassTable(layer.classification)          table = ClassTable(layer.classification)
102          self.classTable.SetTable(table, true)          self.classTable.SetTable(table, true)
103            self.classTable.EnableEditing(false)
104            cr = ClassRenderer(layer.ShapeType())
105            for i in range(self.classTable.GetNumberRows()):
106                self.classTable.SetCellRenderer(i, 0, cr)
107    
108          topBox.Add(self.classTable, 0, wxGROW, 0)          topBox.Add(self.classTable, 1, wxGROW, 0)
109    
110          #          #
111          # Control buttons:          # Control buttons:
# Line 121  class Classifier(wxDialog): Line 133  class Classifier(wxDialog):
133      def OnCancel(self, event):      def OnCancel(self, event):
134          self.EndModal(wxID_CANCEL)          self.EndModal(wxID_CANCEL)
135    
136    
137    class ClassRenderer(wxPyGridCellRenderer):
138    
139        def __init__(self, shapeType):
140            wxPyGridCellRenderer.__init__(self)
141            self.shapeType = shapeType
142    
143        def Draw(self, grid, attr, dc, rect, row, col, isSelected):
144            value = grid.GetTable().GetValueAsCustom(row, col, "")
145            # XXX: check if value is a dictionary
146            stroke = value.GetStroke()
147            if stroke is None:
148                pen = wxTRANSPARENT_PEN
149            else:
150                pen = wxPen(wxColour(stroke.red * 255,
151                                     stroke.green * 255,
152                                     stroke.blue * 255),
153                            value.GetStrokeWidth(),
154                            wxSOLID)
155    
156            stroke = value.GetFill()
157            if stroke is None:
158                brush = wxTRANSPARENT_BRUSH
159            else:
160                brush = wxBrush(wxColour(stroke.red * 255,
161                                         stroke.green * 255,
162                                         stroke.blue * 255), wxSOLID)
163    
164            dc.SetClippingRegion(rect.GetX(), rect.GetY(),
165                                 rect.GetWidth(), rect.GetHeight())
166            dc.SetPen(wxPen(wxLIGHT_GREY))
167            dc.SetBrush(wxBrush(wxLIGHT_GREY, wxSOLID))
168            dc.DrawRectangle(rect.GetX(), rect.GetY(),
169                             rect.GetWidth(), rect.GetHeight())
170    
171            dc.SetPen(pen)
172            dc.SetBrush(brush)
173    
174            if self.shapeType == SHAPETYPE_ARC:
175                dc.DrawSpline([wxPoint(rect.GetX(), rect.GetY() + rect.GetHeight()),
176                               wxPoint(rect.GetX() + rect.GetWidth()/2,
177                                       rect.GetY() + rect.GetHeight()/4),
178                               wxPoint(rect.GetX() + rect.GetWidth()/2,
179                                       rect.GetY() + rect.GetHeight()/4*3),
180                               wxPoint(rect.GetX() + rect.GetWidth(), rect.GetY())])
181    
182            elif self.shapeType == SHAPETYPE_POINT or self.shapeType == SHAPETYPE_POLYGON:
183                dc.DrawCircle(rect.GetX() + rect.GetWidth()/2,
184                              rect.GetY() + rect.GetHeight()/2,
185                              (min(rect.GetWidth(), rect.GetHeight())
186                               - value.GetStrokeWidth())/2)
187    
188            dc.DestroyClippingRegion()
189    
190    

Legend:
Removed from v.391  
changed lines
  Added in v.392

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26