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

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

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

revision 1522 by bh, Wed Jul 30 12:34:22 2003 UTC revision 1606 by bh, Tue Aug 19 11:16:40 2003 UTC
# Line 1  Line 1 
1    2003-08-19  Bernhard Herzog  <[email protected]>
2    
3            Add very basic postgis database support and the corresponding test
4            cases. The test cases require a PostgreSQL + postgis installation
5            but no existing database. The database will be created
6            automatically by the test cases
7    
8            * test/README: Add note about skipped tests and the requirements
9            of the postgis tests.
10    
11            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
12    
13            * test/test_postgis_db.py: New. Test cases for the postgis
14            support.
15    
16            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
17            format
18    
19            * test/test_wellknowntext.py: New. Test cases for the
20            wellknowntext parser
21    
22            * test/postgissupport.py: New. Support module for tests involving
23            a postgis database.
24    
25            * test/support.py (execute_as_testsuite): Shut down the postmaster
26            if it's still running after the tests
27    
28            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
29            well known text format
30    
31    2003-08-19  Jan-Oliver Wagner <[email protected]>
32    
33            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
34            message dialog.
35    
36    2003-08-18  Bernhard Herzog  <[email protected]>
37    
38            * test/support.py (ThubanTestResult.printErrors): Indent the
39            reason for the skips in the output to make it a bit more readable.
40            (execute_as_testsuite): New helper function to run a test suite
41            and print some more information.
42            (run_tests): Use execute_as_testsuite to run the tests
43    
44            * test/runtests.py (main): Use execute_as_testsuite to run the
45            tests
46    
47    2003-08-18  Bernhard Herzog  <[email protected]>
48    
49            Fix some bugs in Thuban and the test suite that were uncovered by
50            changes introduced in Python 2.3:
51    
52            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
53            filename is an absolute name
54    
55            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
56            filename is an absolute name
57    
58            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
59            unique filename to save to and use the correct relative filename
60            in the expected output.
61            (SaveSessionTest.test_dbf_table): Use the correct relative
62            filename in the expected output.
63    
64            * test/test_layer.py (TestLayer.test_raster_layer): Update the
65            test to check whether the filename is absolute.
66    
67    2003-08-18  Jan-Oliver Wagner <[email protected]>
68    
69            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
70    
71    2003-08-15  Bernhard Herzog  <[email protected]>
72    
73            Change the way shapes are returned by a shape store. The
74            ShapesInRegion method returns an iterator over actual shape
75            objects instead of a list of shape ids.
76    
77            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
78            id.
79            (ShapefileStore.ShapesInRegion): Return an iterator over the
80            shapes which yields shape objects instead of returning a list of
81            shape ids
82            (ShapefileStore.AllShapes): New. Return an iterator over all
83            shapes in the shape store
84            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
85    
86            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
87            doc-string.
88    
89            * Thuban/UI/baserenderer.py
90            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
91            layer_shapes and make it return an iterator containg shapes
92            instead of a list of ids.
93            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
94            layer_shapes() change
95    
96            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
97            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
98    
99            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
100            changes in the ShapesInRegion return value.
101            (ViewPort._get_hit_tester): Remove commented out code
102    
103            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
104            new return value.
105            (SimpleShapeStore.AllShapes): New. Implement this method too.
106    
107            * test/test_layer.py (TestLayer.test_arc_layer)
108            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
109            (TestLayer.test_point_layer_with_projection)
110            (TestLayer.test_derived_store): Adapt to changes in the
111            ShapesInRegion return value.
112    
113            * test/test_shapefilestore.py
114            (TestShapefileStoreArc.test_shapes_in_region)
115            (TestShapefileStorePolygon.test_shapes_in_region)
116            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
117            in the ShapesInRegion return value.
118            (TestShapefileStorePoint.test_all_shapes)
119            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
120            methods
121    
122            * test/test_derivedshapestore.py
123            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
124            the ShapesInRegion return value.
125            (TestDerivedShapeStore.test_all_shapes)
126            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
127            methods
128    
129    2003-08-15  Bernhard Herzog  <[email protected]>
130    
131            Make the renderers deal correctly with raw vs. python level
132            representation of shape geometries
133    
134            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
135            Return a flag useraw in addition to the callable and the parameter
136            to indicate whether the callable can deal with the raw shape data
137            or uses the higher level python lists of coordinates. The callable
138            now should accept either the raw data or the return value of the
139            shape's Points() method.
140            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
141            change
142            (BaseRenderer.projected_points): Instead of the shape id use the
143            points list as parameter.
144            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
145            (BaseRenderer.draw_point_shape): Adapt to projected_points()
146            change and accept the points list as parameter instead of the
147            shape id.
148    
149            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
150            the useraw flag as required by the BaseRenderer
151            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
152            changes.
153    
154            * test/test_baserenderer.py
155            (TestBaseRenderer.test_point_with_classification): New test for
156            rendering a map with classifications.
157    
158    2003-08-15  Bernhard Herzog  <[email protected]>
159    
160            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
161            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
162            (ViewPort._get_hit_tester, ViewPort.projected_points)
163            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
164            (ViewPort._find_label_at): Split the find_shape_at method into
165            several new methods and use the functions in the hit-test module.
166    
167            * Thuban/UI/hittest.py: New module with Python-level hit-testing
168            functions
169    
170            * test/test_hittest.py: New. Test for the new hittest module
171    
172    2003-08-15  Bernhard Herzog  <[email protected]>
173    
174            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
175            projection to all corners of the bounding box to get a better
176            approximation of the projected bounding box
177    
178            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
179            New. Test coordinate handling of a layer with a projection.
180            Catches the bug fixed in Layer.ShapesInRegion
181    
182    2003-08-15  Bernhard Herzog  <[email protected]>
183    
184            Move some of the mock objects in test_baserenderer into their own
185            module so they can easily be used from other tests
186    
187            * test/mockgeo.py: New test helper module with some mock objects
188            for geometry related things like shapes, shapestores and
189            projections.
190    
191            * test/test_mockgeo.py: New. Tests for the new helper module
192    
193            * test/test_baserenderer.py: Some of the mock-objects are in
194            mockgeo now.
195    
196    2003-08-12  Jan-Oliver Wagner <[email protected]>
197    
198            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
199    
200    2003-08-12  Bernhard Herzog  <[email protected]>
201    
202            * po/de.po: New. German translations by Bjoern Broscheit
203    
204    2003-08-12  Bernhard Herzog  <[email protected]>
205    
206            * Thuban/UI/projdialog.py (UnknownProjPanel._DoLayout): Translated
207            strings have to be one string literal.
208    
209    2003-08-11  Bernhard Herzog  <[email protected]>
210    
211            * test/support.py (FloatComparisonMixin.assertPointListEquals):
212            New. This method was used in various derived classes, but it's
213            better to have it here.
214    
215            * test/test_shapefilestore.py
216            (ShapefileStoreTests.assertPointListEquals): Removed. It's now in
217            FloatComparisonMixin
218    
219            * test/test_layer.py (TestLayer.assertPointListEquals): Removed.
220            It's now in FloatComparisonMixin
221    
222            * test/test_derivedshapestore.py
223            (TestDerivedShapeStore.assertPointListEquals): Removed. It's now
224            in FloatComparisonMixin
225    
226    2003-08-11  Bernhard Herzog  <[email protected]>
227    
228            * Thuban/UI/join.py (JoinDialog.OnJoin): Add missing space to
229            error message
230    
231    2003-08-08  Jan-Oliver Wagner <[email protected]>
232    
233            * Doc/manual/thuban-manual.xml: Now use authorgroup. Added revhistory
234            with version number.
235            Changed title to reflect version number of Thuban.
236    
237    2003-08-08  Jan-Oliver Wagner <[email protected]>
238    
239            * Thuban/UI/about.py (About.__init__): Reworked the hall of fame. Now
240            the list corresponds to the "About" web page.
241    
242    2003-08-08  Bernhard Herzog  <[email protected]>
243    
244            * Thuban/UI/projdialog.py (UTMProposeZoneDialog.dialogLayout):
245            Make sure translated strings are recognized as one string literal.
246    
247            * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog.dialogLayout):
248            Make sure translated strings are recognized as one string literal.
249    
250            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Make sure
251            translated strings are recognized as one string literal.
252    
253            * Thuban/UI/application.py (ThubanApplication.OpenSession): Make
254            sure translated strings are recognized as one string literal.
255    
256    2003-08-07  Bernhard Herzog  <[email protected]>
257    
258            * Thuban/Model/data.py (DerivedShapeStore.RawShapeFormat): New.
259            Simply delegates to the original shapestore.
260    
261            * test/test_derivedshapestore.py
262            (TestDerivedShapeStore.test_raw_format): New. Test case for
263            DerivedShapeStore.RawShapeFormat
264    
265    2003-08-07  Bernhard Herzog  <[email protected]>
266    
267            Add raw data interface to shape objects.
268    
269            * Thuban/Model/data.py (ShapefileShape, Shape): Rname the shape
270            class to ShapefileShape which now holds shapefile specific
271            information.
272            (ShapefileShape.compute_bbox): Simplified to not cache any
273            information. The way this method is used that shouldn't matter
274            performance wise.
275            (ShapefileShape.RawData): New. Return the shapeid which is the raw
276            data format for shapes from shapefiles.
277            (ShapefileStore.RawShapeFormat): New. Return the raw datatype used
278            in the shape objects returned by a shapestore. For a
279            ShapefileStore this is always RAW_SHAPEFILE.
280            (RAW_PYTHON, RAW_SHAPEFILE): Constants for the RawShapeFormat
281            method.
282    
283            * test/test_shapefilestore.py
284            (TestShapefileStore.test_raw_format): New test to test the raw
285            format feature of shapes.
286    
287            * Thuban/Model/layer.py: Remove the unused import of Shape from
288            data. It was only there for interface compatibility but it's not
289            used inside of Thuban and the generic Shape class has gone away.
290    
291            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Check
292            the raw data format and only use an optimized version of its a
293            shapefile.
294    
295    2003-08-07  Bernhard Herzog  <[email protected]>
296    
297            * test/test_baserenderer.py (SimpleShape): Shape class for the
298            tests.
299            (SimpleShapeStore.Shape): Use SimpleShape instead of
300            Thuban.Model.data.Shape to make the tests independed of the coming
301            changes.
302    
303    2003-08-07  Bernhard Herzog  <[email protected]>
304    
305            * test/support.py (SkipTest, ThubanTestResult, ThubanTestRunner)
306            (ThubanTestProgram): New classes that extend the respective
307            classes from unittest. These new version support skipping tests
308            under certain expected conditions. In the Thuban test suite we
309            uses this for tests that require the optional gdal support.
310            (run_tests): Use ThubanTestProgram instead of the unittest.main()
311    
312            * test/runtests.py (main): Use the new ThubanTestRunner instead of
313            the normal one from unittest
314    
315            * test/test_layer.py (TestLayer.test_raster_layer): If this test
316            is not run because gdal support isn't available report this to the
317            runner.
318    
319            * test/test_baserenderer.py
320            (TestBaseRenderer.test_raster_no_projection): Do not run this test
321            if gdal support isn't available and report this to the runner.
322    
323    2003-08-06  Bernhard Herzog  <[email protected]>
324    
325            Rearrange the renderers a bit, partly in preparation for changes
326            required for the postgis merge, partly to make it more testable.
327            Also make the representation of coordinates in Shapes more
328            consistent.
329    
330            * Thuban/UI/renderer.py (MapRenderer): Most of the code/methods in
331            this class is now in BaseRenderer. This class is now practically
332            only a specialization of BaseRenderer for rendering to an actual
333            wx DC.
334            (ScreenRenderer.draw_shape_layer): Use self.low_level_renderer()
335            to get the shapetype specific rendering functions.
336    
337            * Thuban/UI/baserenderer.py: New file with the basic rendering
338            logic. The code in this file is completely independend of wx.
339            (BaseRenderer): Class with the basic rendering logic
340    
341            * test/test_baserenderer.py: New. Test cases for BaseRenderer
342    
343            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
344            error_on_redraw to guard agains endless loops and stack overflows
345            when there's a bug in the rendering code that raises exceptions.
346            (MapCanvas.OnIdle, MapCanvas._do_redraw): Split the actual
347            rendering into a separate method _do_redraw so that error handling
348            is a bit easier. When an exception occurs, set error_on_redraw to
349            true. When it's true on entry to OnIdle do nothing and return
350            immediately.
351    
352            * Thuban/Model/data.py (ShapefileStore.Shape): For consistency, a
353            Shape object will always have the coordinates as a list of list of
354            coordinate pairs (tuples).
355            (Shape.compute_bbox): Adapt to new representation.
356    
357            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
358            (ViewPort.LabelShapeAt): Adapt to new coordinate representation in
359            Shape objects.
360    
361            * test/test_shapefilestore.py
362            (ShapefileStoreTests.assertFloatTuplesEqual)
363            (ShapefileStoreTests.assertPointListEquals): Rename to
364            assertPointListEquals and change purpose to checking equality of
365            the lists returned by Shape.Points().
366            (TestShapefileStoreArc.test_shape)
367            (TestShapefileStorePolygon.test_shape)
368            (TestShapefileStorePoint.test_shape): Use the new
369            assertPointListEquals instead of assertFloatTuplesEqual
370    
371            * test/test_layer.py (TestLayer.assertFloatTuplesEqual)
372            (TestLayer.assertPointListEquals): Rename to assertPointListEquals
373            and change purpose to checking equality of the lists returned by
374            Shape.Points().
375            (TestLayer.test_arc_layer, TestLayer.test_arc_layer)
376            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
377            (TestLayer.test_derived_store): Use the new assertPointListEquals
378            instead of assertFloatTuplesEqual
379    
380            * test/test_derivedshapestore.py
381            (TestDerivedShapeStore.assertFloatTuplesEqual)
382            (TestDerivedShapeStore.assertPointListEquals): Rename to
383            assertPointListEquals and change purpose to checking equality of
384            the lists returned by Shape.Points().
385            (TestDerivedShapeStore.test_shape): Use the new
386            assertPointListEquals instead of assertFloatTuplesEqual
387    
388    2003-08-06  Jan-Oliver Wagner <[email protected]>
389    
390            * Thuban/UI/projdialog.py (UTMPanel._OnPropose): Added test for
391            a bounding box. A dialog is raised in case, no bounding box
392            is found. This fixes bug #2043:
393            https://intevation.de/rt/webrt?serial_num=2043
394    
395    2003-08-05  Bernhard Herzog  <[email protected]>
396    
397            * Thuban/Model/color.py (Color.__repr__): Make the repr of a color
398            object look like a Color instantiation. Formerly it looked like a
399            tuple.
400    
401            * test/test_color.py (TestColor.test_repr)
402            (TestColor.test_equality, TestColor.test_inequality): New. test
403            some more apects of the Color class
404            (TestTransparent.test_repr, TestTransparent.test_hex)
405            (TestTransparent.test_equality): New. Test cases for the
406            Transparent object.
407    
408    2003-08-04  Jan-Oliver Wagner <[email protected]>
409    
410            * Doc/manual/thuban-manual.xml: a number of small improvements.
411            The resulting file is the version submitted for GREAT-ER II.
412    
413    2003-08-01  Bernhard Herzog  <[email protected]>
414    
415            * Thuban/UI/resource.py, Thuban/UI/projdialog.py,
416            Thuban/UI/join.py, Thuban/UI/classgen.py, Thuban/UI/about.py,
417            Thuban/Model/resource.py: Insert cvs keywords and doc-strings.
418    
419            * Thuban/UI/common.py: Insert cvs keywords and doc-strings.
420            (Color2wxColour, wxColour2Color, ThubanBeginBusyCursor)
421            (ThubanEndBusyCursor): Add doc-strings
422    
423    2003-08-01  Bernhard Herzog  <[email protected]>
424    
425            First step towards PostGIS integration. More abstraction by movin
426            more code from the layer to the shapestore. More methods of the
427            layer are now simply delegated to the equivalent method of the
428            shapestore. The SHAPETYPE_* constants are now in data not in
429            layer.
430    
431            * Thuban/Model/data.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
432            (SHAPETYPE_POINT, Shape): Move these constants and classes from
433            layer.py to data.py
434            (ShapefileStore.__init__): More Initialization for the new methods
435            and functionality.
436            (ShapefileStore.ShapeType, ShapefileStore.NumShapes)
437            (ShapefileStore.BoundingBox, ShapefileStore.ShapesInRegion)
438            (ShapefileStore.Shape): New methods that were formerly implemented
439            in the layer.
440            (DerivedShapeStore.Shape, DerivedShapeStore.ShapesInRegion)
441            (DerivedShapeStore.ShapeType, DerivedShapeStore.NumShapes)
442            (DerivedShapeStore.BoundingBox): New. DerivedShapeStore
443            equivalents of the new shape methods. These versions are simply
444            delegated to the original shapstore.
445    
446            * Thuban/Model/layer.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
447            (SHAPETYPE_POINT, Shape): Removed. They're now in data.py
448            (Layer.SetShapeStore): Removed the initializatin of instance
449            variables that were needed for the stuff that's now in
450            ShapefileStore
451            (Layer.BoundingBox, Layer.NumShapes, Layer.ShapeType)
452            (Layer.Shape, Layer.ShapesInRegion): Simply delegate to the
453            shapestore.
454    
455            * Thuban/UI/classifier.py, Thuban/UI/renderer.py,
456            Thuban/UI/viewport.py: Import the SHAPETYPE_* constants from data
457            instead of layer.
458    
459            * test/test_shapefilestore.py: New. Tests for ShapefileStore.
460    
461            * test/test_derivedshapestore.py: New. Tests for DerivedShapeStore.
462    
463            * test/test_layer.py: Import the SHAPETYPE_* constants from data
464            instead of layer.
465            (TestLayer.test_derived_store): Remove the test for the exception
466            when instantiating the DerivedShapeStore with an incompatible
467            table which is now in test_derivedshapestore.py. Add some more
468            tests of the layer methods to determine whether they work for a
469            DerivedShapeStore as well.
470    
471    2003-07-31  Jonathan Coles   <[email protected]>
472    
473            * Doc/manual/thuban-manual.xml: Fix the list of required packages
474            by just listing the name and where they can be found.
475    
476    2003-07-31  Frank Koormann   <[email protected]>
477    
478            * Doc/manual/thuban-manual.xml:
479            Changed the screenshot elements to figure.
480            Changed some variablelist elements to itemizedlist.
481            Added section on GDAL formats.
482    
483    2003-07-31  Jonathan Coles   <[email protected]>
484    
485            * Doc/manual/thuban-manual.xml: Added a few sentences about
486            the Fix Border Color option when generating classes.
487    
488    2003-07-30  Jonathan Coles   <[email protected]>
489    
490            * Thuban/Model/classgen.py: Add docstrings. Rename specific
491            Ramp instances to use lower_case_style.
492    
493            * Thuban/UI/classgen.py: Use renamed Ramp instances.
494            
495            * Thuban/UI/classifier.py: Add docstrings.
496    
497            * Thuban/UI/dock.py: Add docstrings.
498    
499            * test/test_classgen.py: Use renamed Ramp instances.
500    
501    2003-07-30  Bernhard Herzog  <[email protected]>
502    
503            * Thuban/Lib/connector.py (QueueingPublisher): Removed. This class
504            was never used in Thuban.
505    
506  2003-07-30  Bernhard Herzog  <[email protected]>  2003-07-30  Bernhard Herzog  <[email protected]>
507    
508          * Thuban/UI/join.py (JoinDialog.__init__): Use the table's Title()          * Thuban/UI/join.py (JoinDialog.__init__): Use the table's Title()

Legend:
Removed from v.1522  
changed lines
  Added in v.1606

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26