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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26