/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/Model/classification.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/Model/classification.py

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

revision 681 by jonathan, Tue Apr 15 21:54:32 2003 UTC revision 960 by jonathan, Wed May 21 17:23:11 2003 UTC
# Line 23  on the mapping algorithm. Line 23  on the mapping algorithm.
23  # fix for people using python2.1  # fix for people using python2.1
24  from __future__ import nested_scopes  from __future__ import nested_scopes
25    
26  import copy  import copy, operator
27    
28  from Thuban import _  from Thuban import _
29    
30  from types import *  import types
31    
32  from messages import \  from messages import \
33      LAYER_PROJECTION_CHANGED, \      LAYER_PROJECTION_CHANGED, \
# Line 35  from messages import \ Line 35  from messages import \
35      LAYER_VISIBILITY_CHANGED      LAYER_VISIBILITY_CHANGED
36    
37  from Thuban.Model.color import Color  from Thuban.Model.color import Color
38    from Thuban.Model.range import Range
39    
40  import Thuban.Model.layer  import Thuban.Model.layer
41    
# Line 222  class Classification: Line 223  class Classification:
223    
224          lineWidth -- an integer > 0.          lineWidth -- an integer > 0.
225          """          """
226          assert isinstance(lineWidth, IntType)          assert isinstance(lineWidth, types.IntType)
227          self.GetDefaultGroup().GetProperties().SetLineWidth(lineWidth)          self.GetDefaultGroup().GetProperties().SetLineWidth(lineWidth)
228          self.__SendNotification()          self.__SendNotification()
229                    
# Line 469  class ClassGroupProperties: Line 470  class ClassGroupProperties:
470    
471          lineWidth -- the new line width. This must be > 0.          lineWidth -- the new line width. This must be > 0.
472          """          """
473          assert isinstance(lineWidth, IntType)          assert isinstance(lineWidth, types.IntType)
474          if (lineWidth < 1):          if (lineWidth < 1):
475              raise ValueError(_("lineWidth < 1"))              raise ValueError(_("lineWidth < 1"))
476    
# Line 542  class ClassGroup: Line 543  class ClassGroup:
543          label -- a string representing the Group's label. This must          label -- a string representing the Group's label. This must
544                   not be None.                   not be None.
545          """          """
546          assert isinstance(label, StringTypes)          assert isinstance(label, types.StringTypes)
547          self.label = label          self.label = label
548    
549      def GetDisplayText(self):      def GetDisplayText(self):
# Line 588  class ClassGroup: Line 589  class ClassGroup:
589          return not self.__eq__(other)          return not self.__eq__(other)
590    
591      def __repr__(self):      def __repr__(self):
592          return "'" + self.label + "', " + repr(self.GetProperties())          return repr(self.label) + ", " + repr(self.GetProperties())
593            
594  class ClassGroupSingleton(ClassGroup):  class ClassGroupSingleton(ClassGroup):
595      """A Group that is associated with a single value."""      """A Group that is associated with a single value."""
# Line 643  class ClassGroupSingleton(ClassGroup): Line 644  class ClassGroupSingleton(ClassGroup):
644              and self.__value == other.__value              and self.__value == other.__value
645    
646      def __repr__(self):      def __repr__(self):
647          return "(" + self.__value + ", " + ClassGroup.__repr__(self) + ")"          return "(" + repr(self.__value) + ", " + ClassGroup.__repr__(self) + ")"
648    
649  class ClassGroupDefault(ClassGroup):  class ClassGroupDefault(ClassGroup):
650      """The default Group. When values do not match any other      """The default Group. When values do not match any other
# Line 706  class ClassGroupRange(ClassGroup): Line 707  class ClassGroupRange(ClassGroup):
707    
708          ClassGroup.__init__(self, label, props, group)          ClassGroup.__init__(self, label, props, group)
709    
710          self.__min = self.__max = 0          #self.__min = self.__max = 0
711            #self.__range = Range("[" + repr(float(min)) + ";" +
712                                       #repr(float(max)) + "[")
713          self.SetRange(min, max)          self.SetRange(min, max)
714    
715      def __copy__(self):      def __copy__(self):
716          return ClassGroupRange(self.GetMin(),          return ClassGroupRange(min = self.__range,
717                                 self.GetMax(),                                 max = None,
718                                 self.GetProperties(),                                 props = self.GetProperties(),
719                                 self.GetLabel())                                 label = self.GetLabel())
720    
721      def __deepcopy__(self, memo):      def __deepcopy__(self, memo):
722          return ClassGroupRange(copy.copy(self.GetMin()),          return ClassGroupRange(min = copy.copy(self.__range),
723                                 copy.copy(self.GetMax()),                                 max = copy.copy(self.GetMax()),
724                                 group = self)                                 group = self)
725    
726      def GetMin(self):      def GetMin(self):
727          """Return the range's minimum value."""          """Return the range's minimum value."""
728          return self.__min          return self.__range.GetRange()[1]
729    
730      def SetMin(self, min):      def SetMin(self, min):
731          """Set the range's minimum value.          """Set the range's minimum value.
# Line 732  class ClassGroupRange(ClassGroup): Line 734  class ClassGroupRange(ClassGroup):
734                 maximum value. Use SetRange() to change both min and max values.                 maximum value. Use SetRange() to change both min and max values.
735          """          """
736            
737          self.SetRange(min, self.__max)          self.SetRange(min, self.__range.GetRange()[2])
738    
739      def GetMax(self):      def GetMax(self):
740          """Return the range's maximum value."""          """Return the range's maximum value."""
741          return self.__max          return self.__range.GetRange()[2]
742    
743      def SetMax(self, max):      def SetMax(self, max):
744          """Set the range's maximum value.          """Set the range's maximum value.
# Line 744  class ClassGroupRange(ClassGroup): Line 746  class ClassGroupRange(ClassGroup):
746          max -- the new maximum. Note that this must be greater than the current          max -- the new maximum. Note that this must be greater than the current
747                 minimum value. Use SetRange() to change both min and max values.                 minimum value. Use SetRange() to change both min and max values.
748          """          """
749          self.SetRange(self.__min, max)          self.SetRange(self.__range.GetRange()[1], max)
750    
751      def SetRange(self, min, max):      def SetRange(self, min, max = None):
752          """Set a new range.          """Set a new range.
753    
754          Note that min must be strictly less than max.          Note that min must be strictly less than max.
# Line 755  class ClassGroupRange(ClassGroup): Line 757  class ClassGroupRange(ClassGroup):
757          min -- the new maximum value          min -- the new maximum value
758          """          """
759    
760          if min >= max:          if isinstance(min, Range):
761              raise ValueError(_("ClassGroupRange: %i(min) >= %i(max)!") %              self.__range = min
762                               (min, max))          else:
763          self.__min = min              if max is None:
764          self.__max = max                  raise ValueError()
765    
766                self.__range = Range(("[", min, max, "["))
767    
768      def GetRange(self):      def GetRange(self):
769          """Return the range as a tuple (min, max)"""          """Return the range as a string"""
770          return (self.__min, self.__max)          #return (self.__min, self.__max)
771            return self.__range.string(self.__range.GetRange())
772    
773      def Matches(self, value):      def Matches(self, value):
774          """Determine if the given value lies with the current range.          """Determine if the given value lies with the current range.
# Line 771  class ClassGroupRange(ClassGroup): Line 776  class ClassGroupRange(ClassGroup):
776          The following check is used: min <= value < max.          The following check is used: min <= value < max.
777          """          """
778    
779          return self.__min <= value < self.__max          return operator.contains(self.__range, value)
780            #return self.__min <= value < self.__max
781    
782      def GetDisplayText(self):      def GetDisplayText(self):
783          label = self.GetLabel()          label = self.GetLabel()
784    
785          if label != "": return label          if label != "": return label
786    
787          return _("%s - %s") % (self.GetMin(), self.GetMax())          #return _("%s - %s") % (self.GetMin(), self.GetMax())
788            #return repr(self.__range)
789            return self.__range.string(self.__range.GetRange())
790    
791      def __eq__(self, other):      def __eq__(self, other):
792          return ClassGroup.__eq__(self, other) \          return ClassGroup.__eq__(self, other) \
793              and isinstance(other, ClassGroupRange) \              and isinstance(other, ClassGroupRange) \
794              and self.__min == other.__min \              and self.__range == other.__range
795              and self.__max == other.__max              #and self.__min == other.__min \
796                #and self.__max == other.__max
797    
798      def __repr__(self):      def __repr__(self):
799          return "(" + str(self.__min) + ", " + str(self.__max) + ", " + \          return "(" + str(self.__range) + ClassGroup.__repr__(self) + ")"
800                 ClassGroup.__repr__(self) + ")"          #return "(" + repr(self.__min) + ", " + repr(self.__max) + ", " + \
801                   #ClassGroup.__repr__(self) + ")"
802    
803  class ClassGroupMap(ClassGroup):  class ClassGroupMap(ClassGroup):
804      """Currently, this class is not used."""      """Currently, this class is not used."""

Legend:
Removed from v.681  
changed lines
  Added in v.960

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26