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

Legend:
Removed from v.1483  
changed lines
  Added in v.1799

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26