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

Legend:
Removed from v.2075  
changed lines
  Added in v.2623

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26