/[thuban]/trunk/thuban/Thuban/Model/layer.py
ViewVC logotype

Diff of /trunk/thuban/Thuban/Model/layer.py

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

revision 412 by jonathan, Wed Feb 19 16:51:50 2003 UTC revision 610 by jonathan, Fri Apr 4 13:56:59 2003 UTC
# Line 16  from Thuban import _ Line 16  from Thuban import _
16  import shapelib, shptree  import shapelib, shptree
17    
18  from messages import LAYER_PROJECTION_CHANGED, LAYER_LEGEND_CHANGED, \  from messages import LAYER_PROJECTION_CHANGED, LAYER_LEGEND_CHANGED, \
19       LAYER_VISIBILITY_CHANGED       LAYER_VISIBILITY_CHANGED, LAYER_CHANGED
20    
21  from color import Color  from color import Color
22    
23  from classification import Classification  import classification
24    
25  from table import Table  from table import Table
26    
# Line 107  class Layer(BaseLayer): Line 107  class Layer(BaseLayer):
107      """      """
108    
109      def __init__(self, title, filename, projection = None,      def __init__(self, title, filename, projection = None,
110                   fill = Color.None,                   fill = Color.Transparent,
111                   stroke = Color.Black,                   stroke = Color.Black,
112                   stroke_width = 1,                   lineWidth = 1,
113                   visible = 1):                   visible = 1):
114          """Initialize the layer.          """Initialize the layer.
115    
# Line 118  class Layer(BaseLayer): Line 118  class Layer(BaseLayer):
118          projection -- the projection object. Its Inverse method is          projection -- the projection object. Its Inverse method is
119                 assumed to map the layer's coordinates to lat/long                 assumed to map the layer's coordinates to lat/long
120                 coordinates                 coordinates
121          fill -- the fill color or None if the shapes are not filled          fill -- the fill color or Color.Transparent if the shapes are
122          stroke -- the stroke color or None if the shapes are not stroked                  not filled
123            stroke -- the stroke color or Color.Transparent if the shapes
124                    are not stroked
125          visible -- boolean. If true the layer is visible.          visible -- boolean. If true the layer is visible.
126    
127          colors are expected to be instances of Color class          colors are expected to be instances of Color class
# Line 142  class Layer(BaseLayer): Line 144  class Layer(BaseLayer):
144          self.shapetable = Table(filename)          self.shapetable = Table(filename)
145          self.table = self.shapetable          self.table = self.shapetable
146    
147          self.__classification = Classification(self)          #
148          self.__classification.SetDefaultStroke(stroke)          # this is really important so that when the classification class
149          self.__classification.SetDefaultStrokeWidth(stroke_width)          # tries to set its parent layer the variable will exist
150            #
151            self.__classification = None
152            self.__setClassLock = False
153    
154    
155            self.SetClassification(None)
156    
157            self.__classification.SetDefaultLineColor(stroke)
158            self.__classification.SetDefaultLineWidth(lineWidth)
159          self.__classification.SetDefaultFill(fill)          self.__classification.SetDefaultFill(fill)
160            self.__classification.SetLayer(self)
161    
162          self.UnsetModified()          self.UnsetModified()
163    
# Line 181  class Layer(BaseLayer): Line 193  class Layer(BaseLayer):
193              self.shapefile.close()              self.shapefile.close()
194              self.shapefile = None              self.shapefile = None
195              self.shapetree = None              self.shapetree = None
196            self.SetClassification(None)
197          self.table.Destroy()          self.table.Destroy()
198    
199      def BoundingBox(self):      def BoundingBox(self):
# Line 208  class Layer(BaseLayer): Line 221  class Layer(BaseLayer):
221          else:          else:
222              return None              return None
223    
224        def GetFieldType(self, fieldName):
225            self.open_shapefile()
226            info = self.table.field_info_by_name(fieldName)
227            if info is not None:
228                return info[0]
229            else:
230                return None
231    
232      def NumShapes(self):      def NumShapes(self):
233          """Return the number of shapes in the layer"""          """Return the number of shapes in the layer"""
234          self.open_shapefile()          self.open_shapefile()
# Line 254  class Layer(BaseLayer): Line 275  class Layer(BaseLayer):
275          return self.__classification          return self.__classification
276    
277      def SetClassification(self, clazz):      def SetClassification(self, clazz):
278          self.__classification = clazz          """Set the classification to 'clazz'
279          self.changed(LAYER_LEGEND_CHANGED, self)  
280            If 'clazz' is None a default classification is created
281            """
282    
283            # prevent infinite recursion when calling SetLayer()
284            if self.__setClassLock: return
285    
286            self.__setClassLock = True
287    
288            if clazz is None:
289                if self.__classification is not None:
290                    self.__classification.SetLayer(None)
291                self.__classification = classification.Classification()
292            else:
293                self.__classification = clazz
294                try:
295                    self.__classification.SetLayer(self)
296                except ValueError:
297                    self.__setClassLock = False
298                    raise ValueError
299    
300            self.changed(LAYER_CHANGED, self)
301    
302            self.__setClassLock = False
303    
304        def ClassChanged(self):
305            """Called from the classification object when it has changed."""
306            self.changed(LAYER_CHANGED, self)
307    
308      def TreeInfo(self):      def TreeInfo(self):
309          items = []          items = []
310    

Legend:
Removed from v.412  
changed lines
  Added in v.610

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26