/[thuban]/branches/greater-ms3/thuban/ChangeLog
ViewVC logotype

Diff of /branches/greater-ms3/thuban/ChangeLog

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

trunk/thuban/ChangeLog revision 1139 by frank, Thu Jun 5 16:00:12 2003 UTC branches/greater-ms3/thuban/ChangeLog revision 1444 by bh, Wed Jul 16 15:15:20 2003 UTC
# Line 1  Line 1 
1    2003-07-16  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/UI/messages.py (MAP_REPLACED): New message.
4    
5            * Thuban/UI/view.py (MapCanvas.SetMap): Issue MAP_REPLACED after
6            the new map has been assigned
7    
8            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages):
9            Delegate MAP_REPLACED to the canvas too
10    
11            * Thuban/UI/classifier.py (Classifier.__init__): Subscribe to
12            MAP_REPLACED so that we can close the dialog if a new map is set.
13            (Classifier.unsubscribe_messages): Unsubscribe from MAP_REPLACED
14            (Classifier.map_replaced): Handle MAP_REPLACED by closing the
15            dialog
16    
17    2003-07-14  Frank Koormann   <[email protected]>
18    
19            Backport from HEAD
20    
21            * Thuban/Model/load.py (SessionLoader.start_map): Encode map
22            title to latin1.  Fixes https://intevation.de/rt/webrt?serial_num=2013
23    
24            * test/test_load_0_8.py (TestUnicodeStrings): New, test load of
25            unicode strings from session file: session title, map title,
26            layer title and projection name.
27            
28    
29    2003-07-08  Bernhard Herzog  <[email protected]>
30    
31            Backport from HEAD
32    
33            * Thuban/Model/transientdb.py (TransientTableBase.Width): The type
34            constants in the column objects are the standard ones defined in
35            the table module.
36    
37            * test/test_transientdb.py
38            (TestTransientTable.test_transienttable_to_dbf): New. Test whether
39            exporting transient tables as DBF works. This should catch the bug
40            just fixed in TransientTableBase.Width.
41    
42    2003-07-04  Bernhard Herzog  <[email protected]>
43    
44            Backport from HEAD
45    
46            * Thuban/Model/table.py (_find_dbf_column_names): New. Helper
47            function for table_to_dbf
48            (table_to_dbf): Deal with names longer than the 10 character limit
49    
50            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): Add
51            doc-string
52            (TestTableToDBF.test_table_to_dbf_long_col_names): New test for
53            long column names
54    
55    2003-07-03  Bernhard Herzog  <[email protected]>
56    
57            Backport from HEAD
58    
59            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
60            Update doc-string
61            (TransientJoinedTable.create): Do not modify the column objects of
62            the input tables in place and copy all columns of the input tables
63            into the joined table after all.
64    
65            * test/test_transientdb.py
66            (TestTransientTable.test_transient_joined_table_same_column_name):
67            Update to reflect the new behavior
68            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
69            Update to reflect the new behavior
70            (TestTransientTable.test_transient_joined_table_name_collisions_dont_modify_in_place):
71            New test case for a bug which modified the column objects in place
72    
73    2003-07-01  Frank Koormann   <[email protected]>
74    
75            Partly backport from HEAD
76    
77            * test/test_transientdb.py
78            (TestTransientTable.test_transient_joined_table_same_column_name):
79            New. Test whether joining on columns with the same names in both
80            tables works.
81            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
82            New. Test join of two tables with partly equal column names.
83    
84            * Thuban/Model/transientdb.py (TransientJoinedTable.create): Make
85            sure to use the right internal names even when joining on field
86            with the same names in both tables. Also, detect duplicate names
87            in the joined table correctly.
88            If duplicates are found, append '_' (underscores) to the name
89            until it is unique.
90            Create always new internal names for the resulting table and reference
91            columns in the join statement with <table>.<column>
92    
93    2003-07-01  Frank Koormann   <[email protected]>
94    
95            Backport from HEAD
96    
97            * Thuban/UI/renderer.py (ExportRenderer.render_legend):
98            Reverse List of layers to render in same order as in desktop legend.
99    
100    2003-06-25  Jonathan Coles   <[email protected]>
101    
102            * Thuban/UI/classifier.py (Classifier.EditSymbol): The parent
103            of the SelectPropertiesDialog should be self so the window
104            appears on top.
105            (ClassGroupPropertiesCtrl.DoEdit): The parent
106            of the SelectPropertiesDialog should be self so the window
107            appears on top.
108    
109    2003-06-18  Frank Koormann  <[email protected]>
110    
111            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Apply conversion to
112            scale if projection is latlong to get better estimate.
113    
114    2003-06-17  Jonathan Coles   <[email protected]>
115                                                                                    
116            Backport from HEAD.
117    
118            The view should respond to layer projection
119            changed events to update the display. Changes to a projection
120            should not cause the map to be set to full extent.
121    
122            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
123            current_map_proj to remember the current map projection so that
124            when the projection changes we know what the previous projection
125            was.
126            (MapCanvas.SetMap): Unsubscribe and subscribe to
127            LAYER_PROJECTION_CHANGED events.
128            (MapCanvas.projection_changed): Split into two methods that respond
129            to map and layer projection changes.
130            (MapCanvas.map_projection_changed): New. Takes the current view and
131            projects it using the new projection. This does not cause the
132            map to be redrawn at full extent.
133            (MapCanvas.layer_projection_changed): New. Cause a redraw which
134            will draw each layer in its new projection.
135    
136    2003-06-16  Frank Koormann  <[email protected]>
137    
138            Fix problem of hidden properties dialog under windows after double
139            click on layer tree:
140            The tree control always gets an Expanded / Collapsed event after
141            the ItemActivated  on double click, which raises the main window again.         We add a second ItemActivated event to the queue, which simply
142            raises the already displayed window.
143    
144            * Thuban/UI/legend.py (LegendTree.__init__): Instance variable
145            raiseProperties initialized to prevent endless loops
146            (LegendTree._OnItemActivated): Depending on self.raiseProperties
147            simply raise the properties or open the dialog and issue a second
148            event.
149    
150    2003-06-16  Frank Koormann  <[email protected]>
151    
152            * Thuban/UI/view.py (MapCanvas.set_view_transform): Set max_scale to
153            2147483648.0 / max_len (which is sufficient for GREAT-ER).
154            For HEAD in the future a more flexible concept has to be developed
155            determining the rendering of "large" objects.
156    
157    2003-06-16  Jonathan Coles   <[email protected]>
158    
159            Backport from HEAD.
160    
161        Fix a problem under Windows whereby if the user double-clicks on a
162        layer in the legend that tree item will expand or collapse as well
163        as open the layer properties dialog. The state of the tree item
164        should not be affected.
165    
166        * Thuban/UI/legend.py (LegendTree.__init__): Add instance variable
167        preventExpandCollapse and subscribe to expanding and collapsing
168        events.
169        (LegendTree.OnItemExpandCollapse): New. Responds to expanding and
170        collapsing events and will veto the event if it has been triggered
171        by the user double clicking on a layer.
172        (LegendTree._OnItemActivated): Set preventExpandCollapse to indicate
173        that an expanding/collapsing event should be vetoed.
174            
175    2003-06-13  Bernhard Herzog  <[email protected]>
176    
177            Backport from HEAD.
178    
179            * Thuban/UI/classifier.py (Classifier.map_layers_removed)
180            (Classifier.layer_shapestore_replaced, Classifier.OnClose):
181            Unsubscribe the messages in OnClose and not in map_layers_removed
182            or layer_shapestore_replaced to make sure it always happens when
183            the dialog is closed.
184    
185    2003-06-13  Jonathan Coles   <[email protected]>
186    
187            [NOTE: This is a back-port from the current CVS head]
188    
189            This puts back a fix for Windows where a panel is needed so that
190            the background of the table view appears correctly.
191    
192            * Thuban/UI/tableview.py (TableFrame.__init__): Add a panel
193            object that can be used by derived classes to place any
194            controls (including the grid) onto.
195            (QueryTableFrame.__init__): Use the panel as the parent window
196            for all the controls. Reparent the grid so that the panel is
197            the parent. Call UpdateStatusText() to correctly initialize
198            the status bar.
199    
200            * Thuban/UI/dialogs.py (ThubanFrame): New: a class that inherits
201            from wxFrame (as opposed to wxDialog like the other classes)
202            but otherwise behaves like the other classes. This is needed
203            for the TableView which isn't really a dialog and needs to
204            have a status bar and control buttons.
205    
206            [NOTE: This is a back-port from the current CVS head]
207    
208            * Thuban/UI/tableview.py (TableGrid.__init__): Create an
209            instance variable to keep track of how many rows are selected.
210            Subscribe once to the the events we are interested in.
211            (ThubanGrid.OnRangeSelect): Only handle event if event handling
212            hasn't been turned off.
213            (ThubanGrid.OnSelectCell): Only handle event if event handling
214            hasn't been turned off.
215            (ThubanGrid.ToggleEventListeners): Rather than subscribe None
216            as an event listener (which changes the event handler stack)
217            simply set an instance variable to False. This is checked in
218            the event handlers.
219            (ThubanGrid.GetNumberSelected): Return the number of currently
220            selected rows.
221            (TableFrame): Inherit from ThubanFrame so we can have a
222            status bar and control buttons.
223            (QueryTableFrame.__init__): Create a status bar. Fixes RTbug #1942.
224            Explicitly set which items are selected in the operator choice and
225            action choice so there is always a valid selection. Fixes RTbug #1941.
226            Subscribe to grid cell selection events so we can update the
227            status bar.
228            (QueryTableFrame.UpdateStatusText): Update the status bar with
229            how many rows are in the grid, how many columns, and how many
230            rows are selected.
231            (QueryTableFrame.OnGridSelectRange, QueryTableFrame.OnGridSelectCell):
232            Call UpdateStatusText when cells are (de)selected.
233            (QueryTableFrame.OnQuery): Use the string value in the value
234            combo if either the selected item index is 0 or if the string
235            cannot be found in the predefined list (this happens if the
236            user changes the text). Fixes RTbug #1940.
237            Only turn off the grid event listeners if there a query comes
238            back with a none empty list of ids. in the case that the list
239            is empty this causes a grid.ClearSelection() call to actually
240            clear the grid selection which causes the selected items in
241            the map to be deselected. Fixes RTbug #1939.
242    
243    2003-06-13  Bernhard Herzog  <[email protected]>
244    
245            * Thuban/UI/identifyview.py (IdentifyView.__init__): Call
246            self.selected_shape with the current selection to make sure the
247            contents of the dialog are up to date when it's shown for the
248            first time.
249            The dialog used to work without this by luck. The recent fix to
250            the connector module 'broke' a 'feature' the identify view was
251            relying on, i.e that subscribing to a message in response to
252            receiving a message of that type would mean that the new
253            subscriber would also be called for the same message.
254    
255    2003-06-12  Jonathan Coles   <[email protected]>
256    
257            * Thuban/UI/legend.py (ScaleBarBitmap.__SetScale): Don't draw
258            the scalebar if the current map has no projection set.
259    
260            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): Set the
261            projfilepath label to just the basename of the projection file
262            rather than include the entire path.
263    
264    2003-06-11  Frank Koormann  <[email protected]>
265    
266            * Thuban/Lib/fileutil.py (get_application_dir): Minor stability
267            update.
268    
269    2003-06-11  Frank Koormann  <[email protected]>
270    
271            * Thuban/Lib/fileutil.py (get_application_dir): New function to
272            determine the absolute .thuban/thuban directory under
273            "posix" (os.expanduser) and "nt" (read AppData registry key).
274    
275            * Thuban/Model/resource.py: Use get_application_dir
276    
277            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
278            Use get_application_dir.
279    
280    2003-06-10  Bernhard Herzog  <[email protected]>
281    
282            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Subscribe to
283            the messages MAP_LAYERS_REMOVED messages
284            (LayerTableFrame.OnClose): Unsubscribe from it.
285            (LayerTableFrame.map_layers_removed): New. Receiver for
286            MAP_LAYERS_REMOVED. Close the dialog when the layer whose the
287            dialog is showing is removed.
288    
289    2003-06-10  Bernhard Herzog  <[email protected]>
290    
291            * Thuban/Lib/connector.py (Connector.Issue): Iterate over a copy
292            of the receivers list so that unsubscribing in a receiver doesn't
293            modify it while iterating over it.
294    
295            * test/test_connector.py
296            (ConnectorTest.test_disconnect_in_receiver): New. Test whether
297            unsubscribing in a receiver works correctly. See docstring for
298            details
299    
300    2003-06-10  Bernhard Herzog  <[email protected]>
301    
302            * Thuban/Model/messages.py (LAYER_SHAPESTORE_REPLACED): New
303            message.
304    
305            * Thuban/Model/layer.py (Layer.SetShapeStore): Send
306            LAYER_SHAPESTORE_REPLACED when the shapestore changes. A
307            LAYER_CHANGED will still be sent if the classification changes.
308    
309            * Thuban/UI/classifier.py (Classifier.__init__): Add the map as
310            parameter so we can subscribe to some of its messages
311            (Classifier.__init__): Subscribe to the map's MAP_LAYERS_REMOVED
312            and the layer's LAYER_SHAPESTORE_REPLACED
313            (Classifier.unsubscribe_messages): New. Unsubscribe from message
314            subscribed to in __init__
315            (Classifier.map_layers_removed)
316            (Classifier.layer_shapestore_replaced): receivers for the messages
317            subscribed to in __init__. Unsubscribe and close the dialog
318    
319            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): Pass
320            the map to the Classifier dialog
321    
322            * test/test_layer.py (SetShapeStoreTests): Derive from
323            SubscriberMixin as well so we can test messages
324            (SetShapeStoreTests.setUp): Subscribe to some of the layer's
325            messages
326            (SetShapeStoreTests.tearDown): Clear the messages again
327            (SetShapeStoreTests.test_sanity): Expand the doc-string and check
328            for the modified flag too
329            (SetShapeStoreTests.test_set_shape_store_modified_flag): New test
330            to check whether SetShapeStore sets the modified flag
331            (SetShapeStoreTests.test_set_shape_store_different_field_name)
332            (SetShapeStoreTests.test_set_shape_store_same_field)
333            (SetShapeStoreTests.test_set_shape_store_same_field_different_type):
334            Add tests for the messages. This checks both the new
335            LAYER_SHAPESTORE_REPLACED and the older LAYER_CHANGED
336    
337    2003-06-06  Jan-Oliver Wagner <[email protected]>
338    
339            * Thuban/UI/mainwindow.py: Improved and partly added help texts for
340            the menu items.
341    
342  2003-06-05  Frank Koormann  <[email protected]>  2003-06-05  Frank Koormann  <[email protected]>
343    
344          * Thuban/UI/identifyview.py (IdentifyView.__init__):          * Thuban/UI/identifyview.py (IdentifyView.__init__):

Legend:
Removed from v.1139  
changed lines
  Added in v.1444

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26