/[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 1067 by frank, Tue May 27 14:18:26 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]>
343    
344            * Thuban/UI/identifyview.py (IdentifyView.__init__):
345            Layout reimplemented without panel. Make life easier to fit the list
346            in the dialog.
347    
348    2003-06-05  Frank Koormann  <[email protected]>
349    
350            * Thuban/UI/projdialog.py (ProjFrame.__init__): Fill the projchoice
351            once on initialisation (Former implementation resulted in multiple
352            entries for each projection).
353            (ProjFrame.__FillAvailList): selectProj as second optional parameter,
354            if set, select the projection found under the specified name. This
355            overwrites any other selection estimate.
356            Removed projchoice filling from this method.
357            (ProjFrame._OnSave, ProjFrame._OnAddToList):
358            Updated call of ProjFrame.__FillAvailList
359            (LCCPanel._DoLayout): Moved parameter controls in more common order.
360    
361            * Resources/Projections/defaults.proj: Extended defaults representing
362            various common European projections.
363    
364    2003-06-05  Frank Koormann  <[email protected]>
365    
366            * Thuban/UI/identifyview.py (IdentifyView.__init__):
367            Use ListCtrl instead of GridCtrl
368    
369            * Thuban/Model/resource.py:
370            Guess location of .thuban directory from tempdir parent directory.
371    
372            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
373            Guess location of .thuban directory from tempdir parent directory.
374    
375    2003-06-04  Bernhard Herzog  <[email protected]>
376    
377            Do not cache the values returned by the tree widget's
378            GetFirstChild and GetNextChild methods because it led to lots of
379            segfaults. The new way requires more brute force but is more
380            reliable.
381    
382            * Thuban/UI/legend.py (LegendTree.__init__): Remove instance
383            variable layer2id
384            (LegendTree.find_layer): New method to do with brute force what
385            layer2id tried to accomplish
386            (LegendTree._OnMsgLayerChanged)
387            (LegendTree._OnMsgLayerTitleChanged, LegendTree.__ShowHideLayer):
388            Use find_layer instead of layer2id
389            (LegendTree.__RemoveLayer, LegendTree.__AddLayer): No need to
390            update layer2id anymore
391            (LegendTree._OnMsgMapLayersRemoved)
392            (LegendTree._OnMsgMapLayersAdded): Get by without layer2id.
393    
394    2003-06-03  Thomas Koester  <[email protected]>
395    
396            * Thuban/Model/classgen.py (GenQuantiles0): New function.
397    
398    2003-06-02  Bernhard Herzog  <[email protected]>
399    
400            * Thuban/UI/mainwindow.py (layer_rename command, table_rename command):
401            New commands.
402            (main_menu): Add the new commands.
403            (MainWindow.TableRename): New. Implementation of the table_rename
404            command.
405            (MainWindow.RenameLayer): New. Implementation of the layer_rename
406            command.
407    
408            * Thuban/Model/session.py (Session.AddTable): call self.changed to
409            set the modified flag
410    
411            * test/test_session.py (TestSessionSimple.test_add_table): Test
412            whether the modified flag is set properly
413    
414            * Thuban/Model/base.py (TitledObject.SetTitle): Call changed
415            instead of issue so that the modified flags get updated.
416    
417            * test/test_base.py (SomeTitledObject): Derive from Modifiable
418            instead of Publisher to reflect reality better and to accomodate
419            the fact that SetTitle now calls changed instead of issue
420    
421    2003-06-02  Bernhard Herzog  <[email protected]>
422    
423            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Resource
424            acquisition has to happen before the try in a try-finally.
425    
426    2003-06-02  Bernhard Herzog  <[email protected]>
427    
428            * Thuban/UI/legend.py (LegendTree._OnMsgMapLayersRemoved): It's
429            possible that a layer is removed that is not currently selected in
430            the legend so don't check for this.
431    
432    2003-05-30  Bernhard Herzog  <[email protected]>
433    
434            * Thuban/Model/layer.py (Layer.Destroy): Set all instance
435            variables to None that have direct or indirect references to
436            shapefiles or dbf files to make sure that they do go away and the
437            files are closed.
438    
439    2003-05-30  Bernhard Herzog  <[email protected]>
440    
441            * Thuban/UI/legend.py (LegendTree.GetRootItem): Reset
442            availImgListIndices when a new image list is created
443            
444    2003-05-30  Bernhard Herzog  <[email protected]>
445    
446            * Thuban/UI/legend.py (LegendTree.__init__): New instance variable
447            changing_selection to indicate whether the LegendTree code itself
448            is currently changing the selection
449            (LegendTree.normalize_selection): New method to normalize the
450            selection by selecting the layer item even if the user clicked on
451            the classification.
452            (LegendTree._OnSelChanged): normalize the selection. This works
453            around a bug in wx which doesn't keep track of the selection
454            properly when subtrees are deleted.
455    
456    2003-05-30  Bernhard Herzog  <[email protected]>
457    
458            * Thuban/UI/view.py (MapCanvas.set_view_transform): Limit the
459            maximum and minimum scale factors.
460    
461            * test/test_classgen.py (ClassGenTest.test): Update to reflect the
462            changes in classgen.py
463    
464    2003-05-30  Jonathan Coles   <[email protected]>
465    
466            * Thuban/Model/classgen.py: Remove ClassGenerator class but make
467            all the methods functions. Fixes RTBug #1903.
468    
469            * Thuban/Model/map.py (Map.TopLayer, Map.BottomLayer): Renamed
470            to MoveLayerToTop and MoveLayerToBottom respectively. Fixes
471            RTBug #1907.
472    
473            * Thuban/UI/classgen.py: Use classgen functions that were part
474            of the ClassGenerator class. Put try/finally blocks around
475            code that uses wxBeginBusyCursor()/wxEndBusyCursor(). Fixes
476            RTBug #1904.
477    
478            * Thuban/UI/classifier.py: Remove unused import of ClassGenerator.
479    
480            * Thuban/UI/legend.py: The legend was cleared and repopulated any
481            time something changed which caused some state to be lost such
482            as which children were expanded or collapsed. Fixes RTBug #1901.
483            (LegendTree._OnMsgMapLayersAdded): Add only new layers.
484            (LegendTree.__OnMsgMapLayersRemoved): Remove layers that exist in
485            the legend but not in the map.
486            (LegendTree.__FillTree): Move main functionality out into smaller
487            methods that can be used by other methods.
488            (LegendTree.__FillTreeLayer): Reuse old slots in the image list
489            if they are available.
490            (LegendTree.DeleteAllItems): Renamed from __DeleteAllItems so
491            that we override the wxTreeCtrl method. Iterate over children
492            and call __RemoveLayer.
493            (LegendTree.__AddLayer): New. Add a new layer to the legend.
494            (LegendTree.__RemoveLayer): Remove a layer from the legend.
495            (LegendTree.DeleteChildren): New, overrides wxTreeCtrl method.
496            Should only be called with the id of a layer branch.
497            (LegendTree.GetRootItem): New, overrides wxTreeCtrl method.
498            Returns the root item or creates one if necessary.
499    
500            * Thuban/UI/renderer.py (MapRenderer.draw_raster_layer): Call
501            ProjectRasterFile with tuple arguments instead of strings.
502    
503            * Thuban/UI/tableview.py (QueryTableFrame.OnQuery): Wrap code
504            with try/finally. Fixes RTBug #1904.
505    
506            * Thuban/UI/view.py (MapCanvas.OnPaint): Wrap code
507            with try/finally. Fixes RTBug #1904.
508            (MapCanvas.FitSelectedToWindow): If a single point is selected
509            simply center it on the display. Fixes RTBug #1849.
510    
511            * extensions/thuban/gdalwarp.cpp: Removed code that allowed gdalwarp
512            to be compiled as a standalone app. Now the code can only be
513            called from Python which simplifies the parameter passing.
514            (ProjectRasterFile): Handle Python arguments. Remove code that
515            checks for a destination dataset. Add more clean up code.
516    
517            * test/test_map.py (TestMapWithContents.test_raise_layer_top,
518            TestMapWithContents.test_lower_layer_bottom):
519            Test Map.MoveLayerToTop() and Map.MoveLayerToBottom() respectively.
520            Fixes RTBug #1907.
521    
522            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Apply a full
523            extent to the map when the legend is toggled. Fixes RTBug #1881.
524    
525    2003-05-29  Jan-Oliver Wagner <[email protected]>
526    
527            * Thuban/UI/tableview.py (LayerTableFrame.OnClose): Bug-fix: Now
528            unsubscribes all that is subcribed in __init__.
529    
530    2003-05-28  Bernhard Herzog  <[email protected]>
531    
532            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer)
533            (MainWindow.CanDuplicateLayer): New methods to implement the
534            Layer/Duplicate command.
535            (layer_duplicate command): New.
536            (main_menu): Add layer_duplicate to the Layer menu.
537    
538    2003-05-28  Bernhard Herzog  <[email protected]>
539    
540            * Thuban/UI/tableview.py (NullRenderer.Draw): New. Our own
541            renderer so that NULL/None values get displayed differently (by a
542            gray rectangle).
543            (TableGrid.__init__): Override the default renderers
544    
545    2003-05-28  Bernhard Herzog  <[email protected]>
546    
547            * Thuban/Model/layer.py (Layer.SetShapeStore): Set the
548            classification to "None" if the type of the field has changed.
549    
550            * test/test_layer.py (SetShapeStoreTests): New. Class with a few
551            test for the Layer.SetShapeStore method
552    
553    2003-05-28  Jan-Oliver Wagner <[email protected]>
554    
555            * Thuban/Model/layer.py (Layer.TreeInfo): Fixed a bug (a layer
556            does not necessarily have a filename).
557    
558    2003-05-28  Jan-Oliver Wagner <[email protected]>
559    
560            * Thuban/UI/mainwindow.py (MainWindow.TableClose, MainWindow.TableShow):
561            sort the selection list for the dialog.
562    
563    2003-05-28  Frank Koormann  <[email protected]>
564    
565            * extensions/thuban/wxproj.cpp
566            (project_point): Removed cast to int for projected point coordinates.
567            (shape_centroid): Return last point if all polygon vertices fall
568            to one point.
569    
570    2003-05-28  Bernhard Herzog  <[email protected]>
571    
572            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
573            with layers that don't have shapestores, i.e. raster layers.
574    
575    2003-05-28  Bernhard Herzog  <[email protected]>
576    
577            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
578            when determining the title from the filename.
579    
580            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
581            reflect changes in the way the title is derived from the filename
582    
583    2003-05-28  Frank Koormann  <[email protected]>
584    
585            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
586            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
587    
588    2003-05-27  Bernhard Herzog  <[email protected]>
589    
590            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
591            delegate SelectedLayer.
592            (MainWindow.LayerUnjoinTable): Implement.
593            (_can_unjoin): New. Helper function for the sensitivity of the
594            layer/unjoin command.
595    
596            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
597            (DerivedShapeStore.OrigShapeStore): New. Return the original
598            shapestore. Used to figure out how to unjoin.
599            (DerivedShapeStore.Shapefile): Fix a typo.
600    
601    2003-05-27  Bernhard Herzog  <[email protected]>
602    
603            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
604            well
605            (JoinDialog.__init__): Use the layer parameter and only build the
606            left choice when a layer is given
607            (JoinDialog.OnJoin): Handle layer joins as well
608            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
609            that the user selects the "Select..." item. The sensitivitly
610            updating is now in update_sensitivity
611            (JoinDialog.y): New method to refactor the sensitivity update of
612            the join button into its own method.
613    
614            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
615    
616    2003-05-27  Bernhard Herzog  <[email protected]>
617    
618            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
619            iff there are unreferenced tables in the session
620    
621    2003-05-27  Bernhard Herzog  <[email protected]>
622    
623            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
624    
625            * Thuban/Model/session.py (Session.UnreferencedTables): New method
626            to return tables that are not referenced by other tables or shape
627            stores and can be removed.
628            (Session.RemoveTable): Issue a TABLE_REMOVED message after
629            removing the table
630    
631            * Thuban/UI/mainwindow.py: Remove unused imports
632            (MainWindow.TableClose): Implement.
633    
634            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
635            messages so that the frame will be automatically closed when a new
636            session is opened or the table is removed.
637            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
638            __init__
639            (TableFrame.close_on_session_replaced)
640            (TableFrame.close_on_table_removed): New. Subscribers that close
641            the window
642    
643            * test/test_session.py (TestSessionMessages.test_remove_table)
644            (TestSessionSimple.test_remove_table): Move the test to
645            TestSessionSimple and add test for the TABLE_REMOVED message
646            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
647            (TestSessionSimple.test_unreferenced_tables) New. Test for the
648            UnreferencedTables method.
649            (UnreferencedTablesTests): New. Class with some more sophisticated
650            tests for UnreferencedTables.
651    
652  2003-05-27  Frank Koormann  <[email protected]>  2003-05-27  Frank Koormann  <[email protected]>
653    
654          * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"          * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
# Line 11  Line 662 
662    
663  2003-05-27  Jan-Oliver Wagner <[email protected]>  2003-05-27  Jan-Oliver Wagner <[email protected]>
664    
665          * test/test_menu.py (MenuTest.test): Added test for Menu.RemoveItem().          * test/test_menu.py (MenuTest.test): Added test for
666            Menu.RemoveItem().
667    
668          * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from the menu.          * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
669            the menu.
670    
671  2003-05-27  Frank Koormann  <[email protected]>  2003-05-27  Frank Koormann  <[email protected]>
672                    

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26