/[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 1783 by bh, Mon Oct 6 17:32:31 2003 UTC
# Line 1  Line 1 
1    2003-10-06  Bernhard Herzog  <[email protected]>
2    
3            Handle the title changes in a proper MVC way.
4    
5            * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
6            canvas' TITLE_CHANGED messages
7            (MainWindow.update_title): New. Update the main window's title
8            (MainWindow.__SetTitle): Removed. Use update_title instead.
9            (MainWindow.SetMap): Use update_title instead of __SetTitle
10            (MainWindow.RenameMap): Do change the window title explicitly
11            here. That's handled in a proper MVC way now.
12            (MainWindow.title_changed): New. Subscriber for the TITLE_CHANGED
13            messages
14    
15            * Thuban/Lib/connector.py (Conduit): New class to help classes
16            that forward messages
17    
18            * Thuban/UI/viewport.py: Forward the map's TITLE_CHANGED messages
19            (ViewPort): Derive from Conduit instead of Publisher
20            (ViewPort.Subscribe, ViewPort.Unsubscribe): Use the new base class
21            when calling the inherited versions
22            (ViewPort._subscribe_map, ViewPort._unsubscribe_map): New helper
23            methods to subscribe and unsubscribe map messages
24            (ViewPort.SetMap, ViewPort.Destroy): Use the new helper methods to
25            handle the map subscriptions
26            (ViewPort.Map, ViewPort.map_projection_changed)
27            (ViewPort.layer_projection_changed): Add or update doc-strings
28    
29            * test/test_connector.py (TestPublisher.test_issue_simple): Fix
30            typo
31            (MyConduit): Helper class for the Conduit test.
32            (TestConduit): Test cases for Conduit
33    
34            * test/test_connector.py: Use support.run_tests as main.
35    
36            * test/test_viewport.py (ViewPortTest.setUp): Also subscribe to
37            the TITLE_CHANGED messages
38            (ViewPortTest.test_forwarding_title_changed): New test to check
39            whether the viewport forwards the map's TITLE_CHANGED messages
40            (TestViewportWithPostGIS.tearDown): Call the map's Destroy method
41            after the port's because the latter may require a still functional
42            map.
43    
44    2003-10-06  Bernhard Herzog  <[email protected]>
45    
46            * Thuban/UI/application.py (ThubanApplication.maps_changed): Add
47            doc-string
48    
49    2003-10-06  Bernhard Herzog  <[email protected]>
50    
51            * test/test_viewport.py (ViewPortTest.setUp)
52            (SimpleViewPortTest.test_init_with_size): Move the test for the
53            initial size as a constructor parameter from ViewPortTest.setUp
54            method to a new separate test in SimpleViewPortTest.
55    
56    2003-10-06  Bernhard Herzog  <[email protected]>
57    
58            * test/test_viewport.py (MockView): New class derived from
59            ViewPort with a mock implementation of GetTextExtent to be used in
60            the test cases
61            (ViewPortTest.setUp): Use MockView instead of ViewPort
62    
63            * Thuban/UI/viewport.py (ViewPort.GetTextExtent): Turn this method
64            into what would be a "pure virtual function" in C++: always raise
65            NotImplementedError. Mock implementations for test cases don't
66            belong into the real code
67    
68    2003-10-02  Bernhard Herzog  <[email protected]>
69    
70            * test/test_layer.py (TestLayer.test_empty_layer): Explicitly
71            close the dbf file we create so that it's contents have been
72            written properly.
73    
74            * libraries/shapelib/shptree.c, libraries/shapelib/shpopen.c,
75            libraries/shapelib/shapefil.h, libraries/shapelib/dbfopen.c:
76            Update to shapelib 1.2.10
77    
78    2003-10-01  Jan-Oliver Wagner <[email protected]>
79    
80            * Thuban/UI/tree.py, Thuban/UI/main.py: Remove the #! line as
81            it annoys lintian which warns about these files not being
82            executable. The #! isn't necessary here since if you absolutely
83            must execute them you can always say "python <filename>".
84    
85    2003-09-26  Bernhard Herzog  <[email protected]>
86    
87            * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's
88            only used in GREAT-ER but not used in Thuban itself. When GREAT-ER
89            is ported to a newer the import will fail, so it should be noticed
90            immediately that this function is gone.
91            Fixes RT#1919
92    
93    2003-09-26  Bernhard Herzog  <[email protected]>
94    
95            Add a DTD for the projection files and make thuban write valid
96            projection files
97    
98            * Resources/XML/projfile.dtd: New. DTD for thuban's projection
99            files
100    
101            * Thuban/Model/resource.py (ProjFileSaver.write): Use
102            'projectionlist' as the name in the document type declaration so
103            that it matches the element type of the root element.
104    
105            * test/test_proj.py (sample_projfile, sample_projfile2): Use
106            'projectionlist' as the name in the document type declaration just
107            as it is done now in the files thuban would write
108            (sample_projfile, sample_projfile_data): Fix spelling of
109            "Mercator"
110            (TestProjFile.doTestWrite): Validate the written and the expected
111            XML data
112            (TestProjFile): Derive from ValidationTest so that we can run xml
113            validation tests
114    
115    2003-09-24  Bernhard Herzog  <[email protected]>
116    
117            * Thuban/UI/renderer.py (ExportRenderer.render_legend): Do not
118            modify the list returned by map.Layers() in place since it is the
119            actual list of layers used by the map.
120    
121    2003-09-23  Jan-Oliver Wagner <[email protected]>
122    
123            * Doc/manual/thuban-manual.xml: Added subsection to chapter
124            Extensions to describe the extensions coming with the Thuban
125            standard package (gns2shp and importAPR).
126    
127    2003-09-23  Bernhard Herzog  <[email protected]>
128    
129            * libraries/thuban/wxproj.cpp (project_point): if there's an
130            inverse but no forward projection, convert to degrees after
131            applying the inverse projection. Fixes RT#2096
132    
133            * test/test_wxproj.py: New. Test cases for wxproj.so. One test
134            implicitly tests for the fix to RT#2096
135    
136            * test/support.py (FloatComparisonMixin.assertFloatSeqEqual):
137            Check that the sequences have the same lengths
138    
139            * Resources/Projections/defaults.proj (Geographic projection): Use
140            a much more precise value for the to_meter attribute.
141    
142    2003-09-22  Bernhard Herzog  <[email protected]>
143    
144            * test/support.py (initthuban): Make sure to unset the LANG env.
145            var. so that tests that compare translated strings work. Solves RT
146            #2094
147    
148    2003-09-22  Jan-Oliver Wagner <[email protected]>
149    
150            Small improvement of APR import.
151    
152            * Extensions/importAPR/test/test_apr.py (aprTest.test_LClass):
153            Added tests for text-ranges.
154    
155            * Extensions/importAPR/apr.py (APR_LClass.GetThubanRange): Now
156            returns a string object if the range is based on text.
157    
158            * Extensions/importAPR/importAPR.py (import_apr_dialog): Unified
159            range retrieval.
160    
161    2003-09-22  Jan-Oliver Wagner <[email protected]>
162    
163            Initial version of the importAPR extension which is in
164            experimental state.
165    
166            * /Extensions/importAPR/, /Extensions/importAPR/samples/,
167            /Extensions/importAPR/test/: New directories.
168    
169            * /Extensions/importAPR/samples/README: New: Howto load the samples.
170    
171            * /Extensions/importAPR/samples/iceland.apr: New: A sample APR
172            file which refers to the Thuban Iceland demo data.
173    
174            * /Extensions/importAPR/test/README: New: Howto execute the tests.
175    
176            * /Extensions/importAPR/test/test_apr.py: New: Tests for APR classes.
177    
178            * /Extensions/importAPR/apr.py: New: Classes for ArcView Objects
179            as in '.apr'-files.
180    
181            * /Extensions/importAPR/odb.py: New: Classes for generic ArcView
182            ODB Objects as in '.apr', '.avl' and other files.
183    
184            * /Extensions/importAPR/__init__.py: New: Init to make this
185            directory a package.
186    
187            * /Extensions/importAPR/importAPR.py: New: Import a ArcView
188            project file (.apr) and convert it to Thuban.
189    
190    2003-09-22  Jan-Oliver Wagner <[email protected]>
191    
192            * Extensions/gns2shp.gns2shp.py: The main module of gns2shp.
193    
194    2003-09-19  Jan-Oliver Wagner <[email protected]>
195    
196            * Doc/manual/thuban-manual.xml: Extended section 'Installation'
197            with description on RPM installation and RPM binary package
198            creation.
199    
200    2003-09-18  Bernhard Herzog  <[email protected]>
201    
202            * setup.py (data_files): Only add the mo files if the Locales
203            directory actually exists, so that setup.py works with a fresh CVS
204            checkout
205    
206    2003-09-12  Jan-Oliver Wagner <[email protected]>
207    
208            * Examples/simple_extensions/simple_tool.py: bugfix: Tool is now
209            in viewport, not anymore in view
210    
211    2003-09-04  Jan-Oliver Wagner <[email protected]>
212    
213            Introducing first Extension (gns2shp).
214    
215            * Extensions, Extensions/gns2shp, Extensions/gns2shp/test: New.
216    
217            * Extensions/__init__.py: New. init to make this dir a package.
218    
219            * Extensions/gns2shp/__init__.py: New. init to make this dir a package.
220    
221            * Extensions/gns2shp/test/README: New. some info on this test directory.
222    
223            * Extensions/gns2shp/test/ls.txt: New. test data set (Liechtenstein).
224    
225            * Extensions/gns2shp/test/test_gns2shp.py: New. Test for correct creation
226            of Shapefile from GNS text file format
227    
228    2003-09-03  Jan-Oliver Wagner <[email protected]>
229    
230            Fix/workaround for bug #2019:
231            https://intevation.de/rt/webrt?serial_num=2019
232    
233            * Thuban/UI/identifyview.py (IdentifyView.ID_STOP): New.
234            (IdentifyView.__init__): Added another button that allows to
235            stop the identify mode.
236            (IdentifyView.OnStop): New. Stops the identify mode.
237    
238    2003-09-03  Jan-Oliver Wagner <[email protected]>
239    
240            Introducing a new exception dialog that allows to exit the
241            application immediately.
242            This fixes bug #2060: https://intevation.de/rt/webrt?serial_num=2060
243    
244            * Thuban/UI/exceptiondialog.py: New. A special exception dialog.
245    
246            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
247            Made strings available to translations. Exchanged the simple
248            ScrolledMessageDialog by the new ExceptionDialog.
249    
250    2003-09-01  Bernhard Herzog  <[email protected]>
251    
252            * NEWS: New. Summary of changes and release notes.
253    
254            * MANIFEST.in: Add NEWS
255    
256    2003-09-01  Bernhard Herzog  <[email protected]>
257    
258            * MANIFEST.in: Correct the include statement for the mo-files and
259            include the documentation too.
260    
261            * setup.py (data_files): Add the .mo files
262            (setup call): Up to version 0.9.0
263    
264    2003-09-01  Bernhard Herzog  <[email protected]>
265    
266            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Change the
267            parameter list to just parent and session
268            (ChooseDBTableDialog.__set_properties): Removed. Setting the
269            selection of empty list boxes is not allowed (and produces C++
270            assertion errors) and the rest of the setup is better done in
271            __init__ anyway.
272            (ChooseDBTableDialog.OnCancel, ChooseDBTableDialog.OnOK)
273            (ChooseDBTableDialog.OnLBDClick, DBDialog.OnOK): Use the Python
274            builtins True/False for booleans to avoid warnings from wxPython
275    
276            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Adapt to new
277            ChooseDBTableDialog constructor parameters.
278    
279    2003-09-01  Bernhard Herzog  <[email protected]>
280    
281            * Thuban/Model/postgisdb.py
282            (PostGISTable): Extend doc-string
283            (PostGISTable._fetch_table_information): Set the column index
284            correctly, pretending ignored columns don't exist.
285    
286            * test/test_postgis_db.py (TestPostGISIgnoredColumns): New tests
287            for postgis tables with data types not yet supported by thuban.
288    
289    2003-08-29  Bernhard Herzog  <[email protected]>
290    
291            * HOWTO-Release: Tweak item about running the tests.
292    
293    2003-08-29  Jan-Oliver Wagner <[email protected]>
294    
295            * /Doc/manual/thuban-manual.xml: updated to version 1.0pre2.
296    
297    2003-08-29  Bernhard Herzog  <[email protected]>
298    
299            Add some missing parameters to projections. Proj complains about
300            them on windows but for some reason not on Linux.
301    
302            * test/test_save.py (SaveSessionTest.testLayerProjection): Add
303            missing required projection parameters
304    
305            * test/test_proj.py (TestProjFile.test): Add missing required
306            projection parameters
307    
308            * test/test_load_0_8.py (TestLayerProjection.file_contents)
309            (TestLayerProjection.test): Add missing required projection
310            parameters and tests for them
311    
312            * test/test_load.py (TestLayerProjection.file_contents)
313            (TestLayerProjection.test): Add missing required projection
314            parameters and tests for them
315    
316            * test/test_layer.py (TestLayer.test_base_layer): Add missing
317            required projection parameters
318    
319    2003-08-29  Bernhard Herzog  <[email protected]>
320    
321            * libraries/pyprojection/Projection.i: Use pj_get_errno_ref to
322            access the pj_errno because directly accessing pj_errno doesn't
323            work on windows if the proj library is in a DLL
324    
325            * libraries/pyprojection/Projection_wrap.c: Update from Projection.i
326    
327    2003-08-28  Bernhard Herzog  <[email protected]>
328    
329            * test/test_proj.py: Import things from Thuban after calling
330            initthuban
331    
332            * test/test_load.py (LoadSessionTest.filenames): New class
333            variable with the filename attributes to normalize
334            (LoadSessionTest.check_format): Pass self.filenames to
335            sax_eventlist to normalize the filename attributes
336    
337            * test/xmlsupport.py: Add cvs keywords
338            (SaxEventLister.__init__): New parameter filenames which indicates
339            attributes that contain filenames
340            (SaxEventLister.startElementNS): Normalize the filename attributes
341            with os.path.normpath
342            (sax_eventlist): New parameter filenames to pass through to
343            SaxEventLister
344    
345            * test/test_derivedshapestore.py: Make this file callable as a
346            program to execute the tests
347            (TestDerivedShapeStoreExceptions.test_table_with_wrong_size): Bind
348            the session to self.session so that it gets destroyed properly
349    
350            * test/test_layer.py (TestLayer.tearDown): Call the session's
351            Destroy method
352    
353            * test/test_map.py (TestMapBase.tearDown): Destroy self.session
354            too if it exists
355            (TestMapAddLayer.test_add_layer): Bind the session to self.session
356            so that it gets destroyed properly
357    
358            * test/postgissupport.py (reason_for_not_running_tests): Add a
359            test for the existence of popen2.Popen4.
360    
361            * test/test_save.py (SaveSessionTest.tearDown): New. Provide a
362            reliable way to destroy the sessions created in the test cases
363            (SaveSessionTest.test_dbf_table): Bind the session to self.session
364            so that it gets destroyed properly
365            (SaveSessionTest.testLayerProjection): Bind the session to
366            self.session so that it gets destroyed properly
367    
368            * test/test_session.py (UnreferencedTablesTests.tearDown): Make
369            sure that the session is destroyed properly
370    
371            * test/test_shapefilestore.py: Make this callable as a program to
372            execute the tests
373    
374            * test/test_scalebar.py: Remove unnecessary import of _ from
375            Thuban
376    
377            * test/support.py (print_garbage_information): Call initthuban
378            here because it may be called indirectly from test cases that test
379            test support modules which do not use anything from thuban itself
380            (ThubanTestProgram.runTests): Remove unnecessary debug print
381    
382    2003-08-28  Bernhard Herzog  <[email protected]>
383    
384            * Thuban/version.py (longversion): Update to 0.9
385    
386            * Thuban/UI/mainwindow.py: Remove some unused imports
387    
388            * README: Add section about required additional software. Add date
389            and revision CVS keywords
390    
391            * HOWTO-Release: Add item about the translations. Add date and
392            revision CVs keywords and change formatting to match README a bit
393            better
394    
395            * po/de.po: Update for 0.9
396    
397            * test/README: Tweak the wording a little because many tests are
398            not really unittest.
399    
400    2003-08-27  Bernhard Herzog  <[email protected]>
401    
402            As preparation for the 0.9 release, switch thuban files to a
403            non-dev namespace
404    
405            * Thuban/Model/save.py (SessionSaver.write_session): Write files
406            with the http://thuban.intevation.org/dtds/thuban-0.9.dtd
407            namespace
408    
409            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
410            http://thuban.intevation.org/dtds/thuban-0.9.dtd namespace too
411    
412            * test/test_save.py (SaveSessionTest.dtd)
413            (SaveSessionTest.testEmptySession)
414            (SaveSessionTest.testSingleLayer)
415            (SaveSessionTest.testLayerProjection)
416            (SaveSessionTest.testRasterLayer)
417            (SaveSessionTest.testClassifiedLayer)
418            (SaveSessionTest.test_dbf_table)
419            (SaveSessionTest.test_joined_table)
420            (SaveSessionTest.test_save_postgis): Update for new namespace
421    
422            * test/test_load.py (LoadSessionTest.dtd, TestSingleLayer)
423            (TestLayerVisibility.file_contents, TestLabels.file_contents)
424            (TestLayerProjection.file_contents)
425            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
426            (TestPostGISLayer.file_contents)
427            (TestPostGISLayerPassword.file_contents)
428            (TestLoadError.file_contents, TestLoadError.test): Update for new
429            namespace
430    
431    2003-08-27  Bernhard Herzog  <[email protected]>
432    
433            Make the table interface distinguish between row ids (an integer
434            that uniquely identifies a row) and row ordinals (a simple row
435            count from 0 to NumRows() - 1)
436    
437            * Thuban/Model/postgisdb.py (PostGISTable.RowIdToOrdinal)
438            (PostGISTable.RowOrdinalToId): New methods to conver between row
439            ids and row ordinals
440            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue): New keyword
441            parameter row_is_ordinal to indicate whether the row parameter is
442            the row id or the ordinal
443    
444            * Thuban/Model/transientdb.py (TransientTableBase.RowIdToOrdinal)
445            (TransientTableBase.RowOrdinalToId)
446            (AutoTransientTable.RowIdToOrdinal)
447            (AutoTransientTable.RowOrdinalToId): Same new methods as in
448            PostGISTable.
449            (TransientTableBase.ReadRowAsDict, TransientTableBase.ReadValue)
450            (AutoTransientTable.ReadRowAsDict, AutoTransientTable.ReadValue):
451            Same new parameter as in PostGISTable.
452    
453            * Thuban/Model/table.py (DBFTable.RowIdToOrdinal)
454            (DBFTable.RowOrdinalToId, MemoryTable.RowIdToOrdinal)
455            (MemoryTable.RowOrdinalToId): Same new methods as in PostGISTable.
456            (DBFTable.ReadValue, DBFTable.ReadRowAsDict)
457            (MemoryTable.ReadValue, MemoryTable.ReadRowAsDict): Same new
458            parameter as in PostGISTable.
459    
460            * Thuban/UI/tableview.py (DataTable.RowIdToOrdinal)
461            (DataTable.RowOrdinalToId): New methods to convert between row ids
462            and row ordinals.
463            (TableGrid.SelectRowById): New method to select a row based on its
464            ID as opposed to its ordinal
465            (DataTable.GetValue, TableGrid.OnRangeSelect)
466            (TableGrid.OnSelectCell, LayerTableGrid.select_shapes)
467            (QueryTableFrame.OnQuery, QueryTableFrame.get_selected)
468            (LayerTableFrame.__init__): Convert between row ids and row
469            ordinals as appropriate
470    
471            * test/postgissupport.py (PostGISDatabase.__init__): Add
472            doc-string.
473            (PostGISDatabase.initdb): The optional third item in a tuple in
474            tables is now a (key, value) list with additional arguments to
475            pass to upload_shapefile
476            (upload_shapefile): New parameter gid_offset to allow gids that
477            are not the same as the shapeids in the shapefile
478            (PostgreSQLServer.get_default_static_data_db): Use the new
479            gid_offset to make the gids in landmarks 1000 higher than the
480            shapeids in the shapefile
481    
482            * test/test_viewport.py
483            (TestViewportWithPostGIS.test_find_shape_at_point): Adapt to the
484            new shapeids in the landmarks table
485    
486            * test/test_transientdb.py
487            (TestTransientTable.run_iceland_political_tests)
488            (TestTransientTable.test_transient_joined_table): Add tests for
489            the new table methods and new keywords arguments.
490    
491            * test/test_postgis_db.py
492            (TestPostGISTable.test_read_row_as_dict_row_count_mode)
493            (TestPostGISTable.test_read_value_row_count_mode)
494            (TestPostGISTable.test_row_id_to_ordinal)
495            (TestPostGISTable.test_row_oridnal_to_id): New test for the new
496            table methods and the new arguments
497            (TestPostGISShapestorePoint.test_shapes_in_region)
498            (TestPostGISShapestorePoint.test_shape_raw_data)
499            (TestPostGISShapestorePoint.test_shape_points)
500            (TestPostGISShapestorePoint.test_shape_shapeid)
501            (TestPostGISShapestorePoint.test_all_shapes)
502            (TestPostGISTable.test_simple_query)
503            (TestPostGISTable.test_simple_query)
504            (TestPostGISTable.test_simple_query)
505            (TestPostGISTable.test_read_value)
506            (TestPostGISTable.test_read_row_as_dict): Adapt to the new
507            shapeids in the landmarks table
508    
509            * test/test_memory_table.py
510            (TestMemoryTable.test_read_row_as_dict_row_count_mode)
511            (TestMemoryTable.test_read_value_row_count_mode)
512            (TestMemoryTable.test_row_id_to_ordinal)
513            (TestMemoryTable.test_row_oridnal_to_id): New test for the new
514            table methods and the new arguments
515    
516            * test/test_dbf_table.py
517            (TestDBFTable.test_read_row_as_dict_row_count_mode)
518            (TestDBFTable.test_read_value_row_count_mode)
519            (TestDBFTable.test_row_id_to_ordinal)
520            (TestDBFTable.test_row_oridnal_to_id): New test for the new table
521            methods and the new arguments
522    
523    2003-08-26  Bernhard Herzog  <[email protected]>
524    
525            * Thuban/Model/postgisdb.py (PostGISShapeStore.BoundingBox): Use a
526            more postgis specific but much faster method to get the bounding
527            box
528    
529    2003-08-26  Bernhard Herzog  <[email protected]>
530    
531            * Thuban/Model/postgisdb.py (PostGISTable.Title)
532            (PostGISShapeStore.AllShapes): Add these missing methods.
533            (PostGISShapeStore.ShapesInRegion): No need to raise
534            StopIteration. We can simply return
535    
536            * test/test_postgis_db.py (TestPostGISTable.test_title)
537            (TestPostGISShapestorePoint.test_all_shapes): New tests for the
538            new methods
539    
540    2003-08-25  Bernhard Herzog  <[email protected]>
541    
542            * Thuban/Model/postgisdb.py (shapetype_map): Add MUTLIPOLYGON.
543    
544            * test/test_postgis_db.py (PolygonTests): New class containing
545            those tests from TestPostGISShapestorePolygon that can also be
546            used to test MUTLIPOLYGON tables
547            (TestPostGISShapestorePolygon): Most tests are now in PolygonTests
548            so derive from that
549            (TestPostGISShapestoreMultiPolygon): New class with tests for
550            MUTLIPOLYGON tables
551    
552            * test/postgissupport.py (PostGISDatabase.initdb): Allow the
553            tables argument to have tuples with three items to override the
554            WKT type used.
555            (PostgreSQLServer.get_default_static_data_db): Use the above to
556            create a polygon table with MUTLIPOLYGONs
557            (point_to_wkt, coords_to_point, polygon_to_wkt, coords_to_polygon)
558            (arc_to_wkt, coords_to_multilinestring): Rename from *_to_wkt to
559            coords_to*
560            (coords_to_multipolygon): New. Convert to MUTLIPOLYGON
561            (wkt_converter): New. Map WKT types to converters
562            (upload_shapefile): New parameter force_wkt_type to use a
563            different WKT type than the default
564    
565    2003-08-25  Bernhard Herzog  <[email protected]>
566    
567            * Thuban/UI/application.py
568            (ThubanApplication.run_db_param_dialog): New. Suitable as a
569            db_connection_callback. Main difference is that the dialog run
570            from this method doesn't have a parent so it can be used even when
571            there is no main window
572            (ThubanApplication.OpenSession): Use self.run_db_param_dialog if
573            no db_connection_callback was given. This way the dialog pops up
574            even when the .thuban file was given as a command line parameter.
575    
576    2003-08-25  Bernhard Herzog  <[email protected]>
577    
578            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Release the the mouse
579            before calling MouseLeftUp. MouseLeftUp may pop up modal dialogs
580            which leads to an effectively frozen X session because the user
581            can only interact with the dialog but the mouse is still grabbed
582            by the canvas.
583            Also, call the tool's Hide method before MouseLeftUp because
584            MouseLeftUp may change the tool's coordinates.
585    
586    2003-08-25  Bernhard Herzog  <[email protected]>
587    
588            * Thuban/UI/application.py (ThubanApplication.OpenSession): Catch
589            LoadCancelled exceptions and handle them by returning immediately.
590    
591    2003-08-25  Bernhard Herzog  <[email protected]>
592    
593            GUI part of loading sessions with postgis connections which may
594            require user interaction to get passwords or updated parameters
595    
596            * Thuban/UI/dbdialog.py (DBDialog): Reimplement to make it look a
597            bit nucer and be more generic.
598            (DBFrame.OnAdd): Adapt to new DBDialog interface
599    
600            * Thuban/UI/application.py (ThubanApplication.OpenSession): New
601            optional parameter db_connection_callback which is passed to
602            load_session.
603    
604            * Thuban/UI/mainwindow.py (MainWindow.run_db_param_dialog): New.
605            Suitable as a db_connection_callback
606            (MainWindow.OpenSession): Use self.run_db_param_dialog as the
607            db_connection_callback of the application's OpenSession method
608    
609    
610    2003-08-25  Bernhard Herzog  <[email protected]>
611    
612            Basic loading of sessions containing postgis connections:
613    
614            * Thuban/Model/load.py (LoadError): Add doc-string
615            (LoadCancelled): New exception class to indicate a cancelled load
616            (SessionLoader.__init__): Add the db_connection_callback parameter
617            which will be used by the loader to get updated parameters and a
618            password for a database connection
619            (SessionLoader.__init__): Add the new XML elements to the
620            dispatchers dictionary
621            (SessionLoader.check_attrs): Two new conversions, ascii to convert
622            to a byte-string object and idref as a generic id reference
623            (SessionLoader.start_dbconnection)
624            (SessionLoader.start_dbshapesource): New. Handlers for the new XML
625            elements
626            (load_session): Add the db_connection_callback to pass through the
627            SessionLoader
628    
629            * test/test_load.py (TestPostGISLayer, TestPostGISLayerPassword):
630            New classes to test loading of sessions with postgis database
631            connections.
632    
633    2003-08-25  Bernhard Herzog  <[email protected]>
634    
635            * Thuban/UI/mainwindow.py (__ThubanVersion__): Remove this and
636            replace it and the comment with __BuildDate__ by the Source: and
637            Id: cvs keywords as used in the other files.
638    
639    2003-08-25  Bernhard Herzog  <[email protected]>
640    
641            * Thuban/Model/load.py (SessionLoader.check_attrs): Raise a
642            LoadError when a required attribute is missing. The code used to
643            be commented out for some reason, but probably should have been
644            active.
645    
646            * test/test_load.py (TestLoadError.test): Test the message in the
647            LoadError too to make sure it really is about the missing
648            attribute
649    
650    2003-08-22  Bernhard Herzog  <[email protected]>
651    
652            * test/test_save.py (SaveSessionTest.test_dbf_table)
653            (SaveSessionTest.test_joined_table): Add XML validation tests.
654    
655    2003-08-22  Bernhard Herzog  <[email protected]>
656    
657            Implement saving a session with a postgis connection
658    
659            * Resources/XML/thuban-0.9.dtd (dbconnection, dbshapesource) New
660            elements for database connections and shapestores using db
661            connections
662            (session): Add the dbconnections to the content model
663    
664            * Thuban/Model/save.py (SessionSaver.write_db_connections): New.
665            Write the db connections
666            (SessionSaver.write_session): Call write_db_connections to write
667            the connection before the data sources
668            (SessionSaver.write_data_containers): Handle postgis shapestores
669    
670            * test/test_save.py (SaveSessionTest.thubanids)
671            (SaveSessionTest.thubanidrefs): Update for new DTD
672            (SaveSessionTest.test_save_postgis): New. Test saving a session
673            with postgis connections
674    
675            * Thuban/Model/postgisdb.py (PostGISTable.DBConnection)
676            (PostGISTable.TableName): New accessor methods for the connection
677            and table name
678    
679            * test/test_postgis_db.py (TestPostGISTable.test_dbconn)
680            (TestPostGISTable.test_dbname): New methods to test the new
681            PostGISConnection methods
682    
683    2003-08-22  Bernhard Herzog  <[email protected]>
684    
685            * Thuban/Model/postgisdb.py (ConnectionError): New exception class
686            for exceptions occurring when establishing a Database connection
687            (PostGISConnection.connect): Catch psycopg.OperationalError during
688            connects and raise ConnectionError.
689    
690            * test/test_postgis_db.py (TestPostgisDBExceptions): New class for
691            tests for database exceptions
692    
693    2003-08-22  Bernhard Herzog  <[email protected]>
694    
695            Prepare the test suite for tests with required authentication
696    
697            * test/postgissupport.py (PostgreSQLServer.__init__): Add instance
698            variables with two predefined users/passwords, one for the admin
699            and one for a non-privileged user.
700            (PostgreSQLServer.createdb): Pass the admin name to initdb and add
701            the non-privileged user to the database and set the admin password
702            (PostgreSQLServer.wait_for_postmaster): Use the admin user name.
703            Better error reporting
704            (PostgreSQLServer.connection_params)
705            (PostgreSQLServer.connection_string): New methods to return
706            information about how to connect to the server
707            (PostgreSQLServer.execute_sql): New. Convenience method to execute
708            SQL statements
709            (PostgreSQLServer.require_authentication): Toggle whether the
710            server requires authentication
711            (PostgreSQLServer.create_user, PostgreSQLServer.alter_user): New.
712            Add or alter users
713            (PostGISDatabase.initdb): Pass the admin name one the
714            subprocesses' command lines. Grant select rights on
715            geometry_columns to everybody.
716            (upload_shapefile): Use the admin name and password when
717            connecting. Grant select rights on the new table to everybody.
718    
719            * test/test_viewport.py (TestViewportWithPostGIS.setUp): Use the
720            server's new methods to get the connection parameters.
721    
722            * test/test_postgis_session.py (TestSessionWithPostGIS.setUp)
723            (TestSessionWithPostGIS.test_remove_dbconn_exception): Use the
724            server's new methods to get the connection parameters.
725    
726            * test/test_postgis_db.py
727            (TestPostGISConnection.test_gis_tables_empty)
728            (TestPostGISConnection.test_gis_tables_non_empty)
729            (PostGISStaticTests.setUp): Use the server's new methods to get
730            the connection parameters.
731    
732    2003-08-22  Bernhard Herzog  <[email protected]>
733    
734            * Thuban/UI/about.py (About.__init__): Add the psycopg version.
735    
736            * Thuban/version.py: Add psycopg version
737    
738            * Thuban/Model/postgisdb.py (psycopg_version): New. Return the
739            version of the psycopg module
740    
741    2003-08-22  Bernhard Herzog  <[email protected]>
742    
743            * Thuban/UI/dbdialog.py (DBPwdDlg): Removed because it's not used.
744            (DBFrame.OnEdit): Removed because it's not used and wouldn't work
745            at the moment. The functionality should probably be implemented
746            some time, though.
747            (DBFrame.OnRemove): Display a message if the connection can't be
748            removed because it's still in use.
749    
750    2003-08-22  Jan-Oliver Wagner <[email protected]>
751    
752            * Thuban/UI/about.py (About.__init__): split up the huge about
753            text into elements/lists for easier translation. This fixes bug
754            https://intevation.de/rt/webrt?serial_num=2058
755            Also, made some forgotten string available for the i18n.
756    
757    2003-08-21  Bernhard Herzog  <[email protected]>
758    
759            Make postgis support really optional including insensitive menu
760            items.
761    
762            * Thuban/Model/postgisdb.py (has_postgis_support): New. Return
763            whether the postgis is supported.
764    
765            * Thuban/UI/dbdialog.py: Put the psycopg import into try..except
766            to make postgis support optional
767    
768            * Thuban/UI/mainwindow.py (_has_postgis_support): New. Context
769            version of Thuban.Model.postgisdb.has_postgis_support
770            (database_management command): Make it only sensitive if postgis
771            is supported.
772    
773    2003-08-21  Jan-Oliver Wagner <[email protected]>
774    
775            * Doc/manual/thuban-manual.xml: Added CVS revision for rev-history.
776            (section Adding and Removing Layers): Added text and described
777            multi-selection.
778            (chapter Extensions): New.
779    
780    2003-08-21  Jan-Oliver Wagner <[email protected]>
781    
782            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Changed dialog
783            settings to allow multiple files to load into the map.
784            Also reduced selection to *.shp as a default.
785    
786    2003-08-20  Bernhard Herzog  <[email protected]>
787    
788            Add dialogs and commands to open database connections and add
789            database layers.
790    
791            * Thuban/UI/mainwindow.py (MainWindow.DatabaseManagement): New
792            method to open the database connection management dialog
793            (MainWindow.AddDBLayer): New method to add a layer from a database
794            (_has_dbconnections): New helper function to use for sensitivity
795            (database_management command, layer_add_db command): New commands
796            that call the above new methods.
797            (main_menu): Add the new commands to the menu.
798    
799            * Thuban/Model/postgisdb.py (PostGISConnection.__init__)
800            (PostGISConnection.connect): Establish the actual connection in a
801            separate method and call it in __init__. This makes it easier to
802            override the behavior in test cases
803            (PostGISConnection.BriefDescription): New method to return a brief
804            description for use in dialogs.
805    
806            * test/test_postgis_db.py (NonConnection): DB connection that
807            doesn't actually connect
808            (TestBriefDescription): New class with tests for the new
809            BriefDescription method
810    
811    2003-08-19  Jan-Oliver Wagner <[email protected]>
812    
813            Moved anything from extensions to libraries.
814    
815            * libraries: New.
816    
817            * libraries/ pyprojection, pyshapelib, shapelib, thuban: New.
818    
819            * libraries/pyprojection/ LICENSE, MANIFEST.in, Projection.i,
820            Projection.py, Projection_wrap.c, setup.py, swighelp.txt: These files have
821            been moved here from thuban/extensions/pyprojection/
822            See there in the Attic for the older history.
823    
824            * libraries/pyshapelib/ COPYING, ChangeLog, NEWS, README, dbflib.i,
825            dbflib.py, dbflib_wrap.c, pyshapelib_api.h, pytest.py, setup.py,
826            shapelib.i, shapelib.py, shapelib_wrap.c, shptreemodule.c: These files
827            have been moved here from thuban/extensions/pyshapelib/
828            See there in the Attic for the older history.
829    
830            * libraries/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c: These
831            files have been moved here from thuban/extensions/shapelib/
832            See there in the Attic for the older history.
833    
834            * libraries/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
835            gdalwarp.cpp, wxproj.cpp: These files have been moved here from
836            thuban/extensions/thuban/
837            See there in the Attic for the older history.
838    
839            * MANIFEST.in, setup.cfg, setup.py: renamed extensions to libraries.
840    
841            * extensions/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
842            gdalwarp.cpp, wxproj.cpp: Moved to libraries/thuban.
843    
844            * extensions/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c:
845            Moved to libraries/shapelib.
846    
847            * extensions/pyshapelib/ COPYING, NEWS, dbflib.py, pytest.py,
848            shapelib.py, README, dbflib_wrap.c, setup.py, shapelib_wrap.c,
849            ChangeLog, dbflib.i, pyshapelib_api.h, shapelib.i, shptreemodule.c:
850            Moved to libraries/pyshapelib.
851    
852            * extensions/pyprojection/ MANIFEST.in, Projection.py, setup.py,
853            LICENSE, Projection.i, Projection_wrap.c, swighelp.txt:
854            Moved to libraries/pyprojection.
855    
856            * extensions/ pyprojection, pyshapelib, shapelib, thuban: Removed.
857    
858            * extensions: Removed.
859    
860    2003-08-19  Bernhard Herzog  <[email protected]>
861    
862            * test/test_viewport.py (ViewPortTest): We don't use the
863            facilities of FileTestMixin so don't derive from it.
864            (TestViewportWithPostGIS): New class with tests for using a
865            viewport on a map with postgis layers.
866    
867    2003-08-19  Bernhard Herzog  <[email protected]>
868    
869            Add the db connection management to the session.
870    
871            * Thuban/Model/session.py (Session.__init__): New instance
872            variable db_connections
873            (Session.AddDBConnection, Session.DBConnections)
874            (Session.HasDBConnections, Session.CanRemoveDBConnection)
875            (Session.RemoveDBConnection): New methods to manage and query the
876            db connections managed by the session
877            (Session.OpenDBShapeStore): New method to open a shapestore from a
878            db connection
879    
880            * Thuban/Model/messages.py (DBCONN_REMOVED, DBCONN_ADDED): New
881            messages for the db connection handling in the session
882    
883            * test/test_postgis_session.py: New. test cases for the session's
884            db connection handling with postgis connections
885    
886    2003-08-19  Bernhard Herzog  <[email protected]>
887    
888            Add very basic postgis database support and the corresponding test
889            cases. The test cases require a PostgreSQL + postgis installation
890            but no existing database. The database will be created
891            automatically by the test cases
892    
893            * test/README: Add note about skipped tests and the requirements
894            of the postgis tests.
895    
896            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
897    
898            * test/test_postgis_db.py: New. Test cases for the postgis
899            support.
900    
901            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
902            format
903    
904            * test/test_wellknowntext.py: New. Test cases for the
905            wellknowntext parser
906    
907            * test/postgissupport.py: New. Support module for tests involving
908            a postgis database.
909    
910            * test/support.py (execute_as_testsuite): Shut down the postmaster
911            if it's still running after the tests
912    
913            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
914            well known text format
915    
916    2003-08-19  Jan-Oliver Wagner <[email protected]>
917    
918            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
919            message dialog.
920    
921    2003-08-18  Bernhard Herzog  <[email protected]>
922    
923            * test/support.py (ThubanTestResult.printErrors): Indent the
924            reason for the skips in the output to make it a bit more readable.
925            (execute_as_testsuite): New helper function to run a test suite
926            and print some more information.
927            (run_tests): Use execute_as_testsuite to run the tests
928    
929            * test/runtests.py (main): Use execute_as_testsuite to run the
930            tests
931    
932    2003-08-18  Bernhard Herzog  <[email protected]>
933    
934            Fix some bugs in Thuban and the test suite that were uncovered by
935            changes introduced in Python 2.3:
936    
937            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
938            filename is an absolute name
939    
940            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
941            filename is an absolute name
942    
943            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
944            unique filename to save to and use the correct relative filename
945            in the expected output.
946            (SaveSessionTest.test_dbf_table): Use the correct relative
947            filename in the expected output.
948    
949            * test/test_layer.py (TestLayer.test_raster_layer): Update the
950            test to check whether the filename is absolute.
951    
952    2003-08-18  Jan-Oliver Wagner <[email protected]>
953    
954            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
955    
956    2003-08-15  Bernhard Herzog  <[email protected]>
957    
958            Change the way shapes are returned by a shape store. The
959            ShapesInRegion method returns an iterator over actual shape
960            objects instead of a list of shape ids.
961    
962            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
963            id.
964            (ShapefileStore.ShapesInRegion): Return an iterator over the
965            shapes which yields shape objects instead of returning a list of
966            shape ids
967            (ShapefileStore.AllShapes): New. Return an iterator over all
968            shapes in the shape store
969            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
970    
971            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
972            doc-string.
973    
974            * Thuban/UI/baserenderer.py
975            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
976            layer_shapes and make it return an iterator containg shapes
977            instead of a list of ids.
978            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
979            layer_shapes() change
980    
981            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
982            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
983    
984            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
985            changes in the ShapesInRegion return value.
986            (ViewPort._get_hit_tester): Remove commented out code
987    
988            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
989            new return value.
990            (SimpleShapeStore.AllShapes): New. Implement this method too.
991    
992            * test/test_layer.py (TestLayer.test_arc_layer)
993            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
994            (TestLayer.test_point_layer_with_projection)
995            (TestLayer.test_derived_store): Adapt to changes in the
996            ShapesInRegion return value.
997    
998            * test/test_shapefilestore.py
999            (TestShapefileStoreArc.test_shapes_in_region)
1000            (TestShapefileStorePolygon.test_shapes_in_region)
1001            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
1002            in the ShapesInRegion return value.
1003            (TestShapefileStorePoint.test_all_shapes)
1004            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
1005            methods
1006    
1007            * test/test_derivedshapestore.py
1008            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
1009            the ShapesInRegion return value.
1010            (TestDerivedShapeStore.test_all_shapes)
1011            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
1012            methods
1013    
1014    2003-08-15  Bernhard Herzog  <[email protected]>
1015    
1016            Make the renderers deal correctly with raw vs. python level
1017            representation of shape geometries
1018    
1019            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
1020            Return a flag useraw in addition to the callable and the parameter
1021            to indicate whether the callable can deal with the raw shape data
1022            or uses the higher level python lists of coordinates. The callable
1023            now should accept either the raw data or the return value of the
1024            shape's Points() method.
1025            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
1026            change
1027            (BaseRenderer.projected_points): Instead of the shape id use the
1028            points list as parameter.
1029            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
1030            (BaseRenderer.draw_point_shape): Adapt to projected_points()
1031            change and accept the points list as parameter instead of the
1032            shape id.
1033    
1034            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
1035            the useraw flag as required by the BaseRenderer
1036            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
1037            changes.
1038    
1039            * test/test_baserenderer.py
1040            (TestBaseRenderer.test_point_with_classification): New test for
1041            rendering a map with classifications.
1042    
1043    2003-08-15  Bernhard Herzog  <[email protected]>
1044    
1045            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
1046            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
1047            (ViewPort._get_hit_tester, ViewPort.projected_points)
1048            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
1049            (ViewPort._find_label_at): Split the find_shape_at method into
1050            several new methods and use the functions in the hit-test module.
1051    
1052            * Thuban/UI/hittest.py: New module with Python-level hit-testing
1053            functions
1054    
1055            * test/test_hittest.py: New. Test for the new hittest module
1056    
1057    2003-08-15  Bernhard Herzog  <[email protected]>
1058    
1059            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
1060            projection to all corners of the bounding box to get a better
1061            approximation of the projected bounding box
1062    
1063            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
1064            New. Test coordinate handling of a layer with a projection.
1065            Catches the bug fixed in Layer.ShapesInRegion
1066    
1067    2003-08-15  Bernhard Herzog  <[email protected]>
1068    
1069            Move some of the mock objects in test_baserenderer into their own
1070            module so they can easily be used from other tests
1071    
1072            * test/mockgeo.py: New test helper module with some mock objects
1073            for geometry related things like shapes, shapestores and
1074            projections.
1075    
1076            * test/test_mockgeo.py: New. Tests for the new helper module
1077    
1078            * test/test_baserenderer.py: Some of the mock-objects are in
1079            mockgeo now.
1080    
1081    2003-08-12  Jan-Oliver Wagner <[email protected]>
1082    
1083            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
1084    
1085  2003-08-12  Bernhard Herzog  <[email protected]>  2003-08-12  Bernhard Herzog  <[email protected]>
1086    
1087          * po/de.po: New. German translations by Bjoern Broscheit          * po/de.po: New. German translations by Bjoern Broscheit
# Line 421  Line 1505 
1505    
1506          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
1507          it annoys lintian which warns about these files not being          it annoys lintian which warns about these files not being
1508          executable. The #1 isn't necessary here since if you absolutely          executable. The #! isn't necessary here since if you absolutely
1509          must execute them you can always say "python <filename>".          must execute them you can always say "python <filename>".
1510    
1511          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26