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

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

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26