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

Legend:
Removed from v.1965  
changed lines
  Added in v.2696

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26