/[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 1973 by bh, Mon Nov 24 19:23:28 2003 UTC revision 2250 by jschuengel, Wed Jun 16 11:01:42 2004 UTC
# Line 1  Line 1 
1    2004-06-16  Jan Sch�ngel  <[email protected]>
2    
3            Add a sample and make some changes.
4    
5            * Extension/umn_mapserver/mf_import.py: Changed the wxPython.wx
6            import from * to explicit used statements. Changed the
7            Thuban.UI.mainwindow import phrase, too.
8            (import_mapfile):Corrected a clerical mistake.
9            Added wxCHANGE_DIR in OpenFile Dialog.
10            Added a MultipleChoiceDialog, to select the layers to load from
11            mapfile into thuban. Thereby the projection is only set if one layer
12            is selected.
13            Added the possibility to handle relative pathnames which uses
14            up-level references.
15            Removed some doubled code.
16            Corrected an error with integer values used as label in thuban
17            ClassGroup.
18            
19            * Extensions/umn_mapserver/sample: New.
20    
21            * Extensions/umn_mapserver/sample/README: New. Describes the
22            usage of the sample files.
23    
24            * Extensions/umn_mapserver/sample/iceland.map: New. This is
25            a suitable .map-file for the iceland data.
26    
27            * Extensions/umn_mapserver/sample/index.html: New. The template
28            for the mapfile.  
29    
30            * Extensions/umn_mapserver/sample/iceland.html: New. Initialisation
31            file for the Iceland Application on web.
32    
33            * Extensions/umn_mapserver/README: Corrected a inaccuracy and added
34            some details.
35    
36            * Extensions/umn_mapserver/test/test_mapserver
37            (mapserver_import_Test_generalClasses.test_MF_Color):
38            Corrected the thubancolor test.
39    
40    2004-06-15  Jan Sch�ngel  <[email protected]>
41    
42            * Extensions/umn_mapserver/README: New. Install instruction.
43    
44    2004-06-14  Bernhard Reiter <[email protected]>
45    
46            * libraries/thuban/cpl_mfile.h: Added copyright header.
47    
48            * libraries/thuban/ cpl_mfile.cpp, cpl_mfile.h: Added non-protecting
49            Free Software License so that it is most useful with gdalwarp
50            and bmpdataset.
51    
52    2004-06-14  Bernhard Herzog  <[email protected]>
53    
54            * Thuban/UI/multiplechoicedialog.py (__version__): Add missing
55            import of wxPython.wx itself (as opposed to the contents of
56            wxPython.wx).  For some reason wxPython.wx is available as
57            wxPython.wx.wx in at least some 2.4 releases.  Fixes RT#2482
58            wrt. wxPython 2.4.
59    
60    2004-06-10  Jan Sch�ngel  <[email protected]>
61    
62            Initial version of new extension "umn_mapserver".  This extension aims
63            to manage configuration for the UMN MapServer application.  This
64            inital version just imports the .map-files and displays all, Thuban is
65            capable of.
66    
67            * Extensions/umn_mapserver, Extensions/umn_mapserver/test: New.
68    
69            * Extensions/umn_mapserver/test/README: New. Describes how to run the
70            tests.
71    
72            * Extensions/umn_mapserver/test/test.map: New. This is a test
73            .map-file for automated tests of the umn_mapserver extension of
74            Thuban.
75    
76            * Extensions/umn_mapserver/test/test_mapserver.py: New. Tests for
77            UMN Mapserver classes.
78    
79            * Extensions/umn_mapserver/__init__.py: New. Init to make this
80            directory a package.
81    
82            * Extensions/umn_mapserver/mapfile.py: New. Classes to represent
83            '.map'-file objects.
84    
85            * Extensions/umn_mapserver/mf_import.py: New. This module extends
86            Thuban with the possibility to handle UMN MapServer mapfiles.
87    
88    2004-06-03  Bernhard Herzog  <[email protected]>
89    
90            * Thuban/Model/layer.py (Layer.TreeInfo): Convert the bounding box
91            to a tuple before using it as arguments to the % operator.  This
92            fixes the formatting issue filed in RT#2239 on 2004-01-13 and
93            reported today on thuban-list by Jan Sch�ngel
94    
95            * test/test_layer.py (TestLayerModification.setUp): Save the
96            filename as an instance variable so we can refer to it in tests
97            (TestLayerModification.test_tree_info): Uncomment this method
98            again and make it work.  This tests for the formatting issue
99            filed in RT#2239 on 2004-01-13
100    
101    2004-05-28  Bernhard Herzog  <[email protected]>
102    
103            * Thuban/UI/baserenderer.py: Fix some typos.
104    
105    2004-05-18  Jan-Oliver Wagner <[email protected]>
106    
107            * Extensions/gns2shp/gns2shp.py (gns2shp): Fixed a bug
108            by increasing a field size.
109    
110    2004-05-17  Bernhard Herzog  <[email protected]>
111    
112            Update to newest shapelib and get rid of Thuban specific
113            extensions, i.e. use the new DBFUpdateHeader instead of our
114            DBFCommit kludge
115    
116            * libraries/shapelib/shpopen.c: Update to version from current
117            shapelib CVS.
118    
119            * libraries/shapelib/shapefil.h: Update to version from current
120            shapelib CVS.
121    
122            * libraries/shapelib/dbfopen.c: Update to version from current
123            shapelib CVS.
124            (DBFCommit): Effectively removed since shapelib itself has
125            DBFUpdateHeader now which is better for what DBFCommit wanted to
126            achieve.  
127            We're now using an unmodified version of dbfopen.
128    
129            * setup.py (extensions): Add the HAVE_UPDATE_HEADER macro with
130            value '1' to the Lib.dbflibc extension.  This simply reflects the
131            shapelib and pyshapelib updates
132    
133    2004-05-16  Jan-Oliver Wagner <[email protected]>
134    
135            Finished introduction of Menu.FindOrInsertMenu.
136    
137            * Extensions/drawshape/drawshape.py: Add the command
138            to the experimental menu additionally to the toolbar.
139    
140            * Extensions/svgexport/svgsaver.py: Use FindOrInsertMenu() instead of
141            finding menu on its own.
142    
143            * Doc/manual/thuban-manual.xml: updated sample file
144            to use FindOrInsertMenu().
145    
146            * Examples/simple_extensions/hello_world.py: Use FindOrInsertMenu()
147            instead of finding menu on its own.
148    
149    2004-05-11  Jan-Oliver Wagner <[email protected]>
150    
151            * test/test_menu.py (MenuTest.test): Added testing
152            of method Menu.FindOrInsertMenu.
153    
154    2004-05-10  Jan-Oliver Wagner <[email protected]>
155    
156            Introduce and use Menu.FindOrInsertMenu.
157    
158            * Thuban/UI/menu.py (Menu.FindOrInsertMenu): New. Find a
159              given menu or, if not found, insert it.
160    
161            * Extensions/bboxdump/bboxdump.py, /Extensions/gns2shp/gns2shp.py,
162            /Extensions/importAPR/importAPR.py, Extensions/profiling/profiling.py,
163            /Extensions/wms/wms.py: Use FindOrInsertMenu() instead of finding
164            menu on its own.
165    
166    2004-05-06  Jan-Oliver Wagner <[email protected]>
167    
168            Introduce a abstract ColorDialog class and remove
169            and outdated file.
170    
171            * Thuban/UI/proj4dialog.py: Removed. It is has been
172            replaced by projdialog for quite a while and is not used
173            anymore.
174    
175            * Thuban/UI/colordialog.py: New. Abstraction for color selection
176            dialog(s).
177    
178            * Thuban/UI/classifier.py (SelectPropertiesDialog.__GetColor):
179            Now calls the abstract ColorDialog instead of wxColourDialog.
180            This also removed the dependency to Color class conversion
181            from this function.
182    
183    2004-05-04  Frank Koormann  <[email protected]>
184    
185            * Extensions/bboxdump/__init__.py: Fixed string left over from
186            copying.
187    
188            * Extensions/bboxdump/bboxdump.py (bboxdump):
189            Use layer.ShapeStore().AllShapes() to loop over shapes instead of
190            xrange(layer.NumShapes()). Compile the bboxmessage from a list
191            of formatted outputs (string.join) instead of appending to the
192            message. Two progress bar dialogs to report progress on the sometimes
193            lenghty processing.
194    
195    2004-04-22  Frank Koormann  <[email protected]>
196    
197            New Extension to dump bounding boxes of all shapes of the selected
198            layer. An optional column can be specified to group the objects,
199            in this case the bounding box is a union of the separate boxes.
200            Dump can be displayed in a ScrolledMessageDialog or written to file.
201            The Extension is simply a combination of available and well tested
202            Thuban functionality.
203    
204            * Extensions/bboxdump/__init__.py: New: Init to make this
205            directory a package.
206    
207            * Extensions/bboxdump/bboxdump.py: New: Dump bounding boxes of
208            all shapes of the selected layer.
209    
210    2004-04-22  Jan-Oliver Wagner <[email protected]>
211    
212            * Thuban/UI/classgen.py (GenUniquePanel.__init__): Fixed two
213            strings to be i18n now.
214    
215    2004-04-18  Jan-Oliver Wagner <[email protected]>
216    
217            Changing popup menu of legend from direct building
218            to using the Menu construction as used for the mainwindow.
219    
220            * Thuban/UI/mainwindow.py: New method commands: layer_to_top,
221            layer_to_bottom, layer_visibility
222            (MainWindow.LayerToTop): New. Put current layer to the top.
223            (MainWindow.LayerToBottom): New. Put current layer to bottom.
224            (MainWindow.HideLayer, MainWindow.ShowLayer, _has_visible_map):
225            Replace 1,0 by True, False.
226            (MainWindow.ToggleLayerVisibility): New. Toggle visibility of
227            current layer.
228            (MainWindow.LayerShowTable): Removed raising of dialog.
229            (_has_selected_layer_visible): New. Support function.
230    
231            * Thuban/UI/legend.py: ID_POP_xxx: removed.
232            (LegendPanel.__init__): Removed EVT_MENU bindings.
233            (LegendTree._OnRightClick): Replace direct creation of
234            menu via wx Classes by applying the menu definition
235            as of Menu class of menu.py.
236            
237    2004-04-16  Jan-Oliver Wagner <[email protected]>
238    
239            * Thuban/UI/exceptiondialog.py (ExceptionDialog.dialog_layout): Improved
240        button string to stronger clearify that Thuban will be closed when hitting
241            the button.
242    
243            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Added docstring.
244            Now for layers without a ShapeStore a corresponding message is given
245            to the user, that this layer has no table to show.
246    
247    2004-04-15  Martin Schulze  <[email protected]>
248    
249            * Extensions/wms/layer.py (WMSLayer.setWMSFormat): Need to
250            recalculate the format for the internal render engine as well.
251    
252            * Extensions/wms/properties.py (wmsProperties): First start for a
253            properties dialog.  It's functional for a first selection of
254            layers, but still has some weired wxWidgets/GTK problems but
255            beautification can be done later.
256    
257            * Extensions/wms/layer.py: Added more documentation
258            (WMSLayer.getFormats): New: Return list of supported image formats
259            by the WMS server
260            (WMSLayer.getLayers): New: Return the list of layer names
261            supported by the WMS server
262            (WMSLayer.getLayerTitle): New: Return the title of the named layer
263            (WMSLayer.getWMSFormat): New: Return the image format that is used
264            for WMS GetMap requests
265            (WMSLayer.setWMSFormat): New: Set the image format that is used
266            for WMS GetMap requests
267            (WMSLayer.__init__): Move away from using only one layer to using
268            a list of layers (unsorted at the moment, though).
269            (WMSLayer.getVisibleLayers): New: Return the list of names for all
270            visible layers
271            (WMSLayer.setVisibleLayers): New: Set the list of names for all
272            visible layers
273    
274            * Extensions/wms/wms.py: Moved the WMS layer into layer.py in
275            order to establish a clean structure.
276    
277            * Extensions/wms/layer.py: Moved the WMS layer into a file on its
278            own in order to establish a clean structure.
279    
280    2004-04-13  Martin Schulze  <[email protected]>
281    
282            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Added
283            support for oldstyle (WMS 1.0 apparently) image format
284            specification.
285    
286            * Extensions/wms/wms.py (WMSLayer.calcFormat): Reduce the list of
287            supported graphic formats back to JPEG and BMP, PNG and others are
288            too *cough* experimental...  Sorry, I meant to filter this out
289            before I committed this part.  This should make the WMS extension
290            run from CVS again.
291            (wms_dialog): Reset an empty URL to None so that the subsequent
292            program can depend on this, since the dialog will indeed return an
293            empty URL, causing another declaration of love by Python.
294    
295            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerBBox):
296            Whenever a native BoundingBox request cannot be fulfilled, check
297            whether the requested SRS is EPSG:3426, in which case return the
298            LatLonBoundingBox values.
299    
300            * Extensions/wms/test/test_parser.py
301            (TestWMSCapabilitiesParser.test_LayerSRS): Added a test for
302            ignoring AUTO:* SRS.
303            (TestWMSCapabilitiesParser.test_LatLonBoundingBoxes_as_bboxes):
304            Added another test method to test whether the LatLonBoundingBox
305            values will be returned if BoundingBox values are requested with
306            SRS set to EPSG:3426.
307    
308            * Extensions/wms/parser.py (WMSCapabilitiesParser.peekLayers):
309            Added rudimentary support for non-EPSG SRS, i.e. ignore them for
310            the moment by placing them into a variable which is currently
311            unused.  Also test whether the EPSG SRS is numerical as it should
312            be and add an error message if it is not.
313    
314            * Extensions/wms/test/sample.xml: Added AUTO:* SRS since they
315            appear in the real world as well.  Since we cannot handle them yet
316            (OGCLib can't either), we will ignore them for the moment.
317    
318            * Extensions/wms/parser.py: Use a variable for denoting the sample
319            filename
320            (WMSCapabilitiesParser.peekLayers): Added support for error
321            messages during grok().  They will be aggregated in an array and
322            may be displayed later.  We may have to add a classification
323            "Warning" and "Error" to this.  That requires more experience,
324            though, since not every error may be lethal.
325    
326            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Raise the
327            ShowTable() dialog/frame when the user attempts to display it
328            while it has been opened before already and not closed again.
329    
330    2004-04-11  Martin Schulze  <[email protected]>
331    
332            * Extensions/wms/infodialog.py: Adjusted the class documentation
333    
334            * Extensions/wms/wms.py (WMSLayer.__init__, WMSLayer.GetMapImg):
335            Switch to using Thuban{Begin,End}BusyCursor instead of the pure
336            wxWidgets variants.
337            (WMSLayer.__init__): The epsg_id variable is named top_srs now.
338    
339            * Extensions/wms/infodialog.py: Added an information dialog that
340            will display various information about the WMS current resource,
341            so that additional information such as the title, the abstract,
342            fees and access constraints can be displayed for the user if they
343            are documented in the WMS XML.
344    
345    2004-04-10  Martin Schulze  <[email protected]>
346    
347            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Adjusted
348            string handling.  It's "foo".lower() and not lower(foo) without
349            lower imported from strings or something.
350    
351            * Extensions/wms/wms.py (WMSLayer): Incorporated WMSCapabilities
352            from capabilities.py and parser.py.  Implement priority list for
353            supported graphics formats, take care of wbmp != bmp.  PNG, TIFF
354            and GIF are supported here, but not yet by main Thuban.  Hence,
355            support for them may be removed later.  Special contribution to
356            usability: get wxWidgets to change the cursor when we're waiting
357            for data from the network so the user won't start to worry.  This
358            causes a redrawing error/warning, though.
359    
360            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Unlink
361            the DOM object.
362    
363    2004-04-01  Martin Schulze  <[email protected]>
364    
365            * Extensions/wms/capabilities.py: Adjusted documentation
366            (WMSCapabilities.__init__): Improved documentation, fixed syntax
367            (WMSCapabilities.saveCapabilities): Only catch IOError when
368            handling files
369            (WMSCapabilities.loadCapabilities): Only catch IOError when
370            handling files
371            __main__: corrected variable naming
372            (WMSCapabilities.fetchCapabilities,loadCapabilities): Make this
373            class a specialisation of WMSCapabilitiesParser as well.  Also
374            execute grok() after loading or fetching capabilities, if that
375            went well, so that subsequent calls can already access the data.
376            (WMSCapabilities.getVersion): Export the used version of the
377            GetCapabilities request, so we can use it for subsequent calls,
378            i.e. for GetMap requests.
379            (WMSCapabilities.fetchCapabilities): Added proper error handling
380            when the GetCapabilities request failed, so that the surrounding
381            program can act accordingly.
382    
383    2004-03-30  Martin Schulze  <[email protected]>
384    
385            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerSRS):
386            Adjusted the getLayerSRS method to return the list of SRSes
387            extracted from <SRS> elements instead of <BoundingBox> elements.
388            Added a bit of documentation as well.
389            (WMSCapabilitiesParser.checkLayerSRS): Removed integrity test
390            since it was only implemented due to a misunderstanding.
391    
392            * Extensions/wms/test/test_parser.py
393            (TestWMSCapabilitiesParser.test_LayerSRS): Adjust the tests to
394            reflect the corrected interpretation of the standard: i.e. a layer
395            does not have to define a BoundingBox for all SRSes it supports.
396            Hence the <SRS></SRS> specification is authoritative, not the list
397            of BoundingBoxes.
398            (TestWMSCapabilitiesParser.test_BoundingBoxes): Added a new test
399            to ensure None is returned for a non-existing SRS.
400            (TestWMSCapabilitiesParser.test_grok): Removed test_grok method
401            since it is not applicable anymore.  Listing more SRSes in <SRS>
402            elements is valid according to the specs.
403    
404    2004-03-26  Bernhard Reiter <[email protected]>
405    
406            * README: Nicer formatting of text. Improved descriptions.
407            Reflected wxWidgets name change.
408            
409            * Thuban/UI/about.py: Extended copyright to 2004 and added
410            information about the thuban-devel mailinglist.
411    
412    2004-03-24  Martin Schulze  <[email protected]>
413    
414            * Extensions/wms/capabilities.py: Renamed the class to contain
415            'WMS', also added a linebreak where required
416    
417            * Extensions/wms/parser.py: Finally added the XML parser for the
418            GetCapabilities response.
419    
420            * Extensions/wms/test/sample.xml: Adjusted the sample file so that
421            <SRS> elements match the <BoundingBox> elements, except for the
422            layer 'beschriftung'.
423    
424            * Extensions/wms/test/test_parser.py: Encode non-ascii strings
425            since Python uses unicode strings internally, otherwise
426            comparisons will fail.  Removed tests for getLayerBBoxSRS() since
427            the SRS will be calculated anyway and this method is obsoleted by
428            getLayerSRS().  Denote SRS as strings and not as cardinal numbers.
429            Move loading the sample file into the setUp method.  Added a test
430            for finding the integrity problem in the sample response.
431            Improved formatting.
432    
433            * Extensions/wms/domutils.py: Added convenience routines for
434            handling of Document Object Model (DOM) nodes.
435    
436            * Extensions/wms/test/test_domutils.py: Added a test for the
437            domutils module
438    
439    2004-03-19  Martin Schulze  <[email protected]>
440    
441            * Extensions/wms/test/test_parser.py (TestWMSCapabilitiesParser):
442            Moved path detection and adding into a module of its own,
443            adjustpath, which exports thubandir as main Thuban directory.
444    
445            * Extensions/wms/test/test_ogclib.py (TestWMSLib): Moved path
446            detection and adding into a module of its own, adjustpath, which
447            exports thubandir as main Thuban directory.  Reorganised the
448            module in order to support the SkipTest feature for Thuban test
449            cases.
450    
451            * Extensions/wms/test/adjustpath.py: Moved path detection and
452            adding into a module of its own.
453    
454    2004-03-18  Martin Schulze  <[email protected]>
455    
456            * Extensions/wms/test/test_parser.py: Added another test for
457            checking whether the WMS XML parser (to be implemented) returns
458            the information we expect.  This requires a sample WMS WML file
459            (sample.xml) which has been extracted from the frida server and
460            "improved" manually.
461    
462            * Extensions/wms/test/test_ogclib.py: Added legacy code to add the
463            main Thuban directory to the path in order to be able to import
464            random modules.  Adjusted the PyOGCLib detection to reuse the
465            information gathered.  Also added a note about the PYTHONPATH
466            environment variable.
467    
468            * Extensions/wms/test/test_ogclib.py: The format specification is
469            a mime-type, not a graphic format, hence image/jpeg wou ld be the
470            proper format and not JPEG.  We'll also have to take care of the
471            encoding of / as %2F.
472    
473    2004-03-16  Martin Schulze  <[email protected]>
474    
475            * Extensions/wms/test/test_ogclib.py: Added a (hopefully)
476            comprehensive test for the getMapURL method, built compare URLs
477            according to the documentation in OGC 01-068r3
478    
479            * Extensions/wms/capabilities.py (WMSCapabilities): Added the
480            class WMSCapabilities to manage capabilites, will incorporate
481            parsing the capabilities response and provide details for other
482            classes.
483    
484    2004-03-12  Bernhard Herzog  <[email protected]>
485    
486            Support views in addition to normal tables in the postgis
487            shapestore
488    
489            * Thuban/Model/postgisdb.py
490            (PostGISShapeStore._fetch_table_information): Add a fallback for
491            the case where the table name is not in the geometry_columns
492            table.  This is usually the case for views.  Also, set
493            self.shapestore here.
494            (PostGISShapeStore.ShapeType): No need to query the database all
495            the time.  The shape type is now determined in
496            _fetch_table_information
497    
498            * test/postgissupport.py (PostgreSQLServer.new_postgis_db)
499            (PostgreSQLServer.get_static_data_db, PostGISDatabase.__init__):
500            New parameter to specify views.
501            (PostGISDatabase.has_data): Also compare the views.  New views
502            parameter
503            (PostGISDatabase.initdb): Create the views.
504            (PostgreSQLServer.get_default_static_data_db): Add the v_landmarks
505            view
506    
507            * test/test_postgis_db.py
508            (TestPostGISShapestorePointFromViews): New.  Test a
509            PostGISShapeStore with a view
510            (TestPostGISShapestorePointOIDAsGIDColumn.setUp): Pass the name of
511            the geometry_column explicitly to test whether that works
512    
513    2004-03-12  Bernhard Herzog  <[email protected]>
514    
515            Final step for explicit id/geometry columns: Loading and saving
516    
517            * Resources/XML/thuban-1.1.dtd: New.  Derived from thuban-1.0.dtd
518            with the following changes:
519            (dbshapesource): Two new attributes id_column and geometry_column
520    
521            * Thuban/Model/save.py (SessionSaver.write): Use the new dtd
522            (SessionSaver.write_session): Use the new namespace
523            (SessionSaver.write_data_containers): Write the new dbshapesource
524            parameters
525    
526            * Thuban/Model/load.py (SessionLoader.__init__): New namespace for
527            the new file format version
528            (SessionLoader.start_dbshapesource): Handle the new db parameters
529    
530            * test/test_save.py: Update to the new dtd and namespace
531            (SaveSessionTest.test_save_postgis): Update the NonConnectionStore
532            mock object to provide a working IDColumn method.
533    
534            * test/test_load_1_0.py: New.  Copy of the test_load.py before
535            today's changes but with the round-trip tests removed.
536    
537            * test/test_load_0_9.py: Update doc-string.
538    
539            * test/test_load.py: Update all .thuban files to the new dtd and
540            namespace.
541            (TestPostGISLayer.file_contents): Add the new dbshapesource
542            paramters
543    
544    2004-03-11  Bernhard Herzog  <[email protected]>
545    
546            Next step for explicit id/geometry columns: User interaction
547    
548            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Rework how
549            the dialog is constructed. Add combo boxes to select id and
550            geometry column.  Rename some instance variables.
551            (ChooseDBTableDialog.GetTable): Return id and geometry column
552            names
553            (ChooseDBTableDialog.OnTableSelect): New. Event handler for
554            selections in the table list
555    
556            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Use id_column
557            and geometry_column
558    
559            * Thuban/Model/session.py (Session.OpenDBShapeStore): Add the new
560            parameters for id_column and geometry column of PostGISShapeStore
561            here as well.
562    
563            * Thuban/Model/postgisdb.py (type_map): Add ROWID psycog type.
564            (_raw_type_map): New. Map raw PostgreSQL type ints to thuban types
565            (PostGISConnection.GeometryTables): Use a better query to
566            determine which relations in the database might be usable for
567            shapestores.  Now supports views as well but is more PostgreSQL
568            specific
569            (PostGISConnection.table_columns): New. Somewhat experimental
570            method to let the db dialogs provide lists of columns to users so
571            that they can select id and geometry columns.
572            (PostGISTable.__init__): The default value of the id_column
573            parameter is now None it still means "gid" effectively, though.
574            (PostGISTable.IDColumn): New introspection method to return a
575            column object for the id column
576            (PostGISShapeStore.GeometryColumn): New introspection method to
577            return a column object for the geometry column
578    
579            * test/test_postgis_db.py
580            (TestPostGISConnection.test_gis_tables_non_empty):
581            Removed. Subsumed by the new:
582            (TestPostGISConnection.test_gis_tables_with_views_and_tables):
583            New. Tes the GeometryTables and table_columns methods with actual
584            tables and views.
585            (PointTests.test_id_column, PointTests.test_geometry_column):
586            New. tests for the new methods.
587            (TestPostGISShapestorePoint.setUp)
588            (TestPostGISShapestorePointSRID.setUp)
589            (TestPostGISShapestorePointExplicitGIDColumn.setUp): Fill the
590            instance variables needed by the new tests
591    
592    2004-03-11  Bernhard Herzog  <[email protected]>
593    
594            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): The row
595            numbers given to ReadValue are ordinals.
596    
597    2004-03-11  Bernhard Herzog  <[email protected]>
598    
599            Elimiate the requirement for PostGIS tables to have a column
600            called "gid".
601    
602            * Thuban/Model/postgisdb.py (PostGISTable.__init__): New parameter
603            id_column to specify which column to use to identify rows.  Also
604            new instance variables id_column and quoted_id_column
605            (PostGISTable.RowIdToOrdinal, PostGISTable.RowOrdinalToId)
606            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue)
607            (PostGISTable.SimpleQuery): Use the id column name provided to the
608            constructor instead of "gid"
609            (PostGISShapeStore.__init__): New parameter id_column analogously
610            to PostGISTable.__init__.  This parameter is simply passed through
611            to the base class constructor
612            (PostGISShapeStore._create_col_from_description): Fix typo in
613            doc-string
614            (PostGISShapeStore.Shape, PostGISShapeStore.AllShapes)
615            (PostGISShapeStore.ShapesInRegion): Use the id column name
616            provided to the constructor instead of "gid"
617    
618            * test/postgissupport.py
619            (PostgreSQLServer.get_default_static_data_db): New static table
620            landmarks_point_id with an id column != "gid.  Update the comments
621            a bit.
622            (skip_if_addgeometrycolumn_does_not_use_quote_ident): Fix typo in
623            doc-
624            (upload_shapefile): New parameter gid_column to use a name other
625            than "gid" for the column to store the shape ids
626    
627            * test/test_postgis_db.py (TableTests): New.  Mixin-class
628            containing all tests previously in TestPostGISTable.  The actual
629            tests are the same but the code is a bit more configurable to
630            allow for different id columns etc.
631            (TestPostGISTable): Derive from TableTests now for the actual
632            tests.
633            (TestPostGISTableExplicitGIDColumn): New. Like TestPostGISTable
634            except that it the landmarks_point_id table to test the id_column
635            parameter
636            (PointTests): Extend the doc-string
637            (TestPostGISShapestorePointExplicitGIDColumn)
638            (TestPostGISShapestorePointOIDAsGIDColumn): New classes derived
639            from PointTests to test the explicit id_column parameter.  One
640            tests with the name of the column holding the shape ids, the other
641            uses PostgreSQL's OID column.  For the latter a number of methods
642            have to be overwritten to make them independent of the actual id
643            values.
644    
645    2004-03-08  Silke Reimer  <[email protected]>
646    
647            Update debian directory:
648    
649            * debian/changelog: Added new version.
650            * deiban/rules: Updated management of patches (with cbds)
651            * debian/control: Added cbds to dependencies
652            * debian/patches/*: New. Adds better support for patches of thuban in
653                            debian
654            * debian/menu: Syntax of menu changed slightly
655            * debian/setup.py.patch: removed because it has been moved to
656                            debian/patechs/setup.py.patch
657            
658    
659    2004-02-26  Bernhard Herzog  <[email protected]>
660    
661            Create the Doc/technotes directory for text files with information
662            for developers
663    
664            * Doc/technotes/README: New. README for the technotes
665    
666            * Doc/technotes/coding_guidelines.txt: New. Coding guidelines for
667            Thuban
668    
669            * Doc/technotes/release_process.txt: New. Used to be
670            HOWTO-Release.  Now slightly adapted to technote formatting style.
671    
672            * HOWTO-Release: Removed.  It's contents are now in
673            Doc/technotes/release_process.txt
674    
675    2004-02-25  Bernhard Herzog  <[email protected]>
676    
677            * libraries/thuban/wxproj.cpp (get_wx_version): New.  Return the
678            version of wxWindows the module was compiled with so we can check
679            that against the wxPython version.
680    
681            * Thuban/version.py (thuban_branch, thuban_release): New variables
682            controlling which and how Thuban versions are shown.  See the
683            comments for details.
684            (verify_versions): Also check that the wx version that wxproj is
685            compiled against matches that of the wxPython we use at runtime
686    
687    2004-02-20  Bernhard Herzog  <[email protected]>
688    
689            * Extensions/wms/wms.py (epsg_code_to_projection): Use
690            get_system_proj_file to read the epsg projections.  The old way
691            depended on the current directory being the top Thuban directory.
692    
693    2004-02-20  Bernhard Herzog  <[email protected]>
694    
695            * Extensions/svgexport/test/test_svgmapwriter.py
696            (TestVirtualDC.test_clippath): Remove a debug print
697    
698    2004-02-20  Bernhard Herzog  <[email protected]>
699    
700            * Extensions/svgexport/__init__.py: New.  Turn
701            Extensions/svgexport into a package.
702    
703            * Extensions/svgexport/svgmapwriter.py: Reorder the imports and
704            doc-string a bit.  The doc-string must come first, otherwise it's
705            not a doc-string.  The __future__ import must be the first thing
706            after the doc-string.  Use only double quotes in doc-strings.
707            Single quotes trip up emacs syntax highlighting if the text
708            contains apostrophes.
709    
710    2004-02-20  Bernhard Herzog  <[email protected]>
711    
712            * Extensions/svgexport/test/__init__.py,
713            Extensions/svgexport/test/test_svgmapwriter.py: New. Initial test
714            suite for svgexport
715    
716            * test/runtests.py (find_test_modules): New. Function with the
717            module finding code from main.
718            (main): Use find_test_modules to figure out the default test
719            modules and take modules from Extensions.svgexport.test too.
720    
721    2004-02-19  Bernhard Herzog  <[email protected]>
722    
723            * Thuban/UI/application.py (ThubanApplication.OnInit): Make sure
724            the mainwindow has a reference to the map of the initial session.
725            This fixes a bug introduced with the fix for RT#2245
726    
727    2004-02-19  Bernhard Herzog  <[email protected]>
728    
729            * Extensions/svgexport/svgsaver.py,
730            Extensions/svgexport/svgmapwriter.py,
731            Extensions/svgexport/maplegend.py: Added again.  This time in the
732            correct place.
733    
734    2004-02-17  Bernhard Herzog  <[email protected]>
735    
736            Fix for RT#2245
737    
738            * Thuban/UI/application.py (ThubanApplication.OnInit): Initialize
739            instance variables before trying to create any windows.  Creating
740            windows can start an event loop if e.g. message boxes are popped
741            up for some reason, and event handlers, especially EVT_UPDATE_UI
742            may want to access things from the application.
743            (ThubanApplication.maps_changed): The mainwindow may not have been
744            created yet, so check whether it has been created before calling
745            its methods
746    
747            * Thuban/UI/view.py (MapCanvas.OnIdle): Only try to redraw if we
748            have a map
749    
750    2004-02-17  Bernhard Herzog  <[email protected]>
751    
752            * test/test_svgmapwriter.py, Extensions/svgsaver.py,
753            Extensions/svgmapwriter.py, Extensions/maplegend.py,
754            extensions/svgexport/svgsaver.py,
755            extensions/svgexport/svgmapwriter.py,
756            extensions/svgexport/maplegend.py: Removed.  These files were in
757            the wrong places or didn't work at all.
758    
759    2004-02-16  Bernhard Herzog  <[email protected]>
760    
761            * Thuban/UI/view.py (MapCanvas.Export): Remove accidentally added
762            line
763    
764    2004-02-16  Bernhard Herzog  <[email protected]>
765    
766            * Thuban/UI/view.py (MapCanvas.Export): Avoid UnboundLocalError.
767    
768    2004-02-15  Markus Rechtien  <[email protected]>
769            
770            * Extensions/svgexport/svgmapwriter.py: New. Adds the capability
771            to write a session to a file in SVG format.
772            * Extensions/svgexport/svgsaver.py: New. Uses svgmapwriter.py
773            to write a SVG map of a session.
774            * Extensions/svgexport/maplegend: New. Writes a basic maplegend
775            in SVG format for the current session.
776    
777    2004-02-13  Bernhard Herzog  <[email protected]>
778    
779            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): When the layer
780            can't be created, return immediately after displaying the error
781            message.
782    
783    2004-02-11  Bernhard Herzog  <[email protected]>
784    
785            Handle postgis tables with more than one geometry column.
786    
787            * Thuban/Model/postgisdb.py
788            (PostGISTable._fetch_table_information): Delegate the creation of
789            column objects to a different method so that we can extend that in
790            derived classes
791            (PostGISTable._create_col_from_description): New. Column object
792            creation part of _fetch_table_information
793            (PostGISShapeStore._create_col_from_description): New. Extend
794            inherited method to handle geometry columns
795            (PostGISShapeStore.__init__): New parameter geometry_column to
796            specify which geometry column to use.  Optional but mandatory for
797            tables with more than one geometry column
798            (PostGISShapeStore._fetch_table_information): Also use the name of
799            the geometry column when looking for the srid
800            (PostGISShapeStore.ShapeType): Also use the name of the geometry
801            column when looking for the shape type
802    
803            * test/test_save.py (SaveSessionTest.test_save_postgis): Adapt
804            NonConnectionStore to changes in the PostGISShapeStore
805    
806            * test/test_postgis_db.py
807            (TestPostGISSpecialCases.test_shapestore_two_geom_cols): Test
808            PostGISShapeStore with tables having two geometry columns.
809    
810    2004-02-10  Bernhard Herzog  <[email protected]>
811    
812            Fix some postgis problems.  What remains to be done is real
813            handling of SRIDs as they affect how reprojection is done
814    
815            * Thuban/Model/postgisdb.py (quote_identifier): Fix typo in
816            doc-string
817            (PostGISShapeStore._fetch_table_information): New. Extend
818            inherited method to retrieve srid
819            (PostGISShapeStore.BoundingBox): Handle tables without data.
820            extent yields NULL for those
821            (PostGISShapeStore.ShapesInRegion): Use the srid of the table.
822    
823            * test/test_postgis_db.py
824            (TestPostGISSpecialCases.test_shapestore_empty_table): New test
825            for the special case of a table without any data
826            (TestPostGISShapestorePointSRID): New class with tests for a table
827            that uses srids
828            (PolygonTests): Fix a doc-string typo
829    
830            * test/postgissupport.py (PostGISDatabase.__init__): New parameter
831            reference_systems with a specification of spacial reference
832            systems to create in the new db.
833            (PostgreSQLServer.new_postgis_db)
834            (PostgreSQLServer.get_static_data_db): New parameter
835            reference_systems to be passed through ultimately to
836            PostGISDatabase.  In new_postgis_db also check whether an existing
837            db already has the right srids
838            (PostgreSQLServer.get_default_static_data_db): Add srids and a
839            table that uses srids
840            (PostGISDatabase.initdb): Create the entries for the reference
841            systems
842            (PostGISDatabase.has_data): Add reference_systems parameter to
843            check for those too
844            (upload_shapefile): New parameter srid to create tables with a
845            specific srid
846    
847    2004-02-06  Frank Koormann  <[email protected]>
848    
849            * po/pt_BR.po: Fixed charset
850    
851    2004-02-05  Frank Koormann  <[email protected]>
852    
853            * po/pt_BR.po: Fixed format string for error message, missing %s
854            added (Thuban/UI/application.py:273)
855    
856    2004-02-03  Frank Koormann  <[email protected]>
857            
858            First version of Portuguese (Brazilian) translation
859    
860            * po/pt_BR.po: New, translation of pot (2004-01-15 16:07+0300) for
861            Brazilian Portuguese by Eduardo Patto Kanegae.
862    
863            * Thuban/UI/about.py (About.__init.py__): Added Eduardo to the list of
864            translators.
865    
866    
867    2004-01-22  Frank Koormann  <[email protected]>
868    
869            * Doc/manual/thuban-manual.xml: Added section on installation of
870            Thuban under Win32 systems. Fixed image path references in the postgis
871            section. Some minor source formattings.
872    
873    2004-01-21  Frank Koormann  <[email protected]>
874    
875            Make Thuban remember path selections (at least for one application run).
876    
877            * Thuban/UI/application.py (Application.OnInit): Initialize path as a
878            attribute of application object. Path is a dictionary of
879            strings, currently with the items "data" and "projection".  
880            (Application.SetPath): New, stores path for the specified item.
881            (Application.Path): New, return path for the specified item.
882    
883            * Thuban/UI/mainwindow.py
884            (MainWindow.OpenSession, MainWindow.SaveSessionAs,
885            MainWindow.AddLayer, MainWindow.AddRasterLayer,
886            MainWindow.TableOpen): Access "data" path information of the
887            application.
888            
889            * Thuban/UI/projdialog.py (ProjFrame._OnImport, ProjFrame._OnExport):
890            Access "projection" path information of the application.
891    
892    2004-01-05  Bernhard Herzog  <[email protected]>
893    
894            * po/ru.po: Updated translations from Alex Shevlakov
895    
896    2004-01-05  Bernhard Herzog  <[email protected]>
897    
898            * po/Makefile, po/README: Move the description of how to generate
899            the translation statistics to the README.
900    
901    2003-12-23  Bernhard Herzog  <[email protected]>
902    
903            * NEWS: Update for 1.0.0
904    
905            * po/it.po: Another update from Maurizio Napolitano
906    
907    2003-12-23  Bernhard Herzog  <[email protected]>
908    
909            * po/it.po: Updated translation from Maurizio Napolitano
910    
911    2003-12-23  Bernhard Herzog  <[email protected]>
912    
913            * Thuban/UI/join.py (JoinDialog.__init__): Mark one more string
914            for translation
915    
916            * Thuban/UI/mainwindow.py (MainWindow.TableRename)
917            (MainWindow.RenameMap, MainWindow.RenameLayer): Mark some more
918            strings for translation
919    
920            * po/de.po: Update with the newly marked strings.
921    
922    2003-12-22  Bernhard Herzog  <[email protected]>
923    
924            * HOWTO-Release: Fix the places where version numbers have to be
925            updated
926    
927    2003-12-22  Bernhard Herzog  <[email protected]>
928    
929            * setup.py (setup call): 1.0.0, yeah!
930    
931            * Thuban/version.py (longversion): 1.0.0, yeah!
932    
933            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
934            1.0.0 namespace too
935    
936            * Thuban/Model/save.py (SessionSaver.write_session): Save with
937            1.0.0 namespace
938    
939            * test/test_load.py (LoadSessionTest.dtd)
940            (TestSingleLayer.file_contents)
941            (TestNonAsciiColumnName.file_contents)
942            (TestLayerVisibility.file_contents)
943            (TestClassification.file_contents, TestLabels.file_contents)
944            (TestLayerProjection.file_contents)
945            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
946            (TestLabelLayer.file_contents, TestPostGISLayer.file_contents)
947            (TestPostGISLayerPassword.file_contents)
948            (TestLoadError.file_contents, TestLoadError.test): Update for
949            1.0.0 namespace
950    
951            * test/test_save.py (SaveSessionTest.dtd)
952            (SaveSessionTest.testEmptySession)
953            (SaveSessionTest.testSingleLayer)
954            (SaveSessionTest.testLayerProjection)
955            (SaveSessionTest.testRasterLayer)
956            (SaveSessionTest.testClassifiedLayer)
957            (SaveSessionTest.test_dbf_table)
958            (SaveSessionTest.test_joined_table)
959            (SaveSessionTest.test_save_postgis): Update for 1.0.0 namespace
960    
961    2003-12-22  Bernhard Herzog  <[email protected]>
962    
963            * Thuban/Model/load.py (SessionLoader.start_label): Make sure the
964            alignment flags are byte strings not unicode and that they have
965            valid values
966    
967            * test/test_load.py (TestLabelLayer): New. Test loading (and
968            indirectly saving) of maps with labels.
969    
970    2003-12-22  Bernhard Herzog  <[email protected]>
971    
972            * Thuban/UI/tableview.py (TableGrid.OnDestroy)
973            (TableGrid.__init__): Handle EVT_WINDOW_DESTROY in the grid to
974            unsubscribe all subscribers.
975            (LayerTableFrame.OnDestroy): Do not unsubscribe any messages from
976            self.grid since it may already have been destroyed.
977            Fixes RT #2256
978    
979    2003-12-19  Bernhard Herzog  <[email protected]>
980    
981            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
982    
983    2003-12-16  Bernhard Herzog  <[email protected]>
984            
985            * debian/bitmappath.patch, debian/setup.py.patch:
986                    added to ensure compliance with FHS for debian
987            * debian/rules, debian/changelog:
988                added patches in rules to ensure compliance with FHS for debian
989    
990    2003-12-16  Bernhard Herzog  <[email protected]>
991    
992            * po/Makefile (mo): Make the output a bit nicer so that it prints
993            statistics about the translations. Add a comment how produce even
994            nicer statistics with sed.
995    
996    2003-12-09  Frank Koormann   <[email protected]>
997    
998            * Resources/Projections/defaults.proj:
999            French projection sample with correct accents (UNICODE).
1000    
1001    2003-12-05  Bernhard Herzog  <[email protected]>
1002    
1003            * MANIFEST.in: Add the devtools directory
1004    
1005            * setup.py (setup call): Use license instead of licence. This
1006            silences a deprecation warning on Python 2.3
1007    
1008    2003-12-05  Frank Koormann   <[email protected]>
1009    
1010            Documentation synced with 1.0rc1
1011    
1012            * Doc/manual/thuban-manual.xml:
1013            Minor formatting changes and references to database layers .
1014            Introduction.Internationalization: New section on i18n.
1015            MapManagement.AddingandRemovingLayers: Added item on database layers.  
1016            MapManagement.TheLegend: Added section and screenshot on popup menu.
1017            ProjectionManagement: Updated screenshot and sentence on EPSG.
1018            Appendix.SupportedDataSources: Added PostGIS.
1019            Appendix.WorkingwithPostGIS: New section.
1020    
1021            * Doc/manual/images/6_projection.png: Updated screenshot including
1022            EPSG checkboxes.
1023    
1024            * Doc/manual/images/3_5_popup_menu.png: New, popup menu screenshot.
1025    
1026            * Doc/manual/images/app_postgis_add_layer.png,
1027            Doc/manual/images/app_postgis_db_add.png,
1028            Doc/manual/images/app_postgis_db_management.png:
1029            New screenshots focussing on database layers
1030    
1031    2003-12-05  Frank Koormann   <[email protected]>
1032    
1033            * Thuban/UI/projdialog.py (load_user_proj): If user.proj is missing
1034            write warning to stderr instead of rising a warning dialog
1035    
1036    2003-12-03  Bernhard Herzog  <[email protected]>
1037    
1038            Fix for RT #2243
1039    
1040            * Thuban/UI/mainwindow.py (MainWindow.has_selected_shape_layer):
1041            New. Like has_selected_layer but for shape layers only
1042            (_has_selected_shape_layer): New. Like _has_selected_layer but for
1043            shape layers only
1044            (layer_show_table command, layer_jointable command): Use these
1045            commands should only be available for shape layers
1046    
1047    2003-12-03  Bernhard Herzog  <[email protected]>
1048    
1049            * Thuban/UI/mainwindow.py (MainWindow.Unsubscribe): Deal with
1050            publishers that are wx objects and may have been destroyed by wx
1051            already. Fixes RT #2242.
1052    
1053    2003-12-03  Bernhard Herzog  <[email protected]>
1054    
1055            * po/ru.po: Updates from Alex Shevlakov
1056    
1057    2003-12-03  Silke Reimer <silkeintevation.de>
1058    
1059            * debian/control, debian/changelog: Added gdal-support to
1060                    debian package, updated to new thuban version
1061    
1062    
1063    2003-12-03  Bernhard Herzog  <[email protected]>
1064    
1065            * Thuban/Lib/version.py: New. Module for version number
1066            manipulations. The version of make_tuple here also deals better
1067            with more unusual version number strings, such as e.g.
1068            "1.2+cvs20031111"
1069    
1070            * Thuban/version.py (make_tuple): Removed. It's now in
1071            Thuban.Lib.version. Use that implementation instead.
1072    
1073            * test/test_lib_version.py: New. Tests for Thuban/Lib/version.py
1074    
1075    2003-12-02  Bernhard Herzog  <[email protected]>
1076    
1077            * MANIFEST.in: Add debian files
1078    
1079            * setup.py (setup call): Add packages for the Extensions so that
1080            they're installed too
1081            (data_files): Add READMEs and sample data from some Extensions
1082    
1083            * NEWS: Add note about the extensions in binary packages
1084    
1085    2003-12-02  Bernhard Herzog  <[email protected]>
1086    
1087            * Thuban/Model/save.py (SessionSaver.write_session): Save files
1088            with the thuban-1.0rc1
1089    
1090            * Thuban/Model/load.py (SessionLoader.__init__): Recognize the
1091            thuban-1.0rc1 namespace too
1092    
1093            * test/test_save.py (SaveSessionTest.dtd)
1094            (SaveSessionTest.testEmptySession)
1095            (SaveSessionTest.testSingleLayer)
1096            (SaveSessionTest.testLayerProjection)
1097            (SaveSessionTest.testRasterLayer)
1098            (SaveSessionTest.testClassifiedLayer)
1099            (SaveSessionTest.test_dbf_table)
1100            (SaveSessionTest.test_joined_table)
1101            (SaveSessionTest.test_save_postgis): Update to thuban-1.0rc1
1102            namespace
1103    
1104            * test/test_load.py (LoadSessionTest.dtd): Update to thuban-1.0rc1
1105            namespace
1106            (TestSingleLayer.file_contents)
1107            (TestNonAsciiColumnName.file_contents)
1108            (TestLayerVisibility.file_contents)
1109            (TestClassification.file_contents, TestLabels.file_contents)
1110            (TestLayerProjection.file_contents)
1111            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
1112            (TestPostGISLayer.file_contents)
1113            (TestPostGISLayerPassword.file_contents)
1114            (TestLoadError.file_contents, TestLoadError.test): Update to
1115            thuban-1.0rc1 namespace
1116    
1117    2003-12-01  Bernhard Herzog  <[email protected]>
1118    
1119            * setup.py (proj4_prefix, wx_prefix, gdal_prefix): Fix these for
1120            nt to better match Intevation's current w32 setup
1121    
1122            * HOWTO-Release: Add note about updating MANIFEST.in
1123    
1124            * MANIFEST.in: Add the Extensions
1125    
1126            * NEWS: Update for 1.0rc1
1127    
1128    2003-12-01  Bernhard Herzog  <[email protected]>
1129    
1130            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Change the wild
1131            cards for the dialog so that shapefiles ending in all uppercase
1132            SHP are listed too
1133    
1134    2003-11-28  Bernhard Herzog  <[email protected]>
1135    
1136            * Thuban/version.py (longversion): Update to 1.0rc1
1137    
1138            * setup.py (setup call): Update version to 1.0rc1. Use the
1139            [email protected] email address as author email instead of my
1140            personal one.
1141    
1142    2003-11-28  Bernhard Herzog  <[email protected]>
1143    
1144            * po/de.po: Update german translation.
1145    
1146    2003-11-28  Bernhard Herzog  <[email protected]>
1147    
1148            Unify the filenames stored in .thuban files so that the .thuban
1149            files are more platform independend
1150    
1151            * Thuban/Model/save.py (unify_filename): New. Unify filenames so
1152            that they can be used on both windows and unix
1153            (SessionSaver.prepare_filename): New. Handle all filename
1154            transformations for filenames stored in the thuban file
1155            (SessionSaver.write_data_containers, SessionSaver.write_layer):
1156            Use prepare_filename
1157    
1158            * test/test_save.py (SaveSessionTest.testSingleLayer)
1159            (SaveSessionTest.testLayerProjection)
1160            (SaveSessionTest.testRasterLayer)
1161            (SaveSessionTest.testClassifiedLayer)
1162            (SaveSessionTest.test_dbf_table)
1163            (SaveSessionTest.test_joined_table): Filenames are always stored
1164            with slashes on all currently supported platforms so adapt all
1165            tests to this
1166    
1167            * test/test_load.py (LoadSessionTest.filenames): With the new
1168            filename scheme the filenames in the tests should be
1169            understandable on all currently supported platforms so we turn
1170            this into an empty list because we don't have to normalize them
1171            anymore
1172    
1173    2003-11-28  Bernhard Herzog  <[email protected]>
1174    
1175            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
1176            Add the ellipsoid to the projection since some Proj versions
1177            complain if it's missing.
1178    
1179    2003-11-27  Bernhard Herzog  <[email protected]>
1180    
1181            Corect some bounding box projection problems
1182    
1183            * Thuban/Model/proj.py (Projection.InverseBBox): New. Inverse
1184            version of ForwardBBox
1185            (Projection._transform_bbox): New. common implementation of
1186            ForwardBBox and InverseBBox
1187            (Projection.ForwardBBox): Use _transform_bbox.
1188    
1189            * test/test_proj.py (TestProjection.test): Add test for
1190            InverseBBox
1191    
1192            * Thuban/Model/layer.py (Layer.LatLongBoundingBox)
1193            (Layer.ShapesBoundingBox, RasterLayer.LatLongBoundingBox): Use the
1194            new InverseBBox method to determine the unprojected bounding box
1195            (Layer.ShapesInRegion): Use the ForwardBBox method to project the
1196            bbox.
1197    
1198            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
1199            Removed.
1200            (TestLayer.test_arc_layer_with_projection): New. This test is
1201            better able to test whether bounding boxes are projected correctly
1202            than test_point_layer_with_projection
1203    
1204            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Use
1205            InverseBBox to unproject bboxes
1206    
1207    2003-11-25  Bernhard Herzog  <[email protected]>
1208    
1209            * Thuban/UI/about.py (About.__init__): Make sure we have ASCII
1210            source code.
1211    
1212    2003-11-25  Bernhard Herzog  <[email protected]>
1213    
1214            * Thuban/Model/layer.py (Layer.__getattr__): Removed. It was only
1215            there for backwards compatibility and all code relying on that
1216            should have been updated by now.
1217    
1218    2003-11-25  Bernhard Herzog  <[email protected]>
1219    
1220            * test/test_load.py (TestClassification.test): Add the missing
1221            round trip test.
1222            (TestClassification.file_contents): Update to the newest file
1223            format
1224    
1225    2003-11-25  Bernhard Herzog  <[email protected]>
1226    
1227            Add very experimental (and possibly dangerous) extension to draw
1228            polygons:
1229    
1230            * Extensions/drawshape/README: New. Brief installation
1231            instructions
1232    
1233            * Extensions/drawshape/drawshape.py: New. Implementation of the
1234            drawshape extensions
1235    
1236            * Extensions/drawshape/patch.diff: Patch to apply before the
1237            extension can be used.
1238    
1239  2003-11-24  Bernhard Herzog  <[email protected]>  2003-11-24  Bernhard Herzog  <[email protected]>
1240    
1241          * Thuban/Model/data.py (ShapefileStore._open_shapefile)          * Thuban/Model/data.py (ShapefileStore._open_shapefile)
# Line 3654  Line 4892 
4892          Fix problem of hidden properties dialog under windows after double          Fix problem of hidden properties dialog under windows after double
4893          click on layer tree:          click on layer tree:
4894          The tree control always gets an Expanded / Collapsed event after          The tree control always gets an Expanded / Collapsed event after
4895          the ItemActivated  on double click, which raises the main window again.         We add a second ItemActivated event to the queue, which simply          the ItemActivated  on double click, which raises the main window again.
4896            We add a second ItemActivated event to the queue, which simply
4897          raises the already displayed window.          raises the already displayed window.
4898    
4899          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable

Legend:
Removed from v.1973  
changed lines
  Added in v.2250

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26