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

Legend:
Removed from v.776  
changed lines
  Added in v.846

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26