/[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 1503 by jonathan, Tue Jul 29 13:50:58 2003 UTC revision 1775 by bh, Mon Oct 6 13:09:24 2003 UTC
# Line 1  Line 1 
1    2003-10-06  Bernhard Herzog  <[email protected]>
2    
3            * test/test_viewport.py (ViewPortTest.setUp)
4            (SimpleViewPortTest.test_init_with_size): Move the test for the
5            initial size as a constructor parameter from ViewPortTest.setUp
6            method to a new separate test in SimpleViewPortTest.
7    
8    2003-10-06  Bernhard Herzog  <[email protected]>
9    
10            * test/test_viewport.py (MockView): New class derived from
11            ViewPort with a mock implementation of GetTextExtent to be used in
12            the test cases
13            (ViewPortTest.setUp): Use MockView instead of ViewPort
14    
15            * Thuban/UI/viewport.py (ViewPort.GetTextExtent): Turn this method
16            into what would be a "pure virtual function" in C++: always raise
17            NotImplementedError. Mock implementations for test cases don't
18            belong into the real code
19    
20    2003-10-02  Bernhard Herzog  <[email protected]>
21    
22            * test/test_layer.py (TestLayer.test_empty_layer): Explicitly
23            close the dbf file we create so that it's contents have been
24            written properly.
25    
26            * libraries/shapelib/shptree.c, libraries/shapelib/shpopen.c,
27            libraries/shapelib/shapefil.h, libraries/shapelib/dbfopen.c:
28            Update to shapelib 1.2.10
29    
30    2003-10-01  Jan-Oliver Wagner <[email protected]>
31    
32            * Thuban/UI/tree.py, Thuban/UI/main.py: Remove the #! line as
33            it annoys lintian which warns about these files not being
34            executable. The #! isn't necessary here since if you absolutely
35            must execute them you can always say "python <filename>".
36    
37    2003-09-26  Bernhard Herzog  <[email protected]>
38    
39            * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's
40            only used in GREAT-ER but not used in Thuban itself. When GREAT-ER
41            is ported to a newer the import will fail, so it should be noticed
42            immediately that this function is gone.
43            Fixes RT#1919
44    
45    2003-09-26  Bernhard Herzog  <[email protected]>
46    
47            Add a DTD for the projection files and make thuban write valid
48            projection files
49    
50            * Resources/XML/projfile.dtd: New. DTD for thuban's projection
51            files
52    
53            * Thuban/Model/resource.py (ProjFileSaver.write): Use
54            'projectionlist' as the name in the document type declaration so
55            that it matches the element type of the root element.
56    
57            * test/test_proj.py (sample_projfile, sample_projfile2): Use
58            'projectionlist' as the name in the document type declaration just
59            as it is done now in the files thuban would write
60            (sample_projfile, sample_projfile_data): Fix spelling of
61            "Mercator"
62            (TestProjFile.doTestWrite): Validate the written and the expected
63            XML data
64            (TestProjFile): Derive from ValidationTest so that we can run xml
65            validation tests
66    
67    2003-09-24  Bernhard Herzog  <[email protected]>
68    
69            * Thuban/UI/renderer.py (ExportRenderer.render_legend): Do not
70            modify the list returned by map.Layers() in place since it is the
71            actual list of layers used by the map.
72    
73    2003-09-23  Jan-Oliver Wagner <[email protected]>
74    
75            * Doc/manual/thuban-manual.xml: Added subsection to chapter
76            Extensions to describe the extensions coming with the Thuban
77            standard package (gns2shp and importAPR).
78    
79    2003-09-23  Bernhard Herzog  <[email protected]>
80    
81            * libraries/thuban/wxproj.cpp (project_point): if there's an
82            inverse but no forward projection, convert to degrees after
83            applying the inverse projection. Fixes RT#2096
84    
85            * test/test_wxproj.py: New. Test cases for wxproj.so. One test
86            implicitly tests for the fix to RT#2096
87    
88            * test/support.py (FloatComparisonMixin.assertFloatSeqEqual):
89            Check that the sequences have the same lengths
90    
91            * Resources/Projections/defaults.proj (Geographic projection): Use
92            a much more precise value for the to_meter attribute.
93    
94    2003-09-22  Bernhard Herzog  <[email protected]>
95    
96            * test/support.py (initthuban): Make sure to unset the LANG env.
97            var. so that tests that compare translated strings work. Solves RT
98            #2094
99    
100    2003-09-22  Jan-Oliver Wagner <[email protected]>
101    
102            Small improvement of APR import.
103    
104            * Extensions/importAPR/test/test_apr.py (aprTest.test_LClass):
105            Added tests for text-ranges.
106    
107            * Extensions/importAPR/apr.py (APR_LClass.GetThubanRange): Now
108            returns a string object if the range is based on text.
109    
110            * Extensions/importAPR/importAPR.py (import_apr_dialog): Unified
111            range retrieval.
112    
113    2003-09-22  Jan-Oliver Wagner <[email protected]>
114    
115            Initial version of the importAPR extension which is in
116            experimental state.
117    
118            * /Extensions/importAPR/, /Extensions/importAPR/samples/,
119            /Extensions/importAPR/test/: New directories.
120    
121            * /Extensions/importAPR/samples/README: New: Howto load the samples.
122    
123            * /Extensions/importAPR/samples/iceland.apr: New: A sample APR
124            file which refers to the Thuban Iceland demo data.
125    
126            * /Extensions/importAPR/test/README: New: Howto execute the tests.
127    
128            * /Extensions/importAPR/test/test_apr.py: New: Tests for APR classes.
129    
130            * /Extensions/importAPR/apr.py: New: Classes for ArcView Objects
131            as in '.apr'-files.
132    
133            * /Extensions/importAPR/odb.py: New: Classes for generic ArcView
134            ODB Objects as in '.apr', '.avl' and other files.
135    
136            * /Extensions/importAPR/__init__.py: New: Init to make this
137            directory a package.
138    
139            * /Extensions/importAPR/importAPR.py: New: Import a ArcView
140            project file (.apr) and convert it to Thuban.
141    
142    2003-09-22  Jan-Oliver Wagner <[email protected]>
143    
144            * Extensions/gns2shp.gns2shp.py: The main module of gns2shp.
145    
146    2003-09-19  Jan-Oliver Wagner <[email protected]>
147    
148            * Doc/manual/thuban-manual.xml: Extended section 'Installation'
149            with description on RPM installation and RPM binary package
150            creation.
151    
152    2003-09-18  Bernhard Herzog  <[email protected]>
153    
154            * setup.py (data_files): Only add the mo files if the Locales
155            directory actually exists, so that setup.py works with a fresh CVS
156            checkout
157    
158    2003-09-12  Jan-Oliver Wagner <[email protected]>
159    
160            * Examples/simple_extensions/simple_tool.py: bugfix: Tool is now
161            in viewport, not anymore in view
162    
163    2003-09-04  Jan-Oliver Wagner <[email protected]>
164    
165            Introducing first Extension (gns2shp).
166    
167            * Extensions, Extensions/gns2shp, Extensions/gns2shp/test: New.
168    
169            * Extensions/__init__.py: New. init to make this dir a package.
170    
171            * Extensions/gns2shp/__init__.py: New. init to make this dir a package.
172    
173            * Extensions/gns2shp/test/README: New. some info on this test directory.
174    
175            * Extensions/gns2shp/test/ls.txt: New. test data set (Liechtenstein).
176    
177            * Extensions/gns2shp/test/test_gns2shp.py: New. Test for correct creation
178            of Shapefile from GNS text file format
179    
180    2003-09-03  Jan-Oliver Wagner <[email protected]>
181    
182            Fix/workaround for bug #2019:
183            https://intevation.de/rt/webrt?serial_num=2019
184    
185            * Thuban/UI/identifyview.py (IdentifyView.ID_STOP): New.
186            (IdentifyView.__init__): Added another button that allows to
187            stop the identify mode.
188            (IdentifyView.OnStop): New. Stops the identify mode.
189    
190    2003-09-03  Jan-Oliver Wagner <[email protected]>
191    
192            Introducing a new exception dialog that allows to exit the
193            application immediately.
194            This fixes bug #2060: https://intevation.de/rt/webrt?serial_num=2060
195    
196            * Thuban/UI/exceptiondialog.py: New. A special exception dialog.
197    
198            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
199            Made strings available to translations. Exchanged the simple
200            ScrolledMessageDialog by the new ExceptionDialog.
201    
202    2003-09-01  Bernhard Herzog  <[email protected]>
203    
204            * NEWS: New. Summary of changes and release notes.
205    
206            * MANIFEST.in: Add NEWS
207    
208    2003-09-01  Bernhard Herzog  <[email protected]>
209    
210            * MANIFEST.in: Correct the include statement for the mo-files and
211            include the documentation too.
212    
213            * setup.py (data_files): Add the .mo files
214            (setup call): Up to version 0.9.0
215    
216    2003-09-01  Bernhard Herzog  <[email protected]>
217    
218            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Change the
219            parameter list to just parent and session
220            (ChooseDBTableDialog.__set_properties): Removed. Setting the
221            selection of empty list boxes is not allowed (and produces C++
222            assertion errors) and the rest of the setup is better done in
223            __init__ anyway.
224            (ChooseDBTableDialog.OnCancel, ChooseDBTableDialog.OnOK)
225            (ChooseDBTableDialog.OnLBDClick, DBDialog.OnOK): Use the Python
226            builtins True/False for booleans to avoid warnings from wxPython
227    
228            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Adapt to new
229            ChooseDBTableDialog constructor parameters.
230    
231    2003-09-01  Bernhard Herzog  <[email protected]>
232    
233            * Thuban/Model/postgisdb.py
234            (PostGISTable): Extend doc-string
235            (PostGISTable._fetch_table_information): Set the column index
236            correctly, pretending ignored columns don't exist.
237    
238            * test/test_postgis_db.py (TestPostGISIgnoredColumns): New tests
239            for postgis tables with data types not yet supported by thuban.
240    
241    2003-08-29  Bernhard Herzog  <[email protected]>
242    
243            * HOWTO-Release: Tweak item about running the tests.
244    
245    2003-08-29  Jan-Oliver Wagner <[email protected]>
246    
247            * /Doc/manual/thuban-manual.xml: updated to version 1.0pre2.
248    
249    2003-08-29  Bernhard Herzog  <[email protected]>
250    
251            Add some missing parameters to projections. Proj complains about
252            them on windows but for some reason not on Linux.
253    
254            * test/test_save.py (SaveSessionTest.testLayerProjection): Add
255            missing required projection parameters
256    
257            * test/test_proj.py (TestProjFile.test): Add missing required
258            projection parameters
259    
260            * test/test_load_0_8.py (TestLayerProjection.file_contents)
261            (TestLayerProjection.test): Add missing required projection
262            parameters and tests for them
263    
264            * test/test_load.py (TestLayerProjection.file_contents)
265            (TestLayerProjection.test): Add missing required projection
266            parameters and tests for them
267    
268            * test/test_layer.py (TestLayer.test_base_layer): Add missing
269            required projection parameters
270    
271    2003-08-29  Bernhard Herzog  <[email protected]>
272    
273            * libraries/pyprojection/Projection.i: Use pj_get_errno_ref to
274            access the pj_errno because directly accessing pj_errno doesn't
275            work on windows if the proj library is in a DLL
276    
277            * libraries/pyprojection/Projection_wrap.c: Update from Projection.i
278    
279    2003-08-28  Bernhard Herzog  <[email protected]>
280    
281            * test/test_proj.py: Import things from Thuban after calling
282            initthuban
283    
284            * test/test_load.py (LoadSessionTest.filenames): New class
285            variable with the filename attributes to normalize
286            (LoadSessionTest.check_format): Pass self.filenames to
287            sax_eventlist to normalize the filename attributes
288    
289            * test/xmlsupport.py: Add cvs keywords
290            (SaxEventLister.__init__): New parameter filenames which indicates
291            attributes that contain filenames
292            (SaxEventLister.startElementNS): Normalize the filename attributes
293            with os.path.normpath
294            (sax_eventlist): New parameter filenames to pass through to
295            SaxEventLister
296    
297            * test/test_derivedshapestore.py: Make this file callable as a
298            program to execute the tests
299            (TestDerivedShapeStoreExceptions.test_table_with_wrong_size): Bind
300            the session to self.session so that it gets destroyed properly
301    
302            * test/test_layer.py (TestLayer.tearDown): Call the session's
303            Destroy method
304    
305            * test/test_map.py (TestMapBase.tearDown): Destroy self.session
306            too if it exists
307            (TestMapAddLayer.test_add_layer): Bind the session to self.session
308            so that it gets destroyed properly
309    
310            * test/postgissupport.py (reason_for_not_running_tests): Add a
311            test for the existence of popen2.Popen4.
312    
313            * test/test_save.py (SaveSessionTest.tearDown): New. Provide a
314            reliable way to destroy the sessions created in the test cases
315            (SaveSessionTest.test_dbf_table): Bind the session to self.session
316            so that it gets destroyed properly
317            (SaveSessionTest.testLayerProjection): Bind the session to
318            self.session so that it gets destroyed properly
319    
320            * test/test_session.py (UnreferencedTablesTests.tearDown): Make
321            sure that the session is destroyed properly
322    
323            * test/test_shapefilestore.py: Make this callable as a program to
324            execute the tests
325    
326            * test/test_scalebar.py: Remove unnecessary import of _ from
327            Thuban
328    
329            * test/support.py (print_garbage_information): Call initthuban
330            here because it may be called indirectly from test cases that test
331            test support modules which do not use anything from thuban itself
332            (ThubanTestProgram.runTests): Remove unnecessary debug print
333    
334    2003-08-28  Bernhard Herzog  <[email protected]>
335    
336            * Thuban/version.py (longversion): Update to 0.9
337    
338            * Thuban/UI/mainwindow.py: Remove some unused imports
339    
340            * README: Add section about required additional software. Add date
341            and revision CVS keywords
342    
343            * HOWTO-Release: Add item about the translations. Add date and
344            revision CVs keywords and change formatting to match README a bit
345            better
346    
347            * po/de.po: Update for 0.9
348    
349            * test/README: Tweak the wording a little because many tests are
350            not really unittest.
351    
352    2003-08-27  Bernhard Herzog  <[email protected]>
353    
354            As preparation for the 0.9 release, switch thuban files to a
355            non-dev namespace
356    
357            * Thuban/Model/save.py (SessionSaver.write_session): Write files
358            with the http://thuban.intevation.org/dtds/thuban-0.9.dtd
359            namespace
360    
361            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
362            http://thuban.intevation.org/dtds/thuban-0.9.dtd namespace too
363    
364            * test/test_save.py (SaveSessionTest.dtd)
365            (SaveSessionTest.testEmptySession)
366            (SaveSessionTest.testSingleLayer)
367            (SaveSessionTest.testLayerProjection)
368            (SaveSessionTest.testRasterLayer)
369            (SaveSessionTest.testClassifiedLayer)
370            (SaveSessionTest.test_dbf_table)
371            (SaveSessionTest.test_joined_table)
372            (SaveSessionTest.test_save_postgis): Update for new namespace
373    
374            * test/test_load.py (LoadSessionTest.dtd, TestSingleLayer)
375            (TestLayerVisibility.file_contents, TestLabels.file_contents)
376            (TestLayerProjection.file_contents)
377            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
378            (TestPostGISLayer.file_contents)
379            (TestPostGISLayerPassword.file_contents)
380            (TestLoadError.file_contents, TestLoadError.test): Update for new
381            namespace
382    
383    2003-08-27  Bernhard Herzog  <[email protected]>
384    
385            Make the table interface distinguish between row ids (an integer
386            that uniquely identifies a row) and row ordinals (a simple row
387            count from 0 to NumRows() - 1)
388    
389            * Thuban/Model/postgisdb.py (PostGISTable.RowIdToOrdinal)
390            (PostGISTable.RowOrdinalToId): New methods to conver between row
391            ids and row ordinals
392            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue): New keyword
393            parameter row_is_ordinal to indicate whether the row parameter is
394            the row id or the ordinal
395    
396            * Thuban/Model/transientdb.py (TransientTableBase.RowIdToOrdinal)
397            (TransientTableBase.RowOrdinalToId)
398            (AutoTransientTable.RowIdToOrdinal)
399            (AutoTransientTable.RowOrdinalToId): Same new methods as in
400            PostGISTable.
401            (TransientTableBase.ReadRowAsDict, TransientTableBase.ReadValue)
402            (AutoTransientTable.ReadRowAsDict, AutoTransientTable.ReadValue):
403            Same new parameter as in PostGISTable.
404    
405            * Thuban/Model/table.py (DBFTable.RowIdToOrdinal)
406            (DBFTable.RowOrdinalToId, MemoryTable.RowIdToOrdinal)
407            (MemoryTable.RowOrdinalToId): Same new methods as in PostGISTable.
408            (DBFTable.ReadValue, DBFTable.ReadRowAsDict)
409            (MemoryTable.ReadValue, MemoryTable.ReadRowAsDict): Same new
410            parameter as in PostGISTable.
411    
412            * Thuban/UI/tableview.py (DataTable.RowIdToOrdinal)
413            (DataTable.RowOrdinalToId): New methods to convert between row ids
414            and row ordinals.
415            (TableGrid.SelectRowById): New method to select a row based on its
416            ID as opposed to its ordinal
417            (DataTable.GetValue, TableGrid.OnRangeSelect)
418            (TableGrid.OnSelectCell, LayerTableGrid.select_shapes)
419            (QueryTableFrame.OnQuery, QueryTableFrame.get_selected)
420            (LayerTableFrame.__init__): Convert between row ids and row
421            ordinals as appropriate
422    
423            * test/postgissupport.py (PostGISDatabase.__init__): Add
424            doc-string.
425            (PostGISDatabase.initdb): The optional third item in a tuple in
426            tables is now a (key, value) list with additional arguments to
427            pass to upload_shapefile
428            (upload_shapefile): New parameter gid_offset to allow gids that
429            are not the same as the shapeids in the shapefile
430            (PostgreSQLServer.get_default_static_data_db): Use the new
431            gid_offset to make the gids in landmarks 1000 higher than the
432            shapeids in the shapefile
433    
434            * test/test_viewport.py
435            (TestViewportWithPostGIS.test_find_shape_at_point): Adapt to the
436            new shapeids in the landmarks table
437    
438            * test/test_transientdb.py
439            (TestTransientTable.run_iceland_political_tests)
440            (TestTransientTable.test_transient_joined_table): Add tests for
441            the new table methods and new keywords arguments.
442    
443            * test/test_postgis_db.py
444            (TestPostGISTable.test_read_row_as_dict_row_count_mode)
445            (TestPostGISTable.test_read_value_row_count_mode)
446            (TestPostGISTable.test_row_id_to_ordinal)
447            (TestPostGISTable.test_row_oridnal_to_id): New test for the new
448            table methods and the new arguments
449            (TestPostGISShapestorePoint.test_shapes_in_region)
450            (TestPostGISShapestorePoint.test_shape_raw_data)
451            (TestPostGISShapestorePoint.test_shape_points)
452            (TestPostGISShapestorePoint.test_shape_shapeid)
453            (TestPostGISShapestorePoint.test_all_shapes)
454            (TestPostGISTable.test_simple_query)
455            (TestPostGISTable.test_simple_query)
456            (TestPostGISTable.test_simple_query)
457            (TestPostGISTable.test_read_value)
458            (TestPostGISTable.test_read_row_as_dict): Adapt to the new
459            shapeids in the landmarks table
460    
461            * test/test_memory_table.py
462            (TestMemoryTable.test_read_row_as_dict_row_count_mode)
463            (TestMemoryTable.test_read_value_row_count_mode)
464            (TestMemoryTable.test_row_id_to_ordinal)
465            (TestMemoryTable.test_row_oridnal_to_id): New test for the new
466            table methods and the new arguments
467    
468            * test/test_dbf_table.py
469            (TestDBFTable.test_read_row_as_dict_row_count_mode)
470            (TestDBFTable.test_read_value_row_count_mode)
471            (TestDBFTable.test_row_id_to_ordinal)
472            (TestDBFTable.test_row_oridnal_to_id): New test for the new table
473            methods and the new arguments
474    
475    2003-08-26  Bernhard Herzog  <[email protected]>
476    
477            * Thuban/Model/postgisdb.py (PostGISShapeStore.BoundingBox): Use a
478            more postgis specific but much faster method to get the bounding
479            box
480    
481    2003-08-26  Bernhard Herzog  <[email protected]>
482    
483            * Thuban/Model/postgisdb.py (PostGISTable.Title)
484            (PostGISShapeStore.AllShapes): Add these missing methods.
485            (PostGISShapeStore.ShapesInRegion): No need to raise
486            StopIteration. We can simply return
487    
488            * test/test_postgis_db.py (TestPostGISTable.test_title)
489            (TestPostGISShapestorePoint.test_all_shapes): New tests for the
490            new methods
491    
492    2003-08-25  Bernhard Herzog  <[email protected]>
493    
494            * Thuban/Model/postgisdb.py (shapetype_map): Add MUTLIPOLYGON.
495    
496            * test/test_postgis_db.py (PolygonTests): New class containing
497            those tests from TestPostGISShapestorePolygon that can also be
498            used to test MUTLIPOLYGON tables
499            (TestPostGISShapestorePolygon): Most tests are now in PolygonTests
500            so derive from that
501            (TestPostGISShapestoreMultiPolygon): New class with tests for
502            MUTLIPOLYGON tables
503    
504            * test/postgissupport.py (PostGISDatabase.initdb): Allow the
505            tables argument to have tuples with three items to override the
506            WKT type used.
507            (PostgreSQLServer.get_default_static_data_db): Use the above to
508            create a polygon table with MUTLIPOLYGONs
509            (point_to_wkt, coords_to_point, polygon_to_wkt, coords_to_polygon)
510            (arc_to_wkt, coords_to_multilinestring): Rename from *_to_wkt to
511            coords_to*
512            (coords_to_multipolygon): New. Convert to MUTLIPOLYGON
513            (wkt_converter): New. Map WKT types to converters
514            (upload_shapefile): New parameter force_wkt_type to use a
515            different WKT type than the default
516    
517    2003-08-25  Bernhard Herzog  <[email protected]>
518    
519            * Thuban/UI/application.py
520            (ThubanApplication.run_db_param_dialog): New. Suitable as a
521            db_connection_callback. Main difference is that the dialog run
522            from this method doesn't have a parent so it can be used even when
523            there is no main window
524            (ThubanApplication.OpenSession): Use self.run_db_param_dialog if
525            no db_connection_callback was given. This way the dialog pops up
526            even when the .thuban file was given as a command line parameter.
527    
528    2003-08-25  Bernhard Herzog  <[email protected]>
529    
530            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Release the the mouse
531            before calling MouseLeftUp. MouseLeftUp may pop up modal dialogs
532            which leads to an effectively frozen X session because the user
533            can only interact with the dialog but the mouse is still grabbed
534            by the canvas.
535            Also, call the tool's Hide method before MouseLeftUp because
536            MouseLeftUp may change the tool's coordinates.
537    
538    2003-08-25  Bernhard Herzog  <[email protected]>
539    
540            * Thuban/UI/application.py (ThubanApplication.OpenSession): Catch
541            LoadCancelled exceptions and handle them by returning immediately.
542    
543    2003-08-25  Bernhard Herzog  <[email protected]>
544    
545            GUI part of loading sessions with postgis connections which may
546            require user interaction to get passwords or updated parameters
547    
548            * Thuban/UI/dbdialog.py (DBDialog): Reimplement to make it look a
549            bit nucer and be more generic.
550            (DBFrame.OnAdd): Adapt to new DBDialog interface
551    
552            * Thuban/UI/application.py (ThubanApplication.OpenSession): New
553            optional parameter db_connection_callback which is passed to
554            load_session.
555    
556            * Thuban/UI/mainwindow.py (MainWindow.run_db_param_dialog): New.
557            Suitable as a db_connection_callback
558            (MainWindow.OpenSession): Use self.run_db_param_dialog as the
559            db_connection_callback of the application's OpenSession method
560    
561    
562    2003-08-25  Bernhard Herzog  <[email protected]>
563    
564            Basic loading of sessions containing postgis connections:
565    
566            * Thuban/Model/load.py (LoadError): Add doc-string
567            (LoadCancelled): New exception class to indicate a cancelled load
568            (SessionLoader.__init__): Add the db_connection_callback parameter
569            which will be used by the loader to get updated parameters and a
570            password for a database connection
571            (SessionLoader.__init__): Add the new XML elements to the
572            dispatchers dictionary
573            (SessionLoader.check_attrs): Two new conversions, ascii to convert
574            to a byte-string object and idref as a generic id reference
575            (SessionLoader.start_dbconnection)
576            (SessionLoader.start_dbshapesource): New. Handlers for the new XML
577            elements
578            (load_session): Add the db_connection_callback to pass through the
579            SessionLoader
580    
581            * test/test_load.py (TestPostGISLayer, TestPostGISLayerPassword):
582            New classes to test loading of sessions with postgis database
583            connections.
584    
585    2003-08-25  Bernhard Herzog  <[email protected]>
586    
587            * Thuban/UI/mainwindow.py (__ThubanVersion__): Remove this and
588            replace it and the comment with __BuildDate__ by the Source: and
589            Id: cvs keywords as used in the other files.
590    
591    2003-08-25  Bernhard Herzog  <[email protected]>
592    
593            * Thuban/Model/load.py (SessionLoader.check_attrs): Raise a
594            LoadError when a required attribute is missing. The code used to
595            be commented out for some reason, but probably should have been
596            active.
597    
598            * test/test_load.py (TestLoadError.test): Test the message in the
599            LoadError too to make sure it really is about the missing
600            attribute
601    
602    2003-08-22  Bernhard Herzog  <[email protected]>
603    
604            * test/test_save.py (SaveSessionTest.test_dbf_table)
605            (SaveSessionTest.test_joined_table): Add XML validation tests.
606    
607    2003-08-22  Bernhard Herzog  <[email protected]>
608    
609            Implement saving a session with a postgis connection
610    
611            * Resources/XML/thuban-0.9.dtd (dbconnection, dbshapesource) New
612            elements for database connections and shapestores using db
613            connections
614            (session): Add the dbconnections to the content model
615    
616            * Thuban/Model/save.py (SessionSaver.write_db_connections): New.
617            Write the db connections
618            (SessionSaver.write_session): Call write_db_connections to write
619            the connection before the data sources
620            (SessionSaver.write_data_containers): Handle postgis shapestores
621    
622            * test/test_save.py (SaveSessionTest.thubanids)
623            (SaveSessionTest.thubanidrefs): Update for new DTD
624            (SaveSessionTest.test_save_postgis): New. Test saving a session
625            with postgis connections
626    
627            * Thuban/Model/postgisdb.py (PostGISTable.DBConnection)
628            (PostGISTable.TableName): New accessor methods for the connection
629            and table name
630    
631            * test/test_postgis_db.py (TestPostGISTable.test_dbconn)
632            (TestPostGISTable.test_dbname): New methods to test the new
633            PostGISConnection methods
634    
635    2003-08-22  Bernhard Herzog  <[email protected]>
636    
637            * Thuban/Model/postgisdb.py (ConnectionError): New exception class
638            for exceptions occurring when establishing a Database connection
639            (PostGISConnection.connect): Catch psycopg.OperationalError during
640            connects and raise ConnectionError.
641    
642            * test/test_postgis_db.py (TestPostgisDBExceptions): New class for
643            tests for database exceptions
644    
645    2003-08-22  Bernhard Herzog  <[email protected]>
646    
647            Prepare the test suite for tests with required authentication
648    
649            * test/postgissupport.py (PostgreSQLServer.__init__): Add instance
650            variables with two predefined users/passwords, one for the admin
651            and one for a non-privileged user.
652            (PostgreSQLServer.createdb): Pass the admin name to initdb and add
653            the non-privileged user to the database and set the admin password
654            (PostgreSQLServer.wait_for_postmaster): Use the admin user name.
655            Better error reporting
656            (PostgreSQLServer.connection_params)
657            (PostgreSQLServer.connection_string): New methods to return
658            information about how to connect to the server
659            (PostgreSQLServer.execute_sql): New. Convenience method to execute
660            SQL statements
661            (PostgreSQLServer.require_authentication): Toggle whether the
662            server requires authentication
663            (PostgreSQLServer.create_user, PostgreSQLServer.alter_user): New.
664            Add or alter users
665            (PostGISDatabase.initdb): Pass the admin name one the
666            subprocesses' command lines. Grant select rights on
667            geometry_columns to everybody.
668            (upload_shapefile): Use the admin name and password when
669            connecting. Grant select rights on the new table to everybody.
670    
671            * test/test_viewport.py (TestViewportWithPostGIS.setUp): Use the
672            server's new methods to get the connection parameters.
673    
674            * test/test_postgis_session.py (TestSessionWithPostGIS.setUp)
675            (TestSessionWithPostGIS.test_remove_dbconn_exception): Use the
676            server's new methods to get the connection parameters.
677    
678            * test/test_postgis_db.py
679            (TestPostGISConnection.test_gis_tables_empty)
680            (TestPostGISConnection.test_gis_tables_non_empty)
681            (PostGISStaticTests.setUp): Use the server's new methods to get
682            the connection parameters.
683    
684    2003-08-22  Bernhard Herzog  <[email protected]>
685    
686            * Thuban/UI/about.py (About.__init__): Add the psycopg version.
687    
688            * Thuban/version.py: Add psycopg version
689    
690            * Thuban/Model/postgisdb.py (psycopg_version): New. Return the
691            version of the psycopg module
692    
693    2003-08-22  Bernhard Herzog  <[email protected]>
694    
695            * Thuban/UI/dbdialog.py (DBPwdDlg): Removed because it's not used.
696            (DBFrame.OnEdit): Removed because it's not used and wouldn't work
697            at the moment. The functionality should probably be implemented
698            some time, though.
699            (DBFrame.OnRemove): Display a message if the connection can't be
700            removed because it's still in use.
701    
702    2003-08-22  Jan-Oliver Wagner <[email protected]>
703    
704            * Thuban/UI/about.py (About.__init__): split up the huge about
705            text into elements/lists for easier translation. This fixes bug
706            https://intevation.de/rt/webrt?serial_num=2058
707            Also, made some forgotten string available for the i18n.
708    
709    2003-08-21  Bernhard Herzog  <[email protected]>
710    
711            Make postgis support really optional including insensitive menu
712            items.
713    
714            * Thuban/Model/postgisdb.py (has_postgis_support): New. Return
715            whether the postgis is supported.
716    
717            * Thuban/UI/dbdialog.py: Put the psycopg import into try..except
718            to make postgis support optional
719    
720            * Thuban/UI/mainwindow.py (_has_postgis_support): New. Context
721            version of Thuban.Model.postgisdb.has_postgis_support
722            (database_management command): Make it only sensitive if postgis
723            is supported.
724    
725    2003-08-21  Jan-Oliver Wagner <[email protected]>
726    
727            * Doc/manual/thuban-manual.xml: Added CVS revision for rev-history.
728            (section Adding and Removing Layers): Added text and described
729            multi-selection.
730            (chapter Extensions): New.
731    
732    2003-08-21  Jan-Oliver Wagner <[email protected]>
733    
734            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Changed dialog
735            settings to allow multiple files to load into the map.
736            Also reduced selection to *.shp as a default.
737    
738    2003-08-20  Bernhard Herzog  <[email protected]>
739    
740            Add dialogs and commands to open database connections and add
741            database layers.
742    
743            * Thuban/UI/mainwindow.py (MainWindow.DatabaseManagement): New
744            method to open the database connection management dialog
745            (MainWindow.AddDBLayer): New method to add a layer from a database
746            (_has_dbconnections): New helper function to use for sensitivity
747            (database_management command, layer_add_db command): New commands
748            that call the above new methods.
749            (main_menu): Add the new commands to the menu.
750    
751            * Thuban/Model/postgisdb.py (PostGISConnection.__init__)
752            (PostGISConnection.connect): Establish the actual connection in a
753            separate method and call it in __init__. This makes it easier to
754            override the behavior in test cases
755            (PostGISConnection.BriefDescription): New method to return a brief
756            description for use in dialogs.
757    
758            * test/test_postgis_db.py (NonConnection): DB connection that
759            doesn't actually connect
760            (TestBriefDescription): New class with tests for the new
761            BriefDescription method
762    
763    2003-08-19  Jan-Oliver Wagner <[email protected]>
764    
765            Moved anything from extensions to libraries.
766    
767            * libraries: New.
768    
769            * libraries/ pyprojection, pyshapelib, shapelib, thuban: New.
770    
771            * libraries/pyprojection/ LICENSE, MANIFEST.in, Projection.i,
772            Projection.py, Projection_wrap.c, setup.py, swighelp.txt: These files have
773            been moved here from thuban/extensions/pyprojection/
774            See there in the Attic for the older history.
775    
776            * libraries/pyshapelib/ COPYING, ChangeLog, NEWS, README, dbflib.i,
777            dbflib.py, dbflib_wrap.c, pyshapelib_api.h, pytest.py, setup.py,
778            shapelib.i, shapelib.py, shapelib_wrap.c, shptreemodule.c: These files
779            have been moved here from thuban/extensions/pyshapelib/
780            See there in the Attic for the older history.
781    
782            * libraries/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c: These
783            files have been moved here from thuban/extensions/shapelib/
784            See there in the Attic for the older history.
785    
786            * libraries/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
787            gdalwarp.cpp, wxproj.cpp: These files have been moved here from
788            thuban/extensions/thuban/
789            See there in the Attic for the older history.
790    
791            * MANIFEST.in, setup.cfg, setup.py: renamed extensions to libraries.
792    
793            * extensions/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
794            gdalwarp.cpp, wxproj.cpp: Moved to libraries/thuban.
795    
796            * extensions/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c:
797            Moved to libraries/shapelib.
798    
799            * extensions/pyshapelib/ COPYING, NEWS, dbflib.py, pytest.py,
800            shapelib.py, README, dbflib_wrap.c, setup.py, shapelib_wrap.c,
801            ChangeLog, dbflib.i, pyshapelib_api.h, shapelib.i, shptreemodule.c:
802            Moved to libraries/pyshapelib.
803    
804            * extensions/pyprojection/ MANIFEST.in, Projection.py, setup.py,
805            LICENSE, Projection.i, Projection_wrap.c, swighelp.txt:
806            Moved to libraries/pyprojection.
807    
808            * extensions/ pyprojection, pyshapelib, shapelib, thuban: Removed.
809    
810            * extensions: Removed.
811    
812    2003-08-19  Bernhard Herzog  <[email protected]>
813    
814            * test/test_viewport.py (ViewPortTest): We don't use the
815            facilities of FileTestMixin so don't derive from it.
816            (TestViewportWithPostGIS): New class with tests for using a
817            viewport on a map with postgis layers.
818    
819    2003-08-19  Bernhard Herzog  <[email protected]>
820    
821            Add the db connection management to the session.
822    
823            * Thuban/Model/session.py (Session.__init__): New instance
824            variable db_connections
825            (Session.AddDBConnection, Session.DBConnections)
826            (Session.HasDBConnections, Session.CanRemoveDBConnection)
827            (Session.RemoveDBConnection): New methods to manage and query the
828            db connections managed by the session
829            (Session.OpenDBShapeStore): New method to open a shapestore from a
830            db connection
831    
832            * Thuban/Model/messages.py (DBCONN_REMOVED, DBCONN_ADDED): New
833            messages for the db connection handling in the session
834    
835            * test/test_postgis_session.py: New. test cases for the session's
836            db connection handling with postgis connections
837    
838    2003-08-19  Bernhard Herzog  <[email protected]>
839    
840            Add very basic postgis database support and the corresponding test
841            cases. The test cases require a PostgreSQL + postgis installation
842            but no existing database. The database will be created
843            automatically by the test cases
844    
845            * test/README: Add note about skipped tests and the requirements
846            of the postgis tests.
847    
848            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
849    
850            * test/test_postgis_db.py: New. Test cases for the postgis
851            support.
852    
853            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
854            format
855    
856            * test/test_wellknowntext.py: New. Test cases for the
857            wellknowntext parser
858    
859            * test/postgissupport.py: New. Support module for tests involving
860            a postgis database.
861    
862            * test/support.py (execute_as_testsuite): Shut down the postmaster
863            if it's still running after the tests
864    
865            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
866            well known text format
867    
868    2003-08-19  Jan-Oliver Wagner <[email protected]>
869    
870            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
871            message dialog.
872    
873    2003-08-18  Bernhard Herzog  <[email protected]>
874    
875            * test/support.py (ThubanTestResult.printErrors): Indent the
876            reason for the skips in the output to make it a bit more readable.
877            (execute_as_testsuite): New helper function to run a test suite
878            and print some more information.
879            (run_tests): Use execute_as_testsuite to run the tests
880    
881            * test/runtests.py (main): Use execute_as_testsuite to run the
882            tests
883    
884    2003-08-18  Bernhard Herzog  <[email protected]>
885    
886            Fix some bugs in Thuban and the test suite that were uncovered by
887            changes introduced in Python 2.3:
888    
889            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
890            filename is an absolute name
891    
892            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
893            filename is an absolute name
894    
895            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
896            unique filename to save to and use the correct relative filename
897            in the expected output.
898            (SaveSessionTest.test_dbf_table): Use the correct relative
899            filename in the expected output.
900    
901            * test/test_layer.py (TestLayer.test_raster_layer): Update the
902            test to check whether the filename is absolute.
903    
904    2003-08-18  Jan-Oliver Wagner <[email protected]>
905    
906            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
907    
908    2003-08-15  Bernhard Herzog  <[email protected]>
909    
910            Change the way shapes are returned by a shape store. The
911            ShapesInRegion method returns an iterator over actual shape
912            objects instead of a list of shape ids.
913    
914            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
915            id.
916            (ShapefileStore.ShapesInRegion): Return an iterator over the
917            shapes which yields shape objects instead of returning a list of
918            shape ids
919            (ShapefileStore.AllShapes): New. Return an iterator over all
920            shapes in the shape store
921            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
922    
923            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
924            doc-string.
925    
926            * Thuban/UI/baserenderer.py
927            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
928            layer_shapes and make it return an iterator containg shapes
929            instead of a list of ids.
930            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
931            layer_shapes() change
932    
933            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
934            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
935    
936            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
937            changes in the ShapesInRegion return value.
938            (ViewPort._get_hit_tester): Remove commented out code
939    
940            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
941            new return value.
942            (SimpleShapeStore.AllShapes): New. Implement this method too.
943    
944            * test/test_layer.py (TestLayer.test_arc_layer)
945            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
946            (TestLayer.test_point_layer_with_projection)
947            (TestLayer.test_derived_store): Adapt to changes in the
948            ShapesInRegion return value.
949    
950            * test/test_shapefilestore.py
951            (TestShapefileStoreArc.test_shapes_in_region)
952            (TestShapefileStorePolygon.test_shapes_in_region)
953            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
954            in the ShapesInRegion return value.
955            (TestShapefileStorePoint.test_all_shapes)
956            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
957            methods
958    
959            * test/test_derivedshapestore.py
960            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
961            the ShapesInRegion return value.
962            (TestDerivedShapeStore.test_all_shapes)
963            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
964            methods
965    
966    2003-08-15  Bernhard Herzog  <[email protected]>
967    
968            Make the renderers deal correctly with raw vs. python level
969            representation of shape geometries
970    
971            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
972            Return a flag useraw in addition to the callable and the parameter
973            to indicate whether the callable can deal with the raw shape data
974            or uses the higher level python lists of coordinates. The callable
975            now should accept either the raw data or the return value of the
976            shape's Points() method.
977            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
978            change
979            (BaseRenderer.projected_points): Instead of the shape id use the
980            points list as parameter.
981            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
982            (BaseRenderer.draw_point_shape): Adapt to projected_points()
983            change and accept the points list as parameter instead of the
984            shape id.
985    
986            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
987            the useraw flag as required by the BaseRenderer
988            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
989            changes.
990    
991            * test/test_baserenderer.py
992            (TestBaseRenderer.test_point_with_classification): New test for
993            rendering a map with classifications.
994    
995    2003-08-15  Bernhard Herzog  <[email protected]>
996    
997            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
998            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
999            (ViewPort._get_hit_tester, ViewPort.projected_points)
1000            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
1001            (ViewPort._find_label_at): Split the find_shape_at method into
1002            several new methods and use the functions in the hit-test module.
1003    
1004            * Thuban/UI/hittest.py: New module with Python-level hit-testing
1005            functions
1006    
1007            * test/test_hittest.py: New. Test for the new hittest module
1008    
1009    2003-08-15  Bernhard Herzog  <[email protected]>
1010    
1011            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
1012            projection to all corners of the bounding box to get a better
1013            approximation of the projected bounding box
1014    
1015            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
1016            New. Test coordinate handling of a layer with a projection.
1017            Catches the bug fixed in Layer.ShapesInRegion
1018    
1019    2003-08-15  Bernhard Herzog  <[email protected]>
1020    
1021            Move some of the mock objects in test_baserenderer into their own
1022            module so they can easily be used from other tests
1023    
1024            * test/mockgeo.py: New test helper module with some mock objects
1025            for geometry related things like shapes, shapestores and
1026            projections.
1027    
1028            * test/test_mockgeo.py: New. Tests for the new helper module
1029    
1030            * test/test_baserenderer.py: Some of the mock-objects are in
1031            mockgeo now.
1032    
1033    2003-08-12  Jan-Oliver Wagner <[email protected]>
1034    
1035            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
1036    
1037    2003-08-12  Bernhard Herzog  <[email protected]>
1038    
1039            * po/de.po: New. German translations by Bjoern Broscheit
1040    
1041    2003-08-12  Bernhard Herzog  <[email protected]>
1042    
1043            * Thuban/UI/projdialog.py (UnknownProjPanel._DoLayout): Translated
1044            strings have to be one string literal.
1045    
1046    2003-08-11  Bernhard Herzog  <[email protected]>
1047    
1048            * test/support.py (FloatComparisonMixin.assertPointListEquals):
1049            New. This method was used in various derived classes, but it's
1050            better to have it here.
1051    
1052            * test/test_shapefilestore.py
1053            (ShapefileStoreTests.assertPointListEquals): Removed. It's now in
1054            FloatComparisonMixin
1055    
1056            * test/test_layer.py (TestLayer.assertPointListEquals): Removed.
1057            It's now in FloatComparisonMixin
1058    
1059            * test/test_derivedshapestore.py
1060            (TestDerivedShapeStore.assertPointListEquals): Removed. It's now
1061            in FloatComparisonMixin
1062    
1063    2003-08-11  Bernhard Herzog  <[email protected]>
1064    
1065            * Thuban/UI/join.py (JoinDialog.OnJoin): Add missing space to
1066            error message
1067    
1068    2003-08-08  Jan-Oliver Wagner <[email protected]>
1069    
1070            * Doc/manual/thuban-manual.xml: Now use authorgroup. Added revhistory
1071            with version number.
1072            Changed title to reflect version number of Thuban.
1073    
1074    2003-08-08  Jan-Oliver Wagner <[email protected]>
1075    
1076            * Thuban/UI/about.py (About.__init__): Reworked the hall of fame. Now
1077            the list corresponds to the "About" web page.
1078    
1079    2003-08-08  Bernhard Herzog  <[email protected]>
1080    
1081            * Thuban/UI/projdialog.py (UTMProposeZoneDialog.dialogLayout):
1082            Make sure translated strings are recognized as one string literal.
1083    
1084            * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog.dialogLayout):
1085            Make sure translated strings are recognized as one string literal.
1086    
1087            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Make sure
1088            translated strings are recognized as one string literal.
1089    
1090            * Thuban/UI/application.py (ThubanApplication.OpenSession): Make
1091            sure translated strings are recognized as one string literal.
1092    
1093    2003-08-07  Bernhard Herzog  <[email protected]>
1094    
1095            * Thuban/Model/data.py (DerivedShapeStore.RawShapeFormat): New.
1096            Simply delegates to the original shapestore.
1097    
1098            * test/test_derivedshapestore.py
1099            (TestDerivedShapeStore.test_raw_format): New. Test case for
1100            DerivedShapeStore.RawShapeFormat
1101    
1102    2003-08-07  Bernhard Herzog  <[email protected]>
1103    
1104            Add raw data interface to shape objects.
1105    
1106            * Thuban/Model/data.py (ShapefileShape, Shape): Rname the shape
1107            class to ShapefileShape which now holds shapefile specific
1108            information.
1109            (ShapefileShape.compute_bbox): Simplified to not cache any
1110            information. The way this method is used that shouldn't matter
1111            performance wise.
1112            (ShapefileShape.RawData): New. Return the shapeid which is the raw
1113            data format for shapes from shapefiles.
1114            (ShapefileStore.RawShapeFormat): New. Return the raw datatype used
1115            in the shape objects returned by a shapestore. For a
1116            ShapefileStore this is always RAW_SHAPEFILE.
1117            (RAW_PYTHON, RAW_SHAPEFILE): Constants for the RawShapeFormat
1118            method.
1119    
1120            * test/test_shapefilestore.py
1121            (TestShapefileStore.test_raw_format): New test to test the raw
1122            format feature of shapes.
1123    
1124            * Thuban/Model/layer.py: Remove the unused import of Shape from
1125            data. It was only there for interface compatibility but it's not
1126            used inside of Thuban and the generic Shape class has gone away.
1127    
1128            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Check
1129            the raw data format and only use an optimized version of its a
1130            shapefile.
1131    
1132    2003-08-07  Bernhard Herzog  <[email protected]>
1133    
1134            * test/test_baserenderer.py (SimpleShape): Shape class for the
1135            tests.
1136            (SimpleShapeStore.Shape): Use SimpleShape instead of
1137            Thuban.Model.data.Shape to make the tests independed of the coming
1138            changes.
1139    
1140    2003-08-07  Bernhard Herzog  <[email protected]>
1141    
1142            * test/support.py (SkipTest, ThubanTestResult, ThubanTestRunner)
1143            (ThubanTestProgram): New classes that extend the respective
1144            classes from unittest. These new version support skipping tests
1145            under certain expected conditions. In the Thuban test suite we
1146            uses this for tests that require the optional gdal support.
1147            (run_tests): Use ThubanTestProgram instead of the unittest.main()
1148    
1149            * test/runtests.py (main): Use the new ThubanTestRunner instead of
1150            the normal one from unittest
1151    
1152            * test/test_layer.py (TestLayer.test_raster_layer): If this test
1153            is not run because gdal support isn't available report this to the
1154            runner.
1155    
1156            * test/test_baserenderer.py
1157            (TestBaseRenderer.test_raster_no_projection): Do not run this test
1158            if gdal support isn't available and report this to the runner.
1159    
1160    2003-08-06  Bernhard Herzog  <[email protected]>
1161    
1162            Rearrange the renderers a bit, partly in preparation for changes
1163            required for the postgis merge, partly to make it more testable.
1164            Also make the representation of coordinates in Shapes more
1165            consistent.
1166    
1167            * Thuban/UI/renderer.py (MapRenderer): Most of the code/methods in
1168            this class is now in BaseRenderer. This class is now practically
1169            only a specialization of BaseRenderer for rendering to an actual
1170            wx DC.
1171            (ScreenRenderer.draw_shape_layer): Use self.low_level_renderer()
1172            to get the shapetype specific rendering functions.
1173    
1174            * Thuban/UI/baserenderer.py: New file with the basic rendering
1175            logic. The code in this file is completely independend of wx.
1176            (BaseRenderer): Class with the basic rendering logic
1177    
1178            * test/test_baserenderer.py: New. Test cases for BaseRenderer
1179    
1180            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
1181            error_on_redraw to guard agains endless loops and stack overflows
1182            when there's a bug in the rendering code that raises exceptions.
1183            (MapCanvas.OnIdle, MapCanvas._do_redraw): Split the actual
1184            rendering into a separate method _do_redraw so that error handling
1185            is a bit easier. When an exception occurs, set error_on_redraw to
1186            true. When it's true on entry to OnIdle do nothing and return
1187            immediately.
1188    
1189            * Thuban/Model/data.py (ShapefileStore.Shape): For consistency, a
1190            Shape object will always have the coordinates as a list of list of
1191            coordinate pairs (tuples).
1192            (Shape.compute_bbox): Adapt to new representation.
1193    
1194            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
1195            (ViewPort.LabelShapeAt): Adapt to new coordinate representation in
1196            Shape objects.
1197    
1198            * test/test_shapefilestore.py
1199            (ShapefileStoreTests.assertFloatTuplesEqual)
1200            (ShapefileStoreTests.assertPointListEquals): Rename to
1201            assertPointListEquals and change purpose to checking equality of
1202            the lists returned by Shape.Points().
1203            (TestShapefileStoreArc.test_shape)
1204            (TestShapefileStorePolygon.test_shape)
1205            (TestShapefileStorePoint.test_shape): Use the new
1206            assertPointListEquals instead of assertFloatTuplesEqual
1207    
1208            * test/test_layer.py (TestLayer.assertFloatTuplesEqual)
1209            (TestLayer.assertPointListEquals): Rename to assertPointListEquals
1210            and change purpose to checking equality of the lists returned by
1211            Shape.Points().
1212            (TestLayer.test_arc_layer, TestLayer.test_arc_layer)
1213            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
1214            (TestLayer.test_derived_store): Use the new assertPointListEquals
1215            instead of assertFloatTuplesEqual
1216    
1217            * test/test_derivedshapestore.py
1218            (TestDerivedShapeStore.assertFloatTuplesEqual)
1219            (TestDerivedShapeStore.assertPointListEquals): Rename to
1220            assertPointListEquals and change purpose to checking equality of
1221            the lists returned by Shape.Points().
1222            (TestDerivedShapeStore.test_shape): Use the new
1223            assertPointListEquals instead of assertFloatTuplesEqual
1224    
1225    2003-08-06  Jan-Oliver Wagner <[email protected]>
1226    
1227            * Thuban/UI/projdialog.py (UTMPanel._OnPropose): Added test for
1228            a bounding box. A dialog is raised in case, no bounding box
1229            is found. This fixes bug #2043:
1230            https://intevation.de/rt/webrt?serial_num=2043
1231    
1232    2003-08-05  Bernhard Herzog  <[email protected]>
1233    
1234            * Thuban/Model/color.py (Color.__repr__): Make the repr of a color
1235            object look like a Color instantiation. Formerly it looked like a
1236            tuple.
1237    
1238            * test/test_color.py (TestColor.test_repr)
1239            (TestColor.test_equality, TestColor.test_inequality): New. test
1240            some more apects of the Color class
1241            (TestTransparent.test_repr, TestTransparent.test_hex)
1242            (TestTransparent.test_equality): New. Test cases for the
1243            Transparent object.
1244    
1245    2003-08-04  Jan-Oliver Wagner <[email protected]>
1246    
1247            * Doc/manual/thuban-manual.xml: a number of small improvements.
1248            The resulting file is the version submitted for GREAT-ER II.
1249    
1250    2003-08-01  Bernhard Herzog  <[email protected]>
1251    
1252            * Thuban/UI/resource.py, Thuban/UI/projdialog.py,
1253            Thuban/UI/join.py, Thuban/UI/classgen.py, Thuban/UI/about.py,
1254            Thuban/Model/resource.py: Insert cvs keywords and doc-strings.
1255    
1256            * Thuban/UI/common.py: Insert cvs keywords and doc-strings.
1257            (Color2wxColour, wxColour2Color, ThubanBeginBusyCursor)
1258            (ThubanEndBusyCursor): Add doc-strings
1259    
1260    2003-08-01  Bernhard Herzog  <[email protected]>
1261    
1262            First step towards PostGIS integration. More abstraction by movin
1263            more code from the layer to the shapestore. More methods of the
1264            layer are now simply delegated to the equivalent method of the
1265            shapestore. The SHAPETYPE_* constants are now in data not in
1266            layer.
1267    
1268            * Thuban/Model/data.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
1269            (SHAPETYPE_POINT, Shape): Move these constants and classes from
1270            layer.py to data.py
1271            (ShapefileStore.__init__): More Initialization for the new methods
1272            and functionality.
1273            (ShapefileStore.ShapeType, ShapefileStore.NumShapes)
1274            (ShapefileStore.BoundingBox, ShapefileStore.ShapesInRegion)
1275            (ShapefileStore.Shape): New methods that were formerly implemented
1276            in the layer.
1277            (DerivedShapeStore.Shape, DerivedShapeStore.ShapesInRegion)
1278            (DerivedShapeStore.ShapeType, DerivedShapeStore.NumShapes)
1279            (DerivedShapeStore.BoundingBox): New. DerivedShapeStore
1280            equivalents of the new shape methods. These versions are simply
1281            delegated to the original shapstore.
1282    
1283            * Thuban/Model/layer.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
1284            (SHAPETYPE_POINT, Shape): Removed. They're now in data.py
1285            (Layer.SetShapeStore): Removed the initializatin of instance
1286            variables that were needed for the stuff that's now in
1287            ShapefileStore
1288            (Layer.BoundingBox, Layer.NumShapes, Layer.ShapeType)
1289            (Layer.Shape, Layer.ShapesInRegion): Simply delegate to the
1290            shapestore.
1291    
1292            * Thuban/UI/classifier.py, Thuban/UI/renderer.py,
1293            Thuban/UI/viewport.py: Import the SHAPETYPE_* constants from data
1294            instead of layer.
1295    
1296            * test/test_shapefilestore.py: New. Tests for ShapefileStore.
1297    
1298            * test/test_derivedshapestore.py: New. Tests for DerivedShapeStore.
1299    
1300            * test/test_layer.py: Import the SHAPETYPE_* constants from data
1301            instead of layer.
1302            (TestLayer.test_derived_store): Remove the test for the exception
1303            when instantiating the DerivedShapeStore with an incompatible
1304            table which is now in test_derivedshapestore.py. Add some more
1305            tests of the layer methods to determine whether they work for a
1306            DerivedShapeStore as well.
1307    
1308    2003-07-31  Jonathan Coles   <[email protected]>
1309    
1310            * Doc/manual/thuban-manual.xml: Fix the list of required packages
1311            by just listing the name and where they can be found.
1312    
1313    2003-07-31  Frank Koormann   <[email protected]>
1314    
1315            * Doc/manual/thuban-manual.xml:
1316            Changed the screenshot elements to figure.
1317            Changed some variablelist elements to itemizedlist.
1318            Added section on GDAL formats.
1319    
1320    2003-07-31  Jonathan Coles   <[email protected]>
1321    
1322            * Doc/manual/thuban-manual.xml: Added a few sentences about
1323            the Fix Border Color option when generating classes.
1324    
1325    2003-07-30  Jonathan Coles   <[email protected]>
1326    
1327            * Thuban/Model/classgen.py: Add docstrings. Rename specific
1328            Ramp instances to use lower_case_style.
1329    
1330            * Thuban/UI/classgen.py: Use renamed Ramp instances.
1331            
1332            * Thuban/UI/classifier.py: Add docstrings.
1333    
1334            * Thuban/UI/dock.py: Add docstrings.
1335    
1336            * test/test_classgen.py: Use renamed Ramp instances.
1337    
1338    2003-07-30  Bernhard Herzog  <[email protected]>
1339    
1340            * Thuban/Lib/connector.py (QueueingPublisher): Removed. This class
1341            was never used in Thuban.
1342    
1343    2003-07-30  Bernhard Herzog  <[email protected]>
1344    
1345            * Thuban/UI/join.py (JoinDialog.__init__): Use the table's Title()
1346            method directly instead of going through the transient_table
1347            method. This faster because transient_table may force the copy of
1348            a DBF file into the transient database and setting a table's title
1349            doesnm't affect the title of the associated transient table, so
1350            this fixes RT #2042
1351    
1352            * Thuban/UI/main.py (__version__): Don't import the already
1353            removed show_exception_dialog.
1354    
1355    2003-07-29  Jonathan Coles   <[email protected]>
1356    
1357            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
1358            Put back this method and remove the equivalent function since we
1359            are setting the exception hook from within this class (OnInit).
1360    
1361    2003-07-29  Jonathan Coles   <[email protected]>
1362    
1363            * Doc/manual/images/5_2_custom_ramp.png,
1364            Doc/manual/images/5_2_quantiles.png,
1365            Doc/manual/images/5_2_uniform_dist.png,
1366            Doc/manual/images/5_2_unique_values.png,
1367            Doc/manual/images/8_int_error.png: New screen shots.
1368    
1369            * Doc/manual/thuban-manual.xml: Fixed typos and wording, clarified
1370            some points, and added more screen shots.
1371    
1372    2003-07-29  Bernhard Herzog  <[email protected]>
1373    
1374            * Thuban/Model/data.py: Remove the now unused import of warnings
1375    
1376    2003-07-29  Bernhard Herzog  <[email protected]>
1377    
1378            * Thuban/Model/data.py (SimpleStore): Removed. This class has been
1379            deprecated since before the 0.8 release and isn't used in Thuban
1380            itself anymore.
1381    
1382            * Thuban/Model/transientdb.py: Remove some unnecessary imports
1383    
1384    2003-07-29  Jonathan Coles   <[email protected]>
1385    
1386            * Thuban/UI/application.py (ThubanApplication.OnInit): set the
1387            python exception hook here so that we are sure to catch any
1388            Thuban exception that happen during initialization.
1389    
1390            * Thuban/UI/main.py (main): Don't set the exception hook here,
1391            it will get set in ThubanApplication.OnInit.
1392    
1393  2003-07-29  Jonathan Coles   <[email protected]>  2003-07-29  Jonathan Coles   <[email protected]>
1394                                                                                                                                                            
1395          * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):          * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
# Line 15  Line 1407 
1407    
1408  2003-07-29  Frank Koormann   <[email protected]>  2003-07-29  Frank Koormann   <[email protected]>
1409    
1410            * Doc/manual/thuban-manual.xml: Extended section on supported
1411            projections.
1412            
1413    2003-07-29  Frank Koormann   <[email protected]>
1414    
1415          * Doc/manual/thuban-manual.xml: gaspell-checked.          * Doc/manual/thuban-manual.xml: gaspell-checked.
1416    
1417  2003-07-29  Jonathan Coles   <[email protected]>  2003-07-29  Jonathan Coles   <[email protected]>
# Line 60  Line 1457 
1457    
1458          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
1459          it annoys lintian which warns about these files not being          it annoys lintian which warns about these files not being
1460          executable. The #1 isn't necessary here since if you absolutely          executable. The #! isn't necessary here since if you absolutely
1461          must execute them you can always say "python <filename>".          must execute them you can always say "python <filename>".
1462    
1463          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove

Legend:
Removed from v.1503  
changed lines
  Added in v.1775

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26