/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.1582  
changed lines
  Added in v.1803

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26