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

Legend:
Removed from v.2087  
changed lines
  Added in v.2197

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26