/[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 2045 by bh, Tue Dec 23 13:57:21 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]>  2003-12-23  Bernhard Herzog  <[email protected]>
859    
860          * NEWS: Update for 1.0.0          * NEWS: Update for 1.0.0
# Line 3992  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.2045  
changed lines
  Added in v.2240

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26