/[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 1582 by bh, Tue Aug 12 15:08:40 2003 UTC revision 1653 by bh, Mon Aug 25 16:00:06 2003 UTC
# Line 1  Line 1 
1    2003-08-25  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Release the the mouse
4            before calling MouseLeftUp. MouseLeftUp may pop up modal dialogs
5            which leads to an effectively frozen X session because the user
6            can only interact with the dialog but the mouse is still grabbed
7            by the canvas.
8            Also, call the tool's Hide method before MouseLeftUp because
9            MouseLeftUp may change the tool's coordinates.
10    
11    2003-08-25  Bernhard Herzog  <[email protected]>
12    
13            * Thuban/UI/application.py (ThubanApplication.OpenSession): Catch
14            LoadCancelled exceptions and handle them by returning immediately.
15    
16    2003-08-25  Bernhard Herzog  <[email protected]>
17    
18            GUI part of loading sessions with postgis connections which may
19            require user interaction to get passwords or updated parameters
20    
21            * Thuban/UI/dbdialog.py (DBDialog): Reimplement to make it look a
22            bit nucer and be more generic.
23            (DBFrame.OnAdd): Adapt to new DBDialog interface
24    
25            * Thuban/UI/application.py (ThubanApplication.OpenSession): New
26            optional parameter db_connection_callback which is passed to
27            load_session.
28    
29            * Thuban/UI/mainwindow.py (MainWindow.run_db_param_dialog): New.
30            Suitable as a db_connection_callback
31            (MainWindow.OpenSession): Use self.run_db_param_dialog as the
32            db_connection_callback of the application's OpenSession method
33    
34    
35    2003-08-25  Bernhard Herzog  <[email protected]>
36    
37            Basic loading of sessions containing postgis connections:
38    
39            * Thuban/Model/load.py (LoadError): Add doc-string
40            (LoadCancelled): New exception class to indicate a cancelled load
41            (SessionLoader.__init__): Add the db_connection_callback parameter
42            which will be used by the loader to get updated parameters and a
43            password for a database connection
44            (SessionLoader.__init__): Add the new XML elements to the
45            dispatchers dictionary
46            (SessionLoader.check_attrs): Two new conversions, ascii to convert
47            to a byte-string object and idref as a generic id reference
48            (SessionLoader.start_dbconnection)
49            (SessionLoader.start_dbshapesource): New. Handlers for the new XML
50            elements
51            (load_session): Add the db_connection_callback to pass through the
52            SessionLoader
53    
54            * test/test_load.py (TestPostGISLayer, TestPostGISLayerPassword):
55            New classes to test loading of sessions with postgis database
56            connections.
57    
58    2003-08-25  Bernhard Herzog  <[email protected]>
59    
60            * Thuban/UI/mainwindow.py (__ThubanVersion__): Remove this and
61            replace it and the comment with __BuildDate__ by the Source: and
62            Id: cvs keywords as used in the other files.
63    
64    2003-08-25  Bernhard Herzog  <[email protected]>
65    
66            * Thuban/Model/load.py (SessionLoader.check_attrs): Raise a
67            LoadError when a required attribute is missing. The code used to
68            be commented out for some reason, but probably should have been
69            active.
70    
71            * test/test_load.py (TestLoadError.test): Test the message in the
72            LoadError too to make sure it really is about the missing
73            attribute
74    
75    2003-08-22  Bernhard Herzog  <[email protected]>
76    
77            * test/test_save.py (SaveSessionTest.test_dbf_table)
78            (SaveSessionTest.test_joined_table): Add XML validation tests.
79    
80    2003-08-22  Bernhard Herzog  <[email protected]>
81    
82            Implement saving a session with a postgis connection
83    
84            * Resources/XML/thuban-0.9.dtd (dbconnection, dbshapesource) New
85            elements for database connections and shapestores using db
86            connections
87            (session): Add the dbconnections to the content model
88    
89            * Thuban/Model/save.py (SessionSaver.write_db_connections): New.
90            Write the db connections
91            (SessionSaver.write_session): Call write_db_connections to write
92            the connection before the data sources
93            (SessionSaver.write_data_containers): Handle postgis shapestores
94    
95            * test/test_save.py (SaveSessionTest.thubanids)
96            (SaveSessionTest.thubanidrefs): Update for new DTD
97            (SaveSessionTest.test_save_postgis): New. Test saving a session
98            with postgis connections
99    
100            * Thuban/Model/postgisdb.py (PostGISTable.DBConnection)
101            (PostGISTable.TableName): New accessor methods for the connection
102            and table name
103    
104            * test/test_postgis_db.py (TestPostGISTable.test_dbconn)
105            (TestPostGISTable.test_dbname): New methods to test the new
106            PostGISConnection methods
107    
108    2003-08-22  Bernhard Herzog  <[email protected]>
109    
110            * Thuban/Model/postgisdb.py (ConnectionError): New exception class
111            for exceptions occurring when establishing a Database connection
112            (PostGISConnection.connect): Catch psycopg.OperationalError during
113            connects and raise ConnectionError.
114    
115            * test/test_postgis_db.py (TestPostgisDBExceptions): New class for
116            tests for database exceptions
117    
118    2003-08-22  Bernhard Herzog  <[email protected]>
119    
120            Prepare the test suite for tests with required authentication
121    
122            * test/postgissupport.py (PostgreSQLServer.__init__): Add instance
123            variables with two predefined users/passwords, one for the admin
124            and one for a non-privileged user.
125            (PostgreSQLServer.createdb): Pass the admin name to initdb and add
126            the non-privileged user to the database and set the admin password
127            (PostgreSQLServer.wait_for_postmaster): Use the admin user name.
128            Better error reporting
129            (PostgreSQLServer.connection_params)
130            (PostgreSQLServer.connection_string): New methods to return
131            information about how to connect to the server
132            (PostgreSQLServer.execute_sql): New. Convenience method to execute
133            SQL statements
134            (PostgreSQLServer.require_authentication): Toggle whether the
135            server requires authentication
136            (PostgreSQLServer.create_user, PostgreSQLServer.alter_user): New.
137            Add or alter users
138            (PostGISDatabase.initdb): Pass the admin name one the
139            subprocesses' command lines. Grant select rights on
140            geometry_columns to everybody.
141            (upload_shapefile): Use the admin name and password when
142            connecting. Grant select rights on the new table to everybody.
143    
144            * test/test_viewport.py (TestViewportWithPostGIS.setUp): Use the
145            server's new methods to get the connection parameters.
146    
147            * test/test_postgis_session.py (TestSessionWithPostGIS.setUp)
148            (TestSessionWithPostGIS.test_remove_dbconn_exception): Use the
149            server's new methods to get the connection parameters.
150    
151            * test/test_postgis_db.py
152            (TestPostGISConnection.test_gis_tables_empty)
153            (TestPostGISConnection.test_gis_tables_non_empty)
154            (PostGISStaticTests.setUp): Use the server's new methods to get
155            the connection parameters.
156    
157    2003-08-22  Bernhard Herzog  <[email protected]>
158    
159            * Thuban/UI/about.py (About.__init__): Add the psycopg version.
160    
161            * Thuban/version.py: Add psycopg version
162    
163            * Thuban/Model/postgisdb.py (psycopg_version): New. Return the
164            version of the psycopg module
165    
166    2003-08-22  Bernhard Herzog  <[email protected]>
167    
168            * Thuban/UI/dbdialog.py (DBPwdDlg): Removed because it's not used.
169            (DBFrame.OnEdit): Removed because it's not used and wouldn't work
170            at the moment. The functionality should probably be implemented
171            some time, though.
172            (DBFrame.OnRemove): Display a message if the connection can't be
173            removed because it's still in use.
174    
175    2003-08-22  Jan-Oliver Wagner <[email protected]>
176    
177            * Thuban/UI/about.py (About.__init__): split up the huge about
178            text into elements/lists for easier translation. This fixes bug
179            https://intevation.de/rt/webrt?serial_num=2058
180            Also, made some forgotten string available for the i18n.
181    
182    2003-08-21  Bernhard Herzog  <[email protected]>
183    
184            Make postgis support really optional including insensitive menu
185            items.
186    
187            * Thuban/Model/postgisdb.py (has_postgis_support): New. Return
188            whether the postgis is supported.
189    
190            * Thuban/UI/dbdialog.py: Put the psycopg import into try..except
191            to make postgis support optional
192    
193            * Thuban/UI/mainwindow.py (_has_postgis_support): New. Context
194            version of Thuban.Model.postgisdb.has_postgis_support
195            (database_management command): Make it only sensitive if postgis
196            is supported.
197    
198    2003-08-21  Jan-Oliver Wagner <[email protected]>
199    
200            * Doc/manual/thuban-manual.xml: Added CVS revision for rev-history.
201            (section Adding and Removing Layers): Added text and described
202            multi-selection.
203            (chapter Extensions): New.
204    
205    2003-08-21  Jan-Oliver Wagner <[email protected]>
206    
207            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Changed dialog
208            settings to allow multiple files to load into the map.
209            Also reduced selection to *.shp as a default.
210    
211    2003-08-20  Bernhard Herzog  <[email protected]>
212    
213            Add dialogs and commands to open database connections and add
214            database layers.
215    
216            * Thuban/UI/mainwindow.py (MainWindow.DatabaseManagement): New
217            method to open the database connection management dialog
218            (MainWindow.AddDBLayer): New method to add a layer from a database
219            (_has_dbconnections): New helper function to use for sensitivity
220            (database_management command, layer_add_db command): New commands
221            that call the above new methods.
222            (main_menu): Add the new commands to the menu.
223    
224            * Thuban/Model/postgisdb.py (PostGISConnection.__init__)
225            (PostGISConnection.connect): Establish the actual connection in a
226            separate method and call it in __init__. This makes it easier to
227            override the behavior in test cases
228            (PostGISConnection.BriefDescription): New method to return a brief
229            description for use in dialogs.
230    
231            * test/test_postgis_db.py (NonConnection): DB connection that
232            doesn't actually connect
233            (TestBriefDescription): New class with tests for the new
234            BriefDescription method
235    
236    2003-08-19  Jan-Oliver Wagner <[email protected]>
237    
238            Moved anything from extensions to libraries.
239    
240            * libraries: New.
241    
242            * libraries/ pyprojection, pyshapelib, shapelib, thuban: New.
243    
244            * libraries/pyprojection/ LICENSE, MANIFEST.in, Projection.i,
245            Projection.py, Projection_wrap.c, setup.py, swighelp.txt: These files have
246            been moved here from thuban/extensions/pyprojection/
247            See there in the Attic for the older history.
248    
249            * libraries/pyshapelib/ COPYING, ChangeLog, NEWS, README, dbflib.i,
250            dbflib.py, dbflib_wrap.c, pyshapelib_api.h, pytest.py, setup.py,
251            shapelib.i, shapelib.py, shapelib_wrap.c, shptreemodule.c: These files
252            have been moved here from thuban/extensions/pyshapelib/
253            See there in the Attic for the older history.
254    
255            * libraries/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c: These
256            files have been moved here from thuban/extensions/shapelib/
257            See there in the Attic for the older history.
258    
259            * libraries/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
260            gdalwarp.cpp, wxproj.cpp: These files have been moved here from
261            thuban/extensions/thuban/
262            See there in the Attic for the older history.
263    
264            * MANIFEST.in, setup.cfg, setup.py: renamed extensions to libraries.
265    
266            * extensions/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
267            gdalwarp.cpp, wxproj.cpp: Moved to libraries/thuban.
268    
269            * extensions/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c:
270            Moved to libraries/shapelib.
271    
272            * extensions/pyshapelib/ COPYING, NEWS, dbflib.py, pytest.py,
273            shapelib.py, README, dbflib_wrap.c, setup.py, shapelib_wrap.c,
274            ChangeLog, dbflib.i, pyshapelib_api.h, shapelib.i, shptreemodule.c:
275            Moved to libraries/pyshapelib.
276    
277            * extensions/pyprojection/ MANIFEST.in, Projection.py, setup.py,
278            LICENSE, Projection.i, Projection_wrap.c, swighelp.txt:
279            Moved to libraries/pyprojection.
280    
281            * extensions/ pyprojection, pyshapelib, shapelib, thuban: Removed.
282    
283            * extensions: Removed.
284    
285    2003-08-19  Bernhard Herzog  <[email protected]>
286    
287            * test/test_viewport.py (ViewPortTest): We don't use the
288            facilities of FileTestMixin so don't derive from it.
289            (TestViewportWithPostGIS): New class with tests for using a
290            viewport on a map with postgis layers.
291    
292    2003-08-19  Bernhard Herzog  <[email protected]>
293    
294            Add the db connection management to the session.
295    
296            * Thuban/Model/session.py (Session.__init__): New instance
297            variable db_connections
298            (Session.AddDBConnection, Session.DBConnections)
299            (Session.HasDBConnections, Session.CanRemoveDBConnection)
300            (Session.RemoveDBConnection): New methods to manage and query the
301            db connections managed by the session
302            (Session.OpenDBShapeStore): New method to open a shapestore from a
303            db connection
304    
305            * Thuban/Model/messages.py (DBCONN_REMOVED, DBCONN_ADDED): New
306            messages for the db connection handling in the session
307    
308            * test/test_postgis_session.py: New. test cases for the session's
309            db connection handling with postgis connections
310    
311    2003-08-19  Bernhard Herzog  <[email protected]>
312    
313            Add very basic postgis database support and the corresponding test
314            cases. The test cases require a PostgreSQL + postgis installation
315            but no existing database. The database will be created
316            automatically by the test cases
317    
318            * test/README: Add note about skipped tests and the requirements
319            of the postgis tests.
320    
321            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
322    
323            * test/test_postgis_db.py: New. Test cases for the postgis
324            support.
325    
326            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
327            format
328    
329            * test/test_wellknowntext.py: New. Test cases for the
330            wellknowntext parser
331    
332            * test/postgissupport.py: New. Support module for tests involving
333            a postgis database.
334    
335            * test/support.py (execute_as_testsuite): Shut down the postmaster
336            if it's still running after the tests
337    
338            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
339            well known text format
340    
341    2003-08-19  Jan-Oliver Wagner <[email protected]>
342    
343            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
344            message dialog.
345    
346    2003-08-18  Bernhard Herzog  <[email protected]>
347    
348            * test/support.py (ThubanTestResult.printErrors): Indent the
349            reason for the skips in the output to make it a bit more readable.
350            (execute_as_testsuite): New helper function to run a test suite
351            and print some more information.
352            (run_tests): Use execute_as_testsuite to run the tests
353    
354            * test/runtests.py (main): Use execute_as_testsuite to run the
355            tests
356    
357    2003-08-18  Bernhard Herzog  <[email protected]>
358    
359            Fix some bugs in Thuban and the test suite that were uncovered by
360            changes introduced in Python 2.3:
361    
362            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
363            filename is an absolute name
364    
365            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
366            filename is an absolute name
367    
368            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
369            unique filename to save to and use the correct relative filename
370            in the expected output.
371            (SaveSessionTest.test_dbf_table): Use the correct relative
372            filename in the expected output.
373    
374            * test/test_layer.py (TestLayer.test_raster_layer): Update the
375            test to check whether the filename is absolute.
376    
377    2003-08-18  Jan-Oliver Wagner <[email protected]>
378    
379            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
380    
381    2003-08-15  Bernhard Herzog  <[email protected]>
382    
383            Change the way shapes are returned by a shape store. The
384            ShapesInRegion method returns an iterator over actual shape
385            objects instead of a list of shape ids.
386    
387            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
388            id.
389            (ShapefileStore.ShapesInRegion): Return an iterator over the
390            shapes which yields shape objects instead of returning a list of
391            shape ids
392            (ShapefileStore.AllShapes): New. Return an iterator over all
393            shapes in the shape store
394            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
395    
396            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
397            doc-string.
398    
399            * Thuban/UI/baserenderer.py
400            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
401            layer_shapes and make it return an iterator containg shapes
402            instead of a list of ids.
403            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
404            layer_shapes() change
405    
406            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
407            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
408    
409            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
410            changes in the ShapesInRegion return value.
411            (ViewPort._get_hit_tester): Remove commented out code
412    
413            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
414            new return value.
415            (SimpleShapeStore.AllShapes): New. Implement this method too.
416    
417            * test/test_layer.py (TestLayer.test_arc_layer)
418            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
419            (TestLayer.test_point_layer_with_projection)
420            (TestLayer.test_derived_store): Adapt to changes in the
421            ShapesInRegion return value.
422    
423            * test/test_shapefilestore.py
424            (TestShapefileStoreArc.test_shapes_in_region)
425            (TestShapefileStorePolygon.test_shapes_in_region)
426            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
427            in the ShapesInRegion return value.
428            (TestShapefileStorePoint.test_all_shapes)
429            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
430            methods
431    
432            * test/test_derivedshapestore.py
433            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
434            the ShapesInRegion return value.
435            (TestDerivedShapeStore.test_all_shapes)
436            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
437            methods
438    
439    2003-08-15  Bernhard Herzog  <[email protected]>
440    
441            Make the renderers deal correctly with raw vs. python level
442            representation of shape geometries
443    
444            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
445            Return a flag useraw in addition to the callable and the parameter
446            to indicate whether the callable can deal with the raw shape data
447            or uses the higher level python lists of coordinates. The callable
448            now should accept either the raw data or the return value of the
449            shape's Points() method.
450            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
451            change
452            (BaseRenderer.projected_points): Instead of the shape id use the
453            points list as parameter.
454            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
455            (BaseRenderer.draw_point_shape): Adapt to projected_points()
456            change and accept the points list as parameter instead of the
457            shape id.
458    
459            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
460            the useraw flag as required by the BaseRenderer
461            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
462            changes.
463    
464            * test/test_baserenderer.py
465            (TestBaseRenderer.test_point_with_classification): New test for
466            rendering a map with classifications.
467    
468    2003-08-15  Bernhard Herzog  <[email protected]>
469    
470            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
471            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
472            (ViewPort._get_hit_tester, ViewPort.projected_points)
473            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
474            (ViewPort._find_label_at): Split the find_shape_at method into
475            several new methods and use the functions in the hit-test module.
476    
477            * Thuban/UI/hittest.py: New module with Python-level hit-testing
478            functions
479    
480            * test/test_hittest.py: New. Test for the new hittest module
481    
482    2003-08-15  Bernhard Herzog  <[email protected]>
483    
484            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
485            projection to all corners of the bounding box to get a better
486            approximation of the projected bounding box
487    
488            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
489            New. Test coordinate handling of a layer with a projection.
490            Catches the bug fixed in Layer.ShapesInRegion
491    
492    2003-08-15  Bernhard Herzog  <[email protected]>
493    
494            Move some of the mock objects in test_baserenderer into their own
495            module so they can easily be used from other tests
496    
497            * test/mockgeo.py: New test helper module with some mock objects
498            for geometry related things like shapes, shapestores and
499            projections.
500    
501            * test/test_mockgeo.py: New. Tests for the new helper module
502    
503            * test/test_baserenderer.py: Some of the mock-objects are in
504            mockgeo now.
505    
506    2003-08-12  Jan-Oliver Wagner <[email protected]>
507    
508            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
509    
510  2003-08-12  Bernhard Herzog  <[email protected]>  2003-08-12  Bernhard Herzog  <[email protected]>
511    
512          * po/de.po: New. German translations by Bjoern Broscheit          * po/de.po: New. German translations by Bjoern Broscheit

Legend:
Removed from v.1582  
changed lines
  Added in v.1653

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26