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

Legend:
Removed from v.1479  
changed lines
  Added in v.1794

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26