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

Legend:
Removed from v.769  
changed lines
  Added in v.852

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26