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

Legend:
Removed from v.1979  
changed lines
  Added in v.2240

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26