/[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 809 by bh, Mon May 5 10:33:58 2003 UTC revision 908 by bh, Fri May 16 15:01:18 2003 UTC
# Line 1  Line 1 
1    2003-05-16  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/Model/table.py (Table): Remove this compatibility alias
4            for DBFTable.
5    
6            * test/test_table.py: Import DBFTable as Table because that alias
7            doesn't exist anymore.
8    
9            * Thuban/UI/classgen.py: Remove some unused imports
10    
11    2003-05-14  Jonathan Coles   <[email protected]>
12    
13            * Thuban/Model/classgen.py (ClassGenerator.GenSingletonsFromList):
14            Fix docstring.
15            (ClassGenerator.GenUniformDistribution): Fix spelling of method name.
16            (ClassGenerator.GenQuantiles): Use the left/right brackets and min/max
17            values of the supplied range to determine the beginning and end
18            bounds of the generated classes.
19    
20            * Thuban/Model/range.py (Range.number_re): Now accepts floats that
21            do not have a leading 0 (.5 is now accepted as well as 0.5).
22    
23            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Fix name of method
24            call to ClassGenerator.GenUniformDistribution.
25    
26            * Thuban/UI/projdialog.py (ProjFrame.__do_layout): Fix Windows
27            layout bug with the 'Projection' label.
28    
29            * test/support.py (FloatTestCase): New. Needed for the Range tests.
30    
31            * test/test_range.py: New. Imported from SciParam.
32    
33    2003-05-12  Jonathan Coles   <[email protected]>
34    
35            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Replace call
36            to table.UniqueValues() with calls that retrieve all the values
37            from the table. This will need to be replaced by a method on table
38            which can simply return the list (perhaps more efficiently).
39    
40    2003-05-12  Jonathan Coles   <[email protected]>
41    
42            The return value of ClassGenerator.CalculateQuantiles has changed.
43            Refer to the documentation for details.
44    
45            * test/test_classgen.py: Modified Quantile tests to use the
46            new return values.
47    
48            * Thuban/Model/classgen.py
49            (ClassGenerator.GenQuantiles): Add comments describing the parameters,
50            use new return values from CalculateQuantiles to produce the correct
51            range bounds in the Classification.
52            (ClassGenerator.CalculateQuantiles): Add more comments describing
53            the return values and parameters. Make minor adjustments to improve
54            the legibility of the code. Fix problem with adjusted not being set
55            in most cases.
56    
57    2003-05-12  Frank Koormann <[email protected]>
58            
59            * Thuban/Model/save.py (XMLWriter.encode()): Explicite call to unicode
60            and latin1. Fixes #1851 finally.
61    
62    2003-05-09  Jonathan Coles   <[email protected]>
63    
64            * test/test_classgen.py: New. Tests the Quantile algorithm.
65    
66            * Thuban/Model/classgen.py (ClassGenerator.CalculateQuantiles):
67            Clean up debugging statement, add comments, fix a small bug in the
68            returned adjusted percentiles.
69            
70    2003-05-09  Jonathan Coles   <[email protected]>
71    
72            Introduces Range class from SciParam into the ClassGroupRange class,
73            and such ranges can now be saved and loaded from disk.
74    
75            Quantiles are now available in the Classification Generator.
76    
77            Initial support for building Queries on a table. Doesn't do anything
78            but run some tests.
79    
80            * Thuban/Model/classification.py: Explicit imports.
81            (ClassGroupRange): Use the Range class to store the underlying
82            range information. The interface remains the same, except for
83            GetRange(), and you can also supply a Range object as the min
84            parameter to SetRange or __init__.
85    
86            * Thuban/Model/load.py (XMLReader.encode): New. Encodes the given
87            string appropriately for use in Thuban. Fixes RTbug #1851.
88            (SessionLoader.end_projection): Handle the context of the
89            projection tag a bit better by looking at what objects are not
90            None. There was an assumption that a projection tag for a map
91            could occur before any layers.
92            (SessionLoader.start_clrange): Provide backward compatibility for
93            reading min/max values as well as the new range parameter.
94    
95            * Thuban/Model/map.py: Explicit imports.
96    
97            * Thuban/Model/resource.py: Import _.
98            (ProjFileSaver.write): write header using projfile.dtd.
99    
100            * Thuban/Model/save.py: Explicit imports.
101            (XMLWriter.encode): New. Encode the given string from a format
102            used by Thuban into UTF-8. Fixes RTbug #1851.
103    
104            * Thuban/UI/classgen.py: Explicit imports.
105            (ClassGenDialog.__init__): Clean up the code and add support
106            for Quantiles.
107            (ClassGenDialog.OnOK): Add support for Quantiles.
108            (GenQuantilesPanel): New. Input panel for Quantiles.
109            (ClassGenerator, CustomRamp, MonochromaticRamp, GreyRamp, RedRamp,
110            GreenRamp, BlueRamp, HotToColdRamp): Move to Thuban/Model/classgen.py
111    
112            * Thuban/Model/classgen.py: New. Contains all the classes named above.
113    
114            * Thuban/UI/classifier.py: Explicit imports.
115            (ClassTable.GetValueAsCust, ClassTable.__ParseInput,
116            ClassTable.SetValueAsCustom): Reworked to use new Range class.
117    
118            * Thuban/UI/legend.py: Explicit imports.
119    
120            * Thuban/UI/mainwindow.py: Add support for the Join Dialog. Added
121            a Table menu and associated method calls.
122            (MainWindow.choose_color): Removed. No longer needed.
123    
124            * Thuban/UI/projdialog.py (ProjFrame.__VerifyButtons): Save button
125            should be disabled if no projection is selected in the available
126            list.
127    
128            * Thuban/UI/renderer.py: Explicit imports.
129    
130            * Thuban/UI/tableview.py (TableGrid.OnRangeSelect): Fix some issues
131            with correctly selecting the rows and issuing the right events.
132            Be sure to call Skip() to allow the grid to do some of its own
133            handling which allows the rows to actually be selected.
134            (LayerTableGrid.select_shapes): Rename from select_shape. Supports
135            selecting multiple shapes.
136            (LayerTableFrame): Support for building Queries.
137            (LayerTableFrame.select_shapes): Allow multiple shapes to be selected.
138    
139            * Thuban/UI/tree.py: Explicit imports.
140    
141            * Thuban/UI/view.py (MapCanvas): Delegate "SelectedShapes" so the
142            table view can call it.
143    
144            * test/test_classification.py: Explicit imports.
145            (TestClassification.test_ClassGroupRange): Fix test for new
146            Range class.
147    
148            * Doc/thuban.dtd: Add range parameter for clrange.
149    
150            * Thuban/Model/range.py: Taken from SciParam. Used as the underlying
151            object in ClassGroupRange, and also uesd for inputting ranges in
152            the classifer table and elsewhere.
153    
154            * Thuban/UI/join.py: New. Initial Join dialog. No real functionality
155            yet.
156    
157    2003-05-09  Frank Koormann <[email protected]>
158    
159            * Thuban/UI/scalebar.py (DrawScaleBar): Draw only if interval > 0.0.
160    
161    2003-05-08  Frank Koormann <[email protected]>
162    
163            Coding style updates
164    
165            * test/test_scalebar.py: Replaced tab indentation by spaces.
166    
167            * Thuban/UI/scalebar.py: Explicit imports.
168    
169    2003-05-08  Frank Koormann <[email protected]>
170    
171            * Thuban/UI/scalebar.py
172            (ScaleBar.DrawScalebar): Format string bug fixed.
173    
174    2003-05-08  Frank Koormann <[email protected]>
175    
176            Reorganization of scalebar component (no wx in Thuban/Model)
177    
178            * Thuban/Model/scalebar.py: Rendering moved to Thuban/UI/scalebar.py
179            (deriveInterval):
180            Calculate scalebar interval and unit which fits in width for scale.
181            (roundInterval): Round float.
182    
183            * Thuban/UI/scalebar.py (ScaleBar): Scalebar rendering
184    
185            * test/test_scalebar.py: Test for Thuban/Model/scalebar.py methods.
186    
187            * Thuban/UI/legend.py: Import Thuban.UI.scalebar
188    
189    2003-05-08  Frank Koormann <[email protected]>
190    
191            * Thuban/UI/legend.py (ScalebarBitmap.SetCanvas):
192            Initialize ScaleBar with canvas.map
193    
194            * Thuban/Model/scalebar.py (ScaleBar.roundInterval()): New,
195            round intervals to display smarter lengths
196            (ScaleBar.DrawScalebar): Draw Scalebar only if the map contains a
197            layer. If the maps has no projection applied grey the scalebar.
198    
199    2003-05-07  Frank Koormann <[email protected]>
200            
201            Basic Scalebar features added.
202    
203            * Thuban/Model/scalebar.py (ScaleBar): New, scalebar rendering.
204    
205            * Thuban/UI/legend.py (LegendPanel): Added scalebar bitmap
206            (ScaleBarBitmap): New, links the scalebar bitmap with view messages
207            and the renderer.
208    
209            * Thuban/UI/view.py (MapCanvas.set_view_transform): Issue SCALE_CHANGED.
210    
211            * Thuban/UI/messages.py: SCALE_CHANGED added.
212    
213    2003-05-07  Bernhard Herzog  <[email protected]>
214    
215            * Thuban/Model/session.py (Session.__init__): New instance
216            variable shapestores to hold a list of all open shapestore objects
217            (Session.ShapeStores): New. Accessor method for the shapestores
218            list.
219            (Session._add_shapestore, Session._clean_weak_store_refs): New.
220            Internal methods to maintain the shapestores list.
221            (Session.Tables): New. Return all tables open in the session.
222            (Session.OpenShapefile): Insert the new ShapeStore into the
223            shapestores list.
224    
225            * test/test_session.py (TestSessionSimple.test_initial_state): Add
226            tests for ShapeStores and Tables
227            (TestSessionWithContent.test_shape_stores)
228            (TestSessionWithContent.test_tables): New. Test cases for
229            ShapeStores and Tables
230    
231    2003-05-07  Bernhard Herzog  <[email protected]>
232    
233            * Thuban/Model/transientdb.py (TransientTableBase.ReadRowAsDict):
234            Add comments about the optimizations used.
235            (AutoTransientTable.ReadValue, TransientTableBase.ReadValue): New.
236            Implement the ReadValue table interface method.
237    
238            * test/test_transientdb.py
239            (TestTransientTable.run_iceland_political_tests)
240            (TestTransientTable.test_transient_joined_table): Add tests for
241            ReadValue
242    
243    2003-05-07  Frank Koormann <[email protected]>
244    
245            * Resources/Bitmaps/fulllayerextent.xpm,
246            Resources/Bitmaps/fullselextent.xpm: Replaced the place holders with
247            new icons.
248    
249    2003-05-06  Bernhard Herzog  <[email protected]>
250    
251            * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):
252            New. Simply delegate to the transient table's version.
253    
254            * test/test_transientdb.py
255            (TestTransientTable.test_auto_transient_table_query): New. Test
256            case for AutoTransientTable's SimpleQuery
257    
258    2003-05-06  Bernhard Herzog  <[email protected]>
259    
260            * Thuban/Model/transientdb.py (TransientTableBase.SimpleQuery):
261            Implement a simple query method for the query dialog
262            (TransientTableBase.create): Add an INTEGER PRIMARY KEY that holds
263            the row index or shapeid.
264            (TransientTable.create): Insert the right value of the row index
265            (TransientJoinedTable.create): Copy the row index of the left
266            table to the joined result table
267    
268            * test/test_transientdb.py
269            (TestTransientTable.test_transient_table_read_twice): Fix
270            doc-string
271            (TestTransientTable.test_transient_table_query): New. Test for the
272            SimpleQuery method
273    
274    2003-05-06  Bernhard Herzog  <[email protected]>
275    
276            Convert all table users to use the new table interface. This only
277            covers Thuban itself, not GREAT-ER or other applications built on
278            Thuban yet, so the compatibility interface stays in place for the
279            time being but it now issues DeprecationWarnings.
280    
281            Finally, the new Table interface has a new method, HasColumn.
282    
283            * Thuban/Model/table.py (OldTableInterfaceMixin): All methods
284            issue deprecation warnings when they're. The warnings refer to the
285            caller of the method.
286            (OldTableInterfaceMixin.__deprecation_warning): New. Helper method
287            for the deprecation warnings
288    
289            * test/test_table.py: Ignore the deprecation warnings for the old
290            table in the tests in this module. The purpose of the tests is to
291            test the old interface, after all.
292    
293            * test/test_transientdb.py
294            (TestTransientTable.run_iceland_political_tests): Use the
295            constants for the types. Add a test for HasColumn
296            (TestTransientTable.test_transient_joined_table): Adapt to new
297            table interface. Add a test for HasColumn
298            (TestTransientTable.test_transient_table_read_twice): Adapt to new
299            table interface
300    
301            * Thuban/UI/tableview.py (DataTable.SetTable, DataTable.GetValue):
302            Adapt to new table interface
303    
304            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Adapt to
305            new table interface
306    
307            * Thuban/UI/controls.py (RecordListCtrl.fill_list)
308            (RecordTable.SetTable): Adapt to new table interface
309    
310            * Thuban/UI/classifier.py (Classifier.__init__)
311            (Classifier.__init__): Adapt to new table interface
312    
313            * Thuban/UI/classgen.py (ClassGenDialog.__init__)
314            (GenUniformPanel._OnRetrieve, GenUniquePanel._OnRetrieve): Adapt
315            to new table interface
316    
317            * Thuban/Model/transientdb.py (TransientTableBase.HasColumn)
318            (AutoTransientTable.HasColumn): Implement the new table interface
319            method
320            (AutoTransientTable.ReadRowAsDict, AutoTransientTable.ValueRange)
321            (AutoTransientTable.UniqueValues): Adapt to new table interface
322    
323            * Thuban/Model/layer.py (Layer.SetShapeStore, Layer.GetFieldType):
324            Adapt to new table interface
325    
326            * test/test_layer.py (TestLayer.open_shapefile): Helper method to
327            simplify opening shapefiles a bit easier.
328            (TestLayer.test_arc_layer, TestLayer.test_polygon_layer)
329            (TestLayer.test_point_layer): Use the new helper method
330            (TestLayer.test_get_field_type): New. Test for the GetFieldType
331            method
332    
333            * test/test_dbf_table.py (TestDBFTable.test_has_column): Test for
334            the new table method
335    
336            * test/test_memory_table.py (TestMemoryTable.test_has_column):
337            Test for the new table method HasColumn
338    
339    2003-05-06  Jonathan Coles   <[email protected]>
340    
341            Addresses the "Selection Extent" wish of RTbug #1787.
342    
343            * Resources/Bitmaps/fulllayerextent.xpm,
344            Resources/Bitmaps/fullselextent.xpm: Bitmaps for layer and selection
345            extent. These are just place holders for the real bitmaps.
346    
347            * Thuban/Model/layer.py (Shape): Since a Shape is immutable only
348            calculate the bounding box once (the first time compute_bbox() is
349            called).
350            (Layer.ShapesBoundingBox): New. Given a list of shape ids, return
351            the bounding box for the shapes in lat/long coordinates.
352    
353            * Thuban/UI/mainwindow.py: Added new "Full selection extent" menu
354            option.
355            (MainWindow.has_selected_shapes): New. Returns true if there are
356            any selected shapes.
357            (MainWindow.FullSelectionExtent): New. Calls
358            MapCanvas.FitSelectedToWindow() when the user selects the menu option.
359            (_has_selected_shapes): New. Returns true if there are any
360            selected shapes.
361    
362            * Thuban/UI/selection.py (Selection.HasSelectedShapes): New. Returns
363            true if there are any selected shapes.
364    
365            * Thuban/UI/view.py (MapCanvas): Added delegated method
366            HasSelectedShapes.
367            (MapCanvas.FitSelectedToWindow): New. Centers and scales any selected
368            shapes on the canvas using the map projection (if any).
369    
370            * test/test_layer.py (TestLayer.test_arc_layer): Add some tests
371            for Layer.ShapesBoundingBox().
372    
373    2003-05-06  Bernhard Herzog  <[email protected]>
374    
375            * Resources/Projections/defaults.proj: Fix spelling of Mercator
376    
377    2003-05-05  Jonathan Coles   <[email protected]>
378    
379            Addresses the "Full Layer Extent" wish of RTbug #1787.
380    
381            * Resources/Projections/defaults.proj: Added UK National Grid.
382    
383            * Thuban/UI/mainwindow.py: Added new "Full layer extent" menu option.
384            (MainWindow.FullLayerExtent): New. Calls MapCanvas.FitLayerToWindow()
385            when the user selects the menu option.
386    
387            * Thuban/UI/view.py (MapCanvas.FitLayerToWindow): New. Centers and
388            scales the given layer on the canvas using the map projection.
389    
390  2003-05-05  Bernhard Herzog  <[email protected]>  2003-05-05  Bernhard Herzog  <[email protected]>
391    
392            Convert the table implementations to a new table interface. All
393            tables use a common mixin class to provide backwards compatibility
394            until all table users have been updated.
395    
396            * Thuban/Model/table.py (OldTableInterfaceMixin): Mixin class to
397            provide backwards compatibility for table classes implementing the
398            new interface
399            (DBFTable, MemoryTable): Implement the new table interface. Use
400            OldTableInterfaceMixin as base for compatibility
401            (DBFColumn, MemoryColumn): New. Column description for DBFTable
402            and MemoryTable resp.
403    
404            * test/test_dbf_table.py: New. Test cases for the DBFTable with
405            the new table interface.
406    
407            * test/test_memory_table.py: New. Test cases for the MemoryTable
408            with the new table interface.
409    
410            * test/test_table.py: Document the all tests in this file as only
411            for backwards compatibility. The equivalent tests for the new
412            interface are in test_memory_table.py and test_dbf_table.py
413            (MemoryTableTest.test_read): field_info should be returning tuples
414            with four items
415            (MemoryTableTest.test_write): Make doc-string a more precise.
416    
417            * Thuban/Model/transientdb.py (TransientTableBase): Convert to new
418            table interface. Derive from from OldTableInterfaceMixin for
419            compatibility.
420            (TransientTableBase.create): New intance variable column_map to
421            map from names and indices to column objects
422            (TransientTable.create): Use the new table interface of the input
423            table
424            (AutoTransientTable): Convert to new table interface. Derive from
425            from OldTableInterfaceMixin for compatibility.
426            (AutoTransientTable.write_record): Removed. It's not implemented
427            yet and we still have to decide how to handle writing with the new
428            table and data framework.
429    
430            * test/test_transientdb.py
431            (TestTransientTable.run_iceland_political_tests)
432            (TestTransientTable.test_transient_joined_table): Use the new
433            table interface
434    
435    2003-05-05  Jonathan Coles   <[email protected]>
436    
437            This is namely a collection of UI updates to improve user interactivity.
438            Tabbing between controls now exists and you can use ESC to close dialog
439            boxes; ENTER will active the default button.
440    
441            * Thuban/UI/classgen.py (ClassGenDialog.__init__): Rearrange the
442            order that the controls are created so that tabbing works correctly.
443            (ClassGenDialog.OnOK): Renamed from _OnGenerate() so that the
444            wxDialog can handle the default button correctly.
445            (ClassGenDialog.OnCancel): Renamed from _OnCloseBtn() for the
446            same reasons as for OnOK.
447            (GenUniformPanel._OnRetrieve): Call wxBeginBusyCursor/wxEndBusyCursor
448            when we ask the table for the maximum/minimum values of a field
449            which could take a very long time.
450    
451            * Thuban/UI/classifier.py (Classifier.__init__): Rearrange the
452            order that the controls are created so that tabbing works correctly.
453            (SelectPropertiesDialog.__init__): Rearrange the order that the
454            controls are created so that tabbing works correctly.
455    
456            * Thuban/UI/dialogs.py: Copied NonModalDialog box and changed it
457            to derive from a wxDialog but behave like the original implementation
458            which was derived from a wxFrame. wxDialog provides useful key
459            handling functionality like ESC calling OnCancel and ENTER calling
460            OnOK which is lost with wxFrame.
461    
462            * Thuban/UI/mainwindow.py: Add "..." to menu items that will open
463            new dialogs.
464    
465            * Thuban/UI/projdialog.py (ProjFrame.__init__): Rearrange the
466            order that the controls are created so that tabbing works correctly.
467            (ProjFrame.OnApply): Renamed from _OnTry() to use wxDialog behaviour.
468            (ProjFrame.OnOK): Renamed from _OnOK() to use wxDialog behaviour.
469            (ProjFrame.OnCancel): Renamed from _OnClose() to use wxDialog behaviour.
470            (ProjPanel.__init__): Add "Airy" to the list of ellipsoids so we
471            can provide the "UK National Grid" as a default projection.
472            (UTMPanel.__init__): Rearrange the order that the controls are
473            created so that tabbing works correctly.
474    
475    2003-05-05  Bernhard Herzog  <[email protected]>
476    
477            * extensions/thuban/wxproj.cpp: Fix some of the comments.
478            (project_point): If a map projection but no layer projection is
479            given, convert degrees to radians before applying the map
480            projection.
481    
482          * Thuban/UI/tableview.py (TableGrid.disallow_messages)          * Thuban/UI/tableview.py (TableGrid.disallow_messages)
483          (TableGrid.allow_messages): New methods to make it possible to          (TableGrid.allow_messages): New methods to make it possible to
484          inhibit message sending.          inhibit message sending.

Legend:
Removed from v.809  
changed lines
  Added in v.908

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26