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

Legend:
Removed from v.1553  
changed lines
  Added in v.1792

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26