/[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

revision 779 by bh, Tue Apr 29 14:54:26 2003 UTC revision 840 by bh, Tue May 6 15:54:35 2003 UTC
# Line 1  Line 1 
1    2003-05-06  Bernhard Herzog  <[email protected]>
2    
3            Convert all table users to use the new table interface. This only
4            covers Thuban itself, not GREAT-ER or other applications built on
5            Thuban yet, so the compatibility interface stays in place for the
6            time being but it now issues DeprecationWarnings.
7    
8            Finally, the new Table interface has a new method, HasColumn.
9    
10            * Thuban/Model/table.py (OldTableInterfaceMixin): All methods
11            issue deprecation warnings when they're. The warnings refer to the
12            caller of the method.
13            (OldTableInterfaceMixin.__deprecation_warning): New. Helper method
14            for the deprecation warnings
15    
16            * test/test_table.py: Ignore the deprecation warnings for the old
17            table in the tests in this module. The purpose of the tests is to
18            test the old interface, after all.
19    
20            * test/test_transientdb.py
21            (TestTransientTable.run_iceland_political_tests): Use the
22            constants for the types. Add a test for HasColumn
23            (TestTransientTable.test_transient_joined_table): Adapt to new
24            table interface. Add a test for HasColumn
25            (TestTransientTable.test_transient_table_read_twice): Adapt to new
26            table interface
27    
28            * Thuban/UI/tableview.py (DataTable.SetTable, DataTable.GetValue):
29            Adapt to new table interface
30    
31            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Adapt to
32            new table interface
33    
34            * Thuban/UI/controls.py (RecordListCtrl.fill_list)
35            (RecordTable.SetTable): Adapt to new table interface
36    
37            * Thuban/UI/classifier.py (Classifier.__init__)
38            (Classifier.__init__): Adapt to new table interface
39    
40            * Thuban/UI/classgen.py (ClassGenDialog.__init__)
41            (GenUniformPanel._OnRetrieve, GenUniquePanel._OnRetrieve): Adapt
42            to new table interface
43    
44            * Thuban/Model/transientdb.py (TransientTableBase.HasColumn)
45            (AutoTransientTable.HasColumn): Implement the new table interface
46            method
47            (AutoTransientTable.ReadRowAsDict, AutoTransientTable.ValueRange)
48            (AutoTransientTable.UniqueValues): Adapt to new table interface
49    
50            * Thuban/Model/layer.py (Layer.SetShapeStore, Layer.GetFieldType):
51            Adapt to new table interface
52    
53            * test/test_layer.py (TestLayer.open_shapefile): Helper method to
54            simplify opening shapefiles a bit easier.
55            (TestLayer.test_arc_layer, TestLayer.test_polygon_layer)
56            (TestLayer.test_point_layer): Use the new helper method
57            (TestLayer.test_get_field_type): New. Test for the GetFieldType
58            method
59    
60            * test/test_dbf_table.py (TestDBFTable.test_has_column): Test for
61            the new table method
62    
63            * test/test_memory_table.py (TestMemoryTable.test_has_column):
64            Test for the new table method HasColumn
65    
66    2003-05-06  Jonathan Coles   <[email protected]>
67    
68            Addresses the "Selection Extent" wish of RTbug #1787.
69    
70            * Resources/Bitmaps/fulllayerextent.xpm,
71            Resources/Bitmaps/fullselextent.xpm: Bitmaps for layer and selection
72            extent. These are just place holders for the real bitmaps.
73    
74            * Thuban/Model/layer.py (Shape): Since a Shape is immutable only
75            calculate the bounding box once (the first time compute_bbox() is
76            called).
77            (Layer.ShapesBoundingBox): New. Given a list of shape ids, return
78            the bounding box for the shapes in lat/long coordinates.
79    
80            * Thuban/UI/mainwindow.py: Added new "Full selection extent" menu
81            option.
82            (MainWindow.has_selected_shapes): New. Returns true if there are
83            any selected shapes.
84            (MainWindow.FullSelectionExtent): New. Calls
85            MapCanvas.FitSelectedToWindow() when the user selects the menu option.
86            (_has_selected_shapes): New. Returns true if there are any
87            selected shapes.
88    
89            * Thuban/UI/selection.py (Selection.HasSelectedShapes): New. Returns
90            true if there are any selected shapes.
91    
92            * Thuban/UI/view.py (MapCanvas): Added delegated method
93            HasSelectedShapes.
94            (MapCanvas.FitSelectedToWindow): New. Centers and scales any selected
95            shapes on the canvas using the map projection (if any).
96    
97            * test/test_layer.py (TestLayer.test_arc_layer): Add some tests
98            for Layer.ShapesBoundingBox().
99    
100    2003-05-06  Bernhard Herzog  <[email protected]>
101    
102            * Resources/Projections/defaults.proj: Fix spelling of Mercator
103    
104    2003-05-05  Jonathan Coles   <[email protected]>
105    
106            Addresses the "Full Layer Extent" wish of RTbug #1787.
107    
108            * Resources/Projections/defaults.proj: Added UK National Grid.
109    
110            * Thuban/UI/mainwindow.py: Added new "Full layer extent" menu option.
111            (MainWindow.FullLayerExtent): New. Calls MapCanvas.FitLayerToWindow()
112            when the user selects the menu option.
113    
114            * Thuban/UI/view.py (MapCanvas.FitLayerToWindow): New. Centers and
115            scales the given layer on the canvas using the map projection.
116    
117    2003-05-05  Bernhard Herzog  <[email protected]>
118    
119            Convert the table implementations to a new table interface. All
120            tables use a common mixin class to provide backwards compatibility
121            until all table users have been updated.
122    
123            * Thuban/Model/table.py (OldTableInterfaceMixin): Mixin class to
124            provide backwards compatibility for table classes implementing the
125            new interface
126            (DBFTable, MemoryTable): Implement the new table interface. Use
127            OldTableInterfaceMixin as base for compatibility
128            (DBFColumn, MemoryColumn): New. Column description for DBFTable
129            and MemoryTable resp.
130    
131            * test/test_dbf_table.py: New. Test cases for the DBFTable with
132            the new table interface.
133    
134            * test/test_memory_table.py: New. Test cases for the MemoryTable
135            with the new table interface.
136    
137            * test/test_table.py: Document the all tests in this file as only
138            for backwards compatibility. The equivalent tests for the new
139            interface are in test_memory_table.py and test_dbf_table.py
140            (MemoryTableTest.test_read): field_info should be returning tuples
141            with four items
142            (MemoryTableTest.test_write): Make doc-string a more precise.
143    
144            * Thuban/Model/transientdb.py (TransientTableBase): Convert to new
145            table interface. Derive from from OldTableInterfaceMixin for
146            compatibility.
147            (TransientTableBase.create): New intance variable column_map to
148            map from names and indices to column objects
149            (TransientTable.create): Use the new table interface of the input
150            table
151            (AutoTransientTable): Convert to new table interface. Derive from
152            from OldTableInterfaceMixin for compatibility.
153            (AutoTransientTable.write_record): Removed. It's not implemented
154            yet and we still have to decide how to handle writing with the new
155            table and data framework.
156    
157            * test/test_transientdb.py
158            (TestTransientTable.run_iceland_political_tests)
159            (TestTransientTable.test_transient_joined_table): Use the new
160            table interface
161    
162    2003-05-05  Jonathan Coles   <[email protected]>
163    
164            This is namely a collection of UI updates to improve user interactivity.
165            Tabbing between controls now exists and you can use ESC to close dialog
166            boxes; ENTER will active the default button.
167    
168            * Thuban/UI/classgen.py (ClassGenDialog.__init__): Rearrange the
169            order that the controls are created so that tabbing works correctly.
170            (ClassGenDialog.OnOK): Renamed from _OnGenerate() so that the
171            wxDialog can handle the default button correctly.
172            (ClassGenDialog.OnCancel): Renamed from _OnCloseBtn() for the
173            same reasons as for OnOK.
174            (GenUniformPanel._OnRetrieve): Call wxBeginBusyCursor/wxEndBusyCursor
175            when we ask the table for the maximum/minimum values of a field
176            which could take a very long time.
177    
178            * Thuban/UI/classifier.py (Classifier.__init__): Rearrange the
179            order that the controls are created so that tabbing works correctly.
180            (SelectPropertiesDialog.__init__): Rearrange the order that the
181            controls are created so that tabbing works correctly.
182    
183            * Thuban/UI/dialogs.py: Copied NonModalDialog box and changed it
184            to derive from a wxDialog but behave like the original implementation
185            which was derived from a wxFrame. wxDialog provides useful key
186            handling functionality like ESC calling OnCancel and ENTER calling
187            OnOK which is lost with wxFrame.
188    
189            * Thuban/UI/mainwindow.py: Add "..." to menu items that will open
190            new dialogs.
191    
192            * Thuban/UI/projdialog.py (ProjFrame.__init__): Rearrange the
193            order that the controls are created so that tabbing works correctly.
194            (ProjFrame.OnApply): Renamed from _OnTry() to use wxDialog behaviour.
195            (ProjFrame.OnOK): Renamed from _OnOK() to use wxDialog behaviour.
196            (ProjFrame.OnCancel): Renamed from _OnClose() to use wxDialog behaviour.
197            (ProjPanel.__init__): Add "Airy" to the list of ellipsoids so we
198            can provide the "UK National Grid" as a default projection.
199            (UTMPanel.__init__): Rearrange the order that the controls are
200            created so that tabbing works correctly.
201    
202    2003-05-05  Bernhard Herzog  <[email protected]>
203    
204            * extensions/thuban/wxproj.cpp: Fix some of the comments.
205            (project_point): If a map projection but no layer projection is
206            given, convert degrees to radians before applying the map
207            projection.
208    
209            * Thuban/UI/tableview.py (TableGrid.disallow_messages)
210            (TableGrid.allow_messages): New methods to make it possible to
211            inhibit message sending.
212            (TableGrid.issue): Only send the message if not inhibited.
213            (LayerTableGrid.select_shape): Use the new methods to make sure
214            that no ROW_SELECTED message is sent while we're updating the
215            selected rows to match the selected shapes.
216    
217    2003-05-02  Jan-Oliver Wagner <[email protected]>
218    
219            Implementation of MemoryTable.
220    
221            * Thuban/Model/table.py (MemoryTable): New. Quite simple table
222            implementation that operates on a list of tuples. All of the data
223            are kept in the memory.
224    
225            * test/test_table.py (MemoryTableTest): New.
226    
227            * test/test_transientdb.py (SimpleTable): Removed.
228            (TestTransientTable.test_transient_joined_table,
229            (TestTransientTable.test_transient_table_read_twice): Replaced
230            SimpleTable by MemoryTable.
231    
232    2003-04-30  Jonathan Coles   <[email protected]>
233    
234            * Data/iceland_sample.thuban: Now contains correct projections
235            for each of the layers.
236    
237            * Resources/Projections/defaults.proj: Geographic projection
238            contains unit conversion parameter.
239    
240    2003-04-30  Jonathan Coles   <[email protected]>
241    
242            The most important part of this putback is the projection changes.
243            It should now be possible to specify the projection that a layer
244            is in and then specify a different projection for the map. The
245            projection dialog has an extra parameter for a geographic projection
246            which lets the user select if the input is in degrees or radians.
247    
248            * Thuban/Model/layer.py (Layer.ShapesInRegion): Fix docstring
249            to say that the parameter is a tuple of unprojected
250            points (which is what the callers to this method were assuming).
251            Also, since the points are unprojected we need to projected them.
252    
253            * Thuban/UI/legend.py (LegendTree.MoveCurrentItemUp,
254            LegendTree.MoveCurrentItemDown): If the layer or any of the layer's
255            groups are selected, move the layer up/down. Fixes RTbug #1833.
256    
257            * Thuban/UI/mainwindow.py: Move menu item map_rename up.
258    
259            * Thuban/UI/projdialog.py (ProjFrame._OnSave): Add missing
260            parameter in call to SetClientData.
261            (GeoPanel): Add support for selecting the units that the
262            source data is in (Radians or Degrees).
263    
264            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Optimize
265            the rendering loop by reducing the number of if's, removing the
266            unnecessary try/except block, and checking if the old group
267            is the same as the new one (which happens a lot if there is
268            no classification, or lots of shapes are in the same group).
269    
270            * Thuban/UI/view.py (MapCanvas.OnPaint): Add a try/except block
271            around the redraw routine to try to catch problems that the user
272            may create by selecting invalid projections for the data set and
273            map. Clears the display if there are any problems and prints the
274            error.
275            (MapCanvas.do_redraw): Use DC.Clear() instead of drawing a filled
276            rectangle.
277    
278            * extensions/thuban/wxproj.cpp (project_point): First invert the
279            supplied point (which should be in projected coordinates) using
280            the layer's projection and then project the point using the
281            map's projection.
282            (project_points): Use project_point() to project each point.
283    
284    2003-04-30  Jan-Oliver Wagner <[email protected]>
285    
286            * Thuban/Model/layer.py (Layer.SetShapeStore): Fixed a bug:
287            don't set the Classification to None if the classfication field
288            is None (ie only a DEFAULT).
289    
290    2003-04-30  Bernhard Herzog  <[email protected]>
291    
292            * Thuban/UI/view.py: Fix some typos.
293    
294            * Thuban/UI/mainwindow.py (MainWindow.identify_view_on_demand): Do
295            not pop up the dialog if the selection becomes empty (this could
296            happen if e.g. a new selection is opened while the identify tool
297            is active and dialog had been closed)
298    
299    2003-04-30  Bernhard Herzog  <[email protected]>
300    
301            * Thuban/Model/transientdb.py (TransientTableBase.__init__): New
302            instance variable read_record_last_result
303            (TransientTableBase.read_record): Make sure reading the same
304            record twice works. The implementation uses the new instance
305            variable read_record_last_result
306    
307            * test/test_transientdb.py
308            (TestTransientTable.test_transient_table_read_twice): New test
309            case for the above bug-fix.
310    
311    2003-04-29  Jonathan Coles   <[email protected]>
312    
313            * Thuban/common.py: Removed. No longer needed Str2Num. RTbug #1832.
314    
315            * Thuban/UI/classgen.py: Remove all uses of Str2Num.
316    
317            * Thuban/UI/classifier.py: Remove all uses of Str2Num.
318            (ClassTable.SetValueAsCustom): Rename keyword argument in
319            ClassGroup* constructors to match argument name.
320    
321  2003-04-29  Bernhard Herzog  <[email protected]>  2003-04-29  Bernhard Herzog  <[email protected]>
322    
323          * Thuban/Model/session.py (Session.Destroy): Explicitly close the          * Thuban/Model/session.py (Session.Destroy): Explicitly close the

Legend:
Removed from v.779  
changed lines
  Added in v.840

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26