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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26