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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26