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

Legend:
Removed from v.1939  
changed lines
  Added in v.2217

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26