/[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 1534 by jonathan, Thu Jul 31 12:44:30 2003 UTC revision 1655 by bh, Mon Aug 25 16:05:33 2003 UTC
# Line 1  Line 1 
1    2003-08-25  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/UI/application.py
4            (ThubanApplication.run_db_param_dialog): New. Suitable as a
5            db_connection_callback. Main difference is that the dialog run
6            from this method doesn't have a parent so it can be used even when
7            there is no main window
8            (ThubanApplication.OpenSession): Use self.run_db_param_dialog if
9            no db_connection_callback was given. This way the dialog pops up
10            even when the .thuban file was given as a command line parameter.
11    
12    2003-08-25  Bernhard Herzog  <[email protected]>
13    
14            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Release the the mouse
15            before calling MouseLeftUp. MouseLeftUp may pop up modal dialogs
16            which leads to an effectively frozen X session because the user
17            can only interact with the dialog but the mouse is still grabbed
18            by the canvas.
19            Also, call the tool's Hide method before MouseLeftUp because
20            MouseLeftUp may change the tool's coordinates.
21    
22    2003-08-25  Bernhard Herzog  <[email protected]>
23    
24            * Thuban/UI/application.py (ThubanApplication.OpenSession): Catch
25            LoadCancelled exceptions and handle them by returning immediately.
26    
27    2003-08-25  Bernhard Herzog  <[email protected]>
28    
29            GUI part of loading sessions with postgis connections which may
30            require user interaction to get passwords or updated parameters
31    
32            * Thuban/UI/dbdialog.py (DBDialog): Reimplement to make it look a
33            bit nucer and be more generic.
34            (DBFrame.OnAdd): Adapt to new DBDialog interface
35    
36            * Thuban/UI/application.py (ThubanApplication.OpenSession): New
37            optional parameter db_connection_callback which is passed to
38            load_session.
39    
40            * Thuban/UI/mainwindow.py (MainWindow.run_db_param_dialog): New.
41            Suitable as a db_connection_callback
42            (MainWindow.OpenSession): Use self.run_db_param_dialog as the
43            db_connection_callback of the application's OpenSession method
44    
45    
46    2003-08-25  Bernhard Herzog  <[email protected]>
47    
48            Basic loading of sessions containing postgis connections:
49    
50            * Thuban/Model/load.py (LoadError): Add doc-string
51            (LoadCancelled): New exception class to indicate a cancelled load
52            (SessionLoader.__init__): Add the db_connection_callback parameter
53            which will be used by the loader to get updated parameters and a
54            password for a database connection
55            (SessionLoader.__init__): Add the new XML elements to the
56            dispatchers dictionary
57            (SessionLoader.check_attrs): Two new conversions, ascii to convert
58            to a byte-string object and idref as a generic id reference
59            (SessionLoader.start_dbconnection)
60            (SessionLoader.start_dbshapesource): New. Handlers for the new XML
61            elements
62            (load_session): Add the db_connection_callback to pass through the
63            SessionLoader
64    
65            * test/test_load.py (TestPostGISLayer, TestPostGISLayerPassword):
66            New classes to test loading of sessions with postgis database
67            connections.
68    
69    2003-08-25  Bernhard Herzog  <[email protected]>
70    
71            * Thuban/UI/mainwindow.py (__ThubanVersion__): Remove this and
72            replace it and the comment with __BuildDate__ by the Source: and
73            Id: cvs keywords as used in the other files.
74    
75    2003-08-25  Bernhard Herzog  <[email protected]>
76    
77            * Thuban/Model/load.py (SessionLoader.check_attrs): Raise a
78            LoadError when a required attribute is missing. The code used to
79            be commented out for some reason, but probably should have been
80            active.
81    
82            * test/test_load.py (TestLoadError.test): Test the message in the
83            LoadError too to make sure it really is about the missing
84            attribute
85    
86    2003-08-22  Bernhard Herzog  <[email protected]>
87    
88            * test/test_save.py (SaveSessionTest.test_dbf_table)
89            (SaveSessionTest.test_joined_table): Add XML validation tests.
90    
91    2003-08-22  Bernhard Herzog  <[email protected]>
92    
93            Implement saving a session with a postgis connection
94    
95            * Resources/XML/thuban-0.9.dtd (dbconnection, dbshapesource) New
96            elements for database connections and shapestores using db
97            connections
98            (session): Add the dbconnections to the content model
99    
100            * Thuban/Model/save.py (SessionSaver.write_db_connections): New.
101            Write the db connections
102            (SessionSaver.write_session): Call write_db_connections to write
103            the connection before the data sources
104            (SessionSaver.write_data_containers): Handle postgis shapestores
105    
106            * test/test_save.py (SaveSessionTest.thubanids)
107            (SaveSessionTest.thubanidrefs): Update for new DTD
108            (SaveSessionTest.test_save_postgis): New. Test saving a session
109            with postgis connections
110    
111            * Thuban/Model/postgisdb.py (PostGISTable.DBConnection)
112            (PostGISTable.TableName): New accessor methods for the connection
113            and table name
114    
115            * test/test_postgis_db.py (TestPostGISTable.test_dbconn)
116            (TestPostGISTable.test_dbname): New methods to test the new
117            PostGISConnection methods
118    
119    2003-08-22  Bernhard Herzog  <[email protected]>
120    
121            * Thuban/Model/postgisdb.py (ConnectionError): New exception class
122            for exceptions occurring when establishing a Database connection
123            (PostGISConnection.connect): Catch psycopg.OperationalError during
124            connects and raise ConnectionError.
125    
126            * test/test_postgis_db.py (TestPostgisDBExceptions): New class for
127            tests for database exceptions
128    
129    2003-08-22  Bernhard Herzog  <[email protected]>
130    
131            Prepare the test suite for tests with required authentication
132    
133            * test/postgissupport.py (PostgreSQLServer.__init__): Add instance
134            variables with two predefined users/passwords, one for the admin
135            and one for a non-privileged user.
136            (PostgreSQLServer.createdb): Pass the admin name to initdb and add
137            the non-privileged user to the database and set the admin password
138            (PostgreSQLServer.wait_for_postmaster): Use the admin user name.
139            Better error reporting
140            (PostgreSQLServer.connection_params)
141            (PostgreSQLServer.connection_string): New methods to return
142            information about how to connect to the server
143            (PostgreSQLServer.execute_sql): New. Convenience method to execute
144            SQL statements
145            (PostgreSQLServer.require_authentication): Toggle whether the
146            server requires authentication
147            (PostgreSQLServer.create_user, PostgreSQLServer.alter_user): New.
148            Add or alter users
149            (PostGISDatabase.initdb): Pass the admin name one the
150            subprocesses' command lines. Grant select rights on
151            geometry_columns to everybody.
152            (upload_shapefile): Use the admin name and password when
153            connecting. Grant select rights on the new table to everybody.
154    
155            * test/test_viewport.py (TestViewportWithPostGIS.setUp): Use the
156            server's new methods to get the connection parameters.
157    
158            * test/test_postgis_session.py (TestSessionWithPostGIS.setUp)
159            (TestSessionWithPostGIS.test_remove_dbconn_exception): Use the
160            server's new methods to get the connection parameters.
161    
162            * test/test_postgis_db.py
163            (TestPostGISConnection.test_gis_tables_empty)
164            (TestPostGISConnection.test_gis_tables_non_empty)
165            (PostGISStaticTests.setUp): Use the server's new methods to get
166            the connection parameters.
167    
168    2003-08-22  Bernhard Herzog  <[email protected]>
169    
170            * Thuban/UI/about.py (About.__init__): Add the psycopg version.
171    
172            * Thuban/version.py: Add psycopg version
173    
174            * Thuban/Model/postgisdb.py (psycopg_version): New. Return the
175            version of the psycopg module
176    
177    2003-08-22  Bernhard Herzog  <[email protected]>
178    
179            * Thuban/UI/dbdialog.py (DBPwdDlg): Removed because it's not used.
180            (DBFrame.OnEdit): Removed because it's not used and wouldn't work
181            at the moment. The functionality should probably be implemented
182            some time, though.
183            (DBFrame.OnRemove): Display a message if the connection can't be
184            removed because it's still in use.
185    
186    2003-08-22  Jan-Oliver Wagner <[email protected]>
187    
188            * Thuban/UI/about.py (About.__init__): split up the huge about
189            text into elements/lists for easier translation. This fixes bug
190            https://intevation.de/rt/webrt?serial_num=2058
191            Also, made some forgotten string available for the i18n.
192    
193    2003-08-21  Bernhard Herzog  <[email protected]>
194    
195            Make postgis support really optional including insensitive menu
196            items.
197    
198            * Thuban/Model/postgisdb.py (has_postgis_support): New. Return
199            whether the postgis is supported.
200    
201            * Thuban/UI/dbdialog.py: Put the psycopg import into try..except
202            to make postgis support optional
203    
204            * Thuban/UI/mainwindow.py (_has_postgis_support): New. Context
205            version of Thuban.Model.postgisdb.has_postgis_support
206            (database_management command): Make it only sensitive if postgis
207            is supported.
208    
209    2003-08-21  Jan-Oliver Wagner <[email protected]>
210    
211            * Doc/manual/thuban-manual.xml: Added CVS revision for rev-history.
212            (section Adding and Removing Layers): Added text and described
213            multi-selection.
214            (chapter Extensions): New.
215    
216    2003-08-21  Jan-Oliver Wagner <[email protected]>
217    
218            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Changed dialog
219            settings to allow multiple files to load into the map.
220            Also reduced selection to *.shp as a default.
221    
222    2003-08-20  Bernhard Herzog  <[email protected]>
223    
224            Add dialogs and commands to open database connections and add
225            database layers.
226    
227            * Thuban/UI/mainwindow.py (MainWindow.DatabaseManagement): New
228            method to open the database connection management dialog
229            (MainWindow.AddDBLayer): New method to add a layer from a database
230            (_has_dbconnections): New helper function to use for sensitivity
231            (database_management command, layer_add_db command): New commands
232            that call the above new methods.
233            (main_menu): Add the new commands to the menu.
234    
235            * Thuban/Model/postgisdb.py (PostGISConnection.__init__)
236            (PostGISConnection.connect): Establish the actual connection in a
237            separate method and call it in __init__. This makes it easier to
238            override the behavior in test cases
239            (PostGISConnection.BriefDescription): New method to return a brief
240            description for use in dialogs.
241    
242            * test/test_postgis_db.py (NonConnection): DB connection that
243            doesn't actually connect
244            (TestBriefDescription): New class with tests for the new
245            BriefDescription method
246    
247    2003-08-19  Jan-Oliver Wagner <[email protected]>
248    
249            Moved anything from extensions to libraries.
250    
251            * libraries: New.
252    
253            * libraries/ pyprojection, pyshapelib, shapelib, thuban: New.
254    
255            * libraries/pyprojection/ LICENSE, MANIFEST.in, Projection.i,
256            Projection.py, Projection_wrap.c, setup.py, swighelp.txt: These files have
257            been moved here from thuban/extensions/pyprojection/
258            See there in the Attic for the older history.
259    
260            * libraries/pyshapelib/ COPYING, ChangeLog, NEWS, README, dbflib.i,
261            dbflib.py, dbflib_wrap.c, pyshapelib_api.h, pytest.py, setup.py,
262            shapelib.i, shapelib.py, shapelib_wrap.c, shptreemodule.c: These files
263            have been moved here from thuban/extensions/pyshapelib/
264            See there in the Attic for the older history.
265    
266            * libraries/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c: These
267            files have been moved here from thuban/extensions/shapelib/
268            See there in the Attic for the older history.
269    
270            * libraries/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
271            gdalwarp.cpp, wxproj.cpp: These files have been moved here from
272            thuban/extensions/thuban/
273            See there in the Attic for the older history.
274    
275            * MANIFEST.in, setup.cfg, setup.py: renamed extensions to libraries.
276    
277            * extensions/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
278            gdalwarp.cpp, wxproj.cpp: Moved to libraries/thuban.
279    
280            * extensions/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c:
281            Moved to libraries/shapelib.
282    
283            * extensions/pyshapelib/ COPYING, NEWS, dbflib.py, pytest.py,
284            shapelib.py, README, dbflib_wrap.c, setup.py, shapelib_wrap.c,
285            ChangeLog, dbflib.i, pyshapelib_api.h, shapelib.i, shptreemodule.c:
286            Moved to libraries/pyshapelib.
287    
288            * extensions/pyprojection/ MANIFEST.in, Projection.py, setup.py,
289            LICENSE, Projection.i, Projection_wrap.c, swighelp.txt:
290            Moved to libraries/pyprojection.
291    
292            * extensions/ pyprojection, pyshapelib, shapelib, thuban: Removed.
293    
294            * extensions: Removed.
295    
296    2003-08-19  Bernhard Herzog  <[email protected]>
297    
298            * test/test_viewport.py (ViewPortTest): We don't use the
299            facilities of FileTestMixin so don't derive from it.
300            (TestViewportWithPostGIS): New class with tests for using a
301            viewport on a map with postgis layers.
302    
303    2003-08-19  Bernhard Herzog  <[email protected]>
304    
305            Add the db connection management to the session.
306    
307            * Thuban/Model/session.py (Session.__init__): New instance
308            variable db_connections
309            (Session.AddDBConnection, Session.DBConnections)
310            (Session.HasDBConnections, Session.CanRemoveDBConnection)
311            (Session.RemoveDBConnection): New methods to manage and query the
312            db connections managed by the session
313            (Session.OpenDBShapeStore): New method to open a shapestore from a
314            db connection
315    
316            * Thuban/Model/messages.py (DBCONN_REMOVED, DBCONN_ADDED): New
317            messages for the db connection handling in the session
318    
319            * test/test_postgis_session.py: New. test cases for the session's
320            db connection handling with postgis connections
321    
322    2003-08-19  Bernhard Herzog  <[email protected]>
323    
324            Add very basic postgis database support and the corresponding test
325            cases. The test cases require a PostgreSQL + postgis installation
326            but no existing database. The database will be created
327            automatically by the test cases
328    
329            * test/README: Add note about skipped tests and the requirements
330            of the postgis tests.
331    
332            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
333    
334            * test/test_postgis_db.py: New. Test cases for the postgis
335            support.
336    
337            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
338            format
339    
340            * test/test_wellknowntext.py: New. Test cases for the
341            wellknowntext parser
342    
343            * test/postgissupport.py: New. Support module for tests involving
344            a postgis database.
345    
346            * test/support.py (execute_as_testsuite): Shut down the postmaster
347            if it's still running after the tests
348    
349            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
350            well known text format
351    
352    2003-08-19  Jan-Oliver Wagner <[email protected]>
353    
354            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
355            message dialog.
356    
357    2003-08-18  Bernhard Herzog  <[email protected]>
358    
359            * test/support.py (ThubanTestResult.printErrors): Indent the
360            reason for the skips in the output to make it a bit more readable.
361            (execute_as_testsuite): New helper function to run a test suite
362            and print some more information.
363            (run_tests): Use execute_as_testsuite to run the tests
364    
365            * test/runtests.py (main): Use execute_as_testsuite to run the
366            tests
367    
368    2003-08-18  Bernhard Herzog  <[email protected]>
369    
370            Fix some bugs in Thuban and the test suite that were uncovered by
371            changes introduced in Python 2.3:
372    
373            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
374            filename is an absolute name
375    
376            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
377            filename is an absolute name
378    
379            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
380            unique filename to save to and use the correct relative filename
381            in the expected output.
382            (SaveSessionTest.test_dbf_table): Use the correct relative
383            filename in the expected output.
384    
385            * test/test_layer.py (TestLayer.test_raster_layer): Update the
386            test to check whether the filename is absolute.
387    
388    2003-08-18  Jan-Oliver Wagner <[email protected]>
389    
390            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
391    
392    2003-08-15  Bernhard Herzog  <[email protected]>
393    
394            Change the way shapes are returned by a shape store. The
395            ShapesInRegion method returns an iterator over actual shape
396            objects instead of a list of shape ids.
397    
398            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
399            id.
400            (ShapefileStore.ShapesInRegion): Return an iterator over the
401            shapes which yields shape objects instead of returning a list of
402            shape ids
403            (ShapefileStore.AllShapes): New. Return an iterator over all
404            shapes in the shape store
405            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
406    
407            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
408            doc-string.
409    
410            * Thuban/UI/baserenderer.py
411            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
412            layer_shapes and make it return an iterator containg shapes
413            instead of a list of ids.
414            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
415            layer_shapes() change
416    
417            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
418            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
419    
420            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
421            changes in the ShapesInRegion return value.
422            (ViewPort._get_hit_tester): Remove commented out code
423    
424            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
425            new return value.
426            (SimpleShapeStore.AllShapes): New. Implement this method too.
427    
428            * test/test_layer.py (TestLayer.test_arc_layer)
429            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
430            (TestLayer.test_point_layer_with_projection)
431            (TestLayer.test_derived_store): Adapt to changes in the
432            ShapesInRegion return value.
433    
434            * test/test_shapefilestore.py
435            (TestShapefileStoreArc.test_shapes_in_region)
436            (TestShapefileStorePolygon.test_shapes_in_region)
437            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
438            in the ShapesInRegion return value.
439            (TestShapefileStorePoint.test_all_shapes)
440            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
441            methods
442    
443            * test/test_derivedshapestore.py
444            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
445            the ShapesInRegion return value.
446            (TestDerivedShapeStore.test_all_shapes)
447            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
448            methods
449    
450    2003-08-15  Bernhard Herzog  <[email protected]>
451    
452            Make the renderers deal correctly with raw vs. python level
453            representation of shape geometries
454    
455            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
456            Return a flag useraw in addition to the callable and the parameter
457            to indicate whether the callable can deal with the raw shape data
458            or uses the higher level python lists of coordinates. The callable
459            now should accept either the raw data or the return value of the
460            shape's Points() method.
461            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
462            change
463            (BaseRenderer.projected_points): Instead of the shape id use the
464            points list as parameter.
465            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
466            (BaseRenderer.draw_point_shape): Adapt to projected_points()
467            change and accept the points list as parameter instead of the
468            shape id.
469    
470            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
471            the useraw flag as required by the BaseRenderer
472            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
473            changes.
474    
475            * test/test_baserenderer.py
476            (TestBaseRenderer.test_point_with_classification): New test for
477            rendering a map with classifications.
478    
479    2003-08-15  Bernhard Herzog  <[email protected]>
480    
481            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
482            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
483            (ViewPort._get_hit_tester, ViewPort.projected_points)
484            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
485            (ViewPort._find_label_at): Split the find_shape_at method into
486            several new methods and use the functions in the hit-test module.
487    
488            * Thuban/UI/hittest.py: New module with Python-level hit-testing
489            functions
490    
491            * test/test_hittest.py: New. Test for the new hittest module
492    
493    2003-08-15  Bernhard Herzog  <[email protected]>
494    
495            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
496            projection to all corners of the bounding box to get a better
497            approximation of the projected bounding box
498    
499            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
500            New. Test coordinate handling of a layer with a projection.
501            Catches the bug fixed in Layer.ShapesInRegion
502    
503    2003-08-15  Bernhard Herzog  <[email protected]>
504    
505            Move some of the mock objects in test_baserenderer into their own
506            module so they can easily be used from other tests
507    
508            * test/mockgeo.py: New test helper module with some mock objects
509            for geometry related things like shapes, shapestores and
510            projections.
511    
512            * test/test_mockgeo.py: New. Tests for the new helper module
513    
514            * test/test_baserenderer.py: Some of the mock-objects are in
515            mockgeo now.
516    
517    2003-08-12  Jan-Oliver Wagner <[email protected]>
518    
519            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
520    
521    2003-08-12  Bernhard Herzog  <[email protected]>
522    
523            * po/de.po: New. German translations by Bjoern Broscheit
524    
525    2003-08-12  Bernhard Herzog  <[email protected]>
526    
527            * Thuban/UI/projdialog.py (UnknownProjPanel._DoLayout): Translated
528            strings have to be one string literal.
529    
530    2003-08-11  Bernhard Herzog  <[email protected]>
531    
532            * test/support.py (FloatComparisonMixin.assertPointListEquals):
533            New. This method was used in various derived classes, but it's
534            better to have it here.
535    
536            * test/test_shapefilestore.py
537            (ShapefileStoreTests.assertPointListEquals): Removed. It's now in
538            FloatComparisonMixin
539    
540            * test/test_layer.py (TestLayer.assertPointListEquals): Removed.
541            It's now in FloatComparisonMixin
542    
543            * test/test_derivedshapestore.py
544            (TestDerivedShapeStore.assertPointListEquals): Removed. It's now
545            in FloatComparisonMixin
546    
547    2003-08-11  Bernhard Herzog  <[email protected]>
548    
549            * Thuban/UI/join.py (JoinDialog.OnJoin): Add missing space to
550            error message
551    
552    2003-08-08  Jan-Oliver Wagner <[email protected]>
553    
554            * Doc/manual/thuban-manual.xml: Now use authorgroup. Added revhistory
555            with version number.
556            Changed title to reflect version number of Thuban.
557    
558    2003-08-08  Jan-Oliver Wagner <[email protected]>
559    
560            * Thuban/UI/about.py (About.__init__): Reworked the hall of fame. Now
561            the list corresponds to the "About" web page.
562    
563    2003-08-08  Bernhard Herzog  <[email protected]>
564    
565            * Thuban/UI/projdialog.py (UTMProposeZoneDialog.dialogLayout):
566            Make sure translated strings are recognized as one string literal.
567    
568            * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog.dialogLayout):
569            Make sure translated strings are recognized as one string literal.
570    
571            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Make sure
572            translated strings are recognized as one string literal.
573    
574            * Thuban/UI/application.py (ThubanApplication.OpenSession): Make
575            sure translated strings are recognized as one string literal.
576    
577    2003-08-07  Bernhard Herzog  <[email protected]>
578    
579            * Thuban/Model/data.py (DerivedShapeStore.RawShapeFormat): New.
580            Simply delegates to the original shapestore.
581    
582            * test/test_derivedshapestore.py
583            (TestDerivedShapeStore.test_raw_format): New. Test case for
584            DerivedShapeStore.RawShapeFormat
585    
586    2003-08-07  Bernhard Herzog  <[email protected]>
587    
588            Add raw data interface to shape objects.
589    
590            * Thuban/Model/data.py (ShapefileShape, Shape): Rname the shape
591            class to ShapefileShape which now holds shapefile specific
592            information.
593            (ShapefileShape.compute_bbox): Simplified to not cache any
594            information. The way this method is used that shouldn't matter
595            performance wise.
596            (ShapefileShape.RawData): New. Return the shapeid which is the raw
597            data format for shapes from shapefiles.
598            (ShapefileStore.RawShapeFormat): New. Return the raw datatype used
599            in the shape objects returned by a shapestore. For a
600            ShapefileStore this is always RAW_SHAPEFILE.
601            (RAW_PYTHON, RAW_SHAPEFILE): Constants for the RawShapeFormat
602            method.
603    
604            * test/test_shapefilestore.py
605            (TestShapefileStore.test_raw_format): New test to test the raw
606            format feature of shapes.
607    
608            * Thuban/Model/layer.py: Remove the unused import of Shape from
609            data. It was only there for interface compatibility but it's not
610            used inside of Thuban and the generic Shape class has gone away.
611    
612            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Check
613            the raw data format and only use an optimized version of its a
614            shapefile.
615    
616    2003-08-07  Bernhard Herzog  <[email protected]>
617    
618            * test/test_baserenderer.py (SimpleShape): Shape class for the
619            tests.
620            (SimpleShapeStore.Shape): Use SimpleShape instead of
621            Thuban.Model.data.Shape to make the tests independed of the coming
622            changes.
623    
624    2003-08-07  Bernhard Herzog  <[email protected]>
625    
626            * test/support.py (SkipTest, ThubanTestResult, ThubanTestRunner)
627            (ThubanTestProgram): New classes that extend the respective
628            classes from unittest. These new version support skipping tests
629            under certain expected conditions. In the Thuban test suite we
630            uses this for tests that require the optional gdal support.
631            (run_tests): Use ThubanTestProgram instead of the unittest.main()
632    
633            * test/runtests.py (main): Use the new ThubanTestRunner instead of
634            the normal one from unittest
635    
636            * test/test_layer.py (TestLayer.test_raster_layer): If this test
637            is not run because gdal support isn't available report this to the
638            runner.
639    
640            * test/test_baserenderer.py
641            (TestBaseRenderer.test_raster_no_projection): Do not run this test
642            if gdal support isn't available and report this to the runner.
643    
644    2003-08-06  Bernhard Herzog  <[email protected]>
645    
646            Rearrange the renderers a bit, partly in preparation for changes
647            required for the postgis merge, partly to make it more testable.
648            Also make the representation of coordinates in Shapes more
649            consistent.
650    
651            * Thuban/UI/renderer.py (MapRenderer): Most of the code/methods in
652            this class is now in BaseRenderer. This class is now practically
653            only a specialization of BaseRenderer for rendering to an actual
654            wx DC.
655            (ScreenRenderer.draw_shape_layer): Use self.low_level_renderer()
656            to get the shapetype specific rendering functions.
657    
658            * Thuban/UI/baserenderer.py: New file with the basic rendering
659            logic. The code in this file is completely independend of wx.
660            (BaseRenderer): Class with the basic rendering logic
661    
662            * test/test_baserenderer.py: New. Test cases for BaseRenderer
663    
664            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
665            error_on_redraw to guard agains endless loops and stack overflows
666            when there's a bug in the rendering code that raises exceptions.
667            (MapCanvas.OnIdle, MapCanvas._do_redraw): Split the actual
668            rendering into a separate method _do_redraw so that error handling
669            is a bit easier. When an exception occurs, set error_on_redraw to
670            true. When it's true on entry to OnIdle do nothing and return
671            immediately.
672    
673            * Thuban/Model/data.py (ShapefileStore.Shape): For consistency, a
674            Shape object will always have the coordinates as a list of list of
675            coordinate pairs (tuples).
676            (Shape.compute_bbox): Adapt to new representation.
677    
678            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
679            (ViewPort.LabelShapeAt): Adapt to new coordinate representation in
680            Shape objects.
681    
682            * test/test_shapefilestore.py
683            (ShapefileStoreTests.assertFloatTuplesEqual)
684            (ShapefileStoreTests.assertPointListEquals): Rename to
685            assertPointListEquals and change purpose to checking equality of
686            the lists returned by Shape.Points().
687            (TestShapefileStoreArc.test_shape)
688            (TestShapefileStorePolygon.test_shape)
689            (TestShapefileStorePoint.test_shape): Use the new
690            assertPointListEquals instead of assertFloatTuplesEqual
691    
692            * test/test_layer.py (TestLayer.assertFloatTuplesEqual)
693            (TestLayer.assertPointListEquals): Rename to assertPointListEquals
694            and change purpose to checking equality of the lists returned by
695            Shape.Points().
696            (TestLayer.test_arc_layer, TestLayer.test_arc_layer)
697            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
698            (TestLayer.test_derived_store): Use the new assertPointListEquals
699            instead of assertFloatTuplesEqual
700    
701            * test/test_derivedshapestore.py
702            (TestDerivedShapeStore.assertFloatTuplesEqual)
703            (TestDerivedShapeStore.assertPointListEquals): Rename to
704            assertPointListEquals and change purpose to checking equality of
705            the lists returned by Shape.Points().
706            (TestDerivedShapeStore.test_shape): Use the new
707            assertPointListEquals instead of assertFloatTuplesEqual
708    
709    2003-08-06  Jan-Oliver Wagner <[email protected]>
710    
711            * Thuban/UI/projdialog.py (UTMPanel._OnPropose): Added test for
712            a bounding box. A dialog is raised in case, no bounding box
713            is found. This fixes bug #2043:
714            https://intevation.de/rt/webrt?serial_num=2043
715    
716    2003-08-05  Bernhard Herzog  <[email protected]>
717    
718            * Thuban/Model/color.py (Color.__repr__): Make the repr of a color
719            object look like a Color instantiation. Formerly it looked like a
720            tuple.
721    
722            * test/test_color.py (TestColor.test_repr)
723            (TestColor.test_equality, TestColor.test_inequality): New. test
724            some more apects of the Color class
725            (TestTransparent.test_repr, TestTransparent.test_hex)
726            (TestTransparent.test_equality): New. Test cases for the
727            Transparent object.
728    
729    2003-08-04  Jan-Oliver Wagner <[email protected]>
730    
731            * Doc/manual/thuban-manual.xml: a number of small improvements.
732            The resulting file is the version submitted for GREAT-ER II.
733    
734    2003-08-01  Bernhard Herzog  <[email protected]>
735    
736            * Thuban/UI/resource.py, Thuban/UI/projdialog.py,
737            Thuban/UI/join.py, Thuban/UI/classgen.py, Thuban/UI/about.py,
738            Thuban/Model/resource.py: Insert cvs keywords and doc-strings.
739    
740            * Thuban/UI/common.py: Insert cvs keywords and doc-strings.
741            (Color2wxColour, wxColour2Color, ThubanBeginBusyCursor)
742            (ThubanEndBusyCursor): Add doc-strings
743    
744    2003-08-01  Bernhard Herzog  <[email protected]>
745    
746            First step towards PostGIS integration. More abstraction by movin
747            more code from the layer to the shapestore. More methods of the
748            layer are now simply delegated to the equivalent method of the
749            shapestore. The SHAPETYPE_* constants are now in data not in
750            layer.
751    
752            * Thuban/Model/data.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
753            (SHAPETYPE_POINT, Shape): Move these constants and classes from
754            layer.py to data.py
755            (ShapefileStore.__init__): More Initialization for the new methods
756            and functionality.
757            (ShapefileStore.ShapeType, ShapefileStore.NumShapes)
758            (ShapefileStore.BoundingBox, ShapefileStore.ShapesInRegion)
759            (ShapefileStore.Shape): New methods that were formerly implemented
760            in the layer.
761            (DerivedShapeStore.Shape, DerivedShapeStore.ShapesInRegion)
762            (DerivedShapeStore.ShapeType, DerivedShapeStore.NumShapes)
763            (DerivedShapeStore.BoundingBox): New. DerivedShapeStore
764            equivalents of the new shape methods. These versions are simply
765            delegated to the original shapstore.
766    
767            * Thuban/Model/layer.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
768            (SHAPETYPE_POINT, Shape): Removed. They're now in data.py
769            (Layer.SetShapeStore): Removed the initializatin of instance
770            variables that were needed for the stuff that's now in
771            ShapefileStore
772            (Layer.BoundingBox, Layer.NumShapes, Layer.ShapeType)
773            (Layer.Shape, Layer.ShapesInRegion): Simply delegate to the
774            shapestore.
775    
776            * Thuban/UI/classifier.py, Thuban/UI/renderer.py,
777            Thuban/UI/viewport.py: Import the SHAPETYPE_* constants from data
778            instead of layer.
779    
780            * test/test_shapefilestore.py: New. Tests for ShapefileStore.
781    
782            * test/test_derivedshapestore.py: New. Tests for DerivedShapeStore.
783    
784            * test/test_layer.py: Import the SHAPETYPE_* constants from data
785            instead of layer.
786            (TestLayer.test_derived_store): Remove the test for the exception
787            when instantiating the DerivedShapeStore with an incompatible
788            table which is now in test_derivedshapestore.py. Add some more
789            tests of the layer methods to determine whether they work for a
790            DerivedShapeStore as well.
791    
792  2003-07-31  Jonathan Coles   <[email protected]>  2003-07-31  Jonathan Coles   <[email protected]>
793    
794          * Doc/manual/thuban-manual.xml: Fix the list of required packages          * Doc/manual/thuban-manual.xml: Fix the list of required packages

Legend:
Removed from v.1534  
changed lines
  Added in v.1655

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26