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

Legend:
Removed from v.1118  
changed lines
  Added in v.1472

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26