/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.766  
changed lines
  Added in v.843

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26