/[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 1342 by jonathan, Tue Jul 1 16:10:54 2003 UTC revision 1452 by bh, Fri Jul 18 12:57:59 2003 UTC
# Line 84  class ClassGrid(wxGrid): Line 84  class ClassGrid(wxGrid):
84          #print "GetCellAttr ", row, col          #print "GetCellAttr ", row, col
85          #wxGrid.GetCellAttr(self, row, col)          #wxGrid.GetCellAttr(self, row, col)
86    
87      def CreateTable(self, clazz, shapeType, group = None):      def CreateTable(self, clazz, fieldType, shapeType, group = None):
88    
89          assert isinstance(clazz, Classification)          assert isinstance(clazz, Classification)
90    
# Line 104  class ClassGrid(wxGrid): Line 104  class ClassGrid(wxGrid):
104          self.SetSelectionMode(wxGrid.wxGridSelectRows)          self.SetSelectionMode(wxGrid.wxGridSelectRows)
105          self.ClearSelection()          self.ClearSelection()
106    
107          table.Reset(clazz, shapeType, group)          table.Reset(clazz, fieldType, shapeType, group)
108    
109      def GetCurrentSelection(self):      def GetCurrentSelection(self):
110          """Return the currently highlighted rows as an increasing list          """Return the currently highlighted rows as an increasing list
# Line 258  class ClassTable(wxPyGridTableBase): Line 258  class ClassTable(wxPyGridTableBase):
258    
259    
260      def __init__(self, view = None):      def __init__(self, view = None):
     #def __init__(self, clazz, shapeType, view = None):  
261          """Constructor.          """Constructor.
262    
263          shapeType -- the type of shape that the layer uses          shapeType -- the type of shape that the layer uses
# Line 275  class ClassTable(wxPyGridTableBase): Line 274  class ClassTable(wxPyGridTableBase):
274    
275          self.SetView(view)          self.SetView(view)
276    
277      def Reset(self, clazz, shapeType, group = None):      def Reset(self, clazz, fieldType, shapeType, group = None):
278          """Reset the table with the given data.          """Reset the table with the given data.
279    
280          This is necessary because wxWindows does not allow a grid's          This is necessary because wxWindows does not allow a grid's
# Line 293  class ClassTable(wxPyGridTableBase): Line 292  class ClassTable(wxPyGridTableBase):
292    
293          self.GetView().BeginBatch()          self.GetView().BeginBatch()
294    
295          self.fieldType = clazz.GetFieldType()          self.fieldType = fieldType
296          self.shapeType = shapeType          self.shapeType = shapeType
297    
298          self.SetClassification(clazz, group)          self.SetClassification(clazz, group)
# Line 703  class Classifier(NonModalNonParentDialog Line 702  class Classifier(NonModalNonParentDialog
702    
703          if layer.HasClassification():          if layer.HasClassification():
704              self.originalClass = self.layer.GetClassification()              self.originalClass = self.layer.GetClassification()
705              field = self.originalClass.GetField()              self.originalClassField = self.layer.GetClassificationColumn()
706              fieldType = self.originalClass.GetFieldType()              field = self.originalClassField
707                fieldType = self.layer.GetFieldType(field)
708    
709              table = layer.ShapeStore().Table()              table = layer.ShapeStore().Table()
710              #              #
# Line 719  class Classifier(NonModalNonParentDialog Line 719  class Classifier(NonModalNonParentDialog
719    
720              self.fields.Append("<None>")              self.fields.Append("<None>")
721    
722              if self.originalClass.GetFieldType() is None:              if fieldType is None:
723                  self.fields.SetClientData(0, copy.deepcopy(self.originalClass))                  self.fields.SetClientData(0, copy.deepcopy(self.originalClass))
724              else:              else:
725                  self.fields.SetClientData(0, None)                  self.fields.SetClientData(0, None)
# Line 731  class Classifier(NonModalNonParentDialog Line 731  class Classifier(NonModalNonParentDialog
731                  if name == field:                  if name == field:
732                      self.__cur_field = i + 1                      self.__cur_field = i + 1
733                      self.fields.SetClientData(i + 1,                      self.fields.SetClientData(i + 1,
734                                              copy.deepcopy(self.originalClass))                                                copy.deepcopy(self.originalClass))
735                  else:                  else:
736                      self.fields.SetClientData(i + 1, None)                      self.fields.SetClientData(i + 1, None)
737    
# Line 891  class Classifier(NonModalNonParentDialog Line 891  class Classifier(NonModalNonParentDialog
891          self.fields.SetClientData(self.__cur_field, clazz)          self.fields.SetClientData(self.__cur_field, clazz)
892          self.classGrid.GetTable().SetClassification(clazz)          self.classGrid.GetTable().SetClassification(clazz)
893    
894      def __BuildClassification(self, fieldIndex, copyClass = False):      def __BuildClassification(self, fieldIndex, copyClass=False, force=False):
895    
896  #       numRows = self.classGrid.GetNumberRows()  #       numRows = self.classGrid.GetNumberRows()
897  #       assert numRows > 0  # there should always be a default row  #       assert numRows > 0  # there should always be a default row
898    
 #       clazz = Classification()  
899          if fieldIndex == 0:          if fieldIndex == 0:
900              fieldName = None              fieldName = None
901              fieldType = None              fieldType = None
# Line 904  class Classifier(NonModalNonParentDialog Line 903  class Classifier(NonModalNonParentDialog
903              fieldName = self.fields.GetString(fieldIndex)              fieldName = self.fields.GetString(fieldIndex)
904              fieldType = self.layer.GetFieldType(fieldName)              fieldType = self.layer.GetFieldType(fieldName)
905    
906          clazz = self.classGrid.GetTable().GetClassification()          clazz = self.fields.GetClientData(fieldIndex)
907            if clazz is None or self.classGrid.GetTable().IsModified() or force:
908          if copyClass:              clazz = self.classGrid.GetTable().GetClassification()
909              clazz = copy.deepcopy(clazz)              if copyClass:
910                    clazz = copy.deepcopy(clazz)
         clazz.SetFieldInfo(fieldName, fieldType)  
   
   
 #       table = self.classGrid.GetTable()  
 #       clazz.SetDefaultGroup(table.GetClassGroup(0))  
   
 #       for i in range(1, numRows):  
 #           clazz.AppendGroup(table.GetClassGroup(i))  
911    
912          return clazz          return clazz, fieldName
913    
914      def __SetGridTable(self, fieldIndex, group = None):      def __SetGridTable(self, fieldIndex, group = None):
915    
# Line 931  class Classifier(NonModalNonParentDialog Line 922  class Classifier(NonModalNonParentDialog
922                      self.layer.GetClassification().                      self.layer.GetClassification().
923                                 GetDefaultGroup().GetProperties()))                                 GetDefaultGroup().GetProperties()))
924    
925              fieldName = self.fields.GetString(fieldIndex)          fieldName = self.fields.GetString(fieldIndex)
926              fieldType = self.layer.GetFieldType(fieldName)          fieldType = self.layer.GetFieldType(fieldName)
             clazz.SetFieldInfo(fieldName, fieldType)  
927                                    
928          self.classGrid.CreateTable(clazz, self.layer.ShapeType(), group)          self.classGrid.CreateTable(clazz, fieldType,
929                                       self.layer.ShapeType(), group)
930    
931      def __SetFieldTypeText(self, fieldIndex):      def __SetFieldTypeText(self, fieldIndex):
932          fieldName = self.fields.GetString(fieldIndex)          fieldName = self.fields.GetString(fieldIndex)
# Line 955  class Classifier(NonModalNonParentDialog Line 946  class Classifier(NonModalNonParentDialog
946          assert oldIndex >= -1          assert oldIndex >= -1
947    
948          if oldIndex != -1:          if oldIndex != -1:
949              clazz = self.__BuildClassification(oldIndex)              clazz, name = self.__BuildClassification(oldIndex, force = True)
950              self.fields.SetClientData(oldIndex, clazz)              self.fields.SetClientData(oldIndex, clazz)
951    
952          self.__SetGridTable(newIndex, group)          self.__SetGridTable(newIndex, group)
# Line 994  class Classifier(NonModalNonParentDialog Line 985  class Classifier(NonModalNonParentDialog
985              # to begin with or it has been modified              # to begin with or it has been modified
986              #              #
987              self.classGrid.SaveEditControlValue()              self.classGrid.SaveEditControlValue()
988              if clazz is None or self.classGrid.GetTable().IsModified():              clazz, name = self.__BuildClassification(self.__cur_field, True)
                 clazz = self.__BuildClassification(self.__cur_field, True)  
989    
990                self.layer.SetClassificationColumn(name)
991              self.layer.SetClassification(clazz)              self.layer.SetClassification(clazz)
992    
993          self.haveApplied = True          self.haveApplied = True
# Line 1020  class Classifier(NonModalNonParentDialog Line 1011  class Classifier(NonModalNonParentDialog
1011      def _OnRevert(self, event):      def _OnRevert(self, event):
1012          """The layer's current classification stays the same."""          """The layer's current classification stays the same."""
1013          if self.haveApplied:          if self.haveApplied:
1014                self.layer.SetClassificationColumn(self.originalClassField)
1015              self.layer.SetClassification(self.originalClass)              self.layer.SetClassification(self.originalClass)
1016    
1017          #self.Close()          #self.Close()

Legend:
Removed from v.1342  
changed lines
  Added in v.1452

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26