/[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 1062 by jan, Tue May 27 13:11:40 2003 UTC branches/greater-ms3/thuban/ChangeLog revision 1414 by frank, Mon Jul 14 10:19:25 2003 UTC
# Line 1  Line 1 
1    2003-07-14  Frank Koormann   <[email protected]>
2    
3            Backport from HEAD
4    
5            * Thuban/Model/load.py (SessionLoader.start_map): Encode map
6            title to latin1.  Fixes https://intevation.de/rt/webrt?serial_num=2013
7    
8            * test/test_load_0_8.py (TestUnicodeStrings): New, test load of
9            unicode strings from session file: session title, map title,
10            layer title and projection name.
11            
12    
13    2003-07-08  Bernhard Herzog  <[email protected]>
14    
15            Backport from HEAD
16    
17            * Thuban/Model/transientdb.py (TransientTableBase.Width): The type
18            constants in the column objects are the standard ones defined in
19            the table module.
20    
21            * test/test_transientdb.py
22            (TestTransientTable.test_transienttable_to_dbf): New. Test whether
23            exporting transient tables as DBF works. This should catch the bug
24            just fixed in TransientTableBase.Width.
25    
26    2003-07-04  Bernhard Herzog  <[email protected]>
27    
28            Backport from HEAD
29    
30            * Thuban/Model/table.py (_find_dbf_column_names): New. Helper
31            function for table_to_dbf
32            (table_to_dbf): Deal with names longer than the 10 character limit
33    
34            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): Add
35            doc-string
36            (TestTableToDBF.test_table_to_dbf_long_col_names): New test for
37            long column names
38    
39    2003-07-03  Bernhard Herzog  <[email protected]>
40    
41            Backport from HEAD
42    
43            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
44            Update doc-string
45            (TransientJoinedTable.create): Do not modify the column objects of
46            the input tables in place and copy all columns of the input tables
47            into the joined table after all.
48    
49            * test/test_transientdb.py
50            (TestTransientTable.test_transient_joined_table_same_column_name):
51            Update to reflect the new behavior
52            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
53            Update to reflect the new behavior
54            (TestTransientTable.test_transient_joined_table_name_collisions_dont_modify_in_place):
55            New test case for a bug which modified the column objects in place
56    
57    2003-07-01  Frank Koormann   <[email protected]>
58    
59            Partly backport from HEAD
60    
61            * test/test_transientdb.py
62            (TestTransientTable.test_transient_joined_table_same_column_name):
63            New. Test whether joining on columns with the same names in both
64            tables works.
65            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
66            New. Test join of two tables with partly equal column names.
67    
68            * Thuban/Model/transientdb.py (TransientJoinedTable.create): Make
69            sure to use the right internal names even when joining on field
70            with the same names in both tables. Also, detect duplicate names
71            in the joined table correctly.
72            If duplicates are found, append '_' (underscores) to the name
73            until it is unique.
74            Create always new internal names for the resulting table and reference
75            columns in the join statement with <table>.<column>
76    
77    2003-07-01  Frank Koormann   <[email protected]>
78    
79            Backport from HEAD
80    
81            * Thuban/UI/renderer.py (ExportRenderer.render_legend):
82            Reverse List of layers to render in same order as in desktop legend.
83    
84    2003-06-25  Jonathan Coles   <[email protected]>
85    
86            * Thuban/UI/classifier.py (Classifier.EditSymbol): The parent
87            of the SelectPropertiesDialog should be self so the window
88            appears on top.
89            (ClassGroupPropertiesCtrl.DoEdit): The parent
90            of the SelectPropertiesDialog should be self so the window
91            appears on top.
92    
93    2003-06-18  Frank Koormann  <[email protected]>
94    
95            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Apply conversion to
96            scale if projection is latlong to get better estimate.
97    
98    2003-06-17  Jonathan Coles   <[email protected]>
99                                                                                    
100            Backport from HEAD.
101    
102            The view should respond to layer projection
103            changed events to update the display. Changes to a projection
104            should not cause the map to be set to full extent.
105    
106            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
107            current_map_proj to remember the current map projection so that
108            when the projection changes we know what the previous projection
109            was.
110            (MapCanvas.SetMap): Unsubscribe and subscribe to
111            LAYER_PROJECTION_CHANGED events.
112            (MapCanvas.projection_changed): Split into two methods that respond
113            to map and layer projection changes.
114            (MapCanvas.map_projection_changed): New. Takes the current view and
115            projects it using the new projection. This does not cause the
116            map to be redrawn at full extent.
117            (MapCanvas.layer_projection_changed): New. Cause a redraw which
118            will draw each layer in its new projection.
119    
120    2003-06-16  Frank Koormann  <[email protected]>
121    
122            Fix problem of hidden properties dialog under windows after double
123            click on layer tree:
124            The tree control always gets an Expanded / Collapsed event after
125            the ItemActivated  on double click, which raises the main window again.         We add a second ItemActivated event to the queue, which simply
126            raises the already displayed window.
127    
128            * Thuban/UI/legend.py (LegendTree.__init__): Instance variable
129            raiseProperties initialized to prevent endless loops
130            (LegendTree._OnItemActivated): Depending on self.raiseProperties
131            simply raise the properties or open the dialog and issue a second
132            event.
133    
134    2003-06-16  Frank Koormann  <[email protected]>
135    
136            * Thuban/UI/view.py (MapCanvas.set_view_transform): Set max_scale to
137            2147483648.0 / max_len (which is sufficient for GREAT-ER).
138            For HEAD in the future a more flexible concept has to be developed
139            determining the rendering of "large" objects.
140    
141    2003-06-16  Jonathan Coles   <[email protected]>
142    
143            Backport from HEAD.
144    
145        Fix a problem under Windows whereby if the user double-clicks on a
146        layer in the legend that tree item will expand or collapse as well
147        as open the layer properties dialog. The state of the tree item
148        should not be affected.
149    
150        * Thuban/UI/legend.py (LegendTree.__init__): Add instance variable
151        preventExpandCollapse and subscribe to expanding and collapsing
152        events.
153        (LegendTree.OnItemExpandCollapse): New. Responds to expanding and
154        collapsing events and will veto the event if it has been triggered
155        by the user double clicking on a layer.
156        (LegendTree._OnItemActivated): Set preventExpandCollapse to indicate
157        that an expanding/collapsing event should be vetoed.
158            
159    2003-06-13  Bernhard Herzog  <[email protected]>
160    
161            Backport from HEAD.
162    
163            * Thuban/UI/classifier.py (Classifier.map_layers_removed)
164            (Classifier.layer_shapestore_replaced, Classifier.OnClose):
165            Unsubscribe the messages in OnClose and not in map_layers_removed
166            or layer_shapestore_replaced to make sure it always happens when
167            the dialog is closed.
168    
169    2003-06-13  Jonathan Coles   <[email protected]>
170    
171            [NOTE: This is a back-port from the current CVS head]
172    
173            This puts back a fix for Windows where a panel is needed so that
174            the background of the table view appears correctly.
175    
176            * Thuban/UI/tableview.py (TableFrame.__init__): Add a panel
177            object that can be used by derived classes to place any
178            controls (including the grid) onto.
179            (QueryTableFrame.__init__): Use the panel as the parent window
180            for all the controls. Reparent the grid so that the panel is
181            the parent. Call UpdateStatusText() to correctly initialize
182            the status bar.
183    
184            * Thuban/UI/dialogs.py (ThubanFrame): New: a class that inherits
185            from wxFrame (as opposed to wxDialog like the other classes)
186            but otherwise behaves like the other classes. This is needed
187            for the TableView which isn't really a dialog and needs to
188            have a status bar and control buttons.
189    
190            [NOTE: This is a back-port from the current CVS head]
191    
192            * Thuban/UI/tableview.py (TableGrid.__init__): Create an
193            instance variable to keep track of how many rows are selected.
194            Subscribe once to the the events we are interested in.
195            (ThubanGrid.OnRangeSelect): Only handle event if event handling
196            hasn't been turned off.
197            (ThubanGrid.OnSelectCell): Only handle event if event handling
198            hasn't been turned off.
199            (ThubanGrid.ToggleEventListeners): Rather than subscribe None
200            as an event listener (which changes the event handler stack)
201            simply set an instance variable to False. This is checked in
202            the event handlers.
203            (ThubanGrid.GetNumberSelected): Return the number of currently
204            selected rows.
205            (TableFrame): Inherit from ThubanFrame so we can have a
206            status bar and control buttons.
207            (QueryTableFrame.__init__): Create a status bar. Fixes RTbug #1942.
208            Explicitly set which items are selected in the operator choice and
209            action choice so there is always a valid selection. Fixes RTbug #1941.
210            Subscribe to grid cell selection events so we can update the
211            status bar.
212            (QueryTableFrame.UpdateStatusText): Update the status bar with
213            how many rows are in the grid, how many columns, and how many
214            rows are selected.
215            (QueryTableFrame.OnGridSelectRange, QueryTableFrame.OnGridSelectCell):
216            Call UpdateStatusText when cells are (de)selected.
217            (QueryTableFrame.OnQuery): Use the string value in the value
218            combo if either the selected item index is 0 or if the string
219            cannot be found in the predefined list (this happens if the
220            user changes the text). Fixes RTbug #1940.
221            Only turn off the grid event listeners if there a query comes
222            back with a none empty list of ids. in the case that the list
223            is empty this causes a grid.ClearSelection() call to actually
224            clear the grid selection which causes the selected items in
225            the map to be deselected. Fixes RTbug #1939.
226    
227    2003-06-13  Bernhard Herzog  <[email protected]>
228    
229            * Thuban/UI/identifyview.py (IdentifyView.__init__): Call
230            self.selected_shape with the current selection to make sure the
231            contents of the dialog are up to date when it's shown for the
232            first time.
233            The dialog used to work without this by luck. The recent fix to
234            the connector module 'broke' a 'feature' the identify view was
235            relying on, i.e that subscribing to a message in response to
236            receiving a message of that type would mean that the new
237            subscriber would also be called for the same message.
238    
239    2003-06-12  Jonathan Coles   <[email protected]>
240    
241            * Thuban/UI/legend.py (ScaleBarBitmap.__SetScale): Don't draw
242            the scalebar if the current map has no projection set.
243    
244            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): Set the
245            projfilepath label to just the basename of the projection file
246            rather than include the entire path.
247    
248    2003-06-11  Frank Koormann  <[email protected]>
249    
250            * Thuban/Lib/fileutil.py (get_application_dir): Minor stability
251            update.
252    
253    2003-06-11  Frank Koormann  <[email protected]>
254    
255            * Thuban/Lib/fileutil.py (get_application_dir): New function to
256            determine the absolute .thuban/thuban directory under
257            "posix" (os.expanduser) and "nt" (read AppData registry key).
258    
259            * Thuban/Model/resource.py: Use get_application_dir
260    
261            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
262            Use get_application_dir.
263    
264    2003-06-10  Bernhard Herzog  <[email protected]>
265    
266            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Subscribe to
267            the messages MAP_LAYERS_REMOVED messages
268            (LayerTableFrame.OnClose): Unsubscribe from it.
269            (LayerTableFrame.map_layers_removed): New. Receiver for
270            MAP_LAYERS_REMOVED. Close the dialog when the layer whose the
271            dialog is showing is removed.
272    
273    2003-06-10  Bernhard Herzog  <[email protected]>
274    
275            * Thuban/Lib/connector.py (Connector.Issue): Iterate over a copy
276            of the receivers list so that unsubscribing in a receiver doesn't
277            modify it while iterating over it.
278    
279            * test/test_connector.py
280            (ConnectorTest.test_disconnect_in_receiver): New. Test whether
281            unsubscribing in a receiver works correctly. See docstring for
282            details
283    
284    2003-06-10  Bernhard Herzog  <[email protected]>
285    
286            * Thuban/Model/messages.py (LAYER_SHAPESTORE_REPLACED): New
287            message.
288    
289            * Thuban/Model/layer.py (Layer.SetShapeStore): Send
290            LAYER_SHAPESTORE_REPLACED when the shapestore changes. A
291            LAYER_CHANGED will still be sent if the classification changes.
292    
293            * Thuban/UI/classifier.py (Classifier.__init__): Add the map as
294            parameter so we can subscribe to some of its messages
295            (Classifier.__init__): Subscribe to the map's MAP_LAYERS_REMOVED
296            and the layer's LAYER_SHAPESTORE_REPLACED
297            (Classifier.unsubscribe_messages): New. Unsubscribe from message
298            subscribed to in __init__
299            (Classifier.map_layers_removed)
300            (Classifier.layer_shapestore_replaced): receivers for the messages
301            subscribed to in __init__. Unsubscribe and close the dialog
302    
303            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): Pass
304            the map to the Classifier dialog
305    
306            * test/test_layer.py (SetShapeStoreTests): Derive from
307            SubscriberMixin as well so we can test messages
308            (SetShapeStoreTests.setUp): Subscribe to some of the layer's
309            messages
310            (SetShapeStoreTests.tearDown): Clear the messages again
311            (SetShapeStoreTests.test_sanity): Expand the doc-string and check
312            for the modified flag too
313            (SetShapeStoreTests.test_set_shape_store_modified_flag): New test
314            to check whether SetShapeStore sets the modified flag
315            (SetShapeStoreTests.test_set_shape_store_different_field_name)
316            (SetShapeStoreTests.test_set_shape_store_same_field)
317            (SetShapeStoreTests.test_set_shape_store_same_field_different_type):
318            Add tests for the messages. This checks both the new
319            LAYER_SHAPESTORE_REPLACED and the older LAYER_CHANGED
320    
321    2003-06-06  Jan-Oliver Wagner <[email protected]>
322    
323            * Thuban/UI/mainwindow.py: Improved and partly added help texts for
324            the menu items.
325    
326    2003-06-05  Frank Koormann  <[email protected]>
327    
328            * Thuban/UI/identifyview.py (IdentifyView.__init__):
329            Layout reimplemented without panel. Make life easier to fit the list
330            in the dialog.
331    
332    2003-06-05  Frank Koormann  <[email protected]>
333    
334            * Thuban/UI/projdialog.py (ProjFrame.__init__): Fill the projchoice
335            once on initialisation (Former implementation resulted in multiple
336            entries for each projection).
337            (ProjFrame.__FillAvailList): selectProj as second optional parameter,
338            if set, select the projection found under the specified name. This
339            overwrites any other selection estimate.
340            Removed projchoice filling from this method.
341            (ProjFrame._OnSave, ProjFrame._OnAddToList):
342            Updated call of ProjFrame.__FillAvailList
343            (LCCPanel._DoLayout): Moved parameter controls in more common order.
344    
345            * Resources/Projections/defaults.proj: Extended defaults representing
346            various common European projections.
347    
348    2003-06-05  Frank Koormann  <[email protected]>
349    
350            * Thuban/UI/identifyview.py (IdentifyView.__init__):
351            Use ListCtrl instead of GridCtrl
352    
353            * Thuban/Model/resource.py:
354            Guess location of .thuban directory from tempdir parent directory.
355    
356            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
357            Guess location of .thuban directory from tempdir parent directory.
358    
359    2003-06-04  Bernhard Herzog  <[email protected]>
360    
361            Do not cache the values returned by the tree widget's
362            GetFirstChild and GetNextChild methods because it led to lots of
363            segfaults. The new way requires more brute force but is more
364            reliable.
365    
366            * Thuban/UI/legend.py (LegendTree.__init__): Remove instance
367            variable layer2id
368            (LegendTree.find_layer): New method to do with brute force what
369            layer2id tried to accomplish
370            (LegendTree._OnMsgLayerChanged)
371            (LegendTree._OnMsgLayerTitleChanged, LegendTree.__ShowHideLayer):
372            Use find_layer instead of layer2id
373            (LegendTree.__RemoveLayer, LegendTree.__AddLayer): No need to
374            update layer2id anymore
375            (LegendTree._OnMsgMapLayersRemoved)
376            (LegendTree._OnMsgMapLayersAdded): Get by without layer2id.
377    
378    2003-06-03  Thomas Koester  <[email protected]>
379    
380            * Thuban/Model/classgen.py (GenQuantiles0): New function.
381    
382    2003-06-02  Bernhard Herzog  <[email protected]>
383    
384            * Thuban/UI/mainwindow.py (layer_rename command, table_rename command):
385            New commands.
386            (main_menu): Add the new commands.
387            (MainWindow.TableRename): New. Implementation of the table_rename
388            command.
389            (MainWindow.RenameLayer): New. Implementation of the layer_rename
390            command.
391    
392            * Thuban/Model/session.py (Session.AddTable): call self.changed to
393            set the modified flag
394    
395            * test/test_session.py (TestSessionSimple.test_add_table): Test
396            whether the modified flag is set properly
397    
398            * Thuban/Model/base.py (TitledObject.SetTitle): Call changed
399            instead of issue so that the modified flags get updated.
400    
401            * test/test_base.py (SomeTitledObject): Derive from Modifiable
402            instead of Publisher to reflect reality better and to accomodate
403            the fact that SetTitle now calls changed instead of issue
404    
405    2003-06-02  Bernhard Herzog  <[email protected]>
406    
407            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Resource
408            acquisition has to happen before the try in a try-finally.
409    
410    2003-06-02  Bernhard Herzog  <[email protected]>
411    
412            * Thuban/UI/legend.py (LegendTree._OnMsgMapLayersRemoved): It's
413            possible that a layer is removed that is not currently selected in
414            the legend so don't check for this.
415    
416    2003-05-30  Bernhard Herzog  <[email protected]>
417    
418            * Thuban/Model/layer.py (Layer.Destroy): Set all instance
419            variables to None that have direct or indirect references to
420            shapefiles or dbf files to make sure that they do go away and the
421            files are closed.
422    
423    2003-05-30  Bernhard Herzog  <[email protected]>
424    
425            * Thuban/UI/legend.py (LegendTree.GetRootItem): Reset
426            availImgListIndices when a new image list is created
427            
428    2003-05-30  Bernhard Herzog  <[email protected]>
429    
430            * Thuban/UI/legend.py (LegendTree.__init__): New instance variable
431            changing_selection to indicate whether the LegendTree code itself
432            is currently changing the selection
433            (LegendTree.normalize_selection): New method to normalize the
434            selection by selecting the layer item even if the user clicked on
435            the classification.
436            (LegendTree._OnSelChanged): normalize the selection. This works
437            around a bug in wx which doesn't keep track of the selection
438            properly when subtrees are deleted.
439    
440    2003-05-30  Bernhard Herzog  <[email protected]>
441    
442            * Thuban/UI/view.py (MapCanvas.set_view_transform): Limit the
443            maximum and minimum scale factors.
444    
445            * test/test_classgen.py (ClassGenTest.test): Update to reflect the
446            changes in classgen.py
447    
448    2003-05-30  Jonathan Coles   <[email protected]>
449    
450            * Thuban/Model/classgen.py: Remove ClassGenerator class but make
451            all the methods functions. Fixes RTBug #1903.
452    
453            * Thuban/Model/map.py (Map.TopLayer, Map.BottomLayer): Renamed
454            to MoveLayerToTop and MoveLayerToBottom respectively. Fixes
455            RTBug #1907.
456    
457            * Thuban/UI/classgen.py: Use classgen functions that were part
458            of the ClassGenerator class. Put try/finally blocks around
459            code that uses wxBeginBusyCursor()/wxEndBusyCursor(). Fixes
460            RTBug #1904.
461    
462            * Thuban/UI/classifier.py: Remove unused import of ClassGenerator.
463    
464            * Thuban/UI/legend.py: The legend was cleared and repopulated any
465            time something changed which caused some state to be lost such
466            as which children were expanded or collapsed. Fixes RTBug #1901.
467            (LegendTree._OnMsgMapLayersAdded): Add only new layers.
468            (LegendTree.__OnMsgMapLayersRemoved): Remove layers that exist in
469            the legend but not in the map.
470            (LegendTree.__FillTree): Move main functionality out into smaller
471            methods that can be used by other methods.
472            (LegendTree.__FillTreeLayer): Reuse old slots in the image list
473            if they are available.
474            (LegendTree.DeleteAllItems): Renamed from __DeleteAllItems so
475            that we override the wxTreeCtrl method. Iterate over children
476            and call __RemoveLayer.
477            (LegendTree.__AddLayer): New. Add a new layer to the legend.
478            (LegendTree.__RemoveLayer): Remove a layer from the legend.
479            (LegendTree.DeleteChildren): New, overrides wxTreeCtrl method.
480            Should only be called with the id of a layer branch.
481            (LegendTree.GetRootItem): New, overrides wxTreeCtrl method.
482            Returns the root item or creates one if necessary.
483    
484            * Thuban/UI/renderer.py (MapRenderer.draw_raster_layer): Call
485            ProjectRasterFile with tuple arguments instead of strings.
486    
487            * Thuban/UI/tableview.py (QueryTableFrame.OnQuery): Wrap code
488            with try/finally. Fixes RTBug #1904.
489    
490            * Thuban/UI/view.py (MapCanvas.OnPaint): Wrap code
491            with try/finally. Fixes RTBug #1904.
492            (MapCanvas.FitSelectedToWindow): If a single point is selected
493            simply center it on the display. Fixes RTBug #1849.
494    
495            * extensions/thuban/gdalwarp.cpp: Removed code that allowed gdalwarp
496            to be compiled as a standalone app. Now the code can only be
497            called from Python which simplifies the parameter passing.
498            (ProjectRasterFile): Handle Python arguments. Remove code that
499            checks for a destination dataset. Add more clean up code.
500    
501            * test/test_map.py (TestMapWithContents.test_raise_layer_top,
502            TestMapWithContents.test_lower_layer_bottom):
503            Test Map.MoveLayerToTop() and Map.MoveLayerToBottom() respectively.
504            Fixes RTBug #1907.
505    
506            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Apply a full
507            extent to the map when the legend is toggled. Fixes RTBug #1881.
508    
509    2003-05-29  Jan-Oliver Wagner <[email protected]>
510    
511            * Thuban/UI/tableview.py (LayerTableFrame.OnClose): Bug-fix: Now
512            unsubscribes all that is subcribed in __init__.
513    
514    2003-05-28  Bernhard Herzog  <[email protected]>
515    
516            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer)
517            (MainWindow.CanDuplicateLayer): New methods to implement the
518            Layer/Duplicate command.
519            (layer_duplicate command): New.
520            (main_menu): Add layer_duplicate to the Layer menu.
521    
522    2003-05-28  Bernhard Herzog  <[email protected]>
523    
524            * Thuban/UI/tableview.py (NullRenderer.Draw): New. Our own
525            renderer so that NULL/None values get displayed differently (by a
526            gray rectangle).
527            (TableGrid.__init__): Override the default renderers
528    
529    2003-05-28  Bernhard Herzog  <[email protected]>
530    
531            * Thuban/Model/layer.py (Layer.SetShapeStore): Set the
532            classification to "None" if the type of the field has changed.
533    
534            * test/test_layer.py (SetShapeStoreTests): New. Class with a few
535            test for the Layer.SetShapeStore method
536    
537    2003-05-28  Jan-Oliver Wagner <[email protected]>
538    
539            * Thuban/Model/layer.py (Layer.TreeInfo): Fixed a bug (a layer
540            does not necessarily have a filename).
541    
542    2003-05-28  Jan-Oliver Wagner <[email protected]>
543    
544            * Thuban/UI/mainwindow.py (MainWindow.TableClose, MainWindow.TableShow):
545            sort the selection list for the dialog.
546    
547    2003-05-28  Frank Koormann  <[email protected]>
548    
549            * extensions/thuban/wxproj.cpp
550            (project_point): Removed cast to int for projected point coordinates.
551            (shape_centroid): Return last point if all polygon vertices fall
552            to one point.
553    
554    2003-05-28  Bernhard Herzog  <[email protected]>
555    
556            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
557            with layers that don't have shapestores, i.e. raster layers.
558    
559    2003-05-28  Bernhard Herzog  <[email protected]>
560    
561            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
562            when determining the title from the filename.
563    
564            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
565            reflect changes in the way the title is derived from the filename
566    
567    2003-05-28  Frank Koormann  <[email protected]>
568    
569            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
570            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
571    
572    2003-05-27  Bernhard Herzog  <[email protected]>
573    
574            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
575            delegate SelectedLayer.
576            (MainWindow.LayerUnjoinTable): Implement.
577            (_can_unjoin): New. Helper function for the sensitivity of the
578            layer/unjoin command.
579    
580            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
581            (DerivedShapeStore.OrigShapeStore): New. Return the original
582            shapestore. Used to figure out how to unjoin.
583            (DerivedShapeStore.Shapefile): Fix a typo.
584    
585    2003-05-27  Bernhard Herzog  <[email protected]>
586    
587            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
588            well
589            (JoinDialog.__init__): Use the layer parameter and only build the
590            left choice when a layer is given
591            (JoinDialog.OnJoin): Handle layer joins as well
592            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
593            that the user selects the "Select..." item. The sensitivitly
594            updating is now in update_sensitivity
595            (JoinDialog.y): New method to refactor the sensitivity update of
596            the join button into its own method.
597    
598            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
599    
600    2003-05-27  Bernhard Herzog  <[email protected]>
601    
602            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
603            iff there are unreferenced tables in the session
604    
605    2003-05-27  Bernhard Herzog  <[email protected]>
606    
607            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
608    
609            * Thuban/Model/session.py (Session.UnreferencedTables): New method
610            to return tables that are not referenced by other tables or shape
611            stores and can be removed.
612            (Session.RemoveTable): Issue a TABLE_REMOVED message after
613            removing the table
614    
615            * Thuban/UI/mainwindow.py: Remove unused imports
616            (MainWindow.TableClose): Implement.
617    
618            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
619            messages so that the frame will be automatically closed when a new
620            session is opened or the table is removed.
621            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
622            __init__
623            (TableFrame.close_on_session_replaced)
624            (TableFrame.close_on_table_removed): New. Subscribers that close
625            the window
626    
627            * test/test_session.py (TestSessionMessages.test_remove_table)
628            (TestSessionSimple.test_remove_table): Move the test to
629            TestSessionSimple and add test for the TABLE_REMOVED message
630            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
631            (TestSessionSimple.test_unreferenced_tables) New. Test for the
632            UnreferencedTables method.
633            (UnreferencedTablesTests): New. Class with some more sophisticated
634            tests for UnreferencedTables.
635    
636    2003-05-27  Frank Koormann  <[email protected]>
637    
638            * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
639            display has some unwanted side effects. Removed again.
640    
641    2003-05-27  Frank Koormann  <[email protected]>
642    
643            * Resources/Bitmaps/legend_icon_layer.xpm: New, icon for legend.
644    
645            * Thuban/UI/legend.py (LegendTree.__FillTree): Use "legend_icon_layer"
646    
647  2003-05-27  Jan-Oliver Wagner <[email protected]>  2003-05-27  Jan-Oliver Wagner <[email protected]>
648    
649          * test/test_menu.py (MenuTest.test): Added test for Menu.RemoveItem().          * test/test_menu.py (MenuTest.test): Added test for
650            Menu.RemoveItem().
651    
652          * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from the menu.          * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
653            the menu.
654    
         *  
655  2003-05-27  Frank Koormann  <[email protected]>  2003-05-27  Frank Koormann  <[email protected]>
656                    
657          Nonmodal dialogs without parent (i.e. they can fall behind the main          Nonmodal dialogs without parent (i.e. they can fall behind the main

Legend:
Removed from v.1062  
changed lines
  Added in v.1414

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26