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

Legend:
Removed from v.1424  
changed lines
  Added in v.1829

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26