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

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

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26