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

Legend:
Removed from v.1479  
changed lines
  Added in v.1862

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26