/[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 823 by jonathan, Mon May 5 18:20:39 2003 UTC revision 971 by jonathan, Wed May 21 17:26:40 2003 UTC
# Line 1  Line 1 
1    2003-05-20  Jonathan Coles   <[email protected]>
2    
3            * Thuban/Model/classgen.py (ClassGenerator.GenQuantiles): Remove
4            references to 'inf' and use new Range __init__ to pass floats
5            directly rather than converting them to strings first.
6            Fixes RTBug #1876.
7    
8            * Thuban/Model/classification.py (ClassGroupRange.SetRange):
9            Use new Range ___init__ to pass floats.
10    
11            * Thuban/Model/layer.py (RasterLayer.__init__): Test if the
12            filename is a valid image file. Throw IOError otherwise.
13    
14            * Thuban/Model/range.py: Brought over new Range from SciParam that
15            is immutable and has an __init__ which can accept floats.
16    
17            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Move OpenShapefile
18            into try block. AddLayer doesn't throw any exceptions anymore.
19            (MainWindow.AddRasterLayer): Move constructor of RasterLayer into
20            try block.
21    
22            * Thuban/UI/projdialog.py (GeoPanel.__init__): Put Degrees as
23            the first item in choices. Fixes RTBug #1882.
24    
25            * Thuban/UI/renderer.py (MapRenderer.render_map): Check if scale
26            has gone to 0 which is a serious problem. abort.
27            (MapRenderer.draw_raster_layer): Catch IOError seperately and
28            print the error from GDAL.
29    
30            * Thuban/UI/tableview.py (TableGrid.__init__): Call
31            ToggleEventListeners to turn on listening.
32            (TableGrid.ToggleEventListeners): New. Turns event listening on
33            and off so as to prevent excessive messages.
34            (LayerTableFrame.OnQuery): Use TableGrid.ToggleEventListeners
35            to suppress excessive messages when selecting many rows.
36            Fixes RTBug #1880.
37    
38            * Thuban/UI/view.py: Added checks against if scale == 0. This
39            is a serious problem that can occur when an image without
40            geo data is loading and causes the map projection bounds to
41            go to infinity. Right now, the solution is to simply try
42            to recover.
43    
44            * extensions/thuban/cpl_mfile.cpp (MFILEClose): Make sure
45            to set the MFILEReceiver attributes even if the data is NULL.
46    
47            * extensions/thuban/gdalwarp.cpp: Improved the error handling
48            and passed GDAL messages back up to the Python layer. Also
49            tried to fix some memory leaks that were present in the original
50            utility but didn't matter because the program aborted.
51    
52            * test/test_range.py: Copied over tests from SciParam. Removed
53            tests against importing. Fixes RTBug #1867.
54    
55    2003-05-21  Bernhard Herzog  <[email protected]>
56    
57            * test/test_load.py: Remove unused imports and restructure the
58            test code
59            (LoadSessionTest): Split into one class for each test and turn
60            LoadSessionTest itself into the base class for all such session
61            tests.
62            (ClassificationTest): New base class for load tests that test
63            classifications
64            (TestSingleLayer, TestLayerVisibility, TestClassification)
65            (TestLabels, TestLayerProjection, TestRasterLayer): New classes
66            for the individual tests
67    
68            * test/support.py (FileLoadTestCase.filename): New base class for
69            file loading tests
70    
71    2003-05-21  Jan-Oliver Wagner <[email protected]>
72    
73            * Resources/Projections/defaults.proj: Renamed 'Universal Transverse
74            Mercator' to 'UTM Zone 32' as a more convenient example.
75            Added 'Gauss Krueger Zone 6'.
76    
77            * Data/iceland_sample_raster.thuban: political polygon now
78            filled transparent to have the raster image visible at once.
79    
80    2003-05-21  Frank Koormann  <[email protected]>
81    
82            * Thuban/UI/mainwindow.py (MainWindow): Renamed _OnClose() back to
83            OnClose() to keep in sync with extensions. Internally Thuban
84            still uses "underscored" names.
85    
86    2003-05-20  Jonathan Coles   <[email protected]>
87    
88            This puts back Raster layer support. These layers support projections
89            through the GDAL library. Currently, the CVS version is being used.
90            There are no Debian packages available although this may change soon.
91            A GDAL driver was extended to support writing to memory rather to
92            files.
93    
94            There is still some work that needs to be done, such as some error
95            handling when loading invalid images or when there is a problem
96            projecting the image. This putback simply checks in the majority
97            of the work.
98    
99            * setup.py: Add gdalwarp library extension.
100    
101            * Thuban/Model/layer.py (BaseLayer.HasClassification): New.
102            Defaults to False, but can be overridden by subclasses if they
103            support classification.
104            (RasterLayer): New. Defines a new layer that represents an
105            image.
106    
107            * Thuban/Model/load.py (SessionLoader.__init__): Add rasterlayer
108            tag handler.
109            (SessionLoader.start_layer): Encode the filename.
110            (SessionLoader.start_rasterlayer, SessionLoader.end_rasterlayer):
111            New. Supports reading a rasterlayer tag.
112    
113            * Thuban/Model/map.py (Map.BoundingBox): Fix typo in comment.
114    
115            * Thuban/Model/save.py (XMLWriter.encode): Don't assume that we
116            get a string in Latin1. If we get such as string convert it to
117            unicode first, otherwise leave if alone before encoding.
118            (SessionSaver.write_layer): Add support for writing both Layers
119            and RasterLayers.
120    
121            * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):
122            The right argument may not be a string, it could also be a Column.
123    
124            * Thuban/UI/application.py (ThubanApplication.CreateMainWindow):
125            Make initial window size 600x400. Fixes RTBug #1872.
126    
127            * Thuban/UI/classifier.py (Classifier.__init__): Rearrange how
128            the dialog is constructed so that we can support layers that
129            do not have classifications.
130            (Classifier._OnTry): Only build a classification if the layer
131            supports one.
132    
133            * Thuban/UI/legend.py: Change all checks that a layer is an
134            instance of Layer into checks against BaseLayer.
135            (LegendTree.__FillTreeLayer): Only add children to a branch if
136            the layer supports classification.
137    
138            * Thuban/UI/mainwindow.py (MainWindow.NewSession,
139            MainWindow.OpenSession): Don't proceed with an action if the
140            user chooses Cancel when they are asked to save changes.
141            (MainWindow.AddRasterLayer): New. Open a dialog to allow the
142            user to select an image file. Create a new RasterLayer and add
143            it to the map.
144    
145            * Thuban/UI/renderer.py (MapRenderer.render_map): Add support
146            for rendering RasterLayer layers.
147            (MapRenderer.draw_raster_layer): Actually method that calls
148            the GDALWarp python wrapper and constructs an image from the
149            data returned.
150    
151            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Change the
152            Choices symbols to match those used in the table query method.
153            Replace deprecated method calls on table with new method names.
154    
155            * Thuban/UI/view.py (MapCanvas.set_view_transform): Try to limit
156            how small the scale can get. This still needs more testing.
157    
158            * extensions/thuban/bmpdataset.cpp: New, but copied from GDAL.
159            Provides a driver to output in .bmp format.
160    
161            * extensions/thuban/cpl_mfile.cpp, extensions/thuban/cpl_mfile.h:
162            New. Provides IO routines which write to memory, rather than a file.
163    
164            * extensions/thuban/gdalwarp.cpp: New, but basically a direct copy
165            of the gdalwarp utility provided in GDAL. Added function calls
166            that can be accessed from python.
167    
168            * Data/iceland_sample_raster.thuban: New. Sample file that uses
169            a raster layer.
170    
171            * Data/iceland/island.tfw, Data/iceland/island.tif: New. Raster
172            layer image data.
173    
174            * Doc/thuban.dtd: Added rasterlayer attribute definition.
175    
176            * test/test_layer.py, test/test_load.py, test/test_save.py: Added
177            tests associated with the raster layer code.
178    
179            * test/test_transientdb.py
180            (TestTransientTable.test_auto_transient_table_query): Added a test
181            for using a Column object as the "right" parameter to a query.
182    
183    2003-05-19  Frank Koormann  <[email protected]>
184    
185            * Thuban/version.py (get_changelog_date):
186            Catch exceptions if ChangeLog does not exist.
187    
188            * Thuban/UI/view.py (MapCanvas.Export): Bugfix
189    
190    2003-05-19  Frank Koormann  <[email protected]>
191    
192            Extended version information for Thuban
193    
194            * Thuban/version.py: New, version information for Thuban: Last
195            modification date and last ChangeLog entry date.
196    
197            * Thuban/UI/mainwindow.py (MainWindow.About()): Extended version
198            information: Display Thuban, wxPython and Python version.
199    
200    2003-05-16  Bernhard Herzog  <[email protected]>
201    
202            * Thuban/Model/save.py: Remove some unused imports including the
203            __future__ import for nested_scopes as Thuban relies on Python 2.2
204            now.
205            (XMLWriter.encode): Remove the special case for a None argument.
206            In the saver encode is always called with a string argument.
207    
208    2003-05-16  Bernhard Herzog  <[email protected]>
209    
210            * Thuban/UI/__init__.py: Remove the work-around for the locale bug
211            in wxPython (at least when usinvg wxGTK) prior to 2.4. The symptom
212            of the bug was that e.g. float("1.2") would fail. Thuban now
213            requires 2.4.x.
214            
215    2003-05-16  Frank Koormann   <[email protected]>
216    
217            Printing enhancement and WMF export (under Win32)
218    
219            * Thuban/UI/renderer.py (ExportRenderer): New, derived from
220            ScreenRenderer. Renders Map, Legend and Scalebar for export.
221            (PrinterRenderer): New, derived from ExportRenderer. Replaces the old
222            PrintRender.
223    
224            * Thuban/UI/view.py (MapPrintout.__init__): Enhanced parameter set
225            to fullfil information needed for PrinterRenderer.
226            (MapCanvas.Export): New. Export Map (currently only to WMF on Win32).
227            (MapCanvas.Print): Adapted to new MapPrintout.
228            (OutputTransform): General calculations to transform from canvas
229            coordinates to export/printing devices.
230    
231            * Thuban/UI/mainwindow.py (MainWindow.ExportMap()): New. Added also
232            new method_command to call ExportMap, with platform dependency (only
233            __WXMSW__)
234      
235            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Position and Size
236            of scalebar drawing area as new parameters.
237            
238            * Thuban/Model/scalebar.py (roundInterval): round long instead of int
239    
240            * Thuban/UI/legend.py (ScalebarBitmap.__SetScale):
241            Update to extended scalebar.DrawScalebar header.
242    
243            * test/test_export.py: New, test Thuban.UI.view.OutputTransform()
244    
245            * test/test_scalebar.py: Made test executable as standalone.
246    
247    2003-05-16  Bernhard Herzog  <[email protected]>
248    
249            * Thuban/Model/table.py (Table): Remove this compatibility alias
250            for DBFTable.
251    
252            * test/test_table.py: Import DBFTable as Table because that alias
253            doesn't exist anymore.
254    
255            * Thuban/UI/classgen.py: Remove some unused imports
256    
257    2003-05-14  Jonathan Coles   <[email protected]>
258    
259            * Thuban/Model/classgen.py (ClassGenerator.GenSingletonsFromList):
260            Fix docstring.
261            (ClassGenerator.GenUniformDistribution): Fix spelling of method name.
262            (ClassGenerator.GenQuantiles): Use the left/right brackets and min/max
263            values of the supplied range to determine the beginning and end
264            bounds of the generated classes.
265    
266            * Thuban/Model/range.py (Range.number_re): Now accepts floats that
267            do not have a leading 0 (.5 is now accepted as well as 0.5).
268    
269            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Fix name of method
270            call to ClassGenerator.GenUniformDistribution.
271    
272            * Thuban/UI/projdialog.py (ProjFrame.__do_layout): Fix Windows
273            layout bug with the 'Projection' label.
274    
275            * test/support.py (FloatTestCase): New. Needed for the Range tests.
276    
277            * test/test_range.py: New. Imported from SciParam.
278    
279    2003-05-12  Jonathan Coles   <[email protected]>
280    
281            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Replace call
282            to table.UniqueValues() with calls that retrieve all the values
283            from the table. This will need to be replaced by a method on table
284            which can simply return the list (perhaps more efficiently).
285    
286    2003-05-12  Jonathan Coles   <[email protected]>
287    
288            The return value of ClassGenerator.CalculateQuantiles has changed.
289            Refer to the documentation for details.
290    
291            * test/test_classgen.py: Modified Quantile tests to use the
292            new return values.
293    
294            * Thuban/Model/classgen.py
295            (ClassGenerator.GenQuantiles): Add comments describing the parameters,
296            use new return values from CalculateQuantiles to produce the correct
297            range bounds in the Classification.
298            (ClassGenerator.CalculateQuantiles): Add more comments describing
299            the return values and parameters. Make minor adjustments to improve
300            the legibility of the code. Fix problem with adjusted not being set
301            in most cases.
302    
303    2003-05-12  Frank Koormann <[email protected]>
304            
305            * Thuban/Model/save.py (XMLWriter.encode()): Explicite call to unicode
306            and latin1. Fixes #1851 finally.
307    
308    2003-05-09  Jonathan Coles   <[email protected]>
309    
310            * test/test_classgen.py: New. Tests the Quantile algorithm.
311    
312            * Thuban/Model/classgen.py (ClassGenerator.CalculateQuantiles):
313            Clean up debugging statement, add comments, fix a small bug in the
314            returned adjusted percentiles.
315            
316    2003-05-09  Jonathan Coles   <[email protected]>
317    
318            Introduces Range class from SciParam into the ClassGroupRange class,
319            and such ranges can now be saved and loaded from disk.
320    
321            Quantiles are now available in the Classification Generator.
322    
323            Initial support for building Queries on a table. Doesn't do anything
324            but run some tests.
325    
326            * Thuban/Model/classification.py: Explicit imports.
327            (ClassGroupRange): Use the Range class to store the underlying
328            range information. The interface remains the same, except for
329            GetRange(), and you can also supply a Range object as the min
330            parameter to SetRange or __init__.
331    
332            * Thuban/Model/load.py (XMLReader.encode): New. Encodes the given
333            string appropriately for use in Thuban. Fixes RTbug #1851.
334            (SessionLoader.end_projection): Handle the context of the
335            projection tag a bit better by looking at what objects are not
336            None. There was an assumption that a projection tag for a map
337            could occur before any layers.
338            (SessionLoader.start_clrange): Provide backward compatibility for
339            reading min/max values as well as the new range parameter.
340    
341            * Thuban/Model/map.py: Explicit imports.
342    
343            * Thuban/Model/resource.py: Import _.
344            (ProjFileSaver.write): write header using projfile.dtd.
345    
346            * Thuban/Model/save.py: Explicit imports.
347            (XMLWriter.encode): New. Encode the given string from a format
348            used by Thuban into UTF-8. Fixes RTbug #1851.
349    
350            * Thuban/UI/classgen.py: Explicit imports.
351            (ClassGenDialog.__init__): Clean up the code and add support
352            for Quantiles.
353            (ClassGenDialog.OnOK): Add support for Quantiles.
354            (GenQuantilesPanel): New. Input panel for Quantiles.
355            (ClassGenerator, CustomRamp, MonochromaticRamp, GreyRamp, RedRamp,
356            GreenRamp, BlueRamp, HotToColdRamp): Move to Thuban/Model/classgen.py
357    
358            * Thuban/Model/classgen.py: New. Contains all the classes named above.
359    
360            * Thuban/UI/classifier.py: Explicit imports.
361            (ClassTable.GetValueAsCust, ClassTable.__ParseInput,
362            ClassTable.SetValueAsCustom): Reworked to use new Range class.
363    
364            * Thuban/UI/legend.py: Explicit imports.
365    
366            * Thuban/UI/mainwindow.py: Add support for the Join Dialog. Added
367            a Table menu and associated method calls.
368            (MainWindow.choose_color): Removed. No longer needed.
369    
370            * Thuban/UI/projdialog.py (ProjFrame.__VerifyButtons): Save button
371            should be disabled if no projection is selected in the available
372            list.
373    
374            * Thuban/UI/renderer.py: Explicit imports.
375    
376            * Thuban/UI/tableview.py (TableGrid.OnRangeSelect): Fix some issues
377            with correctly selecting the rows and issuing the right events.
378            Be sure to call Skip() to allow the grid to do some of its own
379            handling which allows the rows to actually be selected.
380            (LayerTableGrid.select_shapes): Rename from select_shape. Supports
381            selecting multiple shapes.
382            (LayerTableFrame): Support for building Queries.
383            (LayerTableFrame.select_shapes): Allow multiple shapes to be selected.
384    
385            * Thuban/UI/tree.py: Explicit imports.
386    
387            * Thuban/UI/view.py (MapCanvas): Delegate "SelectedShapes" so the
388            table view can call it.
389    
390            * test/test_classification.py: Explicit imports.
391            (TestClassification.test_ClassGroupRange): Fix test for new
392            Range class.
393    
394            * Doc/thuban.dtd: Add range parameter for clrange.
395    
396            * Thuban/Model/range.py: Taken from SciParam. Used as the underlying
397            object in ClassGroupRange, and also uesd for inputting ranges in
398            the classifer table and elsewhere.
399    
400            * Thuban/UI/join.py: New. Initial Join dialog. No real functionality
401            yet.
402    
403    2003-05-09  Frank Koormann <[email protected]>
404    
405            * Thuban/UI/scalebar.py (DrawScaleBar): Draw only if interval > 0.0.
406    
407    2003-05-08  Frank Koormann <[email protected]>
408    
409            Coding style updates
410    
411            * test/test_scalebar.py: Replaced tab indentation by spaces.
412    
413            * Thuban/UI/scalebar.py: Explicit imports.
414    
415    2003-05-08  Frank Koormann <[email protected]>
416    
417            * Thuban/UI/scalebar.py
418            (ScaleBar.DrawScalebar): Format string bug fixed.
419    
420    2003-05-08  Frank Koormann <[email protected]>
421    
422            Reorganization of scalebar component (no wx in Thuban/Model)
423    
424            * Thuban/Model/scalebar.py: Rendering moved to Thuban/UI/scalebar.py
425            (deriveInterval):
426            Calculate scalebar interval and unit which fits in width for scale.
427            (roundInterval): Round float.
428    
429            * Thuban/UI/scalebar.py (ScaleBar): Scalebar rendering
430    
431            * test/test_scalebar.py: Test for Thuban/Model/scalebar.py methods.
432    
433            * Thuban/UI/legend.py: Import Thuban.UI.scalebar
434    
435    2003-05-08  Frank Koormann <[email protected]>
436    
437            * Thuban/UI/legend.py (ScalebarBitmap.SetCanvas):
438            Initialize ScaleBar with canvas.map
439    
440            * Thuban/Model/scalebar.py (ScaleBar.roundInterval()): New,
441            round intervals to display smarter lengths
442            (ScaleBar.DrawScalebar): Draw Scalebar only if the map contains a
443            layer. If the maps has no projection applied grey the scalebar.
444    
445    2003-05-07  Frank Koormann <[email protected]>
446            
447            Basic Scalebar features added.
448    
449            * Thuban/Model/scalebar.py (ScaleBar): New, scalebar rendering.
450    
451            * Thuban/UI/legend.py (LegendPanel): Added scalebar bitmap
452            (ScaleBarBitmap): New, links the scalebar bitmap with view messages
453            and the renderer.
454    
455            * Thuban/UI/view.py (MapCanvas.set_view_transform): Issue SCALE_CHANGED.
456    
457            * Thuban/UI/messages.py: SCALE_CHANGED added.
458    
459    2003-05-07  Bernhard Herzog  <[email protected]>
460    
461            * Thuban/Model/session.py (Session.__init__): New instance
462            variable shapestores to hold a list of all open shapestore objects
463            (Session.ShapeStores): New. Accessor method for the shapestores
464            list.
465            (Session._add_shapestore, Session._clean_weak_store_refs): New.
466            Internal methods to maintain the shapestores list.
467            (Session.Tables): New. Return all tables open in the session.
468            (Session.OpenShapefile): Insert the new ShapeStore into the
469            shapestores list.
470    
471            * test/test_session.py (TestSessionSimple.test_initial_state): Add
472            tests for ShapeStores and Tables
473            (TestSessionWithContent.test_shape_stores)
474            (TestSessionWithContent.test_tables): New. Test cases for
475            ShapeStores and Tables
476    
477    2003-05-07  Bernhard Herzog  <[email protected]>
478    
479            * Thuban/Model/transientdb.py (TransientTableBase.ReadRowAsDict):
480            Add comments about the optimizations used.
481            (AutoTransientTable.ReadValue, TransientTableBase.ReadValue): New.
482            Implement the ReadValue table interface method.
483    
484            * test/test_transientdb.py
485            (TestTransientTable.run_iceland_political_tests)
486            (TestTransientTable.test_transient_joined_table): Add tests for
487            ReadValue
488    
489    2003-05-07  Frank Koormann <[email protected]>
490    
491            * Resources/Bitmaps/fulllayerextent.xpm,
492            Resources/Bitmaps/fullselextent.xpm: Replaced the place holders with
493            new icons.
494    
495    2003-05-06  Bernhard Herzog  <[email protected]>
496    
497            * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):
498            New. Simply delegate to the transient table's version.
499    
500            * test/test_transientdb.py
501            (TestTransientTable.test_auto_transient_table_query): New. Test
502            case for AutoTransientTable's SimpleQuery
503    
504    2003-05-06  Bernhard Herzog  <[email protected]>
505    
506            * Thuban/Model/transientdb.py (TransientTableBase.SimpleQuery):
507            Implement a simple query method for the query dialog
508            (TransientTableBase.create): Add an INTEGER PRIMARY KEY that holds
509            the row index or shapeid.
510            (TransientTable.create): Insert the right value of the row index
511            (TransientJoinedTable.create): Copy the row index of the left
512            table to the joined result table
513    
514            * test/test_transientdb.py
515            (TestTransientTable.test_transient_table_read_twice): Fix
516            doc-string
517            (TestTransientTable.test_transient_table_query): New. Test for the
518            SimpleQuery method
519    
520    2003-05-06  Bernhard Herzog  <[email protected]>
521    
522            Convert all table users to use the new table interface. This only
523            covers Thuban itself, not GREAT-ER or other applications built on
524            Thuban yet, so the compatibility interface stays in place for the
525            time being but it now issues DeprecationWarnings.
526    
527            Finally, the new Table interface has a new method, HasColumn.
528    
529            * Thuban/Model/table.py (OldTableInterfaceMixin): All methods
530            issue deprecation warnings when they're. The warnings refer to the
531            caller of the method.
532            (OldTableInterfaceMixin.__deprecation_warning): New. Helper method
533            for the deprecation warnings
534    
535            * test/test_table.py: Ignore the deprecation warnings for the old
536            table in the tests in this module. The purpose of the tests is to
537            test the old interface, after all.
538    
539            * test/test_transientdb.py
540            (TestTransientTable.run_iceland_political_tests): Use the
541            constants for the types. Add a test for HasColumn
542            (TestTransientTable.test_transient_joined_table): Adapt to new
543            table interface. Add a test for HasColumn
544            (TestTransientTable.test_transient_table_read_twice): Adapt to new
545            table interface
546    
547            * Thuban/UI/tableview.py (DataTable.SetTable, DataTable.GetValue):
548            Adapt to new table interface
549    
550            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Adapt to
551            new table interface
552    
553            * Thuban/UI/controls.py (RecordListCtrl.fill_list)
554            (RecordTable.SetTable): Adapt to new table interface
555    
556            * Thuban/UI/classifier.py (Classifier.__init__)
557            (Classifier.__init__): Adapt to new table interface
558    
559            * Thuban/UI/classgen.py (ClassGenDialog.__init__)
560            (GenUniformPanel._OnRetrieve, GenUniquePanel._OnRetrieve): Adapt
561            to new table interface
562    
563            * Thuban/Model/transientdb.py (TransientTableBase.HasColumn)
564            (AutoTransientTable.HasColumn): Implement the new table interface
565            method
566            (AutoTransientTable.ReadRowAsDict, AutoTransientTable.ValueRange)
567            (AutoTransientTable.UniqueValues): Adapt to new table interface
568    
569            * Thuban/Model/layer.py (Layer.SetShapeStore, Layer.GetFieldType):
570            Adapt to new table interface
571    
572            * test/test_layer.py (TestLayer.open_shapefile): Helper method to
573            simplify opening shapefiles a bit easier.
574            (TestLayer.test_arc_layer, TestLayer.test_polygon_layer)
575            (TestLayer.test_point_layer): Use the new helper method
576            (TestLayer.test_get_field_type): New. Test for the GetFieldType
577            method
578    
579            * test/test_dbf_table.py (TestDBFTable.test_has_column): Test for
580            the new table method
581    
582            * test/test_memory_table.py (TestMemoryTable.test_has_column):
583            Test for the new table method HasColumn
584    
585    2003-05-06  Jonathan Coles   <[email protected]>
586    
587            Addresses the "Selection Extent" wish of RTbug #1787.
588    
589            * Resources/Bitmaps/fulllayerextent.xpm,
590            Resources/Bitmaps/fullselextent.xpm: Bitmaps for layer and selection
591            extent. These are just place holders for the real bitmaps.
592    
593            * Thuban/Model/layer.py (Shape): Since a Shape is immutable only
594            calculate the bounding box once (the first time compute_bbox() is
595            called).
596            (Layer.ShapesBoundingBox): New. Given a list of shape ids, return
597            the bounding box for the shapes in lat/long coordinates.
598    
599            * Thuban/UI/mainwindow.py: Added new "Full selection extent" menu
600            option.
601            (MainWindow.has_selected_shapes): New. Returns true if there are
602            any selected shapes.
603            (MainWindow.FullSelectionExtent): New. Calls
604            MapCanvas.FitSelectedToWindow() when the user selects the menu option.
605            (_has_selected_shapes): New. Returns true if there are any
606            selected shapes.
607    
608            * Thuban/UI/selection.py (Selection.HasSelectedShapes): New. Returns
609            true if there are any selected shapes.
610    
611            * Thuban/UI/view.py (MapCanvas): Added delegated method
612            HasSelectedShapes.
613            (MapCanvas.FitSelectedToWindow): New. Centers and scales any selected
614            shapes on the canvas using the map projection (if any).
615    
616            * test/test_layer.py (TestLayer.test_arc_layer): Add some tests
617            for Layer.ShapesBoundingBox().
618    
619    2003-05-06  Bernhard Herzog  <[email protected]>
620    
621            * Resources/Projections/defaults.proj: Fix spelling of Mercator
622    
623  2003-05-05  Jonathan Coles   <[email protected]>  2003-05-05  Jonathan Coles   <[email protected]>
624    
625          Addresses the "Full Layer Extent" wish of RTbug #1787.          Addresses the "Full Layer Extent" wish of RTbug #1787.

Legend:
Removed from v.823  
changed lines
  Added in v.971

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26