/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26