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

Legend:
Removed from v.1965  
changed lines
  Added in v.2242

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26