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

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

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

revision 374 by jan, Mon Jan 27 14:20:02 2003 UTC revision 882 by jonathan, Fri May 9 16:34:28 2003 UTC
# Line 7  Line 7 
7    
8  __version__ = "$Revision$"  __version__ = "$Revision$"
9    
10  from messages import LAYERS_CHANGED, MAP_PROJECTION_CHANGED, \  from messages import MAP_LAYERS_CHANGED, MAP_PROJECTION_CHANGED, \
11       CHANGED, LAYER_PROJECTION_CHANGED, LAYER_LEGEND_CHANGED, \       CHANGED, LAYER_PROJECTION_CHANGED, LAYER_LEGEND_CHANGED, \
12       LAYER_VISIBILITY_CHANGED       LAYER_VISIBILITY_CHANGED, LAYER_CHANGED, MAP_STACKING_CHANGED, \
13         MAP_LAYERS_ADDED, MAP_LAYERS_REMOVED
14    
15  from Thuban import _  from Thuban import _
16    
# Line 18  from base import TitledObject, Modifiabl Line 19  from base import TitledObject, Modifiabl
19  from label import LabelLayer  from label import LabelLayer
20    
21    
   
22  class Map(TitledObject, Modifiable):  class Map(TitledObject, Modifiable):
23    
24      """Represent a map. A map is simply a list of layers.      """Represent a map. A map is simply a list of layers.
# Line 27  class Map(TitledObject, Modifiable): Line 27  class Map(TitledObject, Modifiable):
27    
28          TITLE_CHANGED -- The title has changed. Parameter: the map.          TITLE_CHANGED -- The title has changed. Parameter: the map.
29    
30          LAYERS_CHANGED -- Layers were added, removed or rearranged.          MAP_LAYERS_CHANGED -- Layers were added, removed or rearranged.
31                          Parameters: the map                          Parameters: the map
32    
33          MAP_PROJECTION_CHANGED -- the map's projection has changed.          MAP_PROJECTION_CHANGED -- the map's projection has changed.
# Line 37  class Map(TitledObject, Modifiable): Line 37  class Map(TitledObject, Modifiable):
37      forwarded_channels = (CHANGED,      forwarded_channels = (CHANGED,
38                            LAYER_PROJECTION_CHANGED,                            LAYER_PROJECTION_CHANGED,
39                            LAYER_LEGEND_CHANGED,                            LAYER_LEGEND_CHANGED,
40                              LAYER_CHANGED,
41                            LAYER_VISIBILITY_CHANGED)                            LAYER_VISIBILITY_CHANGED)
42    
43      def __init__(self, title, projection = None):      def __init__(self, title, projection = None):
# Line 45  class Map(TitledObject, Modifiable): Line 46  class Map(TitledObject, Modifiable):
46          Modifiable.__init__(self)          Modifiable.__init__(self)
47          self.layers = []          self.layers = []
48          self.label_layer = LabelLayer(_("Labels"))          self.label_layer = LabelLayer(_("Labels"))
49          self.label_layer.Subscribe(CHANGED, self.forward, LAYERS_CHANGED)          self.label_layer.Subscribe(CHANGED, self.forward, MAP_LAYERS_CHANGED)
50          self.projection = projection          self.projection = projection
51    
52      def Destroy(self):      def Destroy(self):
# Line 55  class Map(TitledObject, Modifiable): Line 56  class Map(TitledObject, Modifiable):
56          # cause problems.          # cause problems.
57          Modifiable.Destroy(self)          Modifiable.Destroy(self)
58          self.ClearLayers()          self.ClearLayers()
59          self.label_layer.Unsubscribe(CHANGED, self.forward, LAYERS_CHANGED)          self.label_layer.Unsubscribe(CHANGED, self.forward, MAP_LAYERS_CHANGED)
60          self.label_layer.Destroy()          self.label_layer.Destroy()
61    
62      def AddLayer(self, layer):      def AddLayer(self, layer):
63          """Append layer to the map on top opf all."""          """Append layer to the map on top opf all."""
64          self.layers.append(layer)          self.layers.append(layer)
65          self.subscribe_layer_channels(layer)          self.subscribe_layer_channels(layer)
66          self.changed(LAYERS_CHANGED, self)          self.changed(MAP_LAYERS_CHANGED, self)
67            self.changed(MAP_LAYERS_ADDED, self)
68    
69      def RemoveLayer(self, layer):      def RemoveLayer(self, layer):
70          """Remove layer from the map."""          """Remove layer from the map."""
71          self.unsubscribe_layer_channels(layer)          self.unsubscribe_layer_channels(layer)
72          self.layers.remove(layer)          self.layers.remove(layer)
73          self.changed(LAYERS_CHANGED, self)          self.changed(MAP_LAYERS_CHANGED, self)
74            self.changed(MAP_LAYERS_REMOVED, self)
75          layer.Destroy()          layer.Destroy()
76    
77      def CanRemoveLayer(self, layer):      def CanRemoveLayer(self, layer):
# Line 87  class Map(TitledObject, Modifiable): Line 90  class Map(TitledObject, Modifiable):
90              layer.Destroy()              layer.Destroy()
91          del self.layers[:]          del self.layers[:]
92          self.label_layer.ClearLabels()          self.label_layer.ClearLabels()
93          self.changed(LAYERS_CHANGED, self)          self.changed(MAP_LAYERS_CHANGED, self)
94            self.changed(MAP_LAYERS_REMOVED, self)
95    
96      def subscribe_layer_channels(self, layer):      def subscribe_layer_channels(self, layer):
97          """Subscribe to some of layer's channels."""          """Subscribe to some of layer's channels."""
# Line 117  class Map(TitledObject, Modifiable): Line 121  class Map(TitledObject, Modifiable):
121          """Swap the layer with the one above it.          """Swap the layer with the one above it.
122    
123          If the layer is already at the top do nothing. If the stacking          If the layer is already at the top do nothing. If the stacking
124          order has been changed, issue a LAYERS_CHANGED message.          order has been changed, issue a MAP_LAYERS_CHANGED message.
125          """          """
126          index = self.layers.index(layer)          index = self.layers.index(layer)
127          if index < len(self.layers) - 1:          if index < len(self.layers) - 1:
128              del self.layers[index]              del self.layers[index]
129              self.layers.insert(index + 1, layer)              self.layers.insert(index + 1, layer)
130              self.changed(LAYERS_CHANGED, self)              self.changed(MAP_LAYERS_CHANGED, self)
131                self.changed(MAP_STACKING_CHANGED, self)
132    
133      def LowerLayer(self, layer):      def LowerLayer(self, layer):
134          """Swap the layer with the one below it.          """Swap the layer with the one below it.
135    
136          If the layer is already at the bottom do nothing. If the          If the layer is already at the bottom do nothing. If the
137          stacking order has been changed, issue a LAYERS_CHANGED message.          stacking order has been changed, issue a MAP_LAYERS_CHANGED message.
138          """          """
139          index = self.layers.index(layer)          index = self.layers.index(layer)
140          if index > 0:          if index > 0:
141              del self.layers[index]              del self.layers[index]
142              self.layers.insert(index - 1, layer)              self.layers.insert(index - 1, layer)
143              self.changed(LAYERS_CHANGED, self)              self.changed(MAP_LAYERS_CHANGED, self)
144                self.changed(MAP_STACKING_CHANGED, self)
145    
146      def BoundingBox(self):      def BoundingBox(self):
147          """Return the bounding box of the map in Lat/Lon coordinates.          """Return the bounding box of the map in Lat/Lon coordinates.
# Line 178  class Map(TitledObject, Modifiable): Line 184  class Map(TitledObject, Modifiable):
184              bbox = self.projection.ForwardBBox(bbox)              bbox = self.projection.ForwardBBox(bbox)
185          return bbox          return bbox
186    
187        def GetProjection(self):
188            return self.projection
189    
190      def SetProjection(self, projection):      def SetProjection(self, projection):
191          """Set the projection of the map.          """Set the projection of the map.
192    

Legend:
Removed from v.374  
changed lines
  Added in v.882

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26