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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26