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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26