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

Legend:
Removed from v.1960  
changed lines
  Added in v.2562

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26