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

Annotation of /branches/WIP-pyshapelib-bramz/Thuban/Model/session.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 217 - (hide annotations)
Wed Jul 17 10:50:40 2002 UTC (22 years, 7 months ago) by bh
Original Path: trunk/thuban/Thuban/Model/session.py
File MIME type: text/x-python
File size: 4226 byte(s)
* Thuban/UI/tree.py (color_string): Removed. No longer used.
(SessionTreeCtrl.update_tree, SessionTreeCtrl.add_items): Split
update_tree into update_tree and add_items. The tree now uses a
more generic way to display the contents of the tree.
(SessionTreeCtrl): Add a doc string explaining the TreeInfo method

* Thuban/Model/layer.py (Layer.TreeInfo),
Thuban/Model/extension.py (Extension.TreeInfo),
Thuban/Model/map.py (Map.TreeInfo),
Thuban/Model/session.py (Session.TreeInfo):
Add TreeInfo methods to implement the new tree view update scheme

1 bh 128 # Copyright (c) 2001, 2002 by Intevation GmbH
2 bh 6 # Authors:
3     # Bernhard Herzog <[email protected]>
4 jan 197 # Jan-Oliver Wagner <[email protected]>
5 bh 6 #
6     # This program is free software under the GPL (>=v2)
7     # Read the file COPYING coming with Thuban for details.
8    
9     __version__ = "$Revision$"
10    
11     from Thuban.Lib.connector import Publisher
12    
13 jan 197 from messages import MAPS_CHANGED, EXTENSIONS_CHANGED, FILENAME_CHANGED, \
14 bh 128 LAYERS_CHANGED, MAP_PROJECTION_CHANGED, \
15 jan 197 LAYER_LEGEND_CHANGED, LAYER_PROJECTION_CHANGED, LAYER_VISIBILITY_CHANGED, \
16     EXTENSION_CHANGED, EXTENSION_OBJECTS_CHANGED
17 bh 6
18     from base import TitledObject, Modifiable
19    
20     from map import Map
21    
22    
23     class Session(TitledObject, Modifiable):
24    
25     """A complete session.
26    
27 jan 197 A Session consists of arbitrary numbers of maps, tables and extensions
28 bh 6
29     Session objects send the following events:
30    
31     TITLE_CHANGED -- The title has changed. Parameters: the session.
32    
33     FILENAME_CHANGED -- The filename has changed. No parameters.
34    
35     MAPS_CHANGED -- Maps were added, removed.
36    
37 jan 197 EXTENSIONS_CHANGED -- Extensions were added, removed.
38    
39 bh 6 LAYERS_CHANGED -- Same as the map's event of the same name.
40     It's simply resent from the session to make
41     subscriptions easier.
42     """
43    
44 bh 128 # message channels that have to be forwarded from maps contained in
45     # the session.
46     forwarded_channels = (
47     # map specific channels
48     MAP_PROJECTION_CHANGED,
49     LAYERS_CHANGED,
50    
51     # layer channels forwarded by the map
52     LAYER_PROJECTION_CHANGED,
53     LAYER_LEGEND_CHANGED,
54 jan 197 LAYER_VISIBILITY_CHANGED,
55 bh 128
56 jan 197 # channels forwarded by an extension
57     EXTENSION_CHANGED,
58     EXTENSION_OBJECTS_CHANGED)
59    
60 bh 6 def __init__(self, title):
61     TitledObject.__init__(self, title)
62     Modifiable.__init__(self)
63     self.filename = None
64     self.maps = []
65     self.tables = []
66 jan 197 self.extensions = []
67 bh 6
68     def SetFilename(self, filename):
69     self.filename = filename
70     self.changed(FILENAME_CHANGED)
71    
72     def Maps(self):
73     return self.maps
74    
75     def HasMaps(self):
76     return len(self.maps) > 0
77    
78     def AddMap(self, map):
79     self.maps.append(map)
80 bh 128 for channel in self.forwarded_channels:
81 bh 6 map.Subscribe(channel, self.forward, channel)
82     self.changed(MAPS_CHANGED)
83    
84 jan 197 def Extensions(self):
85     return self.extensions
86    
87     def HasExtensions(self):
88     return len(self.extensions) > 0
89    
90     def AddExtension(self, extension):
91     self.extensions.append(extension)
92     for channel in self.forwarded_channels:
93     extension.Subscribe(channel, self.forward, channel)
94     self.changed(EXTENSIONS_CHANGED)
95    
96 bh 6 def Destroy(self):
97     for map in self.maps:
98     map.Destroy()
99     self.maps = []
100     self.tables = []
101     Publisher.Destroy(self)
102    
103     def forward(self, *args):
104     """Reissue events"""
105     if len(args) > 1:
106     args = (args[-1],) + args[:-1]
107     apply(self.issue, args)
108    
109     def WasModified(self):
110     """Return true if the session or one of the maps was modified"""
111     if self.modified:
112     return 1
113     else:
114     for map in self.maps:
115     if map.WasModified():
116     return 1
117     return 0
118    
119     def UnsetModified(self):
120     """Unset the modified flag of the session and the maps"""
121     Modifiable.UnsetModified(self)
122     for map in self.maps:
123     map.UnsetModified()
124    
125 bh 217 def TreeInfo(self):
126     items = []
127     if self.filename is None:
128     items.append("Filename:")
129     else:
130     items.append("Filename: %s" % self.filename)
131 bh 6
132 bh 217 if self.WasModified():
133     items.append("Modified")
134     else:
135     items.append("Unmodified")
136 bh 6
137 bh 217 items.extend(self.maps)
138     items.extend(self.extensions)
139    
140     return ("Session: %s" % self.title, items)
141    
142    
143 bh 6 def create_empty_session():
144     """Return an empty session useful as a starting point"""
145 jan 103 import os
146 bh 6 session = Session('unnamed session')
147 jan 103 session.SetFilename(None)
148 bh 6 session.AddMap(Map('unnamed map'))
149 bh 56 session.UnsetModified()
150 bh 6 return session

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26