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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26