/[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 2067 by bh, Mon Feb 16 19:39:48 2004 UTC revision 2558 by jonathan, Mon Feb 7 19:51:13 2005 UTC
# Line 1  Line 1 
1    2005-02-07  Jonathan Coles <[email protected]>
2            * libraries/thuban/gdalwarp.cpp: Removed the macros PYTHON_ERR
3            and PYTHON_ERRF since they were no longer necessary.
4    
5    2005-02-07  Bernhard Reiter <[email protected]>
6            * Thuban/UI/classifier.py (ClassGrid.DeleteSelectedRows):
7            Enable translation for message string.
8    
9    2005-02-06  Martin Schulze  <[email protected]>
10    
11            * Extensions/wms/infodialog.py (wmsInfoDialog.__init__): Adjusted
12            the arguments of the contstructor to fit the global scheme
13    
14    2005-01-31  Nina H�ffmeyer <[email protected]>
15    
16            * Extensions/ogr/ogrdialog.py: Added class ogrdialog.py, which provides
17            some dialogs needed to start ogr.
18            
19            * Extensions/ogr/__init__.py: Changed comments to avoid encoding
20            warnings.
21    
22            * Extensions/ogr/test/test_OGRShapestore.py: Changed comments to avoid
23            encoding warnings.
24    
25    2005-01-28  Jonathan Coles <[email protected]>
26    
27            * libraries/thuban/gdalwarp.cpp (GetImageData): Recode how the
28            mask is packed into a bit array. It's now slightly faster.
29    
30    2005-01-28  Jonathan Coles <[email protected]>
31    
32            * Thuban/Model/layer.py (RasterLayer.__init__): Make use_mask
33            default to true.
34    
35            * Thuban/Model/load.py (SessionLoader.start_rasterlayer): Remove
36            code that loads the state of the layer's use_mask flag. Its
37            usefulness is still being debated.
38    
39            * Thuban/Model/save.py (SessionSaver.write_layer): Remove
40            code that saves the state of the layer's use_mask flag. Its
41            usefulness is still being debated.
42    
43            * Thuban/UI/baserenderer.py (BaseRenderer.draw_raster_layer): Pass
44            options to ProjectRasterFile based on the state of layer.UseMask().
45            Catch more exceptions from ProjectRasterFile so that Thuban doesn't
46            quit is there is a problem projecting.
47            (BaseRenderer.draw_raster_data): Change the documentation to
48            describe the new format (XBM) that the mask data will be in.
49    
50            * Thuban/UI/renderer.py (MapRenderer.draw_raster_data): The mask
51            data is in XBM format when format='RAW' which means it doesn't
52            need to be converted to a wxImage before being used as a mask
53            for a wxBitmap. Assume that if format != 'RAW' that the image
54            data and mask data are in the same format.
55    
56            * libraries/thuban/gdalwarp.cpp (GetImageData): If alpha is enabled
57            and a mask is requested, convert the alpha band to a bit array in
58            XBM format. if an alpha channel is requested, simply return the
59            data in the alpha band. Provide better error handling by returning
60            python error messages (also fixes RT #2947).
61            (ProjectRasterFile): Support multiple mask options, rather than simply
62            a flag indicating that a mask should or should not be used. Provide
63            better error handling by returning python error messages.
64    
65            * test/test_baserenderer.py (TestBaseRenderer.test_raster_no_projection):
66            Add mask data to test.
67    
68            * test/test_layer.py (TestLayer.test_raster_layer): Test that a layer
69            should use the mask by default.
70            (TestLayerModificaton.test_raster_layer): Test that a layer should use
71            the mask by default.
72    
73            * test/test_load.py (TestRasterLayer.test): Remove testing for
74            use_mask flag in file.
75    
76            * test/test_save.py (SaveSessionTest.testRasterLayer): Remove testing
77            for use_mask in file.
78    
79            * test/test_load_1_0_1.py: Removed. Shouldn't have been checked in.
80            
81    2005-01-26  Jonathan Coles <[email protected]>
82    
83            Add a new dialog box for raster layers. The dialog box allows
84            the user to toggle a mask that is generated by ProjectRasterFile
85            and is used to only draw the real parts of the projected image.
86    
87            * Thuban/UI/baserenderer.py (BaseRenderer.draw_raster_layer):
88            Instruct the warping code to generate a mask if the raster layer
89            requests one.
90            (BaseRenderer.draw_raster_data): Removed obsolete optional mask argument.
91    
92            * Thuban/UI/renderer.py (MapRenderer.draw_raster_data): Removed
93            obsolete optional mask argument.
94    
95            * Thuban/UI/classifier.py (Classifier): Change the parent class
96            to LayerProperties and rework the code to support layout calls
97            from the parent.
98            (Classifier.dialog_layout): New. Layout the dialog box.
99            (Classifier.map_layers_removed): Removed. Moved to parent class.
100            (Classifier.map_replaced): Removed. Moved to parent class.
101            (Classifier._OnTry): Renamed to OnTry to support parent class.
102            (Classifier.OnClose): Removed. Supplied in parent class.
103            (Classifier._OnCloseBtn): Removed. Supplied in parent class as OnCloseBtn.
104            (Classifier._OnOK): Renamed to OnOK to support parent class.
105            (Classifier._OnRevert): Renamed to OnRevert to support parent class.
106    
107            * Thuban/UI/layerproperties.py: New. Base class for layer properties
108            dialog boxes.
109    
110            * Thuban/UI/rasterlayerproperties.py: New. Class for displaying
111            raster layer properties.
112    
113            * libraries/thuban/gdalwarp.cpp: Replace the old gdalwarp.cpp code
114            with the non-simple version supplied with gdal. This allows added
115            features such as creating an alpha band.
116            (GetImageData): Generate a mask array from the alpha band that is
117            generated by gdal if the user has selected it. Try to support images
118            that have more than three bands, such as images with RGB plus an
119            alpha band.
120            (ProjectRasterFile): Convert python argument for mask and tell
121            gdal to enable or disable an alpha band.
122    
123            * Thuban/Model/layer.py (BaseLayer.Type): New. Returns a string
124            describing what kind of layer the class is. Defaults to "Unknown",
125            but should be overridden by subclasses.
126            (Layer.Type): New. Override base class method.
127            (RasterLayer.__init__): Create a flag for using a mask. Record extra
128            data from gdal for display in the properties dialog.
129            (RasterLayer.Type): New. Override base class method.
130            (RasterLayer.UseMask): New. Returns True if the mask should be used.
131            (RasterLayer.SetUseMask): New. Set if the mask should be used.
132            (RasterLayer.ImageInfo): New. Return extra information about the image.
133    
134            * Thuban/Model/load.py (SessionLoader.start_rasterlayer): Load
135            the mask information.
136    
137            * Thuban/Model/save.py (SessionSaver.write_layer): Save mask information.
138    
139            * Thuban/UI/mainwindow.py: Register the RasterLayerProperties and
140            Classifier classes as dialogs to use with the proper layer types.
141    
142            * test/test_baserenderer.py (TestBaseRenderer.test_raster_no_projection):
143            Fix test.
144    
145            * test/test_layer.py (TestLayer.test_raster_layer): Test new methods.
146            (TestLayerModification.build_path): New. Support function.
147            (TestLayerModification.test_raster_layer): New. Test new methods.
148    
149            * test/test_save.py (SaveSessionTest.testRasterLayer): Add tests for mask.
150    
151            * test/test_load.py (TestRasterLayer): Add tests for mask.
152    
153            * test/test_load_1_0_1.py: New. Copied from test_load.py.
154    
155            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Removed
156            obsolete optional mask argument.
157    
158    2005-01-26  Nina H�ffmeyer <[email protected]>
159    
160            * Extensions/ogr/ogrshapes.py: Added two dictionaries to ShapeStore
161            which maps the ids and the ordinals. Fixed RowIdToOrdinal(),
162            RowOrdinalToId() and ReadRowAsDict().
163    
164            * Extensions/ogr/ogrstart.py: Added menu item which opens database
165            layers for existing database connections.
166    
167            * Extensions/ogr/test/test_OGRShapestore.py: Fixed a message string.
168    
169    
170    2005-01-26  Jan-Oliver Wagner <[email protected]>
171    
172            * Doc/manual/thuban-manual-de.xml: More translations.
173    
174    2005-01-24  Bernhard Herzog  <[email protected]>
175    
176            Rework the status bar updates a bit to make sure the message about
177            the projections is produced at the right times.
178    
179            * Thuban/UI/mainwindow.py (MainWindow.update_status_bar_messages):
180            New class variable with messages that may require a status bar
181            update.
182            (MainWindow.view_position_changed)
183            (MainWindow.update_status_bar): Rename from view_position_changed
184            to update_status_bar.  It's meaning has changed now that it may
185            also generate messages about problems with projection settings.
186            (MainWindow.__init__): Use the new update_status_bar_messages
187            class variable to subscribe update_status_bar
188            (MainWindow.set_position_text): Update doc-string.  This method
189            has to be renamed at some point.  See doc-string and comments.
190            (MainWindow.OnClose): Unsubscribe update_status_bar from all
191            messages in update_status_bar_messages
192    
193            * Thuban/UI/viewport.py (ViewPort.forwarded_map_messages): New
194            class attribute.  map messages to be forwarded by the viewport.
195            (ViewPort._subscribe_map, ViewPort._unsubscribe_map): (un)subscribe
196            the messages in forwarded_map_messages
197    
198    2005-01-21  Bernhard Herzog  <[email protected]>
199    
200            * test/postgissupport.py (PostGISDatabase.__init__): Tweak
201            doc-string
202            (find_postgis_sql): Update for postgis-1.0.0-rc1, which uses a
203            different name for the initialization SQL file.
204    
205    2005-01-21  Jonathan Coles <[email protected]>
206    
207            * Thuban/UI/baserenderer.py (proj_params_to_str): New. Takes
208            a projection and returns a formatted string representing the
209            parameters to feed to gdalwarp. This function eliminates
210            redundancy in draw_raster_layer().
211            (BaseRenderer.render_map_incrementally): Removed the optimization which
212            drew the top most raster layer first and then only those vector-
213            based layers that are above it. With the support for transparency
214            this optimization breaks correct behaviour.
215            (BaseRenderer.draw_raster_layer): Reorganize code to support possible
216            future enhancements to raster layer bounding box. The old behaviour has
217            not changed. Also, change calling parameters to draw_raster_data()
218            to specify new RAW data format and mask.
219            (BaseRenderer.draw_raster_data): Change signature to include an optional
220            parameter for mask information. Change documentation to mention
221            support for new parameter and added option for RAW data format.
222            The data argument is now a list of [width, height, data].
223    
224            * Thuban/UI/renderer.py (MapRenderer.draw_raster_data): Add new optional
225            mask parameter. Add new condition for RAW format, which
226            significantly reduces rendering time. Add condition for
227            mask parameter.
228    
229            * libraries/thuban/gdalwarp.cpp (GetImageData): New. Creates a
230            data array of RGB values from the projected image returned from
231            the gdal warping functions. In the case of palette based images, it
232            converts the NO_DATA index to the mask color.
233            (ProjectRasterFile): Removed all custom memory driver references
234            and replaced it with the standard in-memory dataset provided
235            by gdal. The return data is no longer a BMP file, but an array
236            of RGB values, one set triple per pixel.
237    
238            * libraries/thuban/bmpdataset.cpp: Removed. Unnecessary.
239            * libraries/thuban/cpl_mfile.h: Removed. Unnecessary.
240            * libraries/thuban/cpl_mfile.cpp: Removed. Unnecessary.
241    
242            * setup.py (thuban_build_ext.finalize_options): Removed mention
243            of cpl_mfile.cpp and bmpdataset.cpp files in the list of source
244            files. These are obsolete with the new version of gdalwarp.cpp
245    
246            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data):
247            Updated signature.
248            (TestBaseRenderer.test_raster_no_projection): Changed the test
249            data to be data in the uncompressed RAW format returned from
250            ProjectRasterFile.
251    
252    2005-01-21  Jan-Oliver Wagner <[email protected]>
253    
254            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed): Made
255            string available for i18n.
256    
257    2005-01-20  Russell Nelson  <[email protected]>
258    
259            * Resources/Projections/defaults.proj: Ruin the speling of the
260            Lambert-93 projection so it doesn't run into the wx UTF-8 bug.
261            It's the wrong thing to do in the long run, but it's necessary for
262            those users until that bug is fixed.  Otherwise the projection
263            dialog segfaults.  Better to annoy some Lambert-93 users with a
264            spelling mistake than every Fedora Core 3 user of Thuban-CVS.
265    
266    2005-01-20  Bernhard Reiter <[email protected]>
267    
268            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed): Added
269            docstring and comment that the warning code here is a hack.
270    
271    2005-01-20  Russell Nelson  <[email protected]>
272    
273            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed): Warn
274            user about misprojected layers when their lat/lon bounding
275            box exceeds rational lat/lon values.
276    
277    2005-01-20  Bernhard Reiter <[email protected]>
278    
279            * Thuban/UI/about.py (unicodeToLocale): Improved:
280            Use 'ascii' and then 'replace' for other characters
281            when getdefaultlocale returns None. Thanks to Bernhard H. .
282    
283    2005-01-20  Bernhard Reiter <[email protected]>
284    
285            * Thuban/UI/classgen.py (GenQuantilesPanel.OnRetrieve): Added a comment
286            that OnRangeText might be called twice and using None as argument.
287    
288    2005-01-20  Bernhard Reiter <[email protected]>
289    
290            * Thuban/UI/classgen.py (GenQuantilesPanel.OnRetrieve): Add a
291            OnRangeText(0) to work around a different in wx Behaviour noticed
292            on MacOSX, thanks to Lorenzo Moretti and Daniel Calvelo for the fix.
293    
294    2005-01-20  Bernhard Reiter <[email protected]>
295    
296            * Thuban/UI/about.py: take iso-8859-15 when getdefaultlocale returns
297            None. (Fixes rt#2910.)
298            
299    2005-01-18  Frank Koormann <[email protected]>
300    
301            New Extension: mouseposition
302            Tool to collect mouse click positions (map coordinates) in a dialog.
303    
304            * Extensions/mouseposition/__init__.py: New, extension registration
305    
306            * Extensions/mouseposition/mouseposition.py: New, implements the
307            dialog and adds a tool to Thuban mainwindow.
308    
309            * Extensions/mouseposition/position.xpm: New, icon for tool.
310    
311    2005-01-14  Jan-Oliver Wagner <[email protected]>
312    
313            * Doc/manual/thuban-manual-de.xml: More translations.
314    
315    2005-01-11  Frank Koormann <[email protected]>
316    
317            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer):
318            Fix indention bug.
319    
320    2005-01-09  Frank Koormann <[email protected]>
321    
322            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer):
323            BugFix 2901: Explicitly copy layers ClassificationColumn since it
324            is not part of the layers Classification.
325    
326    2005-01-03  Frank Koormann <[email protected]>
327    
328            * Thuban/UI/renderer.py (ScreenRendererdraw_selection_incrementally):
329            BugFix 2883: Former implementation only worked on classified point
330            layers: KeyError was raised, now use the default size if field is None.
331    
332    2004-12-27  Bernhard Reiter <[email protected]>
333    
334            svgexport 1.0.0cvs: Fixed label export.
335    
336            * Extensions/svgexport/test/test_svgmapwriter.py:
337            class TestSVGRenderer(): New class; new test test_label_font().
338    
339            * Extensions/svgexport/svgmapwriter.py
340            (SVGRenderer.label_font()): initialised Font size with self.factor now,
341            makes test_label_font happy.
342    
343            * Extensions/svgexport/TODO: crossed out fixed label export item.
344            Added item for options.
345    
346            * Extensions/svgexport/__init__.py: Bumped version to 1.0.0cvs.
347    
348    2004-12-27  Russell Nelson  <[email protected]>
349    
350            Middle mouse button pans.
351    
352            * Thuban/UI/view.py (MapCanvas.__init__): Subscribe also
353            OnMiddleDown and OnMiddleUp events.
354            (MapCanvas.OnMiddleDown): New. Activate the pan tool and remember the
355            previously used tool.
356            (MapCanvas.OnMiddleUp): New. Reactivate the remebered tool used before
357            pressing the middle mouse button.
358    
359    2004-12-27  Jan-Oliver Wagner <[email protected]>
360    
361            * Doc/manual/thuban-manual-de.xml: More translations.
362    
363    2004-12-23  Jan-Oliver Wagner <[email protected]>
364    
365            * Thuban/UI/projdialog.py (ProjFrame.load_user_proj): Added a
366            \n to stderr after the warnings. Thanks to Russell Nelson.
367    
368    2004-12-20  Nina Hueffmeyer <[email protected]>
369    
370            * Extensions/ogr/ogrshapes.py: Fixed some issues from
371            Bernhard (coding guidelines etc.). Additionally it is now possible to
372            display shapefiles containing feature collections (e.g.polygons
373            with holes). Works with gdal 1.2.1 now.
374    
375            * Extensions/ogr/test/test_OGRShapestore.py: Fixed some issues
376            from Bernhard (coding guidelines etc.). If ogr can't be imported,
377            tests are skipped now.
378    
379            * Extensions/ogr/ogrstart.py: Fixed some typings.
380    
381    2004-12-20  Bernhard Reiter <[email protected]>
382    
383            * Extensions/svgexport/TODO: updated to add support for
384            raster layers and labels for 1.0.1.
385    
386            * Extensions/svgexport/svgmapwriter.py (draw_raster_layer):
387            Issue a warning now.
388    
389    2004-12-19  Bernhard Reiter <[email protected]>
390    
391            * Extensions/svgexport/TODO: Added idea to support triggering
392            the application down the pipe.
393    
394    2004-12-19  Bernhard Reiter <[email protected]>
395    
396            svgexport: Improved code quality, mainly by better naming.
397    
398            * Extensions/svgexport/svgmapwriter.py:
399            DrawPath() renamed to DrawPolygonPath(),
400            added documentation, improved comments and variable names.
401            
402            * Extensions/svgexport/svgmapwriter.py,
403              Extensions/svgexport/test/test_svgmapwriter.py:
404            All using DrawPolygonPath() now, the default parameter closed=True
405            omitted.
406    
407            * Extensions/svgexport/test/test_svgmapwriter.py:
408            renamed test_polygon_opened() to test_polyline()
409            renamed test_transparent_polygon() to test_transparent_polyline()
410    
411    2004-12-18  Jan-Oliver Wagner <[email protected]>
412    
413            Some fixes of gns2shp extension.
414    
415            * Extensions/gns2shp/test/__init__.py: New. Make this directory a
416            package.
417    
418            * Extensions/gns2shp/test/test_gns2shp.py: Add some import paths
419            dynamically.
420    
421            * Extensions/gns2shp/test/README: Simplified description how to test.
422    
423            * Extensions/gns2shp/gns2shp.py (gns2shp): Fixed doc-string,
424            fixed some dimensions of fields according to the GNS documentation
425            which seems to change undocumented.
426            Now killing trailing \n and/or \r from MODIFY_DATE.
427            This fixes RT#2453.
428    
429    2004-12-18  Bernhard Reiter <[email protected]>
430    
431            svgexport 1.0.0: Treats holes and islands nicely. Documentation added.
432    
433            * Extensions/svgexport/test/test_svgmapwriter.py:
434            Added new tests: test_export_polygon_with_hole()
435            and test_polygon_with_hole().
436    
437            * Extensions/svgexport/svgmapwriter.py
438            (draw_polygon_shape()): Uses DrawPath correctly now.
439    
440            * Doc/manual/thuban-manual.xml: Added documentation for stable
441            extention svgexport.    
442            * Doc/manual/thuban-manual-de.xml: Copied English section about
443            svexport over.
444    
445            * Extensions/svgexport/__init__.py: Bumped version number to 1.0.0.
446    
447            * Extensions/svgexport/svgsaver.py,maplegend.py:
448            Moved from experimental to stable extension menu.
449    
450            * Extensions/svgexport/TODO: updated.
451    
452    
453    2004-12-18  Bernhard Reiter <[email protected]>
454    
455            Added Extensions/svgexport/TODO
456    
457    2004-12-18  Bernhard Reiter <[email protected]>
458    
459            Refactored in svgexport:
460            DrawPath replaces DrawPolygon; added newline in front of "M" in paths.
461    
462            * Extensions/svgexport/svgmapwriter.py
463            Added verbosity level 3 to print out polygon points.
464            (class Point): added __repr__
465            (class Brush, __str__()): Added space after ,.
466            (DrawPolygon): Renamed to DrawPath()
467            (DrawPath): Takes list of polygons as input now, adds \n before "M"s.
468            (DrawLines): Using DrawPath now.
469    
470            * Extensions/svgexport/test/test_svgmapwriter.py:
471            Replaced DrawPolygon() calls with DrawPath() and put the first argument
472            inside another list. Adapted test data with a newline before "M".
473    
474    2004-12-18  Bernhard Reiter <[email protected]>
475            
476            Refactored svgexport tests: 9 double tests runs eliminated;
477            code size reduced by 8 lines.
478    
479            * Extensions/svgexport/test/test_svgmapwriter.py:
480            (class TestWithDC): Renamed to BaseTestWithDC, moved to top.
481            (class BaseWithDCtools): New, subclass from BaseTestWithDC.
482            (class TestDrawSplines): now subclass from BaseTestWithDCtools,
483            this fixed the double running of the nine tests of TestVirtualDC.
484            (class TestVirtualDC): Using self.dc and self.file from setUp().
485    
486    2004-12-17  Bernhard Herzog  <[email protected]>
487    
488            Two windows specific fixes ported from thuban-1�0-branch:
489    
490            * Thuban/UI/about.py (unicodeToLocale): Use getdefaultlocale
491            instead of getlocale because getlocale doesn't return a usable
492            encoding name on a german windows 2000
493    
494            * setup.py: windows build: Removed the absolute path names and
495            made all prfixes relative to the directory containing setup.py.
496            Makes it a little easier to adapt to a different system.
497    
498    2004-12-16  Bernhard Herzog  <[email protected]>
499    
500            Add support for PostGIS tables with LINESTRING geometries.
501            Fixes RT#2299
502    
503            * Thuban/Model/postgisdb.py (shapetype_map): Add LINESTRING
504    
505            * test/postgissupport.py
506            (PostgreSQLServer.get_default_static_data_db): Rename the "roads"
507            table to "roads-multi" because it now uses MULTILINESTRING
508            geometries and introduce a new "roads" table that uses LINESTRING
509            (coords_to_multilinestring): Make the doc string more precise
510            (coords_to_linestring): New.  Create a LINESTRING WKT
511            representatin
512            (wkt_converter): Add coords_to_linestring
513            (upload_shapefile): Rephrase the doc-string a bit.
514    
515            * test/test_postgis_db.py (TestPostGISShapestoreArc)
516            (LineStringTests)
517            (TestPostGISShapestoreLineString)
518            (TestPostGISShapestoreMultiLineString): Split
519            TestPostGISShapestoreArc into a base class LineStringTests and two
520            derived classes TestPostGISShapestoreLineString for LINESTRING
521            geometries and TestPostGISShapestoreMultiLineString for
522            MULTILINESTRING geometries.  Most test methods are in the base
523            class with the exception of tests that explicitly check the raw
524            format.
525    
526    2004-12-16  Bernhard Herzog  <[email protected]>
527    
528            Make the test suite work with PostGIS 0.8.2 and PostgreSQL 7.4
529    
530            * test/postgissupport.py (find_postgis_sql): Different postgis
531            versions put the postgis.sql file into slightly different places
532            so we have to look in both.  The updated doc string describes this
533            is more detail.
534    
535            * test/test_postgis_db.py
536            (TestPostGISSpecialCases.test_column_name_quoting): The return
537            value of UniqueValues is unsorted, so it has to be sorted for
538            comparison.
539    
540    2004-12-16  Bernhard Herzog  <[email protected]>
541    
542            Fix for RT#2237
543    
544            * Thuban/UI/projdialog.py (ProjFrame._show_proj_panel): If the
545            panel to be shown is the UnknownProjPanel disable the OK and Try
546            buttons.  Otherwise enable them.
547            (ProjFrame.__GetProjection): The UnknownProjPanel returns None for
548            the parameters.  In that case __GetProjection also returns None
549            now.
550    
551    2004-12-15  Bernhard Herzog  <[email protected]>
552    
553            * Thuban/UI/classgen.py (GenQuantilesPanel.__init__): Set the
554            minimum number of classes to 2.  The calculate_quantiles needs at
555            least two and raises an exception otherwise.  
556            Fixes RT#2549
557    
558    2004-12-15  Bernhard Herzog  <[email protected]>
559    
560            * test/postgissupport.py (PostgreSQLServer.execute_sql): Extend to
561            so that it returns a result for select statements.
562            (PostgreSQLServer.server_version): New.  Return the version of the
563            server software.
564            (PostgreSQLServer.require_authentication): The format of
565            pg_hba.conf has changed between PostgrSQL 7.2 and 7.3.  Check the
566            server version and generate the file in the correct format
567    
568    2004-12-15  Bernhard Herzog  <[email protected]>
569    
570            * test/postgissupport.py (PostgreSQLServer.is_running): Fix typo
571            in the doc string and rephrase it a little.
572    
573    2004-12-15  Frank Koormann <[email protected]>
574    
575            * test/test_load.py (TestAltPath.checkSession): New, extended checks if
576            session has been loaded successfully. The check is called by the relevant
577            tests after executing load_session().
578    
579    2004-12-13  Bernhard Herzog  <[email protected]>
580    
581            Make sure the region used to determine which shapes are visible
582            actually matches the region on the printed page.  If this isn't
583            done properly some shapes might not be printed.  
584            Fixes RT #2692
585    
586            * Thuban/UI/view.py (MapPrintout.draw_on_dc): The region for the
587            renderer has to be at the same position as the mapregion
588    
589            * Thuban/UI/renderer.py (ExportRenderer.RenderMap): self.region
590            has to be moved by (self.shiftx, self.shifty) too.
591    
592    2004-12-13  Bernhard Herzog  <[email protected]>
593    
594            * libraries/pyprojection/Projection.i: Work around a bug in the
595            generated python code which leads to exception in the __del__
596            method when the constructor fails.  See the comments in the code
597            for more details.
598    
599            * libraries/pyprojection/Projection.py: Updated from Projection.i
600            with SWIG.
601    
602    2004-12-13  Bernhard Herzog  <[email protected]>
603    
604            * test/test_load.py (TestAltPath.test_01_single_path_error_fix)
605            (TestAltPath.test_02_path_error_fix_from_list)
606            (TestAltPath.test_05_path_error_fix_from_list_changed)
607            (TestAltPath.test_06_path_error_fix_from_list_fails): self.session
608            is destroyed in tearDown, so there's no need to do it in a test
609            case.
610    
611            * Thuban/Model/load.py (SessionLoader.open_shapefile): Remove a
612            debug print
613    
614    2004-12-13  Bernhard Herzog  <[email protected]>
615    
616            * Extensions/svgexport/test/test_svgmapwriter.py
617            (TestDrawSplines.setUp): Do not use super with the unittest
618            classes because in Python 2.2 they're still old-style classes.
619    
620    2004-12-13  Frank Koormann <[email protected]>
621    
622        Alternative Path feature: When loading a (moved) session where
623            shapefiles cannot be found, ask the user. Use the specified path
624            if further shapefiles are missing. However, ask the usr for confirmation
625            in such cases.
626    
627            * test/test_load.py (TestAltPath): New, tests for alternative path feature
628            in load_session()
629            (Shapefile_CallBack): Helper, implements controllable callback.
630    
631            * Thuban/UI/application.py (ThubanApplication.OnInit):
632            Added "alt_path" to self.path
633            (ThubanApplication.OpenSession): Added shapefile_callback as second
634            callback similar to db_connection_callback.
635            (ThubanApplication.run_alt_path_dialog): New, implementaion of
636            shapefile_callback. In addition to raising the dialog the control of
637            self.path('alt_path') is implemented here.
638    
639            * Thuban/Model/load.py (SessionLoader.__init__): Added shapefile_callback.
640            (SessionLoader.open_shapefile): Open shapefile, eventually with
641            alternative path. This wrapps the "theSession.OpenShapefile(filename)"
642            formerly used in start_fileshapesource()/start_layer().
643            (SessionLoader.start_fileshapesource): Call open_shapefile().
644            (SessionLoader.start_layer): Call open_shapefile().
645            (load_session): Added shapefile_callback.
646    
647            * Thuban/UI/altpathdialog.py: New, implements dialogs for alternative path
648            feature (search / check).
649            
650            * Doc/manual/thuban-manual.xml: Added documentation of new feature.
651    
652    2004-12-11  Bernhard Reiter <[email protected]>
653    
654             svgexport 0.9.2: Point size supports for maps.
655    
656            * Extensions/svgexport/svgmapwriter.py: Added import of SHAPETYPE_POINT
657            (def draw_point_shape): new parameter size defaults to 2 as before.
658            (draw_shape_layer_incrementally): Moved draw_func log line higher.
659            Added draw_func call with size when dealing with a point layer.
660    
661            * Extensions/svgexport/__init__.py: bumped version to 0.9.2.
662            
663    2004-12-11  Bernhard Reiter <[email protected]>
664    
665            Made sure that newlines are inserted in the svg path d attributes
666            to raise the chance that the line length will be below 255 characters,
667            as recommended by REC SVG 1.1 in section 8.3.1.
668    
669            * Extensions/svgexport/svgmapwriter.py(DrawPolygon):
670            Adding \n before L's and changed whitespace handling.
671    
672            * Extensions/svgexport/test/test_svgmapwriter.py:
673            Adapted tests to new whitespace handling of DrawPolygon.
674    
675    2004-12-11  Bernhard Reiter <[email protected]>
676    
677            * Doc/technotes/coding_guidelines.txt: easy typo fixed.
678    
679            * Extensions/svgexport/test/test_svgmapwriter.py:
680            Removed test_drawbezier in favour of new test_drawspline3 and
681            test_drawspline4 within new class TestDrawSplines(TestVirtualDC).
682            All only to test DrawSpline.
683    
684            * Extensions/svgexport/svgmapwriter.py(DrawSpline):
685            New implementation now really using the strange algorithm of
686            xfig 3.1's approximated splines and its conversion to postscript
687            with one twist: SVG can do quadratic beziers, so skipped translation
688            to cubic beziers.
689            (TestWithDC): Typo in comment fixed.
690    
691    2004-12-09  Martin Schulze  <[email protected]>
692    
693            * Thuban/Model/classgen.py: Added missing character encoding
694    
695            * Extensions/wms/properties.py (OpenWMSProperties): removed
696    
697            * Extensions/wms/parser.py (WMSCapabilitiesParser.error): Dropped
698            support for get_srs_discrepancies() since there are no
699            discrepancies anymore (was a thinko)
700    
701            * Extensions/wms/layer.py (WMSLayer.GetMapImg): Improved graphic
702            format priority now that more formats are supported globally by
703            the render engine.
704    
705    2004-12-08  Silke Reimer <[email protected]>
706            * Extensions/ogr/ogrshapes.py: Substituted ogr-method CloseRings
707            because it is not available in all versions of ogr
708    
709    2004-12-08  Bernhard Reiter <[email protected]>
710            * Extensions/ogr/__init__.py: Added empty __init__.py to heal
711            global tests until a real one is commited.
712    
713    2004-12-07 Nina H�ffmeyer <[email protected]>
714    
715            * /Extensions/ogr/: Adding a new extension to read shapefiles with
716            ogr. It is planned to add other vector formats.
717    
718            * /test/runtests.py: Adding tests from /Extensions/ogr/test/.
719    
720    2004-12-07  Jan-Oliver Wagner <[email protected]>
721    
722            * /Extensions/svgexport/test/test_svgmapwriter.py: Reverting
723            part of a (non-)fix to renable that the tests are always
724            executed.
725    
726    2004-12-07  Bernhard Reiter <[email protected]>
727    
728            * Extensions/svgexport/test/test_svgmapwriter.py:
729            Added test_drawbezier() to test DrawSpline().
730    
731            * Extensions/svgexport/svgmapwriter.py(DrawSpline):
732            Really implemented bezier drawing.
733    
734            * Extensions/svgexport/__init__.py: Bumped version of svgexport
735            to 0.9.1 because now the legend examples lines styles
736            will be drawing with beziers.
737    
738    2004-12-05  Martin Schulze  <[email protected]>
739    
740            * Thuban/UI/renderer.py (raster_format_map): Added PNG, TIFF and
741            GIF as supported bitmap image formats (helpful for the WMS extension)
742    
743    2004-11-30  Martin Schulze  <[email protected]>
744    
745            * Extensions/wms/test/test_ogclib.py (TestOGCLib.test_compareURLs):
746            Improved the test for the internal compare method
747    
748    2004-11-27  Jan-Oliver Wagner <[email protected]>
749    
750            * Thuban/UI/about.py (About.__init__): Added
751            Norbert Solymosi for hungarian translation and Ole Rahn
752            as contrbutor. Moved Bernhard Reiter from Contributor
753            to Developer.
754    
755    2004-11-27  Bernhard Reiter <[email protected]>
756    
757            * Extensions/svgexport/test/test_svgmapwriter.py:
758            Removed Jan from author list as he did not change enough significant
759            lines yet.
760    
761            * Extensions/svgexport/__init__.py: Added Bernhard as author
762            of the Extension.
763    
764    2004-11-27  Jan-Oliver Wagner <[email protected]>
765    
766            * po/hu.po: New. Hungarian translation. Contributed
767            by Norbert Solymosi.
768    
769    2004-11-26  Bernhard Herzog  <[email protected]>
770    
771            * Extensions/svgexport/test/test_svgmapwriter.py
772            (Testobjectexport.test_transparent_polygon): Commented out some
773            debug prints
774    
775    2004-11-24  Jan-Oliver Wagner <[email protected]>
776    
777            Fix broken tests for svg extension and added svg legend
778            to Experimental menu.
779    
780            * Extensions/svgexport/test/test_svgmapwriter.py: Fix to have
781            the test run correctly even if the extension is a package.
782            Also removed the "import Thuban" which makes no sense.
783    
784            * Extensions/svgexport/__init__.py: Fix to have the extensions'
785            test module also be executed from the global test routine.
786            This is done by looking for the absense of the DISPLAY variable.
787    
788            * Extensions/svgexport/maplegend.py: Moved the menu entry from Extensions
789            to Experimental menu since this module has yet not reached a stable
790            status (ie. 1.0).
791    
792    2004-11-22  Bernhard Reiter <[email protected]>
793    
794            * Extensions/svgexport/svgmapwriter.py:
795            Added verbose variable and some logging depending on it.
796            (class VirtualDC(XMLWriter)): Minor improvement in the polygon loop,
797            because counting i is not necessary.
798            (class Pen, class Brush): Added simple __str__ methods.
799            (SVGRenderer.draw_polygone_shape): Fix #2698 (transparent polygons are
800            not exported to svg file) Note: holes still unhandled.
801    
802            * Extensions/svgexport/test/test_svgmapwriter.py:
803                    Made a baseclass TestWithDC for test needed a DC.
804                    Added tests for bug #2698 (transparent polygons are not
805                    exported to svg file):
806                    Testobjectexport.test_transparent_polygon()
807    
808            * Thuban/Model/base.py (UnsetModified):
809            Fixed some typos in docstring.
810    
811            * Thuban/UI/baserenderer.py (BaseRenderer.draw_polygon_shape()):
812            Added hints on the used algorithm for handling holes.
813    
814    2004-11-20  Jan-Oliver Wagner <[email protected]>
815    
816            Some face lifting for the examples.
817    
818            * Examples/__init__.py: Make this directory a package.
819    
820            * Examples/simple_extensions/__init__.py: Make this directory a package.
821    
822            * Examples/simple_extensions/hello_world.py: Moved entry from Extensions
823            menu to Examples menu.
824    
825            * Examples/simple_extensions/simple_command.py: Some more comments,
826            minor changes.
827    
828            * Examples/simple_extensions/simple_tool.py: Minor changes.
829    
830    2004-11-20  Jan-Oliver Wagner <[email protected]>
831    
832            Changed way of extension registry for wms and added extension
833            registry for umn_mapserver extension.
834    
835            * Extensions/wms/__init__.py: Added registry entry and the importing
836            of the actual wms module. Included a test for the required PyOGCLib.
837    
838            * Extensions/wms/wms.py: Removed registry entry (moved to __init__.py).
839    
840            * Extensions/umn_mapserver/__init__.py: Added registry entry and the
841            importing of the actual umn mapserver management modules.
842            Included a test for the required Python MapScript.
843    
844    2004-11-20  Jan-Oliver Wagner <[email protected]>
845    
846            Changed way of extension registry for importAPR, bboxdump
847            and added extension registry for svgexport.extension registry for
848            svgexport.
849    
850            * Extensions/importAPR/__init__.py: Added registry entry and the importing
851            of the actual importAPR module.
852    
853            * Extensions/importAPR/importAPR.py: Removed registry entry (moved to
854            __init__.py).
855    
856            * Extensions/bboxdump/__init__.py: Added registry entry and the importing
857            ����of the actual bboxdump module.
858    
859            * Extensions/bboxdump/bboxdump.py: Removed registry entry (moved to
860            ����__init__.py).
861    
862            * Extensions/svgexport/__init__.py: Added registry entry and the importing
863            of the svgsaver module.
864    
865            * Extensions/svgexport/svgsaver.py: Moved the menu entry from Extensions
866            to Experimental menu since this module has yet not reached a stable
867            status (ie. 1.0).
868    
869    2004-11-18  Jan-Oliver Wagner <[email protected]>
870    
871            Now the hit test considers the size of point symbols.
872    
873            * Thuban/UI/viewport.py (ViewPort._hit_point): Added optional parameter
874            'size' defaulting to the previously fixed value 5.
875            Extended doc-string.
876            (Viewport._find_shape_in_layer): Resolved FIXME regarding flexibility
877            for symbols.
878            Now the size of the largest point symbol is determined to find out
879            about whether the point has been hit.
880            This fixes the problem that only clicks inside a fixed distance of
881            5 where found.
882    
883    2004-11-17  Jan-Oliver Wagner <[email protected]>
884    
885            Another open issue fixed regarding sizeable symbols: correct rendering of
886            selected symbols.
887    
888            * Thuban/UI/renderer.py (ScreenRenderer.draw_selection_incrementally):
889            Added consideration of the specific size of point symbols.
890            The property for each point symbol is retrieved and the size applied
891            for the rendering method.
892            Added doc-string.
893    
894    2004-11-16  Jan-Oliver Wagner <[email protected]>
895    
896            Changed way of Extension Registry for gns2shp and profiling.
897    
898            * Extensions/gns2shp/gns2shp.py: Removed registry entry (moved to
899            __init__.py).
900    
901            * Extensions/gns2shp/__init__.py: Added registry entry and the importing
902            of the actual gns2shp module.
903    
904            * Extensions/profiling/profiling.py: Removed registry entry (moved to
905            __init__.py).
906    
907            * Extensions/profiling/__init__.py: Added registry entry and the importing
908            of the actual profiling module.
909    
910    2004-10-28  Bernhard Reiter <[email protected]>
911    
912            * Extensions/svgexport/: Minor improvements to doc strings.
913    
914    2004-10-07  Jan-Oliver Wagner <[email protected]>
915    
916            Further elements for sizable point objects now
917            making this feature usable though not yet complete.
918    
919            * Thuban/Model/save.py (SessionSaver.write_classification): Write
920            attribute 'size' for cldata when the shape layer is of point type.
921            This also now make the test_load.py tests happy.
922    
923            * Thuban/Model/classgen.py (CustomRamp.GetProperties): Added size
924            gradient.
925    
926            * Thuban/UI/classifier.py (ID_SELPROP_SPINCTRL): Renamed to
927            ID_SELPROP_SPINCTRL_LINEWIDTH.
928            (ID_SELPROP_SPINCTRL_LINEWIDTH): New Id replaces ID_SELPROP_SPINCTRL.
929            (ID_SELPROP_SPINCTRL_SIZE): New Id.
930            (SelectPropertiesDialog.__init__): Added a second spin control
931            for the size in case the corresponding layer is of point type.
932            (SelectPropertiesDialog._OnSpin): Renamed to _OnSpinLineWidth.
933            (SelectPropertiesDialog._OnSpinLineWidth): New. Former _OnSpin.
934            (SelectPropertiesDialog._OnSpinSize): New. Set size of property
935            and refresh preview.
936    
937    
938    
939    2004-10-04  Martin Schulze  <[email protected]>
940    
941            * Extensions/wms/test/test_parser.py
942            (TestWMSCapabilitiesParser.test_compareLists): Added missing
943            self-test for compareLists()
944            (TestWMSCapabilitiesParser.test_compareDicts): Added missing
945            self-test for compareDicts()
946            (TestWMSCapabilitiesParser.test_compareLists): Adding more tests
947            to verify the test routine fails with non-equal arguments
948            (TestWMSCapabilitiesParser.test_compareDicts): Adding more tests
949            to verify the test routine fails with non-equal arguments
950    
951    2004-10-03  Jan-Oliver Wagner <[email protected]>
952    
953            First elements for sizeable point objects.
954    
955            * Resources/XML/thuban-1.1.dtd: Added size attribute to cldata.
956    
957            * Data/iceland_sample_size.thuban: New. Sample for sized point objects.
958    
959            * test/test_load.py (ClassificationTest.TestLayers): Added SetSize in case
960            of a corresponding argument is given.
961            (TestSymbolSize): New. Test the size attribute of cldata.
962    
963            * Thuban/Model/classification.py: Removed some trailing whitespaces.
964            (ClassGroupProperties.__init__): Set default size.
965            (ClassGroupProperties.SetProperties): Set the size.
966            (ClassGroupProperties.GetSize): New. Return the size.
967            (ClassGroupProperties.SetSize): New. Set the size.
968            (ClassGroupProperties__eq__): Compare also size.
969            (ClassGroupProperties__repr__): Print also size.
970    
971            * Thuban/Model/load.py (SessionLoader.start_cldata): Also parse
972            the size attribute.
973    
974            * Thuban/UI/classifier.py (ClassDataPreviewer.Draw): Added doc-string.
975            Also, now there is a return value that indicates whether the drawing
976            size exceeded the given rect extent and if so the new extent.
977            Finally, point objects are drawn depending on the size. If either
978            the width or height is exceeded, the new extent is returned.
979            (ClassRenderer.Draw): Now when calling the previewer drawing function,
980            evaluate the return value and, if not None, adapt the grid widget size
981            accordingly and redraw again.
982    
983            * Thuban/UI/baserenderer.py (BaseRenderer.draw_shape_layer_incrementally):
984            If the draw function is for points, call it with the size as additional
985            parameter.
986            (BaseRenderer.draw_point_shape): Added additional, optional parameter for
987            the size. Compute the radius using the size.
988    
989            * Extensions/importAPR/apr.py (APR_BMkSym.GetThubanProp): Now
990            that Thuban supports size, apply this correctly.
991    
992            * Extensions/importAPR/importAPR.py: Bumped version to 0.1.1.
993    
994    2004-10-03  Jan-Oliver Wagner <[email protected]>
995    
996            * Doc/manual/thuban-manual-de.xml: Started translation of
997            Map chapter.
998    
999    2004-10-01  Martin Schulze  <[email protected]>
1000    
1001            * Extensions/wms/properties.py (wmsProperties.__init__): Extended
1002            argument for general use through properties-dialog selector
1003            
1004            * Thuban/UI/classifier.py: Register properties dialog classes for
1005            both provided layer classes/types.
1006    
1007            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): The
1008            map can be retrieved through the parent which is passed to the
1009            constructor anyway and doesn't require an argument of its own,
1010            required for the unification of arguments for general use through
1011            properties-dialog selector.
1012            (MainWindow.OpenOrRaiseDialog): Move the logic for checking
1013            whether a dialog is already opened (and raising it to the users
1014            attention) and creating a new dialog into a function of its own
1015            (MainWindow.OpenLayerProperties): Use the new OpenOrRaiseDialog()
1016            method
1017            (MainWindow.OpenLayerProperties): Utilise the new ClassMapper for
1018            global registration of properties dialog classes (which are indeed
1019            layer-specific).
1020    
1021            * Thuban/UI/classifier.py (Classifier.__init__): Unify arguments
1022            for general use through properties-dialog selector, the map can be
1023            retrieved through the parent and doesn't require an argument of
1024            its own.
1025    
1026            * Extensions/wms/wms.py: Register the properties dialog class for
1027            the provided WMS layer
1028    
1029    2004-09-28  Jan-Oliver Wagner <[email protected]>
1030    
1031            New feature: Registry for Extensions.
1032    
1033            * Thuban/UI/extensionregistry.py: This module defines a registry for
1034            Extensions.
1035    
1036            * Thuban/UI/about.py (About.__init__): Added description
1037            of the registered extensions with all of the information.
1038    
1039            * Thuban/Model/extension.py (Extension): Improved doc-string.
1040    
1041            * Extensions/gns2shp/gns2shp.py, Extensions/importAPR/importAPR.py,
1042            Extensions/bboxdump/bboxdump.py, Extensions/profiling/profiling.py,
1043            Extensions/wms/wms.py: Added registration of the extension.
1044    
1045    2004-09-27  Bernhard Reiter <[email protected]>
1046    
1047            More fixes to svgexport to make used ids unique and
1048            conforming to XML's Name production.
1049    
1050            * Extensions/svgexport/test/test_svgmapwriter.py: Added new tests
1051            test_xml_id_constraints(), test_make_ide_nosetbaseid() and
1052            test_make_id_nonintegersetid().  Switched SetID and SetBaseID.
1053            Added Bernhard R. as author.
1054            * Extensions/svgexport/svgmapwriter.py (make_id): Using "_" as
1055            concatenation char now (makes test_make_ide_nosetbaseid() valid).
1056            Also transform second id part with "%d" and catch the TypeError
1057            to raise SVGMapWriterError (making test_make_id_nonintegersetid() ok).
1058            Corrected typo inBernhard's author line.
1059            (SetBaseID): Return the transformed base id. Transform characters
1060            which are not alnum() or in ".-_" to binascii.b2a_hex(). Added
1061            import binascii. If to be set string starts with "xml" or so, add "t".
1062            (draw_shape_layer_incrementally): use the returned value of SetBaseID
1063            for used_baseids checks.
1064    
1065    2004-09-25  Bernhard Herzog  <[email protected]>
1066    
1067            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
1068            Remove a debug print and some tab characters.
1069    
1070    2004-09-25  Bernhard Reiter <[email protected]>
1071    
1072            * Extensions/svgexport/svgmapwriter.py: Added Bernhard R. as Author.
1073            (SetBaseID, SetID, make_id): Improved docstring comments to explain
1074            the interaction of the three functions and the XML id contrains.
1075    
1076    
1077    2004-09-23  Jan-Oliver Wagner <[email protected]>
1078    
1079            * Doc/ThubanModel.xmi: New. UML file for Thuban Model
1080            Module.
1081    
1082            * Doc/README: Added info on ThubanModel.xmi.
1083    
1084    2004-09-23  Jan-Oliver Wagner <[email protected]>
1085    
1086            * Doc/README: New. Some info about how to generate technical
1087            documentation from the source code.
1088            This text was send to the Thuban developer mailing list on
1089            September 21st 2004 by Bernhard Reiter.
1090    
1091    2004-09-21  Bernhard Reiter <[email protected]>
1092    
1093            Improved the svgexport to only use unique ids. Will issues
1094            an error message dialoge when two layer names are the same.
1095            ShapeIDs are now added with a dash within the svg ids.
1096    
1097            * Extensions/svgexport/svgmapwriter.py (SVGMapWriterError): New.
1098            * Extensions/svgexport/test/test_svgmapwriter.py: Added imports
1099            (TestSVGRenderer): New test class with test_make_in() and
1100            test_check_for_layer_name_clash()
1101            * Extensions/svgexport/svgmapwriter.py (SVGRenderer): Fixed __init__()
1102            and draw_shape_layer_incrementally() to not use a baseid twice,
1103            satisfying test_check_for_layer_name_clash()
1104            (VirtualDC.make_id): Use a dash between baseit and id, satisfies
1105            test_make_in().
1106            * Extensions/svexport/svgsaver.py: Import SVGMapWriterError, wxOK
1107            and wxICON_HAND.
1108            (write_to_svg): Put dc and rendering in a try statement and on
1109            catching SVGmapWriterError notify the user and delete the target file.
1110    
1111    2004-09-20  Bernhard Reiter <[email protected]>
1112    
1113            * Model/base.by, Model/layer.py: Fixed typos in docstrings.
1114    
1115    2004-09-03  Jan Sch�ngel  <[email protected]>
1116    
1117            * Extensions/umn_mapserver/mapfile(MF_Class.add_thubanstyle): Fix a
1118            small bug with the line color. Now the line color will now only set
1119            if it is set in Thuban an not Transparent.
1120            
1121            * Extensions/umn_mapserver/mf_export(tblayer_to_map): Fixed a bug with
1122            deleting the layers from mapfile. Now all layers will delete backwards
1123            from the last.
1124    
1125    2004-08-20  Silke Reimer <[email protected]>
1126    
1127            * Thuban/Model/layer.py:
1128            Fixes bug in projection handling: Otherwise very large region might not
1129            have valid values in the layer's projection.
1130    
1131    2004-08-20  Silke Reimer <[email protected]>
1132    
1133            * Thuban/UI/about.py:
1134            small changes to be consistent with coding style.
1135              
1136    2004-08-13  Martin Schulze  <[email protected]>
1137    
1138            * Extensions/wms/test/test_ogclib.py (TestOGCLib.compare_URLs):
1139            Adjusted a comment
1140    
1141    2004-08-11  Silke Reimer <[email protected]>
1142    
1143            * Thuban/UI/about.py: Small changes to encoding related stuff to avoid
1144                    too many and too enhanced imports of locale
1145    
1146    2004-08-10  Silke Reimer <[email protected]>
1147    
1148            * Thuban/UI/about.py: Fixed encoding problem of about dialog: Added
1149                    function unicodeToLocale() to convert special characters to users
1150                    locale encoding
1151    
1152    2004-08-10  Jan-Oliver Wagner <[email protected]>
1153    
1154            * Doc/technotes/coding_guidelines.txt: Added rule 'Method names start with
1155            lower case letter'
1156    
1157    2004-08-09  Jan Sch�ngel  <[email protected]>
1158    
1159            * ChangeLog: Rewrite the last ChangeLog entry to follow
1160            the standard way.
1161    
1162            * Extensions/umn_mapserver/mapfile: Moved the import AnnotationLayer to
1163            the function where it is needed, because it don't works if it stands
1164            at the beginning.
1165            (MF_Layer.__init__): Removed the extra numclassed variable. Now
1166            numclasses from the mapscript will be used.
1167            (MF_Layer.get_index): New. Return the index of the layer in mapfile.
1168            (MF_Layer.set_classes): New. A Classlist will be set to the layer.
1169            (MF_Layer.set_metadata): New. A Metadata mapscript object will set.
1170            (MF_Layer.remove_allclasses): New. All class of the layer will remove.
1171            (MF_Map.create_new_layer): New. A new Layer is created and associated
1172            with the mapscript object.
1173            (MF_Map.set_layerorder): New. The Layer order like in thuban is set in
1174            the mapscript.
1175            (MF_Map.add_thubanlayer): Now a new layerobj is created if no one is
1176            linked to the layer in thuban, else the layerobject linked to the
1177            thubanlayer will be used.
1178            AnnotationLayer will now store the filename of the shapefile.
1179            (MF_Map.remove_layer): If a layer is removed the associated object
1180            must be set new.
1181            
1182            * Extensions/umn_mapserver/mf_export.py(tb_layer_to_map): Add all
1183            layers which are exists in thuban to the mapobj. All removed Layers
1184            will be removed from the mapobj.
1185            Added comments to all functions.
1186            (thuban_to_map): No layer will be removed here.
1187            
1188            * Extensions/umn_mapserver/mf_handle.py
1189            (_has_umn_mapobj_and_selectedlayer): Activating the layer menu. Now
1190            Layersettings for the mapserver kann be edited.
1191    
1192            * Extensions/umn_mapserver/mf_import.py: Now all layers which are
1193            imported, will be linked with the associated MF_Layer.
1194            (import_mapfile): All layers, which are not selected, will be removed.
1195            Disable the "import layer from mapfile" menu option.
1196    
1197            * Extensions/umn_mapserver/sample/iceland.map: Set the status of the
1198            Annotation Layer from DEFAULT to OFF. The DEFAULT setting turns the
1199            layer on permanently.
1200    
1201    2004-08-03  Jan Sch�ngel  <[email protected]>
1202    
1203            * Extensions/umn_mapserver/mapfile.py(MF_Metadata.remove_allmetadata):
1204            New. This function removes all metadata
1205            (MF_Layer.set_group): New. Set the group setting.
1206            (MF_Layer.get_group): New. Get the group setting.
1207            (MF_Map): Removed the extra numlayers variable, used the mapscript
1208            parameter instead.
1209            (MF_Map.get_numlayers): New. This get numlayers.
1210            (MF_Map.remove_all_layers): New. Removes all layers from the mapobj.
1211            (MF_Map.add_thubanlayer): Replaced the exception handling by a check
1212            if the object is an instance. Also added the annotation layer here to
1213            export, but only the layer is created in the mapfile.
1214    
1215            * Extensions/umn_mapserver/mf_export.py(export_mapfile): Removed
1216            the check if a mapobj exist, because its not needed anymore. The
1217            export function is only available if a mapobj exist.
1218            Use the new function to remove all layers.
1219            
1220            * Extensions/umn_mapserver/mf_handle.py(Layer_Dialog): Added a group
1221            option and the metadata button. The layer dialog is temporary disabled.
1222            (Metadata_CustomDataTable): Added some functions to show the grid
1223            correct.
1224    
1225            * Extensions/umn_mapserver/mf_import.py: Moved the code for showing
1226            the number of layer from import_mapfile to this function.
1227            (AnnotationLayer): New. This Class shows the Annotation layer in
1228            thuban. The layer don't do anything. It's only to show the layer
1229            and to save the layer order.
1230            (add_annotationlayer): New. Import an annotation layer to thuban.
1231            (select_layer2import): New. Import only layers to thuban and not
1232            the other settings like projection or scalebar.
1233            (create_new_mapfile): Moved the _has_umn_mapobj function and the
1234            create_new_mapfile functions from mf_handle.py to mf_import.py.
1235            
1236            * Extensions/umn_mapserver/sample/iceland.map: Added the group
1237            parameter to the roads and cultural layers. Also added a new
1238            Annotation Layer for the cultural points.
1239    
1240            * Extensions/umn_mapserver/sample/iceland.html: Added the select
1241            option for the annotation layer.
1242    
1243            * Extensions/umn_mapserver/sample/index.html: Added the start
1244            parameter for the annotation layer.
1245    
1246    2004-08-01  Jan-Oliver Wagner <[email protected]>
1247    
1248            * Doc/manual/thuban-manual-de.xml (Chapter Session Management):
1249            translation completed.
1250    
1251            * Doc/manual/thuban-manual.xml (Chapter Session Management):
1252            Fixed unprecise description for Save Session.
1253    
1254    2004-07-31  Jan-Oliver Wagner <[email protected]>
1255    
1256            Started translation of Users Manual into german.
1257    
1258            * Doc/manual/thuban-manual-de.xml: New. German Users Manual.
1259    
1260            * Doc/manual/Makefile: Added build instructions for german
1261            users manual.
1262    
1263            * Doc/manual/thuban-manual.xml: Minor corrections in Introduction.
1264    
1265    2004-07-28  Jan Sch�ngel  <[email protected]>
1266    
1267            * Extensions/umn_mapserver/mapfile.py(MF_Metadata): Changed all class
1268            functions. Now all metadata will handle by the function and its not
1269            needed to initialize it from outside. Therefor the associated mapobj
1270            will be stored in the Metadata Object. So we can use the special
1271            functions from the associated mapobj to get the Metadata.
1272            Therefor all initialization code for the metadata is removed from the
1273            other classes.
1274            (MF_Layer): Added a function to get the metadata object.
1275            (MF_Map): Added a function to set the mappath, the path where
1276            the mapfile ist stored.
1277    
1278            * Extensions/umn_mapserver/mf_export.py(thuban_to_map): Changed the code
1279            to set the extent in the mapfile. Now the code is set by the displayed
1280            data in the Thuban-view.
1281            (export_mapfile): The shapepath is now set empty, until relative
1282            pathnames are supported.
1283    
1284            * Extension/umn_mapserver/mf_handle.py: Added a dialog to handle
1285            metadata. Yet only mapfile metadata are supported. Layer and class
1286            supported are not implemented.
1287            Added a dialog to handle layer informations. The dialog only shows the
1288            selected layer at the moment.
1289    
1290            * Extensions/umn_mapserver/mf_import.py(import_mapfile): Changed the
1291            code for setting the extent in thuban. Now the extent is set to the
1292            given extent from the mapfile.
1293            Fixed a logical mistake. Now the extent is set when realy a layer is
1294            loaded, and not if one is selected to load.
1295    
1296            * Extensions/umn_mapserver/sample/iceland.html: Added code to zoom and
1297            move the shown map in the browser.
1298    
1299            * Extensions/umn_mapserver/sample/iceland.map: Added a new metadata
1300            line to the mapobj and added metadata to the political layer.
1301    
1302            * Extensions/umn_mapserver/test/test_mapserver.py: Changed the test
1303            for Metadata.
1304    
1305    2004-07-26  Martin Schulze  <[email protected]>
1306    
1307            * Thuban/Lib/classmapper.py (ClassMapper.has): Added the new
1308            ClassMapper
1309    
1310            * test/test_classmapper.py (TestMapping.test_mapper): Added a Test
1311            case for the new ClassMapper
1312    
1313    
1314    2004-07-22  Bernhard Herzog  <[email protected]>
1315    
1316            * Thuban/UI/viewport.py (ViewPort.VisibleExtent): New.  Return the
1317            visible extent of the map in projected coordinates
1318    
1319            * test/test_viewport.py (SimpleViewPortTest.test_default_size)
1320            (SimpleViewPortTest.test_init_with_size): Add some VisibleExtent()
1321            tests.
1322            (SimpleViewPortTest.test_visible_extent): New. The real test for
1323            VisibleExtent()
1324    
1325    2004-07-22  Bernhard Herzog  <[email protected]>
1326    
1327            * test/test_viewport.py: Use support.run_tests as the main
1328            function when running asa script.
1329    
1330    2004-07-22  Jan Sch�ngel <[email protected]>
1331    
1332            * Extensions/umn_mapserver/mf_export.py: Added "import os"
1333            Removed the old "import Thuban.UI.mainwindow" code.
1334            (tbextent_to_map): Removed the extra function and at the code direct
1335            to "thuban_to_map" function.
1336            (write_creatorcomment): Added. Now a short comment is added to the
1337            beginning of an generated mapfile.
1338            (export_mapfile): Now the Path and filename are saved in to variables,
1339            and not together in one variable. This is needed for the new
1340            write_creatorcomment function.
1341                    
1342            * Extensions/umn_mapserver/mf_import.py (import_mapfile): Added the
1343            import module "re". Also added Range and the ClassGroupRange import
1344            from Thuban. Both are needed for the new range expression import.
1345            (create_rangeexpression): Added. Creates a Range Expression in Thuban
1346            style from a given mapfile expression.
1347            (added_rasterlayer): Make some small code changes. The shapepath is
1348            now stored in an extra variable and the clazz_name is set empty if no
1349            class name set in the mapfile.
1350            Changed the Error message for Range Expressions, becaus the new
1351            function create a error string which will be shown in the dialog.
1352    
1353            * Extensions/umn_mapserver/test/test_mapserver.py: Added a test for the
1354            range expression import.
1355    
1356    2004-07-21  Jan-Oliver Wagner <[email protected]>
1357    
1358            * Extensions/umn_mapserver/README: Added hint that
1359            installation as root can be avoided. Removed all tabs.
1360    
1361    2004-07-16  Bernhard Herzog  <[email protected]>
1362    
1363            * test/test_viewport.py
1364            (ViewPortTest.test_changing_map_projection): Check that changing
1365            the projection of an empty map shown in a viewport doesn't lead to
1366            exceptions in the viewport's handler for the
1367            MAP_PROJECTION_CHANGED messages
1368    
1369            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Only
1370            try to keep the same region visible when the map actually contains
1371            something
1372    
1373    2004-07-15  Jan Sch�ngel <[email protected]>
1374    
1375            * Extensions/umn_mapserver/mapfile.py: Added a function to get the
1376            mappath directly from the mapobj. Is needed because of the changes
1377            in mf_import.py.
1378            (MF_Layer.add_thubanclass): Added a new comment.
1379            (MF_Map.set_extent): Fixed a bug with exporting empty mapobj. If the
1380            mapobj is empty there is no extent get from thuban an so no one can
1381            set to th mapobj.
1382            
1383            * Extensions/umn_mapserver/mf_import.py (import_mapfile): Updated
1384            the discription.
1385            Split the funktion in to three smaller ones. The new functions are
1386            add_rasterlayer, add_polygonlayer and select_layer2import.
1387            Removed the mapfilepath and filepath initialisation, because its know
1388            include in the new functions.
1389            Now nothing will be imported if cancel is pressed in the
1390            layer choice dialog.
1391    
1392    2004-07-14  Jan Sch�ngel <[email protected]>
1393    
1394            * Extensions/umn_mapserver/mapfile.py: Added ClassGroupDefault to
1395            import.
1396            (MF_Symbolset): Removed the extra variable for numsymbols.
1397            (MF_Class.__init__): Added a comment to the exception clause.
1398            Removed the extent init, because it was not needed anymore.
1399            (MF_Layer.add_thubanclass): Added the code to set the class name to
1400            the expression value from thuban if no label is defined.
1401            Added the code to export Range expressions from thuban to the mapfile.
1402            (MF_Map.set_extent): Removed the exception and replace it by some if
1403            code. If the size of a map is not defined the size will be set to 1,1.
1404            This is necessary because if the extent is set, mapscript checks if
1405            the size is greater than zero.
1406            (MF_Web): Added the get and set function for the template.
1407    
1408            * Extensions/umn_mapserver/mf_export.py: Added the function to check
1409            if a mapobject exists and used it to set the status of the menu items.
1410            If no mapfile exists the settings could not be edditied.
1411            Define after which menuitem the exportitem will include.
1412            
1413            * Extensions/umn_mapserver/mf_handle.py: Removed the import
1414            Thuban.UI.mainwindow clause, because it is not needed.
1415            Added the command Refresh() to all "OnChangeColor()" functions,
1416            because the color preview window was not updated on a color change.
1417            Added the function to check if a mapobject exists and used it to set the
1418            status of the menu items. If no mapobject exists the settings could not
1419            be edditied.
1420            (Map_Dialog): Moved the imagetype selector from the
1421            Outputformat_Dialog to Map_Dialog and removed Outputformat_Dialog.
1422            (Web_Dialog): Removed the name label and added the template textbox.
1423    
1424            * Extensions/umn_mapserver/mf_import.py (import_mapfile): Replace
1425            the exception handling on loading the layers by an if statement. It
1426            is not necessary to us the exception there.
1427            The Filepath creation now use os.path.join to build the path.
1428    
1429            * Extensions/umn_mapserver/test/test_mapserver.py: Moved the testMap
1430            definition from global to the setUp function. Now the testMap will
1431            initialize new on each test.
1432    
1433            * Extensions/umn_mapserver/sample/iceland.map: Include three new
1434            classes in the Line Layer, to test logical Expressions.
1435            Set the status of the class "Point9" in the Point Layer to off
1436            
1437    2004-07-13  Bernhard Herzog  <[email protected]>
1438    
1439            * Thuban/UI/baserenderer.py
1440            (BaseRenderer.render_map_incrementally): Fix a logic bug in the
1441            optimization that tries not to draw layers under a raster layer.
1442            The bug was harmless.  All it effectively did was to produce The a
1443            strange messages about not being able to draw Layer instances for
1444            all vector layers below a raster layer which would be invisible
1445            anyway because the raster layer currently always covers the entire
1446            window
1447    
1448    2004-07-08  Jan Sch�ngel <[email protected]>
1449    
1450            * Extensions/umn_mapserver/mapfile.py: Added code to generade and get
1451            a list of supported outputformats. This formats are not alle supported
1452            because there is no possibility to get the outputformat without the
1453            name known. Make some formal changes to the code.
1454            (MF_Map.set_name()): Fixed a bug if the name is None.
1455    
1456            * Extensions/umn_mapserver/mf_handle.py: Removed the image_type import
1457            statement, because its not needed anymore. The Outputformat is now
1458            given as string from the object. Make some formal changes to the code.
1459    
1460            * Extensions/umn_mapserver/test/test_mapserver.py: Added new test for
1461            most of the new setting which were added during the last changes.
1462            Removed the MF_Size Test.
1463            
1464            * Extensions/umn_mapserver/test/test.map: Added a new class to the
1465            cultural Layer to test expressions and the the status of that layer
1466            from on to default.
1467            Changed the data path the the correct Thuban Data
1468            Added the Outputformat Object and Symbol Object
1469            
1470    2004-07-07  Jan Sch�ngel <[email protected]>
1471    
1472            * Extensions/umn_mapserver/mapfile.py: Added some new
1473            settings to edit (outputformat, label, imagetype)
1474    
1475            * Extensions/umn_mapserver/mf_handle.py: Added some setting to
1476            the Label Dialog and add the OutputDialog.
1477            Make some changes to the code order.
1478    
1479    2004-07-06  Jan Sch�ngel <[email protected]>
1480    
1481            * Extensions/umn_mapserver/mapfile.py: Added the symbolObj, pointObj
1482            and line Obj and add the scalebar_status_type, scalebar_style_type and
1483            scalebar_position_type.
1484            Added the symbol- and symbolsetObject (MF_Symbol,MF_Symbolset). The
1485            are only used to create a Symbol like the circle in Thuban.
1486            Added the scalebarObject (MF_Scalebar)
1487            (MF_Class): Added set_status and get_status.
1488            (MF_Layer.add_thubanclass): Added code to set the class status
1489            (MF_Map): Added code to handle the symbols and scalebar
1490            (MF_Label): Added the set_partials and get_partials functions
1491            
1492            * Extensions/umn_mapserver/mf_export.py: Added MF_Symbol to import
1493            from mapfile. Added a function to create a circle object like the one
1494            from thuban if no one exists.
1495            
1496            * Extensions/umn_mapserver/mf_handle.py: All colors are now set when
1497            press ok in the assosiated dialog and not at the end of the
1498            colordialog.
1499            Added the Dialog for the Scalebar.
1500            (Label_Dialog): Added the offset option
1501    
1502            * Extensions/umn_mapserver/mf_import.py: Added code to import the
1503            status of the Classes.
1504            Fixed a bug with the projection. Now the to_meter parameter will be
1505            added to the Projection only if it doesn't exists.
1506    
1507    2004-07-01  Jan Sch�ngel <[email protected]>
1508    
1509            Added the functionality to handle the content thuban is not
1510            able to handle directly.
1511    
1512            * Extensions/umn_mapserver/mf_handle.py: New. This module extents
1513            Thuban with the possibility to edit the mapfile content.        
1514            
1515            * Extensions/umn_mapserver/mf_import.py: Added the possibility
1516            to import mapfiles without any layer selected. So it is possible
1517            to edit the other settings in a mapfile.
1518            (import_mapfile): Added code to use the editing functions.
1519            Added the possibility to import the projection to a layer if one
1520            is defined.
1521            Status settings (On,Off) will now set in thuban (visible, invisible).
1522            fixed a bug with with classnames. If no classname is set in mapfile
1523            the value in Thuban will set to the expression.
1524            
1525            * Extensions/umn_mapserver/mf_export.py(export_mapfile): Added the
1526            possibility to save a new mapfile or use the old one which is
1527            imported or new created.
1528            Added code to use the editing functions.
1529            Remove some not needed import statements
1530    
1531            * Extensions/umn_mapserver/mapfile.py: Added new types which are
1532            need for the editing functions.
1533            Added needed set-functions for the editing functions.
1534            Added the possibility to export rasterimages.
1535            Added new classes (MF_Web, MF_Label, MF_Legend, MF_Symbol,
1536            MF_SymbolSet). MF_Symbol and MF_SymbolSet are not needed at the
1537            moment.
1538            (MF_Class.set_thubanstyle): Now point layers will set to a default
1539            symbol to show a circle in mapserver and not only a 1px dot.
1540            (MF_Style.__init__): Fixed a bug with the color. Color was not set
1541            correct before.
1542            (MF_Size): Removed, because it is not needed.
1543            
1544            * Extensions/umn_mapserver/README: Added the hints to use the
1545            export and editing functions, too.
1546    
1547            * Extensions/umn_mapserver/sample/iceland.map: Added the
1548            new parameter "UNITS METERS".
1549            Change the political layer to status OFF.
1550    
1551            * Extensions/umn_mapserver/sample/README: Added some
1552            more details to setup the sample in the MapServer.
1553            
1554    2004-06-26  Bernhard Reiter <[email protected]>
1555    
1556            * Extensions/svgexport/test/test_svgmapwriter.py:
1557            Removed class VFile and used standard StringIO instead.
1558    
1559    2004-06-23  Jan Sch�ngel  <[email protected]>
1560    
1561            Add the export function to the umn_mapserver extension.
1562    
1563            * Extension/umn_mapserver/mf_export.py: New. This module extents
1564            Thuban with the possibility to export the Thuban content.
1565    
1566            * Extensions/umn_mapserver/mapfile.py: Expand the classes to use
1567            with the export module. Especially added the possibility to
1568            add thuban objects directly to the map objects.
1569    
1570            * Extensions/umn_mapserver/mf_import.py: Removed the wxCHANGE_DIR,
1571            because of the hint from Bernhard Herzog.
1572            Corrected the handling of absolute pathnames.
1573            Changed the Text of the Menu-Item, now the beginning is upper case.
1574    
1575            * Extensions/umn_mapserver/README: Added the --with-tiff statement.
1576    
1577    2004-06-16  Jan Sch�ngel  <[email protected]>
1578    
1579            Add a sample and make some changes.
1580    
1581            * Extension/umn_mapserver/mf_import.py: Changed the wxPython.wx
1582            import from * to explicit used statements. Changed the
1583            Thuban.UI.mainwindow import phrase, too.
1584            (import_mapfile):Corrected a clerical mistake.
1585            Added wxCHANGE_DIR in OpenFile Dialog.
1586            Added a MultipleChoiceDialog, to select the layers to load from
1587            mapfile into thuban. Thereby the projection is only set if one layer
1588            is selected.
1589            Added the possibility to handle relative pathnames which uses
1590            up-level references.
1591            Removed some doubled code.
1592            Corrected an error with integer values used as label in thuban
1593            ClassGroup.
1594            
1595            * Extensions/umn_mapserver/sample: New.
1596    
1597            * Extensions/umn_mapserver/sample/README: New. Describes the
1598            usage of the sample files.
1599    
1600            * Extensions/umn_mapserver/sample/iceland.map: New. This is
1601            a suitable .map-file for the iceland data.
1602    
1603            * Extensions/umn_mapserver/sample/index.html: New. The template
1604            for the mapfile.  
1605    
1606            * Extensions/umn_mapserver/sample/iceland.html: New. Initialisation
1607            file for the Iceland Application on web.
1608    
1609            * Extensions/umn_mapserver/README: Corrected a inaccuracy and added
1610            some details.
1611    
1612            * Extensions/umn_mapserver/test/test_mapserver
1613            (mapserver_import_Test_generalClasses.test_MF_Color):
1614            Corrected the thubancolor test.
1615    
1616    2004-06-15  Jan Sch�ngel  <[email protected]>
1617    
1618            * Extensions/umn_mapserver/README: New. Install instruction.
1619    
1620    2004-06-14  Bernhard Reiter <[email protected]>
1621    
1622            * libraries/thuban/cpl_mfile.h: Added copyright header.
1623    
1624            * libraries/thuban/ cpl_mfile.cpp, cpl_mfile.h: Added non-protecting
1625            Free Software License so that it is most useful with gdalwarp
1626            and bmpdataset.
1627    
1628    2004-06-14  Bernhard Herzog  <[email protected]>
1629    
1630            * Thuban/UI/multiplechoicedialog.py (__version__): Add missing
1631            import of wxPython.wx itself (as opposed to the contents of
1632            wxPython.wx).  For some reason wxPython.wx is available as
1633            wxPython.wx.wx in at least some 2.4 releases.  Fixes RT#2482
1634            wrt. wxPython 2.4.
1635    
1636    2004-06-10  Jan Sch�ngel  <[email protected]>
1637    
1638            Initial version of new extension "umn_mapserver".  This extension aims
1639            to manage configuration for the UMN MapServer application.  This
1640            inital version just imports the .map-files and displays all, Thuban is
1641            capable of.
1642    
1643            * Extensions/umn_mapserver, Extensions/umn_mapserver/test: New.
1644    
1645            * Extensions/umn_mapserver/test/README: New. Describes how to run the
1646            tests.
1647    
1648            * Extensions/umn_mapserver/test/test.map: New. This is a test
1649            .map-file for automated tests of the umn_mapserver extension of
1650            Thuban.
1651    
1652            * Extensions/umn_mapserver/test/test_mapserver.py: New. Tests for
1653            UMN Mapserver classes.
1654    
1655            * Extensions/umn_mapserver/__init__.py: New. Init to make this
1656            directory a package.
1657    
1658            * Extensions/umn_mapserver/mapfile.py: New. Classes to represent
1659            '.map'-file objects.
1660    
1661            * Extensions/umn_mapserver/mf_import.py: New. This module extends
1662            Thuban with the possibility to handle UMN MapServer mapfiles.
1663    
1664    2004-06-03  Bernhard Herzog  <[email protected]>
1665    
1666            * Thuban/Model/layer.py (Layer.TreeInfo): Convert the bounding box
1667            to a tuple before using it as arguments to the % operator.  This
1668            fixes the formatting issue filed in RT#2239 on 2004-01-13 and
1669            reported today on thuban-list by Jan Sch�ngel
1670    
1671            * test/test_layer.py (TestLayerModification.setUp): Save the
1672            filename as an instance variable so we can refer to it in tests
1673            (TestLayerModification.test_tree_info): Uncomment this method
1674            again and make it work.  This tests for the formatting issue
1675            filed in RT#2239 on 2004-01-13
1676    
1677    2004-05-28  Bernhard Herzog  <[email protected]>
1678    
1679            * Thuban/UI/baserenderer.py: Fix some typos.
1680    
1681    2004-05-18  Jan-Oliver Wagner <[email protected]>
1682    
1683            * Extensions/gns2shp/gns2shp.py (gns2shp): Fixed a bug
1684            by increasing a field size.
1685    
1686    2004-05-17  Bernhard Herzog  <[email protected]>
1687    
1688            Update to newest shapelib and get rid of Thuban specific
1689            extensions, i.e. use the new DBFUpdateHeader instead of our
1690            DBFCommit kludge
1691    
1692            * libraries/shapelib/shpopen.c: Update to version from current
1693            shapelib CVS.
1694    
1695            * libraries/shapelib/shapefil.h: Update to version from current
1696            shapelib CVS.
1697    
1698            * libraries/shapelib/dbfopen.c: Update to version from current
1699            shapelib CVS.
1700            (DBFCommit): Effectively removed since shapelib itself has
1701            DBFUpdateHeader now which is better for what DBFCommit wanted to
1702            achieve.  
1703            We're now using an unmodified version of dbfopen.
1704    
1705            * setup.py (extensions): Add the HAVE_UPDATE_HEADER macro with
1706            value '1' to the Lib.dbflibc extension.  This simply reflects the
1707            shapelib and pyshapelib updates
1708    
1709    2004-05-16  Jan-Oliver Wagner <[email protected]>
1710    
1711            Finished introduction of Menu.FindOrInsertMenu.
1712    
1713            * Extensions/drawshape/drawshape.py: Add the command
1714            to the experimental menu additionally to the toolbar.
1715    
1716            * Extensions/svgexport/svgsaver.py: Use FindOrInsertMenu() instead of
1717            finding menu on its own.
1718    
1719            * Doc/manual/thuban-manual.xml: updated sample file
1720            to use FindOrInsertMenu().
1721    
1722            * Examples/simple_extensions/hello_world.py: Use FindOrInsertMenu()
1723            instead of finding menu on its own.
1724    
1725    2004-05-11  Jan-Oliver Wagner <[email protected]>
1726    
1727            * test/test_menu.py (MenuTest.test): Added testing
1728            of method Menu.FindOrInsertMenu.
1729    
1730    2004-05-10  Jan-Oliver Wagner <[email protected]>
1731    
1732            Introduce and use Menu.FindOrInsertMenu.
1733    
1734            * Thuban/UI/menu.py (Menu.FindOrInsertMenu): New. Find a
1735              given menu or, if not found, insert it.
1736    
1737            * Extensions/bboxdump/bboxdump.py, /Extensions/gns2shp/gns2shp.py,
1738            /Extensions/importAPR/importAPR.py, Extensions/profiling/profiling.py,
1739            /Extensions/wms/wms.py: Use FindOrInsertMenu() instead of finding
1740            menu on its own.
1741    
1742    2004-05-06  Jan-Oliver Wagner <[email protected]>
1743    
1744            Introduce a abstract ColorDialog class and remove
1745            and outdated file.
1746    
1747            * Thuban/UI/proj4dialog.py: Removed. It is has been
1748            replaced by projdialog for quite a while and is not used
1749            anymore.
1750    
1751            * Thuban/UI/colordialog.py: New. Abstraction for color selection
1752            dialog(s).
1753    
1754            * Thuban/UI/classifier.py (SelectPropertiesDialog.__GetColor):
1755            Now calls the abstract ColorDialog instead of wxColourDialog.
1756            This also removed the dependency to Color class conversion
1757            from this function.
1758    
1759    2004-05-04  Frank Koormann  <[email protected]>
1760    
1761            * Extensions/bboxdump/__init__.py: Fixed string left over from
1762            copying.
1763    
1764            * Extensions/bboxdump/bboxdump.py (bboxdump):
1765            Use layer.ShapeStore().AllShapes() to loop over shapes instead of
1766            xrange(layer.NumShapes()). Compile the bboxmessage from a list
1767            of formatted outputs (string.join) instead of appending to the
1768            message. Two progress bar dialogs to report progress on the sometimes
1769            lenghty processing.
1770    
1771    2004-04-22  Frank Koormann  <[email protected]>
1772    
1773            New Extension to dump bounding boxes of all shapes of the selected
1774            layer. An optional column can be specified to group the objects,
1775            in this case the bounding box is a union of the separate boxes.
1776            Dump can be displayed in a ScrolledMessageDialog or written to file.
1777            The Extension is simply a combination of available and well tested
1778            Thuban functionality.
1779    
1780            * Extensions/bboxdump/__init__.py: New: Init to make this
1781            directory a package.
1782    
1783            * Extensions/bboxdump/bboxdump.py: New: Dump bounding boxes of
1784            all shapes of the selected layer.
1785    
1786    2004-04-22  Jan-Oliver Wagner <[email protected]>
1787    
1788            * Thuban/UI/classgen.py (GenUniquePanel.__init__): Fixed two
1789            strings to be i18n now.
1790    
1791    2004-04-18  Jan-Oliver Wagner <[email protected]>
1792    
1793            Changing popup menu of legend from direct building
1794            to using the Menu construction as used for the mainwindow.
1795    
1796            * Thuban/UI/mainwindow.py: New method commands: layer_to_top,
1797            layer_to_bottom, layer_visibility
1798            (MainWindow.LayerToTop): New. Put current layer to the top.
1799            (MainWindow.LayerToBottom): New. Put current layer to bottom.
1800            (MainWindow.HideLayer, MainWindow.ShowLayer, _has_visible_map):
1801            Replace 1,0 by True, False.
1802            (MainWindow.ToggleLayerVisibility): New. Toggle visibility of
1803            current layer.
1804            (MainWindow.LayerShowTable): Removed raising of dialog.
1805            (_has_selected_layer_visible): New. Support function.
1806    
1807            * Thuban/UI/legend.py: ID_POP_xxx: removed.
1808            (LegendPanel.__init__): Removed EVT_MENU bindings.
1809            (LegendTree._OnRightClick): Replace direct creation of
1810            menu via wx Classes by applying the menu definition
1811            as of Menu class of menu.py.
1812            
1813    2004-04-16  Jan-Oliver Wagner <[email protected]>
1814    
1815            * Thuban/UI/exceptiondialog.py (ExceptionDialog.dialog_layout): Improved
1816        button string to stronger clearify that Thuban will be closed when hitting
1817            the button.
1818    
1819            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Added docstring.
1820            Now for layers without a ShapeStore a corresponding message is given
1821            to the user, that this layer has no table to show.
1822    
1823    2004-04-15  Martin Schulze  <[email protected]>
1824    
1825            * Extensions/wms/layer.py (WMSLayer.setWMSFormat): Need to
1826            recalculate the format for the internal render engine as well.
1827    
1828            * Extensions/wms/properties.py (wmsProperties): First start for a
1829            properties dialog.  It's functional for a first selection of
1830            layers, but still has some weired wxWidgets/GTK problems but
1831            beautification can be done later.
1832    
1833            * Extensions/wms/layer.py: Added more documentation
1834            (WMSLayer.getFormats): New: Return list of supported image formats
1835            by the WMS server
1836            (WMSLayer.getLayers): New: Return the list of layer names
1837            supported by the WMS server
1838            (WMSLayer.getLayerTitle): New: Return the title of the named layer
1839            (WMSLayer.getWMSFormat): New: Return the image format that is used
1840            for WMS GetMap requests
1841            (WMSLayer.setWMSFormat): New: Set the image format that is used
1842            for WMS GetMap requests
1843            (WMSLayer.__init__): Move away from using only one layer to using
1844            a list of layers (unsorted at the moment, though).
1845            (WMSLayer.getVisibleLayers): New: Return the list of names for all
1846            visible layers
1847            (WMSLayer.setVisibleLayers): New: Set the list of names for all
1848            visible layers
1849    
1850            * Extensions/wms/wms.py: Moved the WMS layer into layer.py in
1851            order to establish a clean structure.
1852    
1853            * Extensions/wms/layer.py: Moved the WMS layer into a file on its
1854            own in order to establish a clean structure.
1855    
1856    2004-04-13  Martin Schulze  <[email protected]>
1857    
1858            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Added
1859            support for oldstyle (WMS 1.0 apparently) image format
1860            specification.
1861    
1862            * Extensions/wms/wms.py (WMSLayer.calcFormat): Reduce the list of
1863            supported graphic formats back to JPEG and BMP, PNG and others are
1864            too *cough* experimental...  Sorry, I meant to filter this out
1865            before I committed this part.  This should make the WMS extension
1866            run from CVS again.
1867            (wms_dialog): Reset an empty URL to None so that the subsequent
1868            program can depend on this, since the dialog will indeed return an
1869            empty URL, causing another declaration of love by Python.
1870    
1871            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerBBox):
1872            Whenever a native BoundingBox request cannot be fulfilled, check
1873            whether the requested SRS is EPSG:3426, in which case return the
1874            LatLonBoundingBox values.
1875    
1876            * Extensions/wms/test/test_parser.py
1877            (TestWMSCapabilitiesParser.test_LayerSRS): Added a test for
1878            ignoring AUTO:* SRS.
1879            (TestWMSCapabilitiesParser.test_LatLonBoundingBoxes_as_bboxes):
1880            Added another test method to test whether the LatLonBoundingBox
1881            values will be returned if BoundingBox values are requested with
1882            SRS set to EPSG:3426.
1883    
1884            * Extensions/wms/parser.py (WMSCapabilitiesParser.peekLayers):
1885            Added rudimentary support for non-EPSG SRS, i.e. ignore them for
1886            the moment by placing them into a variable which is currently
1887            unused.  Also test whether the EPSG SRS is numerical as it should
1888            be and add an error message if it is not.
1889    
1890            * Extensions/wms/test/sample.xml: Added AUTO:* SRS since they
1891            appear in the real world as well.  Since we cannot handle them yet
1892            (OGCLib can't either), we will ignore them for the moment.
1893    
1894            * Extensions/wms/parser.py: Use a variable for denoting the sample
1895            filename
1896            (WMSCapabilitiesParser.peekLayers): Added support for error
1897            messages during grok().  They will be aggregated in an array and
1898            may be displayed later.  We may have to add a classification
1899            "Warning" and "Error" to this.  That requires more experience,
1900            though, since not every error may be lethal.
1901    
1902            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Raise the
1903            ShowTable() dialog/frame when the user attempts to display it
1904            while it has been opened before already and not closed again.
1905    
1906    2004-04-11  Martin Schulze  <[email protected]>
1907    
1908            * Extensions/wms/infodialog.py: Adjusted the class documentation
1909    
1910            * Extensions/wms/wms.py (WMSLayer.__init__, WMSLayer.GetMapImg):
1911            Switch to using Thuban{Begin,End}BusyCursor instead of the pure
1912            wxWidgets variants.
1913            (WMSLayer.__init__): The epsg_id variable is named top_srs now.
1914    
1915            * Extensions/wms/infodialog.py: Added an information dialog that
1916            will display various information about the WMS current resource,
1917            so that additional information such as the title, the abstract,
1918            fees and access constraints can be displayed for the user if they
1919            are documented in the WMS XML.
1920    
1921    2004-04-10  Martin Schulze  <[email protected]>
1922    
1923            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Adjusted
1924            string handling.  It's "foo".lower() and not lower(foo) without
1925            lower imported from strings or something.
1926    
1927            * Extensions/wms/wms.py (WMSLayer): Incorporated WMSCapabilities
1928            from capabilities.py and parser.py.  Implement priority list for
1929            supported graphics formats, take care of wbmp != bmp.  PNG, TIFF
1930            and GIF are supported here, but not yet by main Thuban.  Hence,
1931            support for them may be removed later.  Special contribution to
1932            usability: get wxWidgets to change the cursor when we're waiting
1933            for data from the network so the user won't start to worry.  This
1934            causes a redrawing error/warning, though.
1935    
1936            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Unlink
1937            the DOM object.
1938    
1939    2004-04-01  Martin Schulze  <[email protected]>
1940    
1941            * Extensions/wms/capabilities.py: Adjusted documentation
1942            (WMSCapabilities.__init__): Improved documentation, fixed syntax
1943            (WMSCapabilities.saveCapabilities): Only catch IOError when
1944            handling files
1945            (WMSCapabilities.loadCapabilities): Only catch IOError when
1946            handling files
1947            __main__: corrected variable naming
1948            (WMSCapabilities.fetchCapabilities,loadCapabilities): Make this
1949            class a specialisation of WMSCapabilitiesParser as well.  Also
1950            execute grok() after loading or fetching capabilities, if that
1951            went well, so that subsequent calls can already access the data.
1952            (WMSCapabilities.getVersion): Export the used version of the
1953            GetCapabilities request, so we can use it for subsequent calls,
1954            i.e. for GetMap requests.
1955            (WMSCapabilities.fetchCapabilities): Added proper error handling
1956            when the GetCapabilities request failed, so that the surrounding
1957            program can act accordingly.
1958    
1959    2004-03-30  Martin Schulze  <[email protected]>
1960    
1961            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerSRS):
1962            Adjusted the getLayerSRS method to return the list of SRSes
1963            extracted from <SRS> elements instead of <BoundingBox> elements.
1964            Added a bit of documentation as well.
1965            (WMSCapabilitiesParser.checkLayerSRS): Removed integrity test
1966            since it was only implemented due to a misunderstanding.
1967    
1968            * Extensions/wms/test/test_parser.py
1969            (TestWMSCapabilitiesParser.test_LayerSRS): Adjust the tests to
1970            reflect the corrected interpretation of the standard: i.e. a layer
1971            does not have to define a BoundingBox for all SRSes it supports.
1972            Hence the <SRS></SRS> specification is authoritative, not the list
1973            of BoundingBoxes.
1974            (TestWMSCapabilitiesParser.test_BoundingBoxes): Added a new test
1975            to ensure None is returned for a non-existing SRS.
1976            (TestWMSCapabilitiesParser.test_grok): Removed test_grok method
1977            since it is not applicable anymore.  Listing more SRSes in <SRS>
1978            elements is valid according to the specs.
1979    
1980    2004-03-26  Bernhard Reiter <[email protected]>
1981    
1982            * README: Nicer formatting of text. Improved descriptions.
1983            Reflected wxWidgets name change.
1984            
1985            * Thuban/UI/about.py: Extended copyright to 2004 and added
1986            information about the thuban-devel mailinglist.
1987    
1988    2004-03-24  Martin Schulze  <[email protected]>
1989    
1990            * Extensions/wms/capabilities.py: Renamed the class to contain
1991            'WMS', also added a linebreak where required
1992    
1993            * Extensions/wms/parser.py: Finally added the XML parser for the
1994            GetCapabilities response.
1995    
1996            * Extensions/wms/test/sample.xml: Adjusted the sample file so that
1997            <SRS> elements match the <BoundingBox> elements, except for the
1998            layer 'beschriftung'.
1999    
2000            * Extensions/wms/test/test_parser.py: Encode non-ascii strings
2001            since Python uses unicode strings internally, otherwise
2002            comparisons will fail.  Removed tests for getLayerBBoxSRS() since
2003            the SRS will be calculated anyway and this method is obsoleted by
2004            getLayerSRS().  Denote SRS as strings and not as cardinal numbers.
2005            Move loading the sample file into the setUp method.  Added a test
2006            for finding the integrity problem in the sample response.
2007            Improved formatting.
2008    
2009            * Extensions/wms/domutils.py: Added convenience routines for
2010            handling of Document Object Model (DOM) nodes.
2011    
2012            * Extensions/wms/test/test_domutils.py: Added a test for the
2013            domutils module
2014    
2015    2004-03-19  Martin Schulze  <[email protected]>
2016    
2017            * Extensions/wms/test/test_parser.py (TestWMSCapabilitiesParser):
2018            Moved path detection and adding into a module of its own,
2019            adjustpath, which exports thubandir as main Thuban directory.
2020    
2021            * Extensions/wms/test/test_ogclib.py (TestWMSLib): Moved path
2022            detection and adding into a module of its own, adjustpath, which
2023            exports thubandir as main Thuban directory.  Reorganised the
2024            module in order to support the SkipTest feature for Thuban test
2025            cases.
2026    
2027            * Extensions/wms/test/adjustpath.py: Moved path detection and
2028            adding into a module of its own.
2029    
2030    2004-03-18  Martin Schulze  <[email protected]>
2031    
2032            * Extensions/wms/test/test_parser.py: Added another test for
2033            checking whether the WMS XML parser (to be implemented) returns
2034            the information we expect.  This requires a sample WMS WML file
2035            (sample.xml) which has been extracted from the frida server and
2036            "improved" manually.
2037    
2038            * Extensions/wms/test/test_ogclib.py: Added legacy code to add the
2039            main Thuban directory to the path in order to be able to import
2040            random modules.  Adjusted the PyOGCLib detection to reuse the
2041            information gathered.  Also added a note about the PYTHONPATH
2042            environment variable.
2043    
2044            * Extensions/wms/test/test_ogclib.py: The format specification is
2045            a mime-type, not a graphic format, hence image/jpeg wou ld be the
2046            proper format and not JPEG.  We'll also have to take care of the
2047            encoding of / as %2F.
2048    
2049    2004-03-16  Martin Schulze  <[email protected]>
2050    
2051            * Extensions/wms/test/test_ogclib.py: Added a (hopefully)
2052            comprehensive test for the getMapURL method, built compare URLs
2053            according to the documentation in OGC 01-068r3
2054    
2055            * Extensions/wms/capabilities.py (WMSCapabilities): Added the
2056            class WMSCapabilities to manage capabilites, will incorporate
2057            parsing the capabilities response and provide details for other
2058            classes.
2059    
2060    2004-03-12  Bernhard Herzog  <[email protected]>
2061    
2062            Support views in addition to normal tables in the postgis
2063            shapestore
2064    
2065            * Thuban/Model/postgisdb.py
2066            (PostGISShapeStore._fetch_table_information): Add a fallback for
2067            the case where the table name is not in the geometry_columns
2068            table.  This is usually the case for views.  Also, set
2069            self.shapestore here.
2070            (PostGISShapeStore.ShapeType): No need to query the database all
2071            the time.  The shape type is now determined in
2072            _fetch_table_information
2073    
2074            * test/postgissupport.py (PostgreSQLServer.new_postgis_db)
2075            (PostgreSQLServer.get_static_data_db, PostGISDatabase.__init__):
2076            New parameter to specify views.
2077            (PostGISDatabase.has_data): Also compare the views.  New views
2078            parameter
2079            (PostGISDatabase.initdb): Create the views.
2080            (PostgreSQLServer.get_default_static_data_db): Add the v_landmarks
2081            view
2082    
2083            * test/test_postgis_db.py
2084            (TestPostGISShapestorePointFromViews): New.  Test a
2085            PostGISShapeStore with a view
2086            (TestPostGISShapestorePointOIDAsGIDColumn.setUp): Pass the name of
2087            the geometry_column explicitly to test whether that works
2088    
2089    2004-03-12  Bernhard Herzog  <[email protected]>
2090    
2091            Final step for explicit id/geometry columns: Loading and saving
2092    
2093            * Resources/XML/thuban-1.1.dtd: New.  Derived from thuban-1.0.dtd
2094            with the following changes:
2095            (dbshapesource): Two new attributes id_column and geometry_column
2096    
2097            * Thuban/Model/save.py (SessionSaver.write): Use the new dtd
2098            (SessionSaver.write_session): Use the new namespace
2099            (SessionSaver.write_data_containers): Write the new dbshapesource
2100            parameters
2101    
2102            * Thuban/Model/load.py (SessionLoader.__init__): New namespace for
2103            the new file format version
2104            (SessionLoader.start_dbshapesource): Handle the new db parameters
2105    
2106            * test/test_save.py: Update to the new dtd and namespace
2107            (SaveSessionTest.test_save_postgis): Update the NonConnectionStore
2108            mock object to provide a working IDColumn method.
2109    
2110            * test/test_load_1_0.py: New.  Copy of the test_load.py before
2111            today's changes but with the round-trip tests removed.
2112    
2113            * test/test_load_0_9.py: Update doc-string.
2114    
2115            * test/test_load.py: Update all .thuban files to the new dtd and
2116            namespace.
2117            (TestPostGISLayer.file_contents): Add the new dbshapesource
2118            paramters
2119    
2120    2004-03-11  Bernhard Herzog  <[email protected]>
2121    
2122            Next step for explicit id/geometry columns: User interaction
2123    
2124            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Rework how
2125            the dialog is constructed. Add combo boxes to select id and
2126            geometry column.  Rename some instance variables.
2127            (ChooseDBTableDialog.GetTable): Return id and geometry column
2128            names
2129            (ChooseDBTableDialog.OnTableSelect): New. Event handler for
2130            selections in the table list
2131    
2132            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Use id_column
2133            and geometry_column
2134    
2135            * Thuban/Model/session.py (Session.OpenDBShapeStore): Add the new
2136            parameters for id_column and geometry column of PostGISShapeStore
2137            here as well.
2138    
2139            * Thuban/Model/postgisdb.py (type_map): Add ROWID psycog type.
2140            (_raw_type_map): New. Map raw PostgreSQL type ints to thuban types
2141            (PostGISConnection.GeometryTables): Use a better query to
2142            determine which relations in the database might be usable for
2143            shapestores.  Now supports views as well but is more PostgreSQL
2144            specific
2145            (PostGISConnection.table_columns): New. Somewhat experimental
2146            method to let the db dialogs provide lists of columns to users so
2147            that they can select id and geometry columns.
2148            (PostGISTable.__init__): The default value of the id_column
2149            parameter is now None it still means "gid" effectively, though.
2150            (PostGISTable.IDColumn): New introspection method to return a
2151            column object for the id column
2152            (PostGISShapeStore.GeometryColumn): New introspection method to
2153            return a column object for the geometry column
2154    
2155            * test/test_postgis_db.py
2156            (TestPostGISConnection.test_gis_tables_non_empty):
2157            Removed. Subsumed by the new:
2158            (TestPostGISConnection.test_gis_tables_with_views_and_tables):
2159            New. Tes the GeometryTables and table_columns methods with actual
2160            tables and views.
2161            (PointTests.test_id_column, PointTests.test_geometry_column):
2162            New. tests for the new methods.
2163            (TestPostGISShapestorePoint.setUp)
2164            (TestPostGISShapestorePointSRID.setUp)
2165            (TestPostGISShapestorePointExplicitGIDColumn.setUp): Fill the
2166            instance variables needed by the new tests
2167    
2168    2004-03-11  Bernhard Herzog  <[email protected]>
2169    
2170            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): The row
2171            numbers given to ReadValue are ordinals.
2172    
2173    2004-03-11  Bernhard Herzog  <[email protected]>
2174    
2175            Elimiate the requirement for PostGIS tables to have a column
2176            called "gid".
2177    
2178            * Thuban/Model/postgisdb.py (PostGISTable.__init__): New parameter
2179            id_column to specify which column to use to identify rows.  Also
2180            new instance variables id_column and quoted_id_column
2181            (PostGISTable.RowIdToOrdinal, PostGISTable.RowOrdinalToId)
2182            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue)
2183            (PostGISTable.SimpleQuery): Use the id column name provided to the
2184            constructor instead of "gid"
2185            (PostGISShapeStore.__init__): New parameter id_column analogously
2186            to PostGISTable.__init__.  This parameter is simply passed through
2187            to the base class constructor
2188            (PostGISShapeStore._create_col_from_description): Fix typo in
2189            doc-string
2190            (PostGISShapeStore.Shape, PostGISShapeStore.AllShapes)
2191            (PostGISShapeStore.ShapesInRegion): Use the id column name
2192            provided to the constructor instead of "gid"
2193    
2194            * test/postgissupport.py
2195            (PostgreSQLServer.get_default_static_data_db): New static table
2196            landmarks_point_id with an id column != "gid.  Update the comments
2197            a bit.
2198            (skip_if_addgeometrycolumn_does_not_use_quote_ident): Fix typo in
2199            doc-
2200            (upload_shapefile): New parameter gid_column to use a name other
2201            than "gid" for the column to store the shape ids
2202    
2203            * test/test_postgis_db.py (TableTests): New.  Mixin-class
2204            containing all tests previously in TestPostGISTable.  The actual
2205            tests are the same but the code is a bit more configurable to
2206            allow for different id columns etc.
2207            (TestPostGISTable): Derive from TableTests now for the actual
2208            tests.
2209            (TestPostGISTableExplicitGIDColumn): New. Like TestPostGISTable
2210            except that it the landmarks_point_id table to test the id_column
2211            parameter
2212            (PointTests): Extend the doc-string
2213            (TestPostGISShapestorePointExplicitGIDColumn)
2214            (TestPostGISShapestorePointOIDAsGIDColumn): New classes derived
2215            from PointTests to test the explicit id_column parameter.  One
2216            tests with the name of the column holding the shape ids, the other
2217            uses PostgreSQL's OID column.  For the latter a number of methods
2218            have to be overwritten to make them independent of the actual id
2219            values.
2220    
2221    2004-03-08  Silke Reimer  <[email protected]>
2222    
2223            Update debian directory:
2224    
2225            * debian/changelog: Added new version.
2226            * deiban/rules: Updated management of patches (with cbds)
2227            * debian/control: Added cbds to dependencies
2228            * debian/patches/*: New. Adds better support for patches of thuban in
2229                            debian
2230            * debian/menu: Syntax of menu changed slightly
2231            * debian/setup.py.patch: removed because it has been moved to
2232                            debian/patechs/setup.py.patch
2233            
2234    
2235    2004-02-26  Bernhard Herzog  <[email protected]>
2236    
2237            Create the Doc/technotes directory for text files with information
2238            for developers
2239    
2240            * Doc/technotes/README: New. README for the technotes
2241    
2242            * Doc/technotes/coding_guidelines.txt: New. Coding guidelines for
2243            Thuban
2244    
2245            * Doc/technotes/release_process.txt: New. Used to be
2246            HOWTO-Release.  Now slightly adapted to technote formatting style.
2247    
2248            * HOWTO-Release: Removed.  It's contents are now in
2249            Doc/technotes/release_process.txt
2250    
2251    2004-02-25  Bernhard Herzog  <[email protected]>
2252    
2253            * libraries/thuban/wxproj.cpp (get_wx_version): New.  Return the
2254            version of wxWindows the module was compiled with so we can check
2255            that against the wxPython version.
2256    
2257            * Thuban/version.py (thuban_branch, thuban_release): New variables
2258            controlling which and how Thuban versions are shown.  See the
2259            comments for details.
2260            (verify_versions): Also check that the wx version that wxproj is
2261            compiled against matches that of the wxPython we use at runtime
2262    
2263    2004-02-20  Bernhard Herzog  <[email protected]>
2264    
2265            * Extensions/wms/wms.py (epsg_code_to_projection): Use
2266            get_system_proj_file to read the epsg projections.  The old way
2267            depended on the current directory being the top Thuban directory.
2268    
2269    2004-02-20  Bernhard Herzog  <[email protected]>
2270    
2271            * Extensions/svgexport/test/test_svgmapwriter.py
2272            (TestVirtualDC.test_clippath): Remove a debug print
2273    
2274    2004-02-20  Bernhard Herzog  <[email protected]>
2275    
2276            * Extensions/svgexport/__init__.py: New.  Turn
2277            Extensions/svgexport into a package.
2278    
2279            * Extensions/svgexport/svgmapwriter.py: Reorder the imports and
2280            doc-string a bit.  The doc-string must come first, otherwise it's
2281            not a doc-string.  The __future__ import must be the first thing
2282            after the doc-string.  Use only double quotes in doc-strings.
2283            Single quotes trip up emacs syntax highlighting if the text
2284            contains apostrophes.
2285    
2286    2004-02-20  Bernhard Herzog  <[email protected]>
2287    
2288            * Extensions/svgexport/test/__init__.py,
2289            Extensions/svgexport/test/test_svgmapwriter.py: New. Initial test
2290            suite for svgexport
2291    
2292            * test/runtests.py (find_test_modules): New. Function with the
2293            module finding code from main.
2294            (main): Use find_test_modules to figure out the default test
2295            modules and take modules from Extensions.svgexport.test too.
2296    
2297    2004-02-19  Bernhard Herzog  <[email protected]>
2298    
2299            * Thuban/UI/application.py (ThubanApplication.OnInit): Make sure
2300            the mainwindow has a reference to the map of the initial session.
2301            This fixes a bug introduced with the fix for RT#2245
2302    
2303    2004-02-19  Bernhard Herzog  <[email protected]>
2304    
2305            * Extensions/svgexport/svgsaver.py,
2306            Extensions/svgexport/svgmapwriter.py,
2307            Extensions/svgexport/maplegend.py: Added again.  This time in the
2308            correct place.
2309    
2310    2004-02-17  Bernhard Herzog  <[email protected]>
2311    
2312            Fix for RT#2245
2313    
2314            * Thuban/UI/application.py (ThubanApplication.OnInit): Initialize
2315            instance variables before trying to create any windows.  Creating
2316            windows can start an event loop if e.g. message boxes are popped
2317            up for some reason, and event handlers, especially EVT_UPDATE_UI
2318            may want to access things from the application.
2319            (ThubanApplication.maps_changed): The mainwindow may not have been
2320            created yet, so check whether it has been created before calling
2321            its methods
2322    
2323            * Thuban/UI/view.py (MapCanvas.OnIdle): Only try to redraw if we
2324            have a map
2325    
2326    2004-02-17  Bernhard Herzog  <[email protected]>
2327    
2328            * test/test_svgmapwriter.py, Extensions/svgsaver.py,
2329            Extensions/svgmapwriter.py, Extensions/maplegend.py,
2330            extensions/svgexport/svgsaver.py,
2331            extensions/svgexport/svgmapwriter.py,
2332            extensions/svgexport/maplegend.py: Removed.  These files were in
2333            the wrong places or didn't work at all.
2334    
2335    2004-02-16  Bernhard Herzog  <[email protected]>
2336    
2337            * Thuban/UI/view.py (MapCanvas.Export): Remove accidentally added
2338            line
2339    
2340  2004-02-16  Bernhard Herzog  <[email protected]>  2004-02-16  Bernhard Herzog  <[email protected]>
2341    
2342          * Thuban/UI/view.py (MapCanvas.Export): Avoid UnboundLocalError.          * Thuban/UI/view.py (MapCanvas.Export): Avoid UnboundLocalError.
# Line 4129  Line 6468 
6468          Fix problem of hidden properties dialog under windows after double          Fix problem of hidden properties dialog under windows after double
6469          click on layer tree:          click on layer tree:
6470          The tree control always gets an Expanded / Collapsed event after          The tree control always gets an Expanded / Collapsed event after
6471          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.
6472            We add a second ItemActivated event to the queue, which simply
6473          raises the already displayed window.          raises the already displayed window.
6474    
6475          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable

Legend:
Removed from v.2067  
changed lines
  Added in v.2558

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26