/[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 878 by jonathan, Fri May 9 16:32:31 2003 UTC revision 935 by jonathan, Tue May 20 15:24:17 2003 UTC
# Line 28  from Thuban.Model.classification import Line 28  from Thuban.Model.classification import
28    
29  from Thuban.Model.color import Color  from Thuban.Model.color import Color
30    
31  from Thuban.Model.layer import Layer, \  from Thuban.Model.layer import Layer, RasterLayer, \
32      SHAPETYPE_ARC, SHAPETYPE_POLYGON, SHAPETYPE_POINT      SHAPETYPE_ARC, SHAPETYPE_POLYGON, SHAPETYPE_POINT
33    
34  from Thuban.UI.classgen import ClassGenDialog, ClassGenerator  from Thuban.UI.classgen import ClassGenDialog, ClassGenerator
# Line 684  class Classifier(NonModalDialog): Line 684  class Classifier(NonModalDialog):
684    
685          self.layer = layer          self.layer = layer
686    
         self.originalClass = self.layer.GetClassification()  
         field = self.originalClass.GetField()  
         fieldType = self.originalClass.GetFieldType()  
687    
688          self.genDlg = None          self.genDlg = None
689    
# Line 697  class Classifier(NonModalDialog): Line 694  class Classifier(NonModalDialog):
694          panel = wxPanel(self, -1)          panel = wxPanel(self, -1)
695    
696          text_title = wxTextCtrl(panel, ID_PROPERTY_TITLE, layer.Title())          text_title = wxTextCtrl(panel, ID_PROPERTY_TITLE, layer.Title())
697          #          self.fieldTypeText = wxStaticText(panel, -1, "")
         # make field choice box  
         #  
         self.fields = wxChoice(panel, ID_PROPERTY_SELECT,)  
   
         self.num_cols = layer.table.NumColumns()  
         # just assume the first field in case one hasn't been  
         # specified in the file.  
         self.__cur_field = 0  
   
         self.fields.Append("<None>")  
698    
699          if self.originalClass.GetFieldType() is None:          if layer.HasClassification():
700              self.fields.SetClientData(0, copy.deepcopy(self.originalClass))              self.originalClass = self.layer.GetClassification()
701          else:              field = self.originalClass.GetField()
702              self.fields.SetClientData(0, None)              fieldType = self.originalClass.GetFieldType()
703    
704          for i in range(self.num_cols):              #
705              name = layer.table.Column(i).name              # make field choice box
706              self.fields.Append(name)              #
707                self.fields = wxChoice(panel, ID_PROPERTY_SELECT,)
             if name == field:  
                 self.__cur_field = i + 1  
                 self.fields.SetClientData(i + 1,  
                                           copy.deepcopy(self.originalClass))  
             else:  
                 self.fields.SetClientData(i + 1, None)  
708    
709                self.num_cols = layer.table.NumColumns()
710                # just assume the first field in case one hasn't been
711                # specified in the file.
712                self.__cur_field = 0
713    
714          self.fieldTypeText = wxStaticText(panel, -1, "")              self.fields.Append("<None>")
715    
716          button_gen = wxButton(panel, ID_PROPERTY_GENCLASS, _("Generate Class"))              if self.originalClass.GetFieldType() is None:
717                    self.fields.SetClientData(0, copy.deepcopy(self.originalClass))
718                else:
719                    self.fields.SetClientData(0, None)
720    
721          button_add = wxButton(panel, ID_PROPERTY_ADD, _("Add"))              for i in range(self.num_cols):
722          button_moveup = wxButton(panel, ID_PROPERTY_MOVEUP, _("Move Up"))                  name = layer.table.Column(i).name
723          button_movedown = wxButton(panel, ID_PROPERTY_MOVEDOWN, _("Move Down"))                  self.fields.Append(name)
724          button_edit = wxButton(panel, ID_PROPERTY_EDITSYM, _("Edit Symbol"))  
725          button_remove = wxButton(panel, ID_PROPERTY_REMOVE, _("Remove"))                  if name == field:
726                        self.__cur_field = i + 1
727                        self.fields.SetClientData(i + 1,
728                                                copy.deepcopy(self.originalClass))
729                    else:
730                        self.fields.SetClientData(i + 1, None)
731    
732                button_gen = wxButton(panel, ID_PROPERTY_GENCLASS,
733                    _("Generate Class"))
734                button_add = wxButton(panel, ID_PROPERTY_ADD,
735                    _("Add"))
736                button_moveup = wxButton(panel, ID_PROPERTY_MOVEUP,
737                    _("Move Up"))
738                button_movedown = wxButton(panel, ID_PROPERTY_MOVEDOWN,
739                    _("Move Down"))
740                button_edit = wxButton(panel, ID_PROPERTY_EDITSYM,
741                    _("Edit Symbol"))
742                button_remove = wxButton(panel, ID_PROPERTY_REMOVE,
743                    _("Remove"))
744    
745                self.classGrid = ClassGrid(panel, self)
746    
747                # calling __SelectField after creating the classGrid fills in the
748                # grid with the correct information
749                self.fields.SetSelection(self.__cur_field)
750                self.__SelectField(self.__cur_field, group = group)
751    
752          button_try = wxButton(panel, ID_PROPERTY_TRY, _("Try"))          button_try = wxButton(panel, ID_PROPERTY_TRY, _("Try"))
753          button_revert = wxButton(panel, ID_PROPERTY_REVERT, _("Revert"))          button_revert = wxButton(panel, ID_PROPERTY_REVERT, _("Revert"))
# Line 743  class Classifier(NonModalDialog): Line 755  class Classifier(NonModalDialog):
755          button_ok.SetDefault()          button_ok.SetDefault()
756          button_close = wxButton(panel, wxID_CANCEL, _("Close"))          button_close = wxButton(panel, wxID_CANCEL, _("Close"))
757    
         self.classGrid = ClassGrid(panel, self)  
   
         # calling __SelectField after creating the classGrid fills in the  
         # grid with the correct information  
         self.fields.SetSelection(self.__cur_field)  
         self.__SelectField(self.__cur_field, group = group)  
   
758          ############################          ############################
759          # Layout the controls          # Layout the controls
760          #          #
# Line 764  class Classifier(NonModalDialog): Line 769  class Classifier(NonModalDialog):
769    
770          panelBox.Add(sizer, 0, wxGROW, 4)          panelBox.Add(sizer, 0, wxGROW, 4)
771    
772          panelBox.Add(wxStaticText(panel, -1,          if isinstance(layer, RasterLayer):
773                                  _("Type: %s") % layer.ShapeType()),              type = "Image"
774            else:
775                type = layer.ShapeType()
776    
777            panelBox.Add(wxStaticText(panel, -1, _("Type: %s") % type),
778              0, wxALIGN_LEFT | wxALL, 4)              0, wxALIGN_LEFT | wxALL, 4)
779    
780          classBox = wxStaticBoxSizer(          if layer.HasClassification():
                     wxStaticBox(panel, -1, _("Classification")), wxVERTICAL)  
781    
782                classBox = wxStaticBoxSizer(
783                            wxStaticBox(panel, -1, _("Classification")), wxVERTICAL)
784    
         sizer = wxBoxSizer(wxHORIZONTAL)  
         sizer.Add(wxStaticText(panel, ID_PROPERTY_FIELDTEXT, _("Field: ")),  
             0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 4)  
         sizer.Add(self.fields, 1, wxGROW | wxALL, 4)  
   
         classBox.Add(sizer, 0, wxGROW, 4)  
   
         classBox.Add(self.fieldTypeText, 0,  
                      wxGROW | wxALIGN_LEFT | wxALL | wxADJUST_MINSIZE, 4)  
   
         controlBox = wxBoxSizer(wxHORIZONTAL)  
         controlButtonBox = wxBoxSizer(wxVERTICAL)  
   
         controlButtonBox.Add(button_gen, 0, wxGROW|wxALL, 4)  
         controlButtonBox.Add(button_add, 0, wxGROW|wxALL, 4)  
         controlButtonBox.Add(button_moveup, 0, wxGROW|wxALL, 4)  
         controlButtonBox.Add(button_movedown, 0, wxGROW|wxALL, 4)  
         controlButtonBox.Add(button_edit, 0, wxGROW|wxALL, 4)  
         controlButtonBox.Add(60, 20, 0, wxGROW|wxALL|wxALIGN_BOTTOM, 4)  
         controlButtonBox.Add(button_remove, 0, wxGROW|wxALL|wxALIGN_BOTTOM, 4)  
785    
786          controlBox.Add(self.classGrid, 1, wxGROW, 0)              sizer = wxBoxSizer(wxHORIZONTAL)
787          controlBox.Add(controlButtonBox, 0, wxGROW, 10)              sizer.Add(wxStaticText(panel, ID_PROPERTY_FIELDTEXT, _("Field: ")),
788                    0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 4)
789                sizer.Add(self.fields, 1, wxGROW | wxALL, 4)
790    
791                classBox.Add(sizer, 0, wxGROW, 4)
792    
793                classBox.Add(self.fieldTypeText, 0,
794                            wxGROW | wxALIGN_LEFT | wxALL | wxADJUST_MINSIZE, 4)
795    
796                controlBox = wxBoxSizer(wxHORIZONTAL)
797                controlButtonBox = wxBoxSizer(wxVERTICAL)
798    
799          classBox.Add(controlBox, 1, wxGROW, 10)              controlButtonBox.Add(button_gen, 0, wxGROW|wxALL, 4)
800          panelBox.Add(classBox, 1, wxGROW, 0)              controlButtonBox.Add(button_add, 0, wxGROW|wxALL, 4)
801                controlButtonBox.Add(button_moveup, 0, wxGROW|wxALL, 4)
802                controlButtonBox.Add(button_movedown, 0, wxGROW|wxALL, 4)
803                controlButtonBox.Add(button_edit, 0, wxGROW|wxALL, 4)
804                controlButtonBox.Add(60, 20, 0, wxGROW|wxALL|wxALIGN_BOTTOM, 4)
805                controlButtonBox.Add(button_remove, 0,
806                                     wxGROW|wxALL|wxALIGN_BOTTOM, 4)
807    
808                controlBox.Add(self.classGrid, 1, wxGROW, 0)
809                controlBox.Add(controlButtonBox, 0, wxGROW, 10)
810    
811                classBox.Add(controlBox, 1, wxGROW, 10)
812                panelBox.Add(classBox, 1, wxGROW, 0)
813    
814    
815          buttonBox = wxBoxSizer(wxHORIZONTAL)          buttonBox = wxBoxSizer(wxHORIZONTAL)
# Line 842  class Classifier(NonModalDialog): Line 854  class Classifier(NonModalDialog):
854    
855          ######################          ######################
856    
857          self.fields.SetFocus()          text_title.SetFocus()
858          self.haveApplied = False          self.haveApplied = False
859    
860      def EditSymbol(self, row):      def EditSymbol(self, row):
# Line 961  class Classifier(NonModalDialog): Line 973  class Classifier(NonModalDialog):
973             it to the layer.             it to the layer.
974          """          """
975    
976          clazz = self.fields.GetClientData(self.__cur_field)          if self.layer.HasClassification():
977                clazz = self.fields.GetClientData(self.__cur_field)
978    
979          #              #
980          # only build the classification if there wasn't one to              # only build the classification if there wasn't one to
981          # to begin with or it has been modified              # to begin with or it has been modified
982          #              #
983          self.classGrid.SaveEditControlValue()              self.classGrid.SaveEditControlValue()
984          if clazz is None or self.classGrid.GetTable().IsModified():              if clazz is None or self.classGrid.GetTable().IsModified():
985              clazz = self.__BuildClassification(self.__cur_field, True)                  clazz = self.__BuildClassification(self.__cur_field, True)
986    
987          self.layer.SetClassification(clazz)              self.layer.SetClassification(clazz)
988    
989          self.haveApplied = True          self.haveApplied = True
990    

Legend:
Removed from v.878  
changed lines
  Added in v.935

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26