/[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 1403 by jonathan, Thu Jul 10 14:56:46 2003 UTC revision 1627 by bh, Thu Aug 21 16:09:01 2003 UTC
# Line 1  Line 1 
1    2003-08-21  Bernhard Herzog  <[email protected]>
2    
3            Make postgis support really optional including insensitive menu
4            items.
5    
6            * Thuban/Model/postgisdb.py (has_postgis_support): New. Return
7            whether the postgis is supported.
8    
9            * Thuban/UI/dbdialog.py: Put the psycopg import into try..except
10            to make postgis support optional
11    
12            * Thuban/UI/mainwindow.py (_has_postgis_support): New. Context
13            version of Thuban.Model.postgisdb.has_postgis_support
14            (database_management command): Make it only sensitive if postgis
15            is supported.
16    
17    2003-08-21  Jan-Oliver Wagner <[email protected]>
18    
19            * Doc/manual/thuban-manual.xml: Added CVS revision for rev-history.
20            (section Adding and Removing Layers): Added text and described
21            multi-selection.
22            (chapter Extensions): New.
23    
24    2003-08-21  Jan-Oliver Wagner <[email protected]>
25    
26            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Changed dialog
27            settings to allow multiple files to load into the map.
28            Also reduced selection to *.shp as a default.
29    
30    2003-08-20  Bernhard Herzog  <[email protected]>
31    
32            Add dialogs and commands to open database connections and add
33            database layers.
34    
35            * Thuban/UI/mainwindow.py (MainWindow.DatabaseManagement): New
36            method to open the database connection management dialog
37            (MainWindow.AddDBLayer): New method to add a layer from a database
38            (_has_dbconnections): New helper function to use for sensitivity
39            (database_management command, layer_add_db command): New commands
40            that call the above new methods.
41            (main_menu): Add the new commands to the menu.
42    
43            * Thuban/Model/postgisdb.py (PostGISConnection.__init__)
44            (PostGISConnection.connect): Establish the actual connection in a
45            separate method and call it in __init__. This makes it easier to
46            override the behavior in test cases
47            (PostGISConnection.BriefDescription): New method to return a brief
48            description for use in dialogs.
49    
50            * test/test_postgis_db.py (NonConnection): DB connection that
51            doesn't actually connect
52            (TestBriefDescription): New class with tests for the new
53            BriefDescription method
54    
55    2003-08-19  Jan-Oliver Wagner <[email protected]>
56    
57            Moved anything from extensions to libraries.
58    
59            * libraries: New.
60    
61            * libraries/ pyprojection, pyshapelib, shapelib, thuban: New.
62    
63            * libraries/pyprojection/ LICENSE, MANIFEST.in, Projection.i,
64            Projection.py, Projection_wrap.c, setup.py, swighelp.txt: These files have
65            been moved here from thuban/extensions/pyprojection/
66            See there in the Attic for the older history.
67    
68            * libraries/pyshapelib/ COPYING, ChangeLog, NEWS, README, dbflib.i,
69            dbflib.py, dbflib_wrap.c, pyshapelib_api.h, pytest.py, setup.py,
70            shapelib.i, shapelib.py, shapelib_wrap.c, shptreemodule.c: These files
71            have been moved here from thuban/extensions/pyshapelib/
72            See there in the Attic for the older history.
73    
74            * libraries/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c: These
75            files have been moved here from thuban/extensions/shapelib/
76            See there in the Attic for the older history.
77    
78            * libraries/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
79            gdalwarp.cpp, wxproj.cpp: These files have been moved here from
80            thuban/extensions/thuban/
81            See there in the Attic for the older history.
82    
83            * MANIFEST.in, setup.cfg, setup.py: renamed extensions to libraries.
84    
85            * extensions/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
86            gdalwarp.cpp, wxproj.cpp: Moved to libraries/thuban.
87    
88            * extensions/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c:
89            Moved to libraries/shapelib.
90    
91            * extensions/pyshapelib/ COPYING, NEWS, dbflib.py, pytest.py,
92            shapelib.py, README, dbflib_wrap.c, setup.py, shapelib_wrap.c,
93            ChangeLog, dbflib.i, pyshapelib_api.h, shapelib.i, shptreemodule.c:
94            Moved to libraries/pyshapelib.
95    
96            * extensions/pyprojection/ MANIFEST.in, Projection.py, setup.py,
97            LICENSE, Projection.i, Projection_wrap.c, swighelp.txt:
98            Moved to libraries/pyprojection.
99    
100            * extensions/ pyprojection, pyshapelib, shapelib, thuban: Removed.
101    
102            * extensions: Removed.
103    
104    2003-08-19  Bernhard Herzog  <[email protected]>
105    
106            * test/test_viewport.py (ViewPortTest): We don't use the
107            facilities of FileTestMixin so don't derive from it.
108            (TestViewportWithPostGIS): New class with tests for using a
109            viewport on a map with postgis layers.
110    
111    2003-08-19  Bernhard Herzog  <[email protected]>
112    
113            Add the db connection management to the session.
114    
115            * Thuban/Model/session.py (Session.__init__): New instance
116            variable db_connections
117            (Session.AddDBConnection, Session.DBConnections)
118            (Session.HasDBConnections, Session.CanRemoveDBConnection)
119            (Session.RemoveDBConnection): New methods to manage and query the
120            db connections managed by the session
121            (Session.OpenDBShapeStore): New method to open a shapestore from a
122            db connection
123    
124            * Thuban/Model/messages.py (DBCONN_REMOVED, DBCONN_ADDED): New
125            messages for the db connection handling in the session
126    
127            * test/test_postgis_session.py: New. test cases for the session's
128            db connection handling with postgis connections
129    
130    2003-08-19  Bernhard Herzog  <[email protected]>
131    
132            Add very basic postgis database support and the corresponding test
133            cases. The test cases require a PostgreSQL + postgis installation
134            but no existing database. The database will be created
135            automatically by the test cases
136    
137            * test/README: Add note about skipped tests and the requirements
138            of the postgis tests.
139    
140            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
141    
142            * test/test_postgis_db.py: New. Test cases for the postgis
143            support.
144    
145            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
146            format
147    
148            * test/test_wellknowntext.py: New. Test cases for the
149            wellknowntext parser
150    
151            * test/postgissupport.py: New. Support module for tests involving
152            a postgis database.
153    
154            * test/support.py (execute_as_testsuite): Shut down the postmaster
155            if it's still running after the tests
156    
157            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
158            well known text format
159    
160    2003-08-19  Jan-Oliver Wagner <[email protected]>
161    
162            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
163            message dialog.
164    
165    2003-08-18  Bernhard Herzog  <[email protected]>
166    
167            * test/support.py (ThubanTestResult.printErrors): Indent the
168            reason for the skips in the output to make it a bit more readable.
169            (execute_as_testsuite): New helper function to run a test suite
170            and print some more information.
171            (run_tests): Use execute_as_testsuite to run the tests
172    
173            * test/runtests.py (main): Use execute_as_testsuite to run the
174            tests
175    
176    2003-08-18  Bernhard Herzog  <[email protected]>
177    
178            Fix some bugs in Thuban and the test suite that were uncovered by
179            changes introduced in Python 2.3:
180    
181            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
182            filename is an absolute name
183    
184            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
185            filename is an absolute name
186    
187            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
188            unique filename to save to and use the correct relative filename
189            in the expected output.
190            (SaveSessionTest.test_dbf_table): Use the correct relative
191            filename in the expected output.
192    
193            * test/test_layer.py (TestLayer.test_raster_layer): Update the
194            test to check whether the filename is absolute.
195    
196    2003-08-18  Jan-Oliver Wagner <[email protected]>
197    
198            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
199    
200    2003-08-15  Bernhard Herzog  <[email protected]>
201    
202            Change the way shapes are returned by a shape store. The
203            ShapesInRegion method returns an iterator over actual shape
204            objects instead of a list of shape ids.
205    
206            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
207            id.
208            (ShapefileStore.ShapesInRegion): Return an iterator over the
209            shapes which yields shape objects instead of returning a list of
210            shape ids
211            (ShapefileStore.AllShapes): New. Return an iterator over all
212            shapes in the shape store
213            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
214    
215            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
216            doc-string.
217    
218            * Thuban/UI/baserenderer.py
219            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
220            layer_shapes and make it return an iterator containg shapes
221            instead of a list of ids.
222            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
223            layer_shapes() change
224    
225            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
226            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
227    
228            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
229            changes in the ShapesInRegion return value.
230            (ViewPort._get_hit_tester): Remove commented out code
231    
232            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
233            new return value.
234            (SimpleShapeStore.AllShapes): New. Implement this method too.
235    
236            * test/test_layer.py (TestLayer.test_arc_layer)
237            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
238            (TestLayer.test_point_layer_with_projection)
239            (TestLayer.test_derived_store): Adapt to changes in the
240            ShapesInRegion return value.
241    
242            * test/test_shapefilestore.py
243            (TestShapefileStoreArc.test_shapes_in_region)
244            (TestShapefileStorePolygon.test_shapes_in_region)
245            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
246            in the ShapesInRegion return value.
247            (TestShapefileStorePoint.test_all_shapes)
248            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
249            methods
250    
251            * test/test_derivedshapestore.py
252            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
253            the ShapesInRegion return value.
254            (TestDerivedShapeStore.test_all_shapes)
255            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
256            methods
257    
258    2003-08-15  Bernhard Herzog  <[email protected]>
259    
260            Make the renderers deal correctly with raw vs. python level
261            representation of shape geometries
262    
263            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
264            Return a flag useraw in addition to the callable and the parameter
265            to indicate whether the callable can deal with the raw shape data
266            or uses the higher level python lists of coordinates. The callable
267            now should accept either the raw data or the return value of the
268            shape's Points() method.
269            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
270            change
271            (BaseRenderer.projected_points): Instead of the shape id use the
272            points list as parameter.
273            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
274            (BaseRenderer.draw_point_shape): Adapt to projected_points()
275            change and accept the points list as parameter instead of the
276            shape id.
277    
278            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
279            the useraw flag as required by the BaseRenderer
280            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
281            changes.
282    
283            * test/test_baserenderer.py
284            (TestBaseRenderer.test_point_with_classification): New test for
285            rendering a map with classifications.
286    
287    2003-08-15  Bernhard Herzog  <[email protected]>
288    
289            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
290            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
291            (ViewPort._get_hit_tester, ViewPort.projected_points)
292            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
293            (ViewPort._find_label_at): Split the find_shape_at method into
294            several new methods and use the functions in the hit-test module.
295    
296            * Thuban/UI/hittest.py: New module with Python-level hit-testing
297            functions
298    
299            * test/test_hittest.py: New. Test for the new hittest module
300    
301    2003-08-15  Bernhard Herzog  <[email protected]>
302    
303            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
304            projection to all corners of the bounding box to get a better
305            approximation of the projected bounding box
306    
307            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
308            New. Test coordinate handling of a layer with a projection.
309            Catches the bug fixed in Layer.ShapesInRegion
310    
311    2003-08-15  Bernhard Herzog  <[email protected]>
312    
313            Move some of the mock objects in test_baserenderer into their own
314            module so they can easily be used from other tests
315    
316            * test/mockgeo.py: New test helper module with some mock objects
317            for geometry related things like shapes, shapestores and
318            projections.
319    
320            * test/test_mockgeo.py: New. Tests for the new helper module
321    
322            * test/test_baserenderer.py: Some of the mock-objects are in
323            mockgeo now.
324    
325    2003-08-12  Jan-Oliver Wagner <[email protected]>
326    
327            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
328    
329    2003-08-12  Bernhard Herzog  <[email protected]>
330    
331            * po/de.po: New. German translations by Bjoern Broscheit
332    
333    2003-08-12  Bernhard Herzog  <[email protected]>
334    
335            * Thuban/UI/projdialog.py (UnknownProjPanel._DoLayout): Translated
336            strings have to be one string literal.
337    
338    2003-08-11  Bernhard Herzog  <[email protected]>
339    
340            * test/support.py (FloatComparisonMixin.assertPointListEquals):
341            New. This method was used in various derived classes, but it's
342            better to have it here.
343    
344            * test/test_shapefilestore.py
345            (ShapefileStoreTests.assertPointListEquals): Removed. It's now in
346            FloatComparisonMixin
347    
348            * test/test_layer.py (TestLayer.assertPointListEquals): Removed.
349            It's now in FloatComparisonMixin
350    
351            * test/test_derivedshapestore.py
352            (TestDerivedShapeStore.assertPointListEquals): Removed. It's now
353            in FloatComparisonMixin
354    
355    2003-08-11  Bernhard Herzog  <[email protected]>
356    
357            * Thuban/UI/join.py (JoinDialog.OnJoin): Add missing space to
358            error message
359    
360    2003-08-08  Jan-Oliver Wagner <[email protected]>
361    
362            * Doc/manual/thuban-manual.xml: Now use authorgroup. Added revhistory
363            with version number.
364            Changed title to reflect version number of Thuban.
365    
366    2003-08-08  Jan-Oliver Wagner <[email protected]>
367    
368            * Thuban/UI/about.py (About.__init__): Reworked the hall of fame. Now
369            the list corresponds to the "About" web page.
370    
371    2003-08-08  Bernhard Herzog  <[email protected]>
372    
373            * Thuban/UI/projdialog.py (UTMProposeZoneDialog.dialogLayout):
374            Make sure translated strings are recognized as one string literal.
375    
376            * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog.dialogLayout):
377            Make sure translated strings are recognized as one string literal.
378    
379            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Make sure
380            translated strings are recognized as one string literal.
381    
382            * Thuban/UI/application.py (ThubanApplication.OpenSession): Make
383            sure translated strings are recognized as one string literal.
384    
385    2003-08-07  Bernhard Herzog  <[email protected]>
386    
387            * Thuban/Model/data.py (DerivedShapeStore.RawShapeFormat): New.
388            Simply delegates to the original shapestore.
389    
390            * test/test_derivedshapestore.py
391            (TestDerivedShapeStore.test_raw_format): New. Test case for
392            DerivedShapeStore.RawShapeFormat
393    
394    2003-08-07  Bernhard Herzog  <[email protected]>
395    
396            Add raw data interface to shape objects.
397    
398            * Thuban/Model/data.py (ShapefileShape, Shape): Rname the shape
399            class to ShapefileShape which now holds shapefile specific
400            information.
401            (ShapefileShape.compute_bbox): Simplified to not cache any
402            information. The way this method is used that shouldn't matter
403            performance wise.
404            (ShapefileShape.RawData): New. Return the shapeid which is the raw
405            data format for shapes from shapefiles.
406            (ShapefileStore.RawShapeFormat): New. Return the raw datatype used
407            in the shape objects returned by a shapestore. For a
408            ShapefileStore this is always RAW_SHAPEFILE.
409            (RAW_PYTHON, RAW_SHAPEFILE): Constants for the RawShapeFormat
410            method.
411    
412            * test/test_shapefilestore.py
413            (TestShapefileStore.test_raw_format): New test to test the raw
414            format feature of shapes.
415    
416            * Thuban/Model/layer.py: Remove the unused import of Shape from
417            data. It was only there for interface compatibility but it's not
418            used inside of Thuban and the generic Shape class has gone away.
419    
420            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Check
421            the raw data format and only use an optimized version of its a
422            shapefile.
423    
424    2003-08-07  Bernhard Herzog  <[email protected]>
425    
426            * test/test_baserenderer.py (SimpleShape): Shape class for the
427            tests.
428            (SimpleShapeStore.Shape): Use SimpleShape instead of
429            Thuban.Model.data.Shape to make the tests independed of the coming
430            changes.
431    
432    2003-08-07  Bernhard Herzog  <[email protected]>
433    
434            * test/support.py (SkipTest, ThubanTestResult, ThubanTestRunner)
435            (ThubanTestProgram): New classes that extend the respective
436            classes from unittest. These new version support skipping tests
437            under certain expected conditions. In the Thuban test suite we
438            uses this for tests that require the optional gdal support.
439            (run_tests): Use ThubanTestProgram instead of the unittest.main()
440    
441            * test/runtests.py (main): Use the new ThubanTestRunner instead of
442            the normal one from unittest
443    
444            * test/test_layer.py (TestLayer.test_raster_layer): If this test
445            is not run because gdal support isn't available report this to the
446            runner.
447    
448            * test/test_baserenderer.py
449            (TestBaseRenderer.test_raster_no_projection): Do not run this test
450            if gdal support isn't available and report this to the runner.
451    
452    2003-08-06  Bernhard Herzog  <[email protected]>
453    
454            Rearrange the renderers a bit, partly in preparation for changes
455            required for the postgis merge, partly to make it more testable.
456            Also make the representation of coordinates in Shapes more
457            consistent.
458    
459            * Thuban/UI/renderer.py (MapRenderer): Most of the code/methods in
460            this class is now in BaseRenderer. This class is now practically
461            only a specialization of BaseRenderer for rendering to an actual
462            wx DC.
463            (ScreenRenderer.draw_shape_layer): Use self.low_level_renderer()
464            to get the shapetype specific rendering functions.
465    
466            * Thuban/UI/baserenderer.py: New file with the basic rendering
467            logic. The code in this file is completely independend of wx.
468            (BaseRenderer): Class with the basic rendering logic
469    
470            * test/test_baserenderer.py: New. Test cases for BaseRenderer
471    
472            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
473            error_on_redraw to guard agains endless loops and stack overflows
474            when there's a bug in the rendering code that raises exceptions.
475            (MapCanvas.OnIdle, MapCanvas._do_redraw): Split the actual
476            rendering into a separate method _do_redraw so that error handling
477            is a bit easier. When an exception occurs, set error_on_redraw to
478            true. When it's true on entry to OnIdle do nothing and return
479            immediately.
480    
481            * Thuban/Model/data.py (ShapefileStore.Shape): For consistency, a
482            Shape object will always have the coordinates as a list of list of
483            coordinate pairs (tuples).
484            (Shape.compute_bbox): Adapt to new representation.
485    
486            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
487            (ViewPort.LabelShapeAt): Adapt to new coordinate representation in
488            Shape objects.
489    
490            * test/test_shapefilestore.py
491            (ShapefileStoreTests.assertFloatTuplesEqual)
492            (ShapefileStoreTests.assertPointListEquals): Rename to
493            assertPointListEquals and change purpose to checking equality of
494            the lists returned by Shape.Points().
495            (TestShapefileStoreArc.test_shape)
496            (TestShapefileStorePolygon.test_shape)
497            (TestShapefileStorePoint.test_shape): Use the new
498            assertPointListEquals instead of assertFloatTuplesEqual
499    
500            * test/test_layer.py (TestLayer.assertFloatTuplesEqual)
501            (TestLayer.assertPointListEquals): Rename to assertPointListEquals
502            and change purpose to checking equality of the lists returned by
503            Shape.Points().
504            (TestLayer.test_arc_layer, TestLayer.test_arc_layer)
505            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
506            (TestLayer.test_derived_store): Use the new assertPointListEquals
507            instead of assertFloatTuplesEqual
508    
509            * test/test_derivedshapestore.py
510            (TestDerivedShapeStore.assertFloatTuplesEqual)
511            (TestDerivedShapeStore.assertPointListEquals): Rename to
512            assertPointListEquals and change purpose to checking equality of
513            the lists returned by Shape.Points().
514            (TestDerivedShapeStore.test_shape): Use the new
515            assertPointListEquals instead of assertFloatTuplesEqual
516    
517    2003-08-06  Jan-Oliver Wagner <[email protected]>
518    
519            * Thuban/UI/projdialog.py (UTMPanel._OnPropose): Added test for
520            a bounding box. A dialog is raised in case, no bounding box
521            is found. This fixes bug #2043:
522            https://intevation.de/rt/webrt?serial_num=2043
523    
524    2003-08-05  Bernhard Herzog  <[email protected]>
525    
526            * Thuban/Model/color.py (Color.__repr__): Make the repr of a color
527            object look like a Color instantiation. Formerly it looked like a
528            tuple.
529    
530            * test/test_color.py (TestColor.test_repr)
531            (TestColor.test_equality, TestColor.test_inequality): New. test
532            some more apects of the Color class
533            (TestTransparent.test_repr, TestTransparent.test_hex)
534            (TestTransparent.test_equality): New. Test cases for the
535            Transparent object.
536    
537    2003-08-04  Jan-Oliver Wagner <[email protected]>
538    
539            * Doc/manual/thuban-manual.xml: a number of small improvements.
540            The resulting file is the version submitted for GREAT-ER II.
541    
542    2003-08-01  Bernhard Herzog  <[email protected]>
543    
544            * Thuban/UI/resource.py, Thuban/UI/projdialog.py,
545            Thuban/UI/join.py, Thuban/UI/classgen.py, Thuban/UI/about.py,
546            Thuban/Model/resource.py: Insert cvs keywords and doc-strings.
547    
548            * Thuban/UI/common.py: Insert cvs keywords and doc-strings.
549            (Color2wxColour, wxColour2Color, ThubanBeginBusyCursor)
550            (ThubanEndBusyCursor): Add doc-strings
551    
552    2003-08-01  Bernhard Herzog  <[email protected]>
553    
554            First step towards PostGIS integration. More abstraction by movin
555            more code from the layer to the shapestore. More methods of the
556            layer are now simply delegated to the equivalent method of the
557            shapestore. The SHAPETYPE_* constants are now in data not in
558            layer.
559    
560            * Thuban/Model/data.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
561            (SHAPETYPE_POINT, Shape): Move these constants and classes from
562            layer.py to data.py
563            (ShapefileStore.__init__): More Initialization for the new methods
564            and functionality.
565            (ShapefileStore.ShapeType, ShapefileStore.NumShapes)
566            (ShapefileStore.BoundingBox, ShapefileStore.ShapesInRegion)
567            (ShapefileStore.Shape): New methods that were formerly implemented
568            in the layer.
569            (DerivedShapeStore.Shape, DerivedShapeStore.ShapesInRegion)
570            (DerivedShapeStore.ShapeType, DerivedShapeStore.NumShapes)
571            (DerivedShapeStore.BoundingBox): New. DerivedShapeStore
572            equivalents of the new shape methods. These versions are simply
573            delegated to the original shapstore.
574    
575            * Thuban/Model/layer.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
576            (SHAPETYPE_POINT, Shape): Removed. They're now in data.py
577            (Layer.SetShapeStore): Removed the initializatin of instance
578            variables that were needed for the stuff that's now in
579            ShapefileStore
580            (Layer.BoundingBox, Layer.NumShapes, Layer.ShapeType)
581            (Layer.Shape, Layer.ShapesInRegion): Simply delegate to the
582            shapestore.
583    
584            * Thuban/UI/classifier.py, Thuban/UI/renderer.py,
585            Thuban/UI/viewport.py: Import the SHAPETYPE_* constants from data
586            instead of layer.
587    
588            * test/test_shapefilestore.py: New. Tests for ShapefileStore.
589    
590            * test/test_derivedshapestore.py: New. Tests for DerivedShapeStore.
591    
592            * test/test_layer.py: Import the SHAPETYPE_* constants from data
593            instead of layer.
594            (TestLayer.test_derived_store): Remove the test for the exception
595            when instantiating the DerivedShapeStore with an incompatible
596            table which is now in test_derivedshapestore.py. Add some more
597            tests of the layer methods to determine whether they work for a
598            DerivedShapeStore as well.
599    
600    2003-07-31  Jonathan Coles   <[email protected]>
601    
602            * Doc/manual/thuban-manual.xml: Fix the list of required packages
603            by just listing the name and where they can be found.
604    
605    2003-07-31  Frank Koormann   <[email protected]>
606    
607            * Doc/manual/thuban-manual.xml:
608            Changed the screenshot elements to figure.
609            Changed some variablelist elements to itemizedlist.
610            Added section on GDAL formats.
611    
612    2003-07-31  Jonathan Coles   <[email protected]>
613    
614            * Doc/manual/thuban-manual.xml: Added a few sentences about
615            the Fix Border Color option when generating classes.
616    
617    2003-07-30  Jonathan Coles   <[email protected]>
618    
619            * Thuban/Model/classgen.py: Add docstrings. Rename specific
620            Ramp instances to use lower_case_style.
621    
622            * Thuban/UI/classgen.py: Use renamed Ramp instances.
623            
624            * Thuban/UI/classifier.py: Add docstrings.
625    
626            * Thuban/UI/dock.py: Add docstrings.
627    
628            * test/test_classgen.py: Use renamed Ramp instances.
629    
630    2003-07-30  Bernhard Herzog  <[email protected]>
631    
632            * Thuban/Lib/connector.py (QueueingPublisher): Removed. This class
633            was never used in Thuban.
634    
635    2003-07-30  Bernhard Herzog  <[email protected]>
636    
637            * Thuban/UI/join.py (JoinDialog.__init__): Use the table's Title()
638            method directly instead of going through the transient_table
639            method. This faster because transient_table may force the copy of
640            a DBF file into the transient database and setting a table's title
641            doesnm't affect the title of the associated transient table, so
642            this fixes RT #2042
643    
644            * Thuban/UI/main.py (__version__): Don't import the already
645            removed show_exception_dialog.
646    
647    2003-07-29  Jonathan Coles   <[email protected]>
648    
649            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
650            Put back this method and remove the equivalent function since we
651            are setting the exception hook from within this class (OnInit).
652    
653    2003-07-29  Jonathan Coles   <[email protected]>
654    
655            * Doc/manual/images/5_2_custom_ramp.png,
656            Doc/manual/images/5_2_quantiles.png,
657            Doc/manual/images/5_2_uniform_dist.png,
658            Doc/manual/images/5_2_unique_values.png,
659            Doc/manual/images/8_int_error.png: New screen shots.
660    
661            * Doc/manual/thuban-manual.xml: Fixed typos and wording, clarified
662            some points, and added more screen shots.
663    
664    2003-07-29  Bernhard Herzog  <[email protected]>
665    
666            * Thuban/Model/data.py: Remove the now unused import of warnings
667    
668    2003-07-29  Bernhard Herzog  <[email protected]>
669    
670            * Thuban/Model/data.py (SimpleStore): Removed. This class has been
671            deprecated since before the 0.8 release and isn't used in Thuban
672            itself anymore.
673    
674            * Thuban/Model/transientdb.py: Remove some unnecessary imports
675    
676    2003-07-29  Jonathan Coles   <[email protected]>
677    
678            * Thuban/UI/application.py (ThubanApplication.OnInit): set the
679            python exception hook here so that we are sure to catch any
680            Thuban exception that happen during initialization.
681    
682            * Thuban/UI/main.py (main): Don't set the exception hook here,
683            it will get set in ThubanApplication.OnInit.
684    
685    2003-07-29  Jonathan Coles   <[email protected]>
686                                                                                
687            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
688            Removed and called it show_exception_dialog() so that the exception
689            handler can be set before the class is created.
690                                                                                
691            * Thuban/UI/main.py (main): Install the exception handler before
692            a ThubanApplication is created.
693                                                                                    
694    2003-07-29  Bernhard Herzog  <[email protected]>
695    
696            * po/it.po: New. Italian translation by Maurizio Napolitano
697    
698            * po/ru.po: New. Russian translation by Alex Shevlakov
699    
700    2003-07-29  Frank Koormann   <[email protected]>
701    
702            * Doc/manual/thuban-manual.xml: Extended section on supported
703            projections.
704            
705    2003-07-29  Frank Koormann   <[email protected]>
706    
707            * Doc/manual/thuban-manual.xml: gaspell-checked.
708    
709    2003-07-29  Jonathan Coles   <[email protected]>
710    
711            * Doc/manual/images/3_5_legend.png: Added border to improve look
712            on white background.
713    
714    2003-07-29  Jonathan Coles   <[email protected]>
715    
716            * Doc/manual/thuban-manual.xml: Fixed grammar and typos. Added
717            descriptions for the legend toolbar.
718    
719            * Doc/manual/images/4_2_raster_layer_properties.png: Removed
720            cursor from dialog box.
721    
722    2003-07-28  Jonathan Coles   <[email protected]>
723    
724            * Doc/manual/thuban-manual.xml: More screenshots and more chapters.
725    
726            * Doc/manual/images/2_4_session_tree.png,
727            Doc/manual/images/3_5_legend.png, Doc/manual/images/3_rename_map.png,
728            Doc/manual/images/4_2_layer_properties.png,
729            Doc/manual/images/4_2_raster_layer_properties.png,
730            Doc/manual/images/5_3_genclass.png,
731            Doc/manual/images/5_classification.png,
732            Doc/manual/images/6_projection.png,
733            Doc/manual/images/7_1_table_view.png,
734            Doc/manual/images/7_2_5_join.png: New screenshots.
735    
736    2003-07-24  Jonathan Coles   <[email protected]>
737    
738            * Doc/manual/thuban-manual.xml: Chapter on Projection Management.
739    
740    2003-07-24  Jonathan Coles   <[email protected]>
741    
742            * Doc/manual/thuban-manual.xml: Added EPS images and wrote
743            chapter on Layer Management.
744    
745            * Doc/manual/Makefile: New. Makefile to generate all formats for the
746            manual and images.
747    
748    2003-07-24  Bernhard Herzog  <[email protected]>
749    
750            * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
751            it annoys lintian which warns about these files not being
752            executable. The #1 isn't necessary here since if you absolutely
753            must execute them you can always say "python <filename>".
754    
755            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove
756            superfluous code to set brush and pen for point shapes
757    
758            * Thuban/UI/viewport.py: Remove commented out code that wouldn't
759            belong in viewport anyway
760    
761    2003-07-24  Frank Koormann   <[email protected]>
762    
763            * Doc/manual/thuban-manual.xml: Added section on table management.
764    
765    2003-07-24  Bernhard Herzog  <[email protected]>
766    
767            * test/runtests.py (main): Recognize the long "verbose" option
768            correctly.
769    
770    2003-07-22  Jonathan Coles   <[email protected]>
771    
772            * Doc/manual/thuban-manual.xml: Continue to write first revision
773            of the manual.
774    
775            * Thuban/UI/renderer.py (MapRenderer.render_map): Wrap method
776            with Begin/EndDrawing() calls to ensure we aren't doing to
777            many updates to the dc during rendering.
778            (ScreenRenderer.draw_shape_layer): self.draw_point_shape takes
779            a pen and brush argument so they need to be passed to the function.
780    
781            * Thuban/UI/viewport.py (ViewPort.calc_min_max_scales): New.
782            Calculates the minimum and maximum scale values. Factored out
783            of set_view_transform so that it could be used to zoom all the
784            way into a single point.
785            (ViewPort.set_view_transform): Call calc_min_max_scales().
786            (ViewPort.FitSelectedToWindow): Zoom to the maximum scale
787            if only a single point is selected.
788    
789            * Doc/manual/images/1_2_legend_close.png,
790            Doc/manual/images/1_2_legend_dock.png,
791            Doc/manual/images/1_2_mainwindow.png,
792            Doc/manual/images/1_2_mainwindow.ps,
793            Doc/manual/images/1_2_mainwindow.sk,
794            Doc/manual/images/3_2_fullextent.png,
795            Doc/manual/images/3_2_fulllayerextent.png,
796            Doc/manual/images/3_2_fullshapeextent.png,
797            Doc/manual/images/3_2_pan.png,
798            Doc/manual/images/3_2_zoomin.png,
799            Doc/manual/images/3_2_zoomout.png,
800            Doc/manual/images/3_3_identify.png,
801            Doc/manual/images/3_3_label.png,
802            Doc/manual/images/3_5_invisible.png,
803            Doc/manual/images/3_5_movedown.png,
804            Doc/manual/images/3_5_moveup.png,
805            Doc/manual/images/3_5_props.png,
806            Doc/manual/images/3_5_tobottom.png,
807            Doc/manual/images/3_5_totop.png,
808            Doc/manual/images/3_5_visible.png: New. Images for the documentation.
809    
810    2003-07-18  Bernhard Herzog  <[email protected]>
811    
812            * Thuban/UI/messages.py (MAP_REPLACED): New message.
813    
814            * Thuban/UI/viewport.py (ViewPort.SetMap): Issue MAP_REPLACED
815            after the new map has been assigned
816    
817            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages):
818            Delegate MAP_REPLACED to the canvas too
819            (MainWindow.prepare_new_session): Removed. Thanks to the new
820            MAP_REPLACED message it's no longer needed
821            (MainWindow.OpenSession, MainWindow.NewSession):
822            prepare_new_session has been removed.
823    
824            * Thuban/UI/classifier.py (Classifier.__init__): Subscribe to
825            MAP_REPLACED so that we can close the dialog if a new map is set.
826            (Classifier.unsubscribe_messages): Unsubscribe from MAP_REPLACED
827            (Classifier.map_replaced): Handle MAP_REPLACED by closing the
828            dialog
829    
830            * test/test_viewport.py (SimpleViewPortTest)
831            (SimpleViewPortTest.test_default_size): Add doc-strings
832            (ViewPortTest.setUp): Bind map to self.map so we can use it in
833            tests. Subscribe to MAP_REPLACED messages too.
834            (ViewPortTest.tearDown): No need to explicitly unsubscribe
835            (ViewPortTest.test_set_map): New test for the SetMap method.
836    
837    2003-07-18  Bernhard Herzog  <[email protected]>
838    
839            * test/test_viewport.py (SimpleViewPortTest.test_default_size):
840            Move this test from ViewPortTest.setUp to this new separate test
841            case. setUp is not the place for the actual tests.
842            (ViewPortTest.test_inital_settings, ViewPortTest.setUp): Move some
843            more of the test from setUp to the new test test_inital_settings.
844            (ViewPortTest.test_win_to_proj, ViewPortTest.test_proj_to_win)
845            (ViewPortTest.test_proj_conv): Split test_proj_conv into
846            test_win_to_proj and test_proj_to_win and make the tests easier to
847            understand
848            (ViewPortTest.testFitRectToWindow, ViewPortTest.testZoomFactor)
849            (ViewPortTest.testZoomOutToRect, ViewPortTest.testTranslate)
850            (ViewPortTest.test_unprojected_rect_around_point)
851            (ViewPortTest.test_find_shape_at, ViewPortTest.testTools):
852            Reformat to increase readability.
853    
854    2003-07-18  Bernhard Herzog  <[email protected]>
855    
856            * Thuban/UI/view.py (MapCanvas.OnLeftDown): Capture the mouse.
857    
858    2003-07-18  Bernhard Herzog  <[email protected]>
859    
860            * test/runtests.py: The test suite can now be run without an X
861            connection. To make sure this remains true, remove the DISPLAY
862            environment variable so that an error occurs if the wxGTK is
863            imported accidentally
864    
865    2003-07-18  Bernhard Herzog  <[email protected]>
866    
867            * Thuban/UI/viewport.py: Remove unused imports
868    
869            * Thuban/UI/view.py: Remove unused imports
870    
871    2003-07-18  Bernhard Herzog  <[email protected]>
872    
873            * test/test_export.py Remove unused imports. The OutputTransform
874            function is now in viewport.py and is called output_transform
875            (TestScalebar.test_output_transform)
876            (TestScalebar.test_OutputTransform): Renamed to
877            test_output_transform and updated to use output_transform instead
878            of OutputTransform
879    
880            * Thuban/UI/view.py (OutputTransform): Moved to viewport.py and
881            renamed.
882            (MapCanvas.Export, MapPrintout.draw_on_dc): OutputTransform was
883            renamed to output_transform
884    
885            * Thuban/UI/viewport.py (OutputTransform, output_transform):
886            Rename to output_transform
887    
888    2003-07-18  Bernhard Herzog  <[email protected]>
889    
890            * Thuban/Model/layer.py (Layer.__init__): Rename
891            classificationField to classificatin_column and init it here so
892            that it can be used in SetClassificationColumn
893            (Layer.GetClassificationColumn, Layer.GetClassificationField):
894            Rename to GetClassificationColumn.
895            (Layer.SetClassificationColumn, Layer.SetClassificationField):
896            Rename to SetClassificationColumn and issue a LAYER_CHANGED
897            message if the column changes.
898            (Layer._classification_changed, Layer.ClassChanged): Rename to
899            _classification_changed. Update the callers.
900            (Layer.SetShapeStore): Further field->column renames.
901    
902            * Thuban/Model/load.py (SessionLoader.start_classification)
903            (SessionLoader.start_clpoint): Updates because of
904            field->column method name changes in the Layer class
905    
906            * Thuban/Model/save.py (SessionSaver.write_classification): Updates
907            because of field->column method name changes in the Layer class
908    
909            * Thuban/UI/classifier.py (Classifier.__init__)
910            (Classifier._OnTry, Classifier._OnRevert): Updates because of
911            field->column method name changes in the Layer class
912    
913            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Updates
914            because of field->column method name changes in the Layer class
915    
916            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Updates because
917            of field->column method name changes in the Layer class
918    
919            * test/test_save.py (SaveSessionTest.testClassifiedLayer)
920            (SaveSessionTest.testClassifiedLayer): Update because of
921            field->column method name changes in the Layer class
922    
923            * test/test_layer.py (SetShapeStoreTests.setUp)
924            (SetShapeStoreTests.test_sanity): Update because of field->column
925            method name changes in the Layer class
926            (TestLayerModification.setUp): Subscribe to LAYER_CHANGED as well
927            (TestLayerModification.test_sanity)
928            (TestLayerModification.test_initial_settings): remove unsued code
929            and rename to test_sanity.
930            (TestLayerModification.test_set_classification): New test for
931            SetClassification and SetClassificationField.
932    
933    2003-07-18  Bernhard Herzog  <[email protected]>
934    
935            * test/test_classgen.py (TestFixedRamp.test): Extend test to check
936            the non-fixed values as well. The old test would have accepted a
937            fixed ramp that only returnes the fixed properties
938    
939    2003-07-17  Jonathan Coles   <[email protected]>
940    
941            * Doc/manual/mainwindow.png, Doc/manual/mainwindow.xcf: Screen
942            shots for the manual. The XCF file is the source image and
943            has additional layers to support changes.
944    
945            * Doc/manual/thuban-manual.xml: Wrote an initial Introduction.
946    
947            * Thuban/UI/classifier.py (Classifier.__BuildClassification):
948            Return both the new class and the field name.
949    
950            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Don't
951            fit the map to the window as this changes any zoom level that
952            the user may have set.
953    
954    2003-07-16  Jonathan Coles   <[email protected]>
955    
956            * Thuban/Model/classgen.py (generate_singletons,
957            generate_uniform_distribution, generate_quantiles): Remove
958            fixes parameter, but maintain the same functionality by having
959            the calling function pass a FixedRamp object for the ramp.
960            (FixedRamp): New. Adapts a ramp to have fixed property values.
961    
962            * Thuban/Model/classification.py: Use new CLASS_CHANGED message.
963            (Classification): Inherit from Publisher.
964            (Classification.__init__): Remove the layer parameter.
965            Classifications no longer need to have a parent layer.
966            (Classification.GetField, Classification.GetFieldType,
967            Classification.SetFieldInfo): Removed. The field name is stored
968            in the layer, and the type can be retreived by calling
969            Layer.GetFieldType().
970            (Classification._set_layer, Classification.GetLayer): Removed.
971            Classifications no longer have a parent layer.
972    
973            * Thuban/Model/layer.py (Layer.Destroy): Unsubscribe from the
974            classification.
975            (Layer.SetShapeStore): Reset the classification first while
976            we still have the old shape store to work with.
977            (Layer.GetClassificationField, Layer.SetClassificationField):
978            New. Method for getting/setting the field to classify on.
979            (Layer.SetClassification): Simplified now that the layer
980            simply has to hold a reference to the classification and not
981            tell the classification who owns it.
982            Fixes RTbug #2023.
983    
984            * Thuban/Model/load.py (SessionLoader.start_classification):
985            Set the field name on the layer, not the classification.
986    
987            * Thuban/Model/messages.py: Add CLASS_CHANGED for when a
988            classification is modified.
989    
990            * Thuban/Model/save.py (SessionSaver.write_classification):
991            Get the field name and type from the layer.
992    
993            * Thuban/Model/table.py (table_to_dbf, table_to_csv): Renamed
994            parameter records to rows and add docstring. Fixes RTbug #1997.
995    
996            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Use a fixed
997            ramp when we need to fix certain values of a ramp rather than
998            using the old fixes parameter. Fixes RTbug #2024.
999    
1000            * Thuban/UI/classifier.py (ClassGrid.CreateTable): Add fieldType
1001            parameter.
1002            (ClassTable.Reset): Add fieldType parameter and use it, rather
1003            than asking the classification.
1004            (Classifier.__init__): Remember the original class's field
1005            and ask the layer for the field type, rather than the classification.
1006            (Classifier.__SetGridTable): Retrieve the field and field type
1007            for the table because they are not in the classification.
1008            (Classifier._OnTry, Classifier._OnRevert): Set the classification
1009            field on the layer in addition to the classification itself.
1010    
1011            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Get the
1012            classification field from layer.
1013    
1014            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Get the
1015            classification field from layer. Split up tests and remove
1016            *-imports. Fixes RTbug #1992.
1017    
1018            * test/test_classgen.py (TestFixedRamp): Test for the FixedRamp class.
1019    
1020            * test/test_classification.py
1021            (TestClassification.test_classification): Remove tests for methods
1022            that no longer exist.
1023    
1024            * test/test_layer.py (SetShapeStoreTests.setUp): Classification
1025            __init__ no longer has a field parameter, use SetClassificationField.
1026            (SetShapeStoreTests.test_sanity): Use layer object to get class
1027            field info.
1028    
1029            * test/test_save.py (SaveSessionTest.testClassifiedLayer): Use
1030            SetClassificationField on layer to set class field info.
1031    
1032            * test/test_viewport.py: Renamed from test/test_view.py.
1033    
1034    2003-07-16  Jan-Oliver Wagner <[email protected]>
1035    
1036            * Doc/manual/thuban-manual.xml: Added authors and an initial
1037            coarse structure.
1038    
1039    2003-07-15  Bernhard Herzog  <[email protected]>
1040    
1041            * test/support.py (FloatComparisonMixin): This is a mix-in class
1042            and therefore should not be derived from any other class.
1043    
1044            * test/test_range.py (RangeTest): FloatComparisonMixin is a
1045            mix-in, so derive from TestCase as well.
1046    
1047    2003-07-15  Bernhard Herzog  <[email protected]>
1048    
1049            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Rework the
1050            draw_func handling a bit to remove one layer of indirection. This
1051            makes the renderer about 10% faster in the non-classifying case
1052            and the code a bit cleaner
1053            (MapRenderer.draw_point_shape): Add the pen and brush parameters
1054            and set them in the dc. Now the draw_point_shape method and
1055            wxproj's draw_polygon_shape function have basically the same
1056            signature so that both can be directly used as draw_func
1057    
1058    2003-07-15  Bernhard Herzog  <[email protected]>
1059    
1060            * Thuban/Model/save.py (SessionSaver.write_classification): Encode
1061            string values (in addition to the labels) as UTF 8
1062    
1063            * Thuban/Model/load.py (SessionLoader.start_clpoint): Decode the
1064            values if the field type is string
1065    
1066            * test/test_save.py (SaveSessionTest.testClassifiedLayer): Test
1067            saving a session with non-ascii string classification values.
1068    
1069            * test/test_load.py (TestClassification.file_contents)
1070            (TestClassification.test): Check for non-ascii values in string
1071            classifications
1072    
1073    2003-07-14  Jonathan Coles   <[email protected]>
1074    
1075            * test/test_view.py: New. Tests for ViewPort.
1076    
1077    2003-07-14  Frank Koormann   <[email protected]>
1078    
1079            * Thuban/Model/load.py (SessionLoader.start_map): Encode map
1080            title to latin1.  Fixes https://intevation.de/rt/webrt?serial_num=2013
1081    
1082            * test/test_load_0_8.py (TestUnicodeStrings): New, test load of
1083            unicode strings from session file: session title, map title and
1084            projection name.
1085            
1086    2003-07-10  Jonathan Coles   <[email protected]>
1087    
1088            * Thuban/UI/viewport.py (Tool.MouseUp): Should have called
1089            drag_stop, not drag_move when the mouse is released.
1090    
1091  2003-07-10  Jonathan Coles   <[email protected]>  2003-07-10  Jonathan Coles   <[email protected]>
1092    
1093          The most important part of this is the seperation of view.py into          The most important part of this is the seperation of view.py into

Legend:
Removed from v.1403  
changed lines
  Added in v.1627

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26