/[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 2085 by bh, Fri Feb 20 15:49:43 2004 UTC revision 2196 by frank, Thu Apr 22 17:11:54 2004 UTC
# Line 1  Line 1 
1    2004-04-22  Frank Koormann  <frank@intevation.de>
2    
3            New Extension to dump bounding boxes of all shapes of the selected
4            layer. An optional column can be specified to group the objects,
5            in this case the bounding box is a union of the separate boxes.
6            Dump can be displayed in a ScrolledMessageDialog or written to file.
7            The Extension is simply a combination of available and well tested
8            Thuban functionality.
9    
10            * Extensions/bboxdump/__init__.py: New: Init to make this
11            directory a package.
12    
13            * Extensions/bboxdump/bboxdump.py: New: Dump bounding boxes of
14            all shapes of the selected layer.
15    
16    2004-04-22  Jan-Oliver Wagner <jan@intevation.de>
17    
18            * Thuban/UI/classgen.py (GenUniquePanel.__init__): Fixed two
19            strings to be i18n now.
20    
21    2004-04-18  Jan-Oliver Wagner <jan@intevation.de>
22    
23            Changing popup menu of legend from direct building
24            to using the Menu construction as used for the mainwindow.
25    
26            * Thuban/UI/mainwindow.py: New method commands: layer_to_top,
27            layer_to_bottom, layer_visibility
28            (MainWindow.LayerToTop): New. Put current layer to the top.
29            (MainWindow.LayerToBottom): New. Put current layer to bottom.
30            (MainWindow.HideLayer, MainWindow.ShowLayer, _has_visible_map):
31            Replace 1,0 by True, False.
32            (MainWindow.ToggleLayerVisibility): New. Toggle visibility of
33            current layer.
34            (MainWindow.LayerShowTable): Removed raising of dialog.
35            (_has_selected_layer_visible): New. Support function.
36    
37            * Thuban/UI/legend.py: ID_POP_xxx: removed.
38            (LegendPanel.__init__): Removed EVT_MENU bindings.
39            (LegendTree._OnRightClick): Replace direct creation of
40            menu via wx Classes by applying the menu definition
41            as of Menu class of menu.py.
42            
43    2004-04-16  Jan-Oliver Wagner <jan@intevation.de>
44    
45            * Thuban/UI/exceptiondialog.py (ExceptionDialog.dialog_layout): Improved
46        button string to stronger clearify that Thuban will be closed when hitting
47            the button.
48    
49            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Added docstring.
50            Now for layers without a ShapeStore a corresponding message is given
51            to the user, that this layer has no table to show.
52    
53    2004-04-15  Martin Schulze  <joey@infodrom.org>
54    
55            * Extensions/wms/layer.py (WMSLayer.setWMSFormat): Need to
56            recalculate the format for the internal render engine as well.
57    
58            * Extensions/wms/properties.py (wmsProperties): First start for a
59            properties dialog.  It's functional for a first selection of
60            layers, but still has some weired wxWidgets/GTK problems but
61            beautification can be done later.
62    
63            * Extensions/wms/layer.py: Added more documentation
64            (WMSLayer.getFormats): New: Return list of supported image formats
65            by the WMS server
66            (WMSLayer.getLayers): New: Return the list of layer names
67            supported by the WMS server
68            (WMSLayer.getLayerTitle): New: Return the title of the named layer
69            (WMSLayer.getWMSFormat): New: Return the image format that is used
70            for WMS GetMap requests
71            (WMSLayer.setWMSFormat): New: Set the image format that is used
72            for WMS GetMap requests
73            (WMSLayer.__init__): Move away from using only one layer to using
74            a list of layers (unsorted at the moment, though).
75            (WMSLayer.getVisibleLayers): New: Return the list of names for all
76            visible layers
77            (WMSLayer.setVisibleLayers): New: Set the list of names for all
78            visible layers
79    
80            * Extensions/wms/wms.py: Moved the WMS layer into layer.py in
81            order to establish a clean structure.
82    
83            * Extensions/wms/layer.py: Moved the WMS layer into a file on its
84            own in order to establish a clean structure.
85    
86    2004-04-13  Martin Schulze  <joey@infodrom.org>
87    
88            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Added
89            support for oldstyle (WMS 1.0 apparently) image format
90            specification.
91    
92            * Extensions/wms/wms.py (WMSLayer.calcFormat): Reduce the list of
93            supported graphic formats back to JPEG and BMP, PNG and others are
94            too *cough* experimental...  Sorry, I meant to filter this out
95            before I committed this part.  This should make the WMS extension
96            run from CVS again.
97            (wms_dialog): Reset an empty URL to None so that the subsequent
98            program can depend on this, since the dialog will indeed return an
99            empty URL, causing another declaration of love by Python.
100    
101            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerBBox):
102            Whenever a native BoundingBox request cannot be fulfilled, check
103            whether the requested SRS is EPSG:3426, in which case return the
104            LatLonBoundingBox values.
105    
106            * Extensions/wms/test/test_parser.py
107            (TestWMSCapabilitiesParser.test_LayerSRS): Added a test for
108            ignoring AUTO:* SRS.
109            (TestWMSCapabilitiesParser.test_LatLonBoundingBoxes_as_bboxes):
110            Added another test method to test whether the LatLonBoundingBox
111            values will be returned if BoundingBox values are requested with
112            SRS set to EPSG:3426.
113    
114            * Extensions/wms/parser.py (WMSCapabilitiesParser.peekLayers):
115            Added rudimentary support for non-EPSG SRS, i.e. ignore them for
116            the moment by placing them into a variable which is currently
117            unused.  Also test whether the EPSG SRS is numerical as it should
118            be and add an error message if it is not.
119    
120            * Extensions/wms/test/sample.xml: Added AUTO:* SRS since they
121            appear in the real world as well.  Since we cannot handle them yet
122            (OGCLib can't either), we will ignore them for the moment.
123    
124            * Extensions/wms/parser.py: Use a variable for denoting the sample
125            filename
126            (WMSCapabilitiesParser.peekLayers): Added support for error
127            messages during grok().  They will be aggregated in an array and
128            may be displayed later.  We may have to add a classification
129            "Warning" and "Error" to this.  That requires more experience,
130            though, since not every error may be lethal.
131    
132            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Raise the
133            ShowTable() dialog/frame when the user attempts to display it
134            while it has been opened before already and not closed again.
135    
136    2004-04-11  Martin Schulze  <joey@infodrom.org>
137    
138            * Extensions/wms/infodialog.py: Adjusted the class documentation
139    
140            * Extensions/wms/wms.py (WMSLayer.__init__, WMSLayer.GetMapImg):
141            Switch to using Thuban{Begin,End}BusyCursor instead of the pure
142            wxWidgets variants.
143            (WMSLayer.__init__): The epsg_id variable is named top_srs now.
144    
145            * Extensions/wms/infodialog.py: Added an information dialog that
146            will display various information about the WMS current resource,
147            so that additional information such as the title, the abstract,
148            fees and access constraints can be displayed for the user if they
149            are documented in the WMS XML.
150    
151    2004-04-10  Martin Schulze  <joey@infodrom.org>
152    
153            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Adjusted
154            string handling.  It's "foo".lower() and not lower(foo) without
155            lower imported from strings or something.
156    
157            * Extensions/wms/wms.py (WMSLayer): Incorporated WMSCapabilities
158            from capabilities.py and parser.py.  Implement priority list for
159            supported graphics formats, take care of wbmp != bmp.  PNG, TIFF
160            and GIF are supported here, but not yet by main Thuban.  Hence,
161            support for them may be removed later.  Special contribution to
162            usability: get wxWidgets to change the cursor when we're waiting
163            for data from the network so the user won't start to worry.  This
164            causes a redrawing error/warning, though.
165    
166            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Unlink
167            the DOM object.
168    
169    2004-04-01  Martin Schulze  <joey@infodrom.org>
170    
171            * Extensions/wms/capabilities.py: Adjusted documentation
172            (WMSCapabilities.__init__): Improved documentation, fixed syntax
173            (WMSCapabilities.saveCapabilities): Only catch IOError when
174            handling files
175            (WMSCapabilities.loadCapabilities): Only catch IOError when
176            handling files
177            __main__: corrected variable naming
178            (WMSCapabilities.fetchCapabilities,loadCapabilities): Make this
179            class a specialisation of WMSCapabilitiesParser as well.  Also
180            execute grok() after loading or fetching capabilities, if that
181            went well, so that subsequent calls can already access the data.
182            (WMSCapabilities.getVersion): Export the used version of the
183            GetCapabilities request, so we can use it for subsequent calls,
184            i.e. for GetMap requests.
185            (WMSCapabilities.fetchCapabilities): Added proper error handling
186            when the GetCapabilities request failed, so that the surrounding
187            program can act accordingly.
188    
189    2004-03-30  Martin Schulze  <joey@infodrom.org>
190    
191            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerSRS):
192            Adjusted the getLayerSRS method to return the list of SRSes
193            extracted from <SRS> elements instead of <BoundingBox> elements.
194            Added a bit of documentation as well.
195            (WMSCapabilitiesParser.checkLayerSRS): Removed integrity test
196            since it was only implemented due to a misunderstanding.
197    
198            * Extensions/wms/test/test_parser.py
199            (TestWMSCapabilitiesParser.test_LayerSRS): Adjust the tests to
200            reflect the corrected interpretation of the standard: i.e. a layer
201            does not have to define a BoundingBox for all SRSes it supports.
202            Hence the <SRS></SRS> specification is authoritative, not the list
203            of BoundingBoxes.
204            (TestWMSCapabilitiesParser.test_BoundingBoxes): Added a new test
205            to ensure None is returned for a non-existing SRS.
206            (TestWMSCapabilitiesParser.test_grok): Removed test_grok method
207            since it is not applicable anymore.  Listing more SRSes in <SRS>
208            elements is valid according to the specs.
209    
210    2004-03-26  Bernhard Reiter <bernhard@intevation.de>
211    
212            * README: Nicer formatting of text. Improved descriptions.
213            Reflected wxWidgets name change.
214            
215            * Thuban/UI/about.py: Extended copyright to 2004 and added
216            information about the thuban-devel mailinglist.
217    
218    2004-03-24  Martin Schulze  <joey@infodrom.org>
219    
220            * Extensions/wms/capabilities.py: Renamed the class to contain
221            'WMS', also added a linebreak where required
222    
223            * Extensions/wms/parser.py: Finally added the XML parser for the
224            GetCapabilities response.
225    
226            * Extensions/wms/test/sample.xml: Adjusted the sample file so that
227            <SRS> elements match the <BoundingBox> elements, except for the
228            layer 'beschriftung'.
229    
230            * Extensions/wms/test/test_parser.py: Encode non-ascii strings
231            since Python uses unicode strings internally, otherwise
232            comparisons will fail.  Removed tests for getLayerBBoxSRS() since
233            the SRS will be calculated anyway and this method is obsoleted by
234            getLayerSRS().  Denote SRS as strings and not as cardinal numbers.
235            Move loading the sample file into the setUp method.  Added a test
236            for finding the integrity problem in the sample response.
237            Improved formatting.
238    
239            * Extensions/wms/domutils.py: Added convenience routines for
240            handling of Document Object Model (DOM) nodes.
241    
242            * Extensions/wms/test/test_domutils.py: Added a test for the
243            domutils module
244    
245    2004-03-19  Martin Schulze  <joey@infodrom.org>
246    
247            * Extensions/wms/test/test_parser.py (TestWMSCapabilitiesParser):
248            Moved path detection and adding into a module of its own,
249            adjustpath, which exports thubandir as main Thuban directory.
250    
251            * Extensions/wms/test/test_ogclib.py (TestWMSLib): Moved path
252            detection and adding into a module of its own, adjustpath, which
253            exports thubandir as main Thuban directory.  Reorganised the
254            module in order to support the SkipTest feature for Thuban test
255            cases.
256    
257            * Extensions/wms/test/adjustpath.py: Moved path detection and
258            adding into a module of its own.
259    
260    2004-03-18  Martin Schulze  <joey@infodrom.org>
261    
262            * Extensions/wms/test/test_parser.py: Added another test for
263            checking whether the WMS XML parser (to be implemented) returns
264            the information we expect.  This requires a sample WMS WML file
265            (sample.xml) which has been extracted from the frida server and
266            "improved" manually.
267    
268            * Extensions/wms/test/test_ogclib.py: Added legacy code to add the
269            main Thuban directory to the path in order to be able to import
270            random modules.  Adjusted the PyOGCLib detection to reuse the
271            information gathered.  Also added a note about the PYTHONPATH
272            environment variable.
273    
274            * Extensions/wms/test/test_ogclib.py: The format specification is
275            a mime-type, not a graphic format, hence image/jpeg wou ld be the
276            proper format and not JPEG.  We'll also have to take care of the
277            encoding of / as %2F.
278    
279    2004-03-16  Martin Schulze  <joey@infodrom.org>
280    
281            * Extensions/wms/test/test_ogclib.py: Added a (hopefully)
282            comprehensive test for the getMapURL method, built compare URLs
283            according to the documentation in OGC 01-068r3
284    
285            * Extensions/wms/capabilities.py (WMSCapabilities): Added the
286            class WMSCapabilities to manage capabilites, will incorporate
287            parsing the capabilities response and provide details for other
288            classes.
289    
290    2004-03-12  Bernhard Herzog  <bh@intevation.de>
291    
292            Support views in addition to normal tables in the postgis
293            shapestore
294    
295            * Thuban/Model/postgisdb.py
296            (PostGISShapeStore._fetch_table_information): Add a fallback for
297            the case where the table name is not in the geometry_columns
298            table.  This is usually the case for views.  Also, set
299            self.shapestore here.
300            (PostGISShapeStore.ShapeType): No need to query the database all
301            the time.  The shape type is now determined in
302            _fetch_table_information
303    
304            * test/postgissupport.py (PostgreSQLServer.new_postgis_db)
305            (PostgreSQLServer.get_static_data_db, PostGISDatabase.__init__):
306            New parameter to specify views.
307            (PostGISDatabase.has_data): Also compare the views.  New views
308            parameter
309            (PostGISDatabase.initdb): Create the views.
310            (PostgreSQLServer.get_default_static_data_db): Add the v_landmarks
311            view
312    
313            * test/test_postgis_db.py
314            (TestPostGISShapestorePointFromViews): New.  Test a
315            PostGISShapeStore with a view
316            (TestPostGISShapestorePointOIDAsGIDColumn.setUp): Pass the name of
317            the geometry_column explicitly to test whether that works
318    
319    2004-03-12  Bernhard Herzog  <bh@intevation.de>
320    
321            Final step for explicit id/geometry columns: Loading and saving
322    
323            * Resources/XML/thuban-1.1.dtd: New.  Derived from thuban-1.0.dtd
324            with the following changes:
325            (dbshapesource): Two new attributes id_column and geometry_column
326    
327            * Thuban/Model/save.py (SessionSaver.write): Use the new dtd
328            (SessionSaver.write_session): Use the new namespace
329            (SessionSaver.write_data_containers): Write the new dbshapesource
330            parameters
331    
332            * Thuban/Model/load.py (SessionLoader.__init__): New namespace for
333            the new file format version
334            (SessionLoader.start_dbshapesource): Handle the new db parameters
335    
336            * test/test_save.py: Update to the new dtd and namespace
337            (SaveSessionTest.test_save_postgis): Update the NonConnectionStore
338            mock object to provide a working IDColumn method.
339    
340            * test/test_load_1_0.py: New.  Copy of the test_load.py before
341            today's changes but with the round-trip tests removed.
342    
343            * test/test_load_0_9.py: Update doc-string.
344    
345            * test/test_load.py: Update all .thuban files to the new dtd and
346            namespace.
347            (TestPostGISLayer.file_contents): Add the new dbshapesource
348            paramters
349    
350    2004-03-11  Bernhard Herzog  <bh@intevation.de>
351    
352            Next step for explicit id/geometry columns: User interaction
353    
354            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Rework how
355            the dialog is constructed. Add combo boxes to select id and
356            geometry column.  Rename some instance variables.
357            (ChooseDBTableDialog.GetTable): Return id and geometry column
358            names
359            (ChooseDBTableDialog.OnTableSelect): New. Event handler for
360            selections in the table list
361    
362            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Use id_column
363            and geometry_column
364    
365            * Thuban/Model/session.py (Session.OpenDBShapeStore): Add the new
366            parameters for id_column and geometry column of PostGISShapeStore
367            here as well.
368    
369            * Thuban/Model/postgisdb.py (type_map): Add ROWID psycog type.
370            (_raw_type_map): New. Map raw PostgreSQL type ints to thuban types
371            (PostGISConnection.GeometryTables): Use a better query to
372            determine which relations in the database might be usable for
373            shapestores.  Now supports views as well but is more PostgreSQL
374            specific
375            (PostGISConnection.table_columns): New. Somewhat experimental
376            method to let the db dialogs provide lists of columns to users so
377            that they can select id and geometry columns.
378            (PostGISTable.__init__): The default value of the id_column
379            parameter is now None it still means "gid" effectively, though.
380            (PostGISTable.IDColumn): New introspection method to return a
381            column object for the id column
382            (PostGISShapeStore.GeometryColumn): New introspection method to
383            return a column object for the geometry column
384    
385            * test/test_postgis_db.py
386            (TestPostGISConnection.test_gis_tables_non_empty):
387            Removed. Subsumed by the new:
388            (TestPostGISConnection.test_gis_tables_with_views_and_tables):
389            New. Tes the GeometryTables and table_columns methods with actual
390            tables and views.
391            (PointTests.test_id_column, PointTests.test_geometry_column):
392            New. tests for the new methods.
393            (TestPostGISShapestorePoint.setUp)
394            (TestPostGISShapestorePointSRID.setUp)
395            (TestPostGISShapestorePointExplicitGIDColumn.setUp): Fill the
396            instance variables needed by the new tests
397    
398    2004-03-11  Bernhard Herzog  <bh@intevation.de>
399    
400            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): The row
401            numbers given to ReadValue are ordinals.
402    
403    2004-03-11  Bernhard Herzog  <bh@intevation.de>
404    
405            Elimiate the requirement for PostGIS tables to have a column
406            called "gid".
407    
408            * Thuban/Model/postgisdb.py (PostGISTable.__init__): New parameter
409            id_column to specify which column to use to identify rows.  Also
410            new instance variables id_column and quoted_id_column
411            (PostGISTable.RowIdToOrdinal, PostGISTable.RowOrdinalToId)
412            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue)
413            (PostGISTable.SimpleQuery): Use the id column name provided to the
414            constructor instead of "gid"
415            (PostGISShapeStore.__init__): New parameter id_column analogously
416            to PostGISTable.__init__.  This parameter is simply passed through
417            to the base class constructor
418            (PostGISShapeStore._create_col_from_description): Fix typo in
419            doc-string
420            (PostGISShapeStore.Shape, PostGISShapeStore.AllShapes)
421            (PostGISShapeStore.ShapesInRegion): Use the id column name
422            provided to the constructor instead of "gid"
423    
424            * test/postgissupport.py
425            (PostgreSQLServer.get_default_static_data_db): New static table
426            landmarks_point_id with an id column != "gid.  Update the comments
427            a bit.
428            (skip_if_addgeometrycolumn_does_not_use_quote_ident): Fix typo in
429            doc-
430            (upload_shapefile): New parameter gid_column to use a name other
431            than "gid" for the column to store the shape ids
432    
433            * test/test_postgis_db.py (TableTests): New.  Mixin-class
434            containing all tests previously in TestPostGISTable.  The actual
435            tests are the same but the code is a bit more configurable to
436            allow for different id columns etc.
437            (TestPostGISTable): Derive from TableTests now for the actual
438            tests.
439            (TestPostGISTableExplicitGIDColumn): New. Like TestPostGISTable
440            except that it the landmarks_point_id table to test the id_column
441            parameter
442            (PointTests): Extend the doc-string
443            (TestPostGISShapestorePointExplicitGIDColumn)
444            (TestPostGISShapestorePointOIDAsGIDColumn): New classes derived
445            from PointTests to test the explicit id_column parameter.  One
446            tests with the name of the column holding the shape ids, the other
447            uses PostgreSQL's OID column.  For the latter a number of methods
448            have to be overwritten to make them independent of the actual id
449            values.
450    
451    2004-03-08  Silke Reimer  <silke@intevation.de>
452    
453            Update debian directory:
454    
455            * debian/changelog: Added new version.
456            * deiban/rules: Updated management of patches (with cbds)
457            * debian/control: Added cbds to dependencies
458            * debian/patches/*: New. Adds better support for patches of thuban in
459                            debian
460            * debian/menu: Syntax of menu changed slightly
461            * debian/setup.py.patch: removed because it has been moved to
462                            debian/patechs/setup.py.patch
463            
464    
465    2004-02-26  Bernhard Herzog  <bh@intevation.de>
466    
467            Create the Doc/technotes directory for text files with information
468            for developers
469    
470            * Doc/technotes/README: New. README for the technotes
471    
472            * Doc/technotes/coding_guidelines.txt: New. Coding guidelines for
473            Thuban
474    
475            * Doc/technotes/release_process.txt: New. Used to be
476            HOWTO-Release.  Now slightly adapted to technote formatting style.
477    
478            * HOWTO-Release: Removed.  It's contents are now in
479            Doc/technotes/release_process.txt
480    
481    2004-02-25  Bernhard Herzog  <bh@intevation.de>
482    
483            * libraries/thuban/wxproj.cpp (get_wx_version): New.  Return the
484            version of wxWindows the module was compiled with so we can check
485            that against the wxPython version.
486    
487            * Thuban/version.py (thuban_branch, thuban_release): New variables
488            controlling which and how Thuban versions are shown.  See the
489            comments for details.
490            (verify_versions): Also check that the wx version that wxproj is
491            compiled against matches that of the wxPython we use at runtime
492    
493    2004-02-20  Bernhard Herzog  <bh@intevation.de>
494    
495            * Extensions/wms/wms.py (epsg_code_to_projection): Use
496            get_system_proj_file to read the epsg projections.  The old way
497            depended on the current directory being the top Thuban directory.
498    
499  2004-02-20  Bernhard Herzog  <bh@intevation.de>  2004-02-20  Bernhard Herzog  <bh@intevation.de>
500    
501          * Extensions/svgexport/test/test_svgmapwriter.py          * Extensions/svgexport/test/test_svgmapwriter.py
# Line 4200  Line 4698 
4698          Fix problem of hidden properties dialog under windows after double          Fix problem of hidden properties dialog under windows after double
4699          click on layer tree:          click on layer tree:
4700          The tree control always gets an Expanded / Collapsed event after          The tree control always gets an Expanded / Collapsed event after
4701          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.
4702            We add a second ItemActivated event to the queue, which simply
4703          raises the already displayed window.          raises the already displayed window.
4704    
4705          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable

Legend:
Removed from v.2085  
changed lines
  Added in v.2196

root@scm.wald.intevation.org
ViewVC Help
Powered by ViewVC 1.1.26