/[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 1112 by bh, Fri May 30 09:55:04 2003 UTC branches/greater-ms3/thuban/ChangeLog revision 1366 by bh, Thu Jul 3 13:24:28 2003 UTC
# Line 1  Line 1 
1    2003-07-03  Bernhard Herzog  <[email protected]>
2    
3            Backport from HEAD
4    
5            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
6            Update doc-string
7            (TransientJoinedTable.create): Do not modify the column objects of
8            the input tables in place and copy all columns of the input tables
9            into the joined table after all.
10    
11            * test/test_transientdb.py
12            (TestTransientTable.test_transient_joined_table_same_column_name):
13            Update to reflect the new behavior
14            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
15            Update to reflect the new behavior
16            (TestTransientTable.test_transient_joined_table_name_collisions_dont_modify_in_place):
17            New test case for a bug which modified the column objects in place
18    
19    2003-07-01  Frank Koormann   <[email protected]>
20    
21            Backport from HEAD
22    
23            * Thuban/UI/renderer.py (ExportRenderer.render_legend):
24            Reverse List of layers to render in same order as in desktop legend.
25    
26    2003-06-25  Jonathan Coles   <[email protected]>
27    
28            * Thuban/UI/classifier.py (Classifier.EditSymbol): The parent
29            of the SelectPropertiesDialog should be self so the window
30            appears on top.
31            (ClassGroupPropertiesCtrl.DoEdit): The parent
32            of the SelectPropertiesDialog should be self so the window
33            appears on top.
34    
35    2003-06-18  Frank Koormann  <[email protected]>
36    
37            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Apply conversion to
38            scale if projection is latlong to get better estimate.
39    
40    2003-06-17  Jonathan Coles   <[email protected]>
41                                                                                    
42            Backport from HEAD.
43    
44            The view should respond to layer projection
45            changed events to update the display. Changes to a projection
46            should not cause the map to be set to full extent.
47    
48            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
49            current_map_proj to remember the current map projection so that
50            when the projection changes we know what the previous projection
51            was.
52            (MapCanvas.SetMap): Unsubscribe and subscribe to
53            LAYER_PROJECTION_CHANGED events.
54            (MapCanvas.projection_changed): Split into two methods that respond
55            to map and layer projection changes.
56            (MapCanvas.map_projection_changed): New. Takes the current view and
57            projects it using the new projection. This does not cause the
58            map to be redrawn at full extent.
59            (MapCanvas.layer_projection_changed): New. Cause a redraw which
60            will draw each layer in its new projection.
61    
62    2003-06-16  Frank Koormann  <[email protected]>
63    
64            Fix problem of hidden properties dialog under windows after double
65            click on layer tree:
66            The tree control always gets an Expanded / Collapsed event after
67            the ItemActivated  on double click, which raises the main window again.         We add a second ItemActivated event to the queue, which simply
68            raises the already displayed window.
69    
70            * Thuban/UI/legend.py (LegendTree.__init__): Instance variable
71            raiseProperties initialized to prevent endless loops
72            (LegendTree._OnItemActivated): Depending on self.raiseProperties
73            simply raise the properties or open the dialog and issue a second
74            event.
75    
76    2003-06-16  Frank Koormann  <[email protected]>
77    
78            * Thuban/UI/view.py (MapCanvas.set_view_transform): Set max_scale to
79            2147483648.0 / max_len (which is sufficient for GREAT-ER).
80            For HEAD in the future a more flexible concept has to be developed
81            determining the rendering of "large" objects.
82    
83    2003-06-16  Jonathan Coles   <[email protected]>
84    
85            Backport from HEAD.
86    
87        Fix a problem under Windows whereby if the user double-clicks on a
88        layer in the legend that tree item will expand or collapse as well
89        as open the layer properties dialog. The state of the tree item
90        should not be affected.
91    
92        * Thuban/UI/legend.py (LegendTree.__init__): Add instance variable
93        preventExpandCollapse and subscribe to expanding and collapsing
94        events.
95        (LegendTree.OnItemExpandCollapse): New. Responds to expanding and
96        collapsing events and will veto the event if it has been triggered
97        by the user double clicking on a layer.
98        (LegendTree._OnItemActivated): Set preventExpandCollapse to indicate
99        that an expanding/collapsing event should be vetoed.
100            
101    2003-06-13  Bernhard Herzog  <[email protected]>
102    
103            Backport from HEAD.
104    
105            * Thuban/UI/classifier.py (Classifier.map_layers_removed)
106            (Classifier.layer_shapestore_replaced, Classifier.OnClose):
107            Unsubscribe the messages in OnClose and not in map_layers_removed
108            or layer_shapestore_replaced to make sure it always happens when
109            the dialog is closed.
110    
111    2003-06-13  Jonathan Coles   <[email protected]>
112    
113            [NOTE: This is a back-port from the current CVS head]
114    
115            This puts back a fix for Windows where a panel is needed so that
116            the background of the table view appears correctly.
117    
118            * Thuban/UI/tableview.py (TableFrame.__init__): Add a panel
119            object that can be used by derived classes to place any
120            controls (including the grid) onto.
121            (QueryTableFrame.__init__): Use the panel as the parent window
122            for all the controls. Reparent the grid so that the panel is
123            the parent. Call UpdateStatusText() to correctly initialize
124            the status bar.
125    
126            * Thuban/UI/dialogs.py (ThubanFrame): New: a class that inherits
127            from wxFrame (as opposed to wxDialog like the other classes)
128            but otherwise behaves like the other classes. This is needed
129            for the TableView which isn't really a dialog and needs to
130            have a status bar and control buttons.
131    
132            [NOTE: This is a back-port from the current CVS head]
133    
134            * Thuban/UI/tableview.py (TableGrid.__init__): Create an
135            instance variable to keep track of how many rows are selected.
136            Subscribe once to the the events we are interested in.
137            (ThubanGrid.OnRangeSelect): Only handle event if event handling
138            hasn't been turned off.
139            (ThubanGrid.OnSelectCell): Only handle event if event handling
140            hasn't been turned off.
141            (ThubanGrid.ToggleEventListeners): Rather than subscribe None
142            as an event listener (which changes the event handler stack)
143            simply set an instance variable to False. This is checked in
144            the event handlers.
145            (ThubanGrid.GetNumberSelected): Return the number of currently
146            selected rows.
147            (TableFrame): Inherit from ThubanFrame so we can have a
148            status bar and control buttons.
149            (QueryTableFrame.__init__): Create a status bar. Fixes RTbug #1942.
150            Explicitly set which items are selected in the operator choice and
151            action choice so there is always a valid selection. Fixes RTbug #1941.
152            Subscribe to grid cell selection events so we can update the
153            status bar.
154            (QueryTableFrame.UpdateStatusText): Update the status bar with
155            how many rows are in the grid, how many columns, and how many
156            rows are selected.
157            (QueryTableFrame.OnGridSelectRange, QueryTableFrame.OnGridSelectCell):
158            Call UpdateStatusText when cells are (de)selected.
159            (QueryTableFrame.OnQuery): Use the string value in the value
160            combo if either the selected item index is 0 or if the string
161            cannot be found in the predefined list (this happens if the
162            user changes the text). Fixes RTbug #1940.
163            Only turn off the grid event listeners if there a query comes
164            back with a none empty list of ids. in the case that the list
165            is empty this causes a grid.ClearSelection() call to actually
166            clear the grid selection which causes the selected items in
167            the map to be deselected. Fixes RTbug #1939.
168    
169    2003-06-13  Bernhard Herzog  <[email protected]>
170    
171            * Thuban/UI/identifyview.py (IdentifyView.__init__): Call
172            self.selected_shape with the current selection to make sure the
173            contents of the dialog are up to date when it's shown for the
174            first time.
175            The dialog used to work without this by luck. The recent fix to
176            the connector module 'broke' a 'feature' the identify view was
177            relying on, i.e that subscribing to a message in response to
178            receiving a message of that type would mean that the new
179            subscriber would also be called for the same message.
180    
181    2003-06-12  Jonathan Coles   <[email protected]>
182    
183            * Thuban/UI/legend.py (ScaleBarBitmap.__SetScale): Don't draw
184            the scalebar if the current map has no projection set.
185    
186            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): Set the
187            projfilepath label to just the basename of the projection file
188            rather than include the entire path.
189    
190    2003-06-11  Frank Koormann  <[email protected]>
191    
192            * Thuban/Lib/fileutil.py (get_application_dir): Minor stability
193            update.
194    
195    2003-06-11  Frank Koormann  <[email protected]>
196    
197            * Thuban/Lib/fileutil.py (get_application_dir): New function to
198            determine the absolute .thuban/thuban directory under
199            "posix" (os.expanduser) and "nt" (read AppData registry key).
200    
201            * Thuban/Model/resource.py: Use get_application_dir
202    
203            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
204            Use get_application_dir.
205    
206    2003-06-10  Bernhard Herzog  <[email protected]>
207    
208            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Subscribe to
209            the messages MAP_LAYERS_REMOVED messages
210            (LayerTableFrame.OnClose): Unsubscribe from it.
211            (LayerTableFrame.map_layers_removed): New. Receiver for
212            MAP_LAYERS_REMOVED. Close the dialog when the layer whose the
213            dialog is showing is removed.
214    
215    2003-06-10  Bernhard Herzog  <[email protected]>
216    
217            * Thuban/Lib/connector.py (Connector.Issue): Iterate over a copy
218            of the receivers list so that unsubscribing in a receiver doesn't
219            modify it while iterating over it.
220    
221            * test/test_connector.py
222            (ConnectorTest.test_disconnect_in_receiver): New. Test whether
223            unsubscribing in a receiver works correctly. See docstring for
224            details
225    
226    2003-06-10  Bernhard Herzog  <[email protected]>
227    
228            * Thuban/Model/messages.py (LAYER_SHAPESTORE_REPLACED): New
229            message.
230    
231            * Thuban/Model/layer.py (Layer.SetShapeStore): Send
232            LAYER_SHAPESTORE_REPLACED when the shapestore changes. A
233            LAYER_CHANGED will still be sent if the classification changes.
234    
235            * Thuban/UI/classifier.py (Classifier.__init__): Add the map as
236            parameter so we can subscribe to some of its messages
237            (Classifier.__init__): Subscribe to the map's MAP_LAYERS_REMOVED
238            and the layer's LAYER_SHAPESTORE_REPLACED
239            (Classifier.unsubscribe_messages): New. Unsubscribe from message
240            subscribed to in __init__
241            (Classifier.map_layers_removed)
242            (Classifier.layer_shapestore_replaced): receivers for the messages
243            subscribed to in __init__. Unsubscribe and close the dialog
244    
245            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): Pass
246            the map to the Classifier dialog
247    
248            * test/test_layer.py (SetShapeStoreTests): Derive from
249            SubscriberMixin as well so we can test messages
250            (SetShapeStoreTests.setUp): Subscribe to some of the layer's
251            messages
252            (SetShapeStoreTests.tearDown): Clear the messages again
253            (SetShapeStoreTests.test_sanity): Expand the doc-string and check
254            for the modified flag too
255            (SetShapeStoreTests.test_set_shape_store_modified_flag): New test
256            to check whether SetShapeStore sets the modified flag
257            (SetShapeStoreTests.test_set_shape_store_different_field_name)
258            (SetShapeStoreTests.test_set_shape_store_same_field)
259            (SetShapeStoreTests.test_set_shape_store_same_field_different_type):
260            Add tests for the messages. This checks both the new
261            LAYER_SHAPESTORE_REPLACED and the older LAYER_CHANGED
262    
263    2003-06-06  Jan-Oliver Wagner <[email protected]>
264    
265            * Thuban/UI/mainwindow.py: Improved and partly added help texts for
266            the menu items.
267    
268    2003-06-05  Frank Koormann  <[email protected]>
269    
270            * Thuban/UI/identifyview.py (IdentifyView.__init__):
271            Layout reimplemented without panel. Make life easier to fit the list
272            in the dialog.
273    
274    2003-06-05  Frank Koormann  <[email protected]>
275    
276            * Thuban/UI/projdialog.py (ProjFrame.__init__): Fill the projchoice
277            once on initialisation (Former implementation resulted in multiple
278            entries for each projection).
279            (ProjFrame.__FillAvailList): selectProj as second optional parameter,
280            if set, select the projection found under the specified name. This
281            overwrites any other selection estimate.
282            Removed projchoice filling from this method.
283            (ProjFrame._OnSave, ProjFrame._OnAddToList):
284            Updated call of ProjFrame.__FillAvailList
285            (LCCPanel._DoLayout): Moved parameter controls in more common order.
286    
287            * Resources/Projections/defaults.proj: Extended defaults representing
288            various common European projections.
289    
290    2003-06-05  Frank Koormann  <[email protected]>
291    
292            * Thuban/UI/identifyview.py (IdentifyView.__init__):
293            Use ListCtrl instead of GridCtrl
294    
295            * Thuban/Model/resource.py:
296            Guess location of .thuban directory from tempdir parent directory.
297    
298            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
299            Guess location of .thuban directory from tempdir parent directory.
300    
301    2003-06-04  Bernhard Herzog  <[email protected]>
302    
303            Do not cache the values returned by the tree widget's
304            GetFirstChild and GetNextChild methods because it led to lots of
305            segfaults. The new way requires more brute force but is more
306            reliable.
307    
308            * Thuban/UI/legend.py (LegendTree.__init__): Remove instance
309            variable layer2id
310            (LegendTree.find_layer): New method to do with brute force what
311            layer2id tried to accomplish
312            (LegendTree._OnMsgLayerChanged)
313            (LegendTree._OnMsgLayerTitleChanged, LegendTree.__ShowHideLayer):
314            Use find_layer instead of layer2id
315            (LegendTree.__RemoveLayer, LegendTree.__AddLayer): No need to
316            update layer2id anymore
317            (LegendTree._OnMsgMapLayersRemoved)
318            (LegendTree._OnMsgMapLayersAdded): Get by without layer2id.
319    
320    2003-06-03  Thomas Koester  <[email protected]>
321    
322            * Thuban/Model/classgen.py (GenQuantiles0): New function.
323    
324    2003-06-02  Bernhard Herzog  <[email protected]>
325    
326            * Thuban/UI/mainwindow.py (layer_rename command, table_rename command):
327            New commands.
328            (main_menu): Add the new commands.
329            (MainWindow.TableRename): New. Implementation of the table_rename
330            command.
331            (MainWindow.RenameLayer): New. Implementation of the layer_rename
332            command.
333    
334            * Thuban/Model/session.py (Session.AddTable): call self.changed to
335            set the modified flag
336    
337            * test/test_session.py (TestSessionSimple.test_add_table): Test
338            whether the modified flag is set properly
339    
340            * Thuban/Model/base.py (TitledObject.SetTitle): Call changed
341            instead of issue so that the modified flags get updated.
342    
343            * test/test_base.py (SomeTitledObject): Derive from Modifiable
344            instead of Publisher to reflect reality better and to accomodate
345            the fact that SetTitle now calls changed instead of issue
346    
347    2003-06-02  Bernhard Herzog  <[email protected]>
348    
349            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Resource
350            acquisition has to happen before the try in a try-finally.
351    
352    2003-06-02  Bernhard Herzog  <[email protected]>
353    
354            * Thuban/UI/legend.py (LegendTree._OnMsgMapLayersRemoved): It's
355            possible that a layer is removed that is not currently selected in
356            the legend so don't check for this.
357    
358    2003-05-30  Bernhard Herzog  <[email protected]>
359    
360            * Thuban/Model/layer.py (Layer.Destroy): Set all instance
361            variables to None that have direct or indirect references to
362            shapefiles or dbf files to make sure that they do go away and the
363            files are closed.
364    
365    2003-05-30  Bernhard Herzog  <[email protected]>
366    
367            * Thuban/UI/legend.py (LegendTree.GetRootItem): Reset
368            availImgListIndices when a new image list is created
369            
370    2003-05-30  Bernhard Herzog  <[email protected]>
371    
372            * Thuban/UI/legend.py (LegendTree.__init__): New instance variable
373            changing_selection to indicate whether the LegendTree code itself
374            is currently changing the selection
375            (LegendTree.normalize_selection): New method to normalize the
376            selection by selecting the layer item even if the user clicked on
377            the classification.
378            (LegendTree._OnSelChanged): normalize the selection. This works
379            around a bug in wx which doesn't keep track of the selection
380            properly when subtrees are deleted.
381    
382  2003-05-30  Bernhard Herzog  <[email protected]>  2003-05-30  Bernhard Herzog  <[email protected]>
383    
384          * Thuban/UI/view.py (MapCanvas.set_view_transform): Limit the          * Thuban/UI/view.py (MapCanvas.set_view_transform): Limit the

Legend:
Removed from v.1112  
changed lines
  Added in v.1366

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26