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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26