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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26