/[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 2444 by bernhard, Sat Dec 11 02:25:36 2004 UTC
# Line 1  Line 1 
1    2004-12-11  Bernhard Reiter <[email protected]>
2    
3            Made sure that newlines are inserted in the svg path d attributes
4            to raise the chance that the line length will be below 255 characters,
5            as recommended by REC SVG 1.1 in section 8.3.1.
6    
7            * Extensions/svgexport/svgmapwriter.py(DrawPolygon):
8            Adding \n before L's and changed whitespace handling.
9    
10            * Extensions/svgexport/test/test_svgmapwriter.py:
11            Adapted tests to new whitespace handling of DrawPolygon.
12    
13    2004-12-11  Bernhard Reiter <[email protected]>
14    
15            * Doc/technotes/coding_guidelines.txt: easy typo fixed.
16    
17            * Extensions/svgexport/test/test_svgmapwriter.py:
18            Removed test_drawbezier in favour of new test_drawspline3 and
19            test_drawspline4 within new class TestDrawSplines(TestVirtualDC).
20            All only to test DrawSpline.
21    
22            * Extensions/svgexport/svgmapwriter.py(DrawSpline):
23            New implementation now really using the strange algorithm of
24            xfig 3.1's approximated splines and its conversion to postscript
25            with one twist: SVG can do quadratic beziers, so skipped translation
26            to cubic beziers.
27            (TestWithDC): Typo in comment fixed.
28    
29    2004-12-09  Martin Schulze  <[email protected]>
30    
31            * Thuban/Model/classgen.py: Added missing character encoding
32    
33            * Extensions/wms/properties.py (OpenWMSProperties): removed
34    
35            * Extensions/wms/parser.py (WMSCapabilitiesParser.error): Dropped
36            support for get_srs_discrepancies() since there are no
37            discrepancies anymore (was a thinko)
38    
39            * Extensions/wms/layer.py (WMSLayer.GetMapImg): Improved graphic
40            format priority now that more formats are supported globally by
41            the render engine.
42    
43    2004-12-08  Silke Reimer <[email protected]>
44            * Extensions/ogr/ogrshapes.py: Substituted ogr-method CloseRings
45            because it is not available in all versions of ogr
46    
47    2004-12-08  Bernhard Reiter <[email protected]>
48            * Extensions/ogr/__init__.py: Added empty __init__.py to heal
49            global tests until a real one is commited.
50    
51    2004-12-07 Nina H�ffmeyer <[email protected]>
52    
53            * /Extensions/ogr/: Adding a new extension to read shapefiles with
54            ogr. It is planned to add other vector formats.
55    
56            * /test/runtests.py: Adding tests from /Extensions/ogr/test/.
57    
58    2004-12-07  Jan-Oliver Wagner <[email protected]>
59    
60            * /Extensions/svgexport/test/test_svgmapwriter.py: Reverting
61            part of a (non-)fix to renable that the tests are always
62            executed.
63    
64    2004-12-07  Bernhard Reiter <[email protected]>
65    
66            * Extensions/svgexport/test/test_svgmapwriter.py:
67            Added test_drawbezier() to test DrawSpline().
68    
69            * Extensions/svgexport/svgmapwriter.py(DrawSpline):
70            Really implemented bezier drawing.
71    
72            * Extensions/svgexport/__init__.py: Bumped version of svgexport
73            to 0.9.1 because now the legend examples lines styles
74            will be drawing with beziers.
75    
76    2004-12-05  Martin Schulze  <[email protected]>
77    
78            * Thuban/UI/renderer.py (raster_format_map): Added PNG, TIFF and
79            GIF as supported bitmap image formats (helpful for the WMS extension)
80    
81    2004-11-30  Martin Schulze  <[email protected]>
82    
83            * Extensions/wms/test/test_ogclib.py (TestOGCLib.test_compareURLs):
84            Improved the test for the internal compare method
85    
86    2004-11-27  Jan-Oliver Wagner <[email protected]>
87    
88            * Thuban/UI/about.py (About.__init__): Added
89            Norbert Solymosi for hungarian translation and Ole Rahn
90            as contrbutor. Moved Bernhard Reiter from Contributor
91            to Developer.
92    
93    2004-11-27  Bernhard Reiter <[email protected]>
94    
95            * Extensions/svgexport/test/test_svgmapwriter.py:
96            Removed Jan from author list as he did not change enough significant
97            lines yet.
98    
99            * Extensions/svgexport/__init__.py: Added Bernhard as author
100            of the Extension.
101    
102    2004-11-27  Jan-Oliver Wagner <[email protected]>
103    
104            * po/hu.po: New. Hungarian translation. Contributed
105            by Norbert Solymosi.
106    
107    2004-11-26  Bernhard Herzog  <[email protected]>
108    
109            * Extensions/svgexport/test/test_svgmapwriter.py
110            (Testobjectexport.test_transparent_polygon): Commented out some
111            debug prints
112    
113    2004-11-24  Jan-Oliver Wagner <[email protected]>
114    
115            Fix broken tests for svg extension and added svg legend
116            to Experimental menu.
117    
118            * Extensions/svgexport/test/test_svgmapwriter.py: Fix to have
119            the test run correctly even if the extension is a package.
120            Also removed the "import Thuban" which makes no sense.
121    
122            * Extensions/svgexport/__init__.py: Fix to have the extensions'
123            test module also be executed from the global test routine.
124            This is done by looking for the absense of the DISPLAY variable.
125    
126            * Extensions/svgexport/maplegend.py: Moved the menu entry from Extensions
127            to Experimental menu since this module has yet not reached a stable
128            status (ie. 1.0).
129    
130    2004-11-22  Bernhard Reiter <[email protected]>
131    
132            * Extensions/svgexport/svgmapwriter.py:
133            Added verbose variable and some logging depending on it.
134            (class VirtualDC(XMLWriter)): Minor improvement in the polygon loop,
135            because counting i is not necessary.
136            (class Pen, class Brush): Added simple __str__ methods.
137            (SVGRenderer.draw_polygone_shape): Fix #2698 (transparent polygons are
138            not exported to svg file) Note: holes still unhandled.
139    
140            * Extensions/svgexport/test/test_svgmapwriter.py:
141                    Made a baseclass TestWithDC for test needed a DC.
142                    Added tests for bug #2698 (transparent polygons are not
143                    exported to svg file):
144                    Testobjectexport.test_transparent_polygon()
145    
146            * Thuban/Model/base.py (UnsetModified):
147            Fixed some typos in docstring.
148    
149            * Thuban/UI/baserenderer.py (BaseRenderer.draw_polygon_shape()):
150            Added hints on the used algorithm for handling holes.
151    
152    2004-11-20  Jan-Oliver Wagner <[email protected]>
153    
154            Some face lifting for the examples.
155    
156            * Examples/__init__.py: Make this directory a package.
157    
158            * Examples/simple_extensions/__init__.py: Make this directory a package.
159    
160            * Examples/simple_extensions/hello_world.py: Moved entry from Extensions
161            menu to Examples menu.
162    
163            * Examples/simple_extensions/simple_command.py: Some more comments,
164            minor changes.
165    
166            * Examples/simple_extensions/simple_tool.py: Minor changes.
167    
168    2004-11-20  Jan-Oliver Wagner <[email protected]>
169    
170            Changed way of extension registry for wms and added extension
171            registry for umn_mapserver extension.
172    
173            * Extensions/wms/__init__.py: Added registry entry and the importing
174            of the actual wms module. Included a test for the required PyOGCLib.
175    
176            * Extensions/wms/wms.py: Removed registry entry (moved to __init__.py).
177    
178            * Extensions/umn_mapserver/__init__.py: Added registry entry and the
179            importing of the actual umn mapserver management modules.
180            Included a test for the required Python MapScript.
181    
182    2004-11-20  Jan-Oliver Wagner <[email protected]>
183    
184            Changed way of extension registry for importAPR, bboxdump
185            and added extension registry for svgexport.extension registry for
186            svgexport.
187    
188            * Extensions/importAPR/__init__.py: Added registry entry and the importing
189            of the actual importAPR module.
190    
191            * Extensions/importAPR/importAPR.py: Removed registry entry (moved to
192            __init__.py).
193    
194            * Extensions/bboxdump/__init__.py: Added registry entry and the importing
195            ����of the actual bboxdump module.
196    
197            * Extensions/bboxdump/bboxdump.py: Removed registry entry (moved to
198            ����__init__.py).
199    
200            * Extensions/svgexport/__init__.py: Added registry entry and the importing
201            of the svgsaver module.
202    
203            * Extensions/svgexport/svgsaver.py: Moved the menu entry from Extensions
204            to Experimental menu since this module has yet not reached a stable
205            status (ie. 1.0).
206    
207    2004-11-18  Jan-Oliver Wagner <[email protected]>
208    
209            Now the hit test considers the size of point symbols.
210    
211            * Thuban/UI/viewport.py (ViewPort._hit_point): Added optional parameter
212            'size' defaulting to the previously fixed value 5.
213            Extended doc-string.
214            (Viewport._find_shape_in_layer): Resolved FIXME regarding flexibility
215            for symbols.
216            Now the size of the largest point symbol is determined to find out
217            about whether the point has been hit.
218            This fixes the problem that only clicks inside a fixed distance of
219            5 where found.
220    
221    2004-11-17  Jan-Oliver Wagner <[email protected]>
222    
223            Another open issue fixed regarding sizeable symbols: correct rendering of
224            selected symbols.
225    
226            * Thuban/UI/renderer.py (ScreenRenderer.draw_selection_incrementally):
227            Added consideration of the specific size of point symbols.
228            The property for each point symbol is retrieved and the size applied
229            for the rendering method.
230            Added doc-string.
231    
232    2004-11-16  Jan-Oliver Wagner <[email protected]>
233    
234            Changed way of Extension Registry for gns2shp and profiling.
235    
236            * Extensions/gns2shp/gns2shp.py: Removed registry entry (moved to
237            __init__.py).
238    
239            * Extensions/gns2shp/__init__.py: Added registry entry and the importing
240            of the actual gns2shp module.
241    
242            * Extensions/profiling/profiling.py: Removed registry entry (moved to
243            __init__.py).
244    
245            * Extensions/profiling/__init__.py: Added registry entry and the importing
246            of the actual profiling module.
247    
248    2004-10-28  Bernhard Reiter <[email protected]>
249    
250            * Extensions/svgexport/: Minor improvements to doc strings.
251    
252    2004-10-07  Jan-Oliver Wagner <[email protected]>
253    
254            Further elements for sizable point objects now
255            making this feature usable though not yet complete.
256    
257            * Thuban/Model/save.py (SessionSaver.write_classification): Write
258            attribute 'size' for cldata when the shape layer is of point type.
259            This also now make the test_load.py tests happy.
260    
261            * Thuban/Model/classgen.py (CustomRamp.GetProperties): Added size
262            gradient.
263    
264            * Thuban/UI/classifier.py (ID_SELPROP_SPINCTRL): Renamed to
265            ID_SELPROP_SPINCTRL_LINEWIDTH.
266            (ID_SELPROP_SPINCTRL_LINEWIDTH): New Id replaces ID_SELPROP_SPINCTRL.
267            (ID_SELPROP_SPINCTRL_SIZE): New Id.
268            (SelectPropertiesDialog.__init__): Added a second spin control
269            for the size in case the corresponding layer is of point type.
270            (SelectPropertiesDialog._OnSpin): Renamed to _OnSpinLineWidth.
271            (SelectPropertiesDialog._OnSpinLineWidth): New. Former _OnSpin.
272            (SelectPropertiesDialog._OnSpinSize): New. Set size of property
273            and refresh preview.
274    
275    
276    
277    2004-10-04  Martin Schulze  <[email protected]>
278    
279            * Extensions/wms/test/test_parser.py
280            (TestWMSCapabilitiesParser.test_compareLists): Added missing
281            self-test for compareLists()
282            (TestWMSCapabilitiesParser.test_compareDicts): Added missing
283            self-test for compareDicts()
284            (TestWMSCapabilitiesParser.test_compareLists): Adding more tests
285            to verify the test routine fails with non-equal arguments
286            (TestWMSCapabilitiesParser.test_compareDicts): Adding more tests
287            to verify the test routine fails with non-equal arguments
288    
289    2004-10-03  Jan-Oliver Wagner <[email protected]>
290    
291            First elements for sizeable point objects.
292    
293            * Resources/XML/thuban-1.1.dtd: Added size attribute to cldata.
294    
295            * Data/iceland_sample_size.thuban: New. Sample for sized point objects.
296    
297            * test/test_load.py (ClassificationTest.TestLayers): Added SetSize in case
298            of a corresponding argument is given.
299            (TestSymbolSize): New. Test the size attribute of cldata.
300    
301            * Thuban/Model/classification.py: Removed some trailing whitespaces.
302            (ClassGroupProperties.__init__): Set default size.
303            (ClassGroupProperties.SetProperties): Set the size.
304            (ClassGroupProperties.GetSize): New. Return the size.
305            (ClassGroupProperties.SetSize): New. Set the size.
306            (ClassGroupProperties__eq__): Compare also size.
307            (ClassGroupProperties__repr__): Print also size.
308    
309            * Thuban/Model/load.py (SessionLoader.start_cldata): Also parse
310            the size attribute.
311    
312            * Thuban/UI/classifier.py (ClassDataPreviewer.Draw): Added doc-string.
313            Also, now there is a return value that indicates whether the drawing
314            size exceeded the given rect extent and if so the new extent.
315            Finally, point objects are drawn depending on the size. If either
316            the width or height is exceeded, the new extent is returned.
317            (ClassRenderer.Draw): Now when calling the previewer drawing function,
318            evaluate the return value and, if not None, adapt the grid widget size
319            accordingly and redraw again.
320    
321            * Thuban/UI/baserenderer.py (BaseRenderer.draw_shape_layer_incrementally):
322            If the draw function is for points, call it with the size as additional
323            parameter.
324            (BaseRenderer.draw_point_shape): Added additional, optional parameter for
325            the size. Compute the radius using the size.
326    
327            * Extensions/importAPR/apr.py (APR_BMkSym.GetThubanProp): Now
328            that Thuban supports size, apply this correctly.
329    
330            * Extensions/importAPR/importAPR.py: Bumped version to 0.1.1.
331    
332    2004-10-03  Jan-Oliver Wagner <[email protected]>
333    
334            * Doc/manual/thuban-manual-de.xml: Started translation of
335            Map chapter.
336    
337    2004-10-01  Martin Schulze  <[email protected]>
338    
339            * Extensions/wms/properties.py (wmsProperties.__init__): Extended
340            argument for general use through properties-dialog selector
341            
342            * Thuban/UI/classifier.py: Register properties dialog classes for
343            both provided layer classes/types.
344    
345            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): The
346            map can be retrieved through the parent which is passed to the
347            constructor anyway and doesn't require an argument of its own,
348            required for the unification of arguments for general use through
349            properties-dialog selector.
350            (MainWindow.OpenOrRaiseDialog): Move the logic for checking
351            whether a dialog is already opened (and raising it to the users
352            attention) and creating a new dialog into a function of its own
353            (MainWindow.OpenLayerProperties): Use the new OpenOrRaiseDialog()
354            method
355            (MainWindow.OpenLayerProperties): Utilise the new ClassMapper for
356            global registration of properties dialog classes (which are indeed
357            layer-specific).
358    
359            * Thuban/UI/classifier.py (Classifier.__init__): Unify arguments
360            for general use through properties-dialog selector, the map can be
361            retrieved through the parent and doesn't require an argument of
362            its own.
363    
364            * Extensions/wms/wms.py: Register the properties dialog class for
365            the provided WMS layer
366    
367    2004-09-28  Jan-Oliver Wagner <[email protected]>
368    
369            New feature: Registry for Extensions.
370    
371            * Thuban/UI/extensionregistry.py: This module defines a registry for
372            Extensions.
373    
374            * Thuban/UI/about.py (About.__init__): Added description
375            of the registered extensions with all of the information.
376    
377            * Thuban/Model/extension.py (Extension): Improved doc-string.
378    
379            * Extensions/gns2shp/gns2shp.py, Extensions/importAPR/importAPR.py,
380            Extensions/bboxdump/bboxdump.py, Extensions/profiling/profiling.py,
381            Extensions/wms/wms.py: Added registration of the extension.
382    
383    2004-09-27  Bernhard Reiter <[email protected]>
384    
385            More fixes to svgexport to make used ids unique and
386            conforming to XML's Name production.
387    
388            * Extensions/svgexport/test/test_svgmapwriter.py: Added new tests
389            test_xml_id_constraints(), test_make_ide_nosetbaseid() and
390            test_make_id_nonintegersetid().  Switched SetID and SetBaseID.
391            Added Bernhard R. as author.
392            * Extensions/svgexport/svgmapwriter.py (make_id): Using "_" as
393            concatenation char now (makes test_make_ide_nosetbaseid() valid).
394            Also transform second id part with "%d" and catch the TypeError
395            to raise SVGMapWriterError (making test_make_id_nonintegersetid() ok).
396            Corrected typo inBernhard's author line.
397            (SetBaseID): Return the transformed base id. Transform characters
398            which are not alnum() or in ".-_" to binascii.b2a_hex(). Added
399            import binascii. If to be set string starts with "xml" or so, add "t".
400            (draw_shape_layer_incrementally): use the returned value of SetBaseID
401            for used_baseids checks.
402    
403    2004-09-25  Bernhard Herzog  <[email protected]>
404    
405            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
406            Remove a debug print and some tab characters.
407    
408    2004-09-25  Bernhard Reiter <[email protected]>
409    
410            * Extensions/svgexport/svgmapwriter.py: Added Bernhard R. as Author.
411            (SetBaseID, SetID, make_id): Improved docstring comments to explain
412            the interaction of the three functions and the XML id contrains.
413    
414    
415    2004-09-23  Jan-Oliver Wagner <[email protected]>
416    
417            * Doc/ThubanModel.xmi: New. UML file for Thuban Model
418            Module.
419    
420            * Doc/README: Added info on ThubanModel.xmi.
421    
422    2004-09-23  Jan-Oliver Wagner <[email protected]>
423    
424            * Doc/README: New. Some info about how to generate technical
425            documentation from the source code.
426            This text was send to the Thuban developer mailing list on
427            September 21st 2004 by Bernhard Reiter.
428    
429    2004-09-21  Bernhard Reiter <[email protected]>
430    
431            Improved the svgexport to only use unique ids. Will issues
432            an error message dialoge when two layer names are the same.
433            ShapeIDs are now added with a dash within the svg ids.
434    
435            * Extensions/svgexport/svgmapwriter.py (SVGMapWriterError): New.
436            * Extensions/svgexport/test/test_svgmapwriter.py: Added imports
437            (TestSVGRenderer): New test class with test_make_in() and
438            test_check_for_layer_name_clash()
439            * Extensions/svgexport/svgmapwriter.py (SVGRenderer): Fixed __init__()
440            and draw_shape_layer_incrementally() to not use a baseid twice,
441            satisfying test_check_for_layer_name_clash()
442            (VirtualDC.make_id): Use a dash between baseit and id, satisfies
443            test_make_in().
444            * Extensions/svexport/svgsaver.py: Import SVGMapWriterError, wxOK
445            and wxICON_HAND.
446            (write_to_svg): Put dc and rendering in a try statement and on
447            catching SVGmapWriterError notify the user and delete the target file.
448    
449    2004-09-20  Bernhard Reiter <[email protected]>
450    
451            * Model/base.by, Model/layer.py: Fixed typos in docstrings.
452    
453    2004-09-03  Jan Sch�ngel  <[email protected]>
454    
455            * Extensions/umn_mapserver/mapfile(MF_Class.add_thubanstyle): Fix a
456            small bug with the line color. Now the line color will now only set
457            if it is set in Thuban an not Transparent.
458            
459            * Extensions/umn_mapserver/mf_export(tblayer_to_map): Fixed a bug with
460            deleting the layers from mapfile. Now all layers will delete backwards
461            from the last.
462    
463    2004-08-20  Silke Reimer <[email protected]>
464    
465            * Thuban/Model/layer.py:
466            Fixes bug in projection handling: Otherwise very large region might not
467            have valid values in the layer's projection.
468    
469    2004-08-20  Silke Reimer <[email protected]>
470    
471            * Thuban/UI/about.py:
472            small changes to be consistent with coding style.
473              
474    2004-08-13  Martin Schulze  <[email protected]>
475    
476            * Extensions/wms/test/test_ogclib.py (TestOGCLib.compare_URLs):
477            Adjusted a comment
478    
479    2004-08-11  Silke Reimer <[email protected]>
480    
481            * Thuban/UI/about.py: Small changes to encoding related stuff to avoid
482                    too many and too enhanced imports of locale
483    
484    2004-08-10  Silke Reimer <[email protected]>
485    
486            * Thuban/UI/about.py: Fixed encoding problem of about dialog: Added
487                    function unicodeToLocale() to convert special characters to users
488                    locale encoding
489    
490    2004-08-10  Jan-Oliver Wagner <[email protected]>
491    
492            * Doc/technotes/coding_guidelines.txt: Added rule 'Method names start with
493            lower case letter'
494    
495    2004-08-09  Jan Sch�ngel  <[email protected]>
496    
497            * ChangeLog: Rewrite the last ChangeLog entry to follow
498            the standard way.
499    
500            * Extensions/umn_mapserver/mapfile: Moved the import AnnotationLayer to
501            the function where it is needed, because it don't works if it stands
502            at the beginning.
503            (MF_Layer.__init__): Removed the extra numclassed variable. Now
504            numclasses from the mapscript will be used.
505            (MF_Layer.get_index): New. Return the index of the layer in mapfile.
506            (MF_Layer.set_classes): New. A Classlist will be set to the layer.
507            (MF_Layer.set_metadata): New. A Metadata mapscript object will set.
508            (MF_Layer.remove_allclasses): New. All class of the layer will remove.
509            (MF_Map.create_new_layer): New. A new Layer is created and associated
510            with the mapscript object.
511            (MF_Map.set_layerorder): New. The Layer order like in thuban is set in
512            the mapscript.
513            (MF_Map.add_thubanlayer): Now a new layerobj is created if no one is
514            linked to the layer in thuban, else the layerobject linked to the
515            thubanlayer will be used.
516            AnnotationLayer will now store the filename of the shapefile.
517            (MF_Map.remove_layer): If a layer is removed the associated object
518            must be set new.
519            
520            * Extensions/umn_mapserver/mf_export.py(tb_layer_to_map): Add all
521            layers which are exists in thuban to the mapobj. All removed Layers
522            will be removed from the mapobj.
523            Added comments to all functions.
524            (thuban_to_map): No layer will be removed here.
525            
526            * Extensions/umn_mapserver/mf_handle.py
527            (_has_umn_mapobj_and_selectedlayer): Activating the layer menu. Now
528            Layersettings for the mapserver kann be edited.
529    
530            * Extensions/umn_mapserver/mf_import.py: Now all layers which are
531            imported, will be linked with the associated MF_Layer.
532            (import_mapfile): All layers, which are not selected, will be removed.
533            Disable the "import layer from mapfile" menu option.
534    
535            * Extensions/umn_mapserver/sample/iceland.map: Set the status of the
536            Annotation Layer from DEFAULT to OFF. The DEFAULT setting turns the
537            layer on permanently.
538    
539    2004-08-03  Jan Sch�ngel  <[email protected]>
540    
541            * Extensions/umn_mapserver/mapfile.py(MF_Metadata.remove_allmetadata):
542            New. This function removes all metadata
543            (MF_Layer.set_group): New. Set the group setting.
544            (MF_Layer.get_group): New. Get the group setting.
545            (MF_Map): Removed the extra numlayers variable, used the mapscript
546            parameter instead.
547            (MF_Map.get_numlayers): New. This get numlayers.
548            (MF_Map.remove_all_layers): New. Removes all layers from the mapobj.
549            (MF_Map.add_thubanlayer): Replaced the exception handling by a check
550            if the object is an instance. Also added the annotation layer here to
551            export, but only the layer is created in the mapfile.
552    
553            * Extensions/umn_mapserver/mf_export.py(export_mapfile): Removed
554            the check if a mapobj exist, because its not needed anymore. The
555            export function is only available if a mapobj exist.
556            Use the new function to remove all layers.
557            
558            * Extensions/umn_mapserver/mf_handle.py(Layer_Dialog): Added a group
559            option and the metadata button. The layer dialog is temporary disabled.
560            (Metadata_CustomDataTable): Added some functions to show the grid
561            correct.
562    
563            * Extensions/umn_mapserver/mf_import.py: Moved the code for showing
564            the number of layer from import_mapfile to this function.
565            (AnnotationLayer): New. This Class shows the Annotation layer in
566            thuban. The layer don't do anything. It's only to show the layer
567            and to save the layer order.
568            (add_annotationlayer): New. Import an annotation layer to thuban.
569            (select_layer2import): New. Import only layers to thuban and not
570            the other settings like projection or scalebar.
571            (create_new_mapfile): Moved the _has_umn_mapobj function and the
572            create_new_mapfile functions from mf_handle.py to mf_import.py.
573            
574            * Extensions/umn_mapserver/sample/iceland.map: Added the group
575            parameter to the roads and cultural layers. Also added a new
576            Annotation Layer for the cultural points.
577    
578            * Extensions/umn_mapserver/sample/iceland.html: Added the select
579            option for the annotation layer.
580    
581            * Extensions/umn_mapserver/sample/index.html: Added the start
582            parameter for the annotation layer.
583    
584    2004-08-01  Jan-Oliver Wagner <[email protected]>
585    
586            * Doc/manual/thuban-manual-de.xml (Chapter Session Management):
587            translation completed.
588    
589            * Doc/manual/thuban-manual.xml (Chapter Session Management):
590            Fixed unprecise description for Save Session.
591    
592    2004-07-31  Jan-Oliver Wagner <[email protected]>
593    
594            Started translation of Users Manual into german.
595    
596            * Doc/manual/thuban-manual-de.xml: New. German Users Manual.
597    
598            * Doc/manual/Makefile: Added build instructions for german
599            users manual.
600    
601            * Doc/manual/thuban-manual.xml: Minor corrections in Introduction.
602    
603    2004-07-28  Jan Sch�ngel  <[email protected]>
604    
605            * Extensions/umn_mapserver/mapfile.py(MF_Metadata): Changed all class
606            functions. Now all metadata will handle by the function and its not
607            needed to initialize it from outside. Therefor the associated mapobj
608            will be stored in the Metadata Object. So we can use the special
609            functions from the associated mapobj to get the Metadata.
610            Therefor all initialization code for the metadata is removed from the
611            other classes.
612            (MF_Layer): Added a function to get the metadata object.
613            (MF_Map): Added a function to set the mappath, the path where
614            the mapfile ist stored.
615    
616            * Extensions/umn_mapserver/mf_export.py(thuban_to_map): Changed the code
617            to set the extent in the mapfile. Now the code is set by the displayed
618            data in the Thuban-view.
619            (export_mapfile): The shapepath is now set empty, until relative
620            pathnames are supported.
621    
622            * Extension/umn_mapserver/mf_handle.py: Added a dialog to handle
623            metadata. Yet only mapfile metadata are supported. Layer and class
624            supported are not implemented.
625            Added a dialog to handle layer informations. The dialog only shows the
626            selected layer at the moment.
627    
628            * Extensions/umn_mapserver/mf_import.py(import_mapfile): Changed the
629            code for setting the extent in thuban. Now the extent is set to the
630            given extent from the mapfile.
631            Fixed a logical mistake. Now the extent is set when realy a layer is
632            loaded, and not if one is selected to load.
633    
634            * Extensions/umn_mapserver/sample/iceland.html: Added code to zoom and
635            move the shown map in the browser.
636    
637            * Extensions/umn_mapserver/sample/iceland.map: Added a new metadata
638            line to the mapobj and added metadata to the political layer.
639    
640            * Extensions/umn_mapserver/test/test_mapserver.py: Changed the test
641            for Metadata.
642    
643    2004-07-26  Martin Schulze  <[email protected]>
644    
645            * Thuban/Lib/classmapper.py (ClassMapper.has): Added the new
646            ClassMapper
647    
648            * test/test_classmapper.py (TestMapping.test_mapper): Added a Test
649            case for the new ClassMapper
650    
651    
652    2004-07-22  Bernhard Herzog  <[email protected]>
653    
654            * Thuban/UI/viewport.py (ViewPort.VisibleExtent): New.  Return the
655            visible extent of the map in projected coordinates
656    
657            * test/test_viewport.py (SimpleViewPortTest.test_default_size)
658            (SimpleViewPortTest.test_init_with_size): Add some VisibleExtent()
659            tests.
660            (SimpleViewPortTest.test_visible_extent): New. The real test for
661            VisibleExtent()
662    
663    2004-07-22  Bernhard Herzog  <[email protected]>
664    
665            * test/test_viewport.py: Use support.run_tests as the main
666            function when running asa script.
667    
668    2004-07-22  Jan Sch�ngel <[email protected]>
669    
670            * Extensions/umn_mapserver/mf_export.py: Added "import os"
671            Removed the old "import Thuban.UI.mainwindow" code.
672            (tbextent_to_map): Removed the extra function and at the code direct
673            to "thuban_to_map" function.
674            (write_creatorcomment): Added. Now a short comment is added to the
675            beginning of an generated mapfile.
676            (export_mapfile): Now the Path and filename are saved in to variables,
677            and not together in one variable. This is needed for the new
678            write_creatorcomment function.
679                    
680            * Extensions/umn_mapserver/mf_import.py (import_mapfile): Added the
681            import module "re". Also added Range and the ClassGroupRange import
682            from Thuban. Both are needed for the new range expression import.
683            (create_rangeexpression): Added. Creates a Range Expression in Thuban
684            style from a given mapfile expression.
685            (added_rasterlayer): Make some small code changes. The shapepath is
686            now stored in an extra variable and the clazz_name is set empty if no
687            class name set in the mapfile.
688            Changed the Error message for Range Expressions, becaus the new
689            function create a error string which will be shown in the dialog.
690    
691            * Extensions/umn_mapserver/test/test_mapserver.py: Added a test for the
692            range expression import.
693    
694    2004-07-21  Jan-Oliver Wagner <[email protected]>
695    
696            * Extensions/umn_mapserver/README: Added hint that
697            installation as root can be avoided. Removed all tabs.
698    
699    2004-07-16  Bernhard Herzog  <[email protected]>
700    
701            * test/test_viewport.py
702            (ViewPortTest.test_changing_map_projection): Check that changing
703            the projection of an empty map shown in a viewport doesn't lead to
704            exceptions in the viewport's handler for the
705            MAP_PROJECTION_CHANGED messages
706    
707            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Only
708            try to keep the same region visible when the map actually contains
709            something
710    
711    2004-07-15  Jan Sch�ngel <[email protected]>
712    
713            * Extensions/umn_mapserver/mapfile.py: Added a function to get the
714            mappath directly from the mapobj. Is needed because of the changes
715            in mf_import.py.
716            (MF_Layer.add_thubanclass): Added a new comment.
717            (MF_Map.set_extent): Fixed a bug with exporting empty mapobj. If the
718            mapobj is empty there is no extent get from thuban an so no one can
719            set to th mapobj.
720            
721            * Extensions/umn_mapserver/mf_import.py (import_mapfile): Updated
722            the discription.
723            Split the funktion in to three smaller ones. The new functions are
724            add_rasterlayer, add_polygonlayer and select_layer2import.
725            Removed the mapfilepath and filepath initialisation, because its know
726            include in the new functions.
727            Now nothing will be imported if cancel is pressed in the
728            layer choice dialog.
729    
730    2004-07-14  Jan Sch�ngel <[email protected]>
731    
732            * Extensions/umn_mapserver/mapfile.py: Added ClassGroupDefault to
733            import.
734            (MF_Symbolset): Removed the extra variable for numsymbols.
735            (MF_Class.__init__): Added a comment to the exception clause.
736            Removed the extent init, because it was not needed anymore.
737            (MF_Layer.add_thubanclass): Added the code to set the class name to
738            the expression value from thuban if no label is defined.
739            Added the code to export Range expressions from thuban to the mapfile.
740            (MF_Map.set_extent): Removed the exception and replace it by some if
741            code. If the size of a map is not defined the size will be set to 1,1.
742            This is necessary because if the extent is set, mapscript checks if
743            the size is greater than zero.
744            (MF_Web): Added the get and set function for the template.
745    
746            * Extensions/umn_mapserver/mf_export.py: Added the function to check
747            if a mapobject exists and used it to set the status of the menu items.
748            If no mapfile exists the settings could not be edditied.
749            Define after which menuitem the exportitem will include.
750            
751            * Extensions/umn_mapserver/mf_handle.py: Removed the import
752            Thuban.UI.mainwindow clause, because it is not needed.
753            Added the command Refresh() to all "OnChangeColor()" functions,
754            because the color preview window was not updated on a color change.
755            Added the function to check if a mapobject exists and used it to set the
756            status of the menu items. If no mapobject exists the settings could not
757            be edditied.
758            (Map_Dialog): Moved the imagetype selector from the
759            Outputformat_Dialog to Map_Dialog and removed Outputformat_Dialog.
760            (Web_Dialog): Removed the name label and added the template textbox.
761    
762            * Extensions/umn_mapserver/mf_import.py (import_mapfile): Replace
763            the exception handling on loading the layers by an if statement. It
764            is not necessary to us the exception there.
765            The Filepath creation now use os.path.join to build the path.
766    
767            * Extensions/umn_mapserver/test/test_mapserver.py: Moved the testMap
768            definition from global to the setUp function. Now the testMap will
769            initialize new on each test.
770    
771            * Extensions/umn_mapserver/sample/iceland.map: Include three new
772            classes in the Line Layer, to test logical Expressions.
773            Set the status of the class "Point9" in the Point Layer to off
774            
775    2004-07-13  Bernhard Herzog  <[email protected]>
776    
777            * Thuban/UI/baserenderer.py
778            (BaseRenderer.render_map_incrementally): Fix a logic bug in the
779            optimization that tries not to draw layers under a raster layer.
780            The bug was harmless.  All it effectively did was to produce The a
781            strange messages about not being able to draw Layer instances for
782            all vector layers below a raster layer which would be invisible
783            anyway because the raster layer currently always covers the entire
784            window
785    
786    2004-07-08  Jan Sch�ngel <[email protected]>
787    
788            * Extensions/umn_mapserver/mapfile.py: Added code to generade and get
789            a list of supported outputformats. This formats are not alle supported
790            because there is no possibility to get the outputformat without the
791            name known. Make some formal changes to the code.
792            (MF_Map.set_name()): Fixed a bug if the name is None.
793    
794            * Extensions/umn_mapserver/mf_handle.py: Removed the image_type import
795            statement, because its not needed anymore. The Outputformat is now
796            given as string from the object. Make some formal changes to the code.
797    
798            * Extensions/umn_mapserver/test/test_mapserver.py: Added new test for
799            most of the new setting which were added during the last changes.
800            Removed the MF_Size Test.
801            
802            * Extensions/umn_mapserver/test/test.map: Added a new class to the
803            cultural Layer to test expressions and the the status of that layer
804            from on to default.
805            Changed the data path the the correct Thuban Data
806            Added the Outputformat Object and Symbol Object
807            
808    2004-07-07  Jan Sch�ngel <[email protected]>
809    
810            * Extensions/umn_mapserver/mapfile.py: Added some new
811            settings to edit (outputformat, label, imagetype)
812    
813            * Extensions/umn_mapserver/mf_handle.py: Added some setting to
814            the Label Dialog and add the OutputDialog.
815            Make some changes to the code order.
816    
817    2004-07-06  Jan Sch�ngel <[email protected]>
818    
819            * Extensions/umn_mapserver/mapfile.py: Added the symbolObj, pointObj
820            and line Obj and add the scalebar_status_type, scalebar_style_type and
821            scalebar_position_type.
822            Added the symbol- and symbolsetObject (MF_Symbol,MF_Symbolset). The
823            are only used to create a Symbol like the circle in Thuban.
824            Added the scalebarObject (MF_Scalebar)
825            (MF_Class): Added set_status and get_status.
826            (MF_Layer.add_thubanclass): Added code to set the class status
827            (MF_Map): Added code to handle the symbols and scalebar
828            (MF_Label): Added the set_partials and get_partials functions
829            
830            * Extensions/umn_mapserver/mf_export.py: Added MF_Symbol to import
831            from mapfile. Added a function to create a circle object like the one
832            from thuban if no one exists.
833            
834            * Extensions/umn_mapserver/mf_handle.py: All colors are now set when
835            press ok in the assosiated dialog and not at the end of the
836            colordialog.
837            Added the Dialog for the Scalebar.
838            (Label_Dialog): Added the offset option
839    
840            * Extensions/umn_mapserver/mf_import.py: Added code to import the
841            status of the Classes.
842            Fixed a bug with the projection. Now the to_meter parameter will be
843            added to the Projection only if it doesn't exists.
844    
845    2004-07-01  Jan Sch�ngel <[email protected]>
846    
847            Added the functionality to handle the content thuban is not
848            able to handle directly.
849    
850            * Extensions/umn_mapserver/mf_handle.py: New. This module extents
851            Thuban with the possibility to edit the mapfile content.        
852            
853            * Extensions/umn_mapserver/mf_import.py: Added the possibility
854            to import mapfiles without any layer selected. So it is possible
855            to edit the other settings in a mapfile.
856            (import_mapfile): Added code to use the editing functions.
857            Added the possibility to import the projection to a layer if one
858            is defined.
859            Status settings (On,Off) will now set in thuban (visible, invisible).
860            fixed a bug with with classnames. If no classname is set in mapfile
861            the value in Thuban will set to the expression.
862            
863            * Extensions/umn_mapserver/mf_export.py(export_mapfile): Added the
864            possibility to save a new mapfile or use the old one which is
865            imported or new created.
866            Added code to use the editing functions.
867            Remove some not needed import statements
868    
869            * Extensions/umn_mapserver/mapfile.py: Added new types which are
870            need for the editing functions.
871            Added needed set-functions for the editing functions.
872            Added the possibility to export rasterimages.
873            Added new classes (MF_Web, MF_Label, MF_Legend, MF_Symbol,
874            MF_SymbolSet). MF_Symbol and MF_SymbolSet are not needed at the
875            moment.
876            (MF_Class.set_thubanstyle): Now point layers will set to a default
877            symbol to show a circle in mapserver and not only a 1px dot.
878            (MF_Style.__init__): Fixed a bug with the color. Color was not set
879            correct before.
880            (MF_Size): Removed, because it is not needed.
881            
882            * Extensions/umn_mapserver/README: Added the hints to use the
883            export and editing functions, too.
884    
885            * Extensions/umn_mapserver/sample/iceland.map: Added the
886            new parameter "UNITS METERS".
887            Change the political layer to status OFF.
888    
889            * Extensions/umn_mapserver/sample/README: Added some
890            more details to setup the sample in the MapServer.
891            
892    2004-06-26  Bernhard Reiter <[email protected]>
893    
894            * Extensions/svgexport/test/test_svgmapwriter.py:
895            Removed class VFile and used standard StringIO instead.
896    
897    2004-06-23  Jan Sch�ngel  <[email protected]>
898    
899            Add the export function to the umn_mapserver extension.
900    
901            * Extension/umn_mapserver/mf_export.py: New. This module extents
902            Thuban with the possibility to export the Thuban content.
903    
904            * Extensions/umn_mapserver/mapfile.py: Expand the classes to use
905            with the export module. Especially added the possibility to
906            add thuban objects directly to the map objects.
907    
908            * Extensions/umn_mapserver/mf_import.py: Removed the wxCHANGE_DIR,
909            because of the hint from Bernhard Herzog.
910            Corrected the handling of absolute pathnames.
911            Changed the Text of the Menu-Item, now the beginning is upper case.
912    
913            * Extensions/umn_mapserver/README: Added the --with-tiff statement.
914    
915    2004-06-16  Jan Sch�ngel  <[email protected]>
916    
917            Add a sample and make some changes.
918    
919            * Extension/umn_mapserver/mf_import.py: Changed the wxPython.wx
920            import from * to explicit used statements. Changed the
921            Thuban.UI.mainwindow import phrase, too.
922            (import_mapfile):Corrected a clerical mistake.
923            Added wxCHANGE_DIR in OpenFile Dialog.
924            Added a MultipleChoiceDialog, to select the layers to load from
925            mapfile into thuban. Thereby the projection is only set if one layer
926            is selected.
927            Added the possibility to handle relative pathnames which uses
928            up-level references.
929            Removed some doubled code.
930            Corrected an error with integer values used as label in thuban
931            ClassGroup.
932            
933            * Extensions/umn_mapserver/sample: New.
934    
935            * Extensions/umn_mapserver/sample/README: New. Describes the
936            usage of the sample files.
937    
938            * Extensions/umn_mapserver/sample/iceland.map: New. This is
939            a suitable .map-file for the iceland data.
940    
941            * Extensions/umn_mapserver/sample/index.html: New. The template
942            for the mapfile.  
943    
944            * Extensions/umn_mapserver/sample/iceland.html: New. Initialisation
945            file for the Iceland Application on web.
946    
947            * Extensions/umn_mapserver/README: Corrected a inaccuracy and added
948            some details.
949    
950            * Extensions/umn_mapserver/test/test_mapserver
951            (mapserver_import_Test_generalClasses.test_MF_Color):
952            Corrected the thubancolor test.
953    
954    2004-06-15  Jan Sch�ngel  <[email protected]>
955    
956            * Extensions/umn_mapserver/README: New. Install instruction.
957    
958    2004-06-14  Bernhard Reiter <[email protected]>
959    
960            * libraries/thuban/cpl_mfile.h: Added copyright header.
961    
962            * libraries/thuban/ cpl_mfile.cpp, cpl_mfile.h: Added non-protecting
963            Free Software License so that it is most useful with gdalwarp
964            and bmpdataset.
965    
966    2004-06-14  Bernhard Herzog  <[email protected]>
967    
968            * Thuban/UI/multiplechoicedialog.py (__version__): Add missing
969            import of wxPython.wx itself (as opposed to the contents of
970            wxPython.wx).  For some reason wxPython.wx is available as
971            wxPython.wx.wx in at least some 2.4 releases.  Fixes RT#2482
972            wrt. wxPython 2.4.
973    
974    2004-06-10  Jan Sch�ngel  <[email protected]>
975    
976            Initial version of new extension "umn_mapserver".  This extension aims
977            to manage configuration for the UMN MapServer application.  This
978            inital version just imports the .map-files and displays all, Thuban is
979            capable of.
980    
981            * Extensions/umn_mapserver, Extensions/umn_mapserver/test: New.
982    
983            * Extensions/umn_mapserver/test/README: New. Describes how to run the
984            tests.
985    
986            * Extensions/umn_mapserver/test/test.map: New. This is a test
987            .map-file for automated tests of the umn_mapserver extension of
988            Thuban.
989    
990            * Extensions/umn_mapserver/test/test_mapserver.py: New. Tests for
991            UMN Mapserver classes.
992    
993            * Extensions/umn_mapserver/__init__.py: New. Init to make this
994            directory a package.
995    
996            * Extensions/umn_mapserver/mapfile.py: New. Classes to represent
997            '.map'-file objects.
998    
999            * Extensions/umn_mapserver/mf_import.py: New. This module extends
1000            Thuban with the possibility to handle UMN MapServer mapfiles.
1001    
1002    2004-06-03  Bernhard Herzog  <[email protected]>
1003    
1004            * Thuban/Model/layer.py (Layer.TreeInfo): Convert the bounding box
1005            to a tuple before using it as arguments to the % operator.  This
1006            fixes the formatting issue filed in RT#2239 on 2004-01-13 and
1007            reported today on thuban-list by Jan Sch�ngel
1008    
1009            * test/test_layer.py (TestLayerModification.setUp): Save the
1010            filename as an instance variable so we can refer to it in tests
1011            (TestLayerModification.test_tree_info): Uncomment this method
1012            again and make it work.  This tests for the formatting issue
1013            filed in RT#2239 on 2004-01-13
1014    
1015    2004-05-28  Bernhard Herzog  <[email protected]>
1016    
1017            * Thuban/UI/baserenderer.py: Fix some typos.
1018    
1019    2004-05-18  Jan-Oliver Wagner <[email protected]>
1020    
1021            * Extensions/gns2shp/gns2shp.py (gns2shp): Fixed a bug
1022            by increasing a field size.
1023    
1024    2004-05-17  Bernhard Herzog  <[email protected]>
1025    
1026            Update to newest shapelib and get rid of Thuban specific
1027            extensions, i.e. use the new DBFUpdateHeader instead of our
1028            DBFCommit kludge
1029    
1030            * libraries/shapelib/shpopen.c: Update to version from current
1031            shapelib CVS.
1032    
1033            * libraries/shapelib/shapefil.h: Update to version from current
1034            shapelib CVS.
1035    
1036            * libraries/shapelib/dbfopen.c: Update to version from current
1037            shapelib CVS.
1038            (DBFCommit): Effectively removed since shapelib itself has
1039            DBFUpdateHeader now which is better for what DBFCommit wanted to
1040            achieve.  
1041            We're now using an unmodified version of dbfopen.
1042    
1043            * setup.py (extensions): Add the HAVE_UPDATE_HEADER macro with
1044            value '1' to the Lib.dbflibc extension.  This simply reflects the
1045            shapelib and pyshapelib updates
1046    
1047    2004-05-16  Jan-Oliver Wagner <[email protected]>
1048    
1049            Finished introduction of Menu.FindOrInsertMenu.
1050    
1051            * Extensions/drawshape/drawshape.py: Add the command
1052            to the experimental menu additionally to the toolbar.
1053    
1054            * Extensions/svgexport/svgsaver.py: Use FindOrInsertMenu() instead of
1055            finding menu on its own.
1056    
1057            * Doc/manual/thuban-manual.xml: updated sample file
1058            to use FindOrInsertMenu().
1059    
1060            * Examples/simple_extensions/hello_world.py: Use FindOrInsertMenu()
1061            instead of finding menu on its own.
1062    
1063    2004-05-11  Jan-Oliver Wagner <[email protected]>
1064    
1065            * test/test_menu.py (MenuTest.test): Added testing
1066            of method Menu.FindOrInsertMenu.
1067    
1068    2004-05-10  Jan-Oliver Wagner <[email protected]>
1069    
1070            Introduce and use Menu.FindOrInsertMenu.
1071    
1072            * Thuban/UI/menu.py (Menu.FindOrInsertMenu): New. Find a
1073              given menu or, if not found, insert it.
1074    
1075            * Extensions/bboxdump/bboxdump.py, /Extensions/gns2shp/gns2shp.py,
1076            /Extensions/importAPR/importAPR.py, Extensions/profiling/profiling.py,
1077            /Extensions/wms/wms.py: Use FindOrInsertMenu() instead of finding
1078            menu on its own.
1079    
1080    2004-05-06  Jan-Oliver Wagner <[email protected]>
1081    
1082            Introduce a abstract ColorDialog class and remove
1083            and outdated file.
1084    
1085            * Thuban/UI/proj4dialog.py: Removed. It is has been
1086            replaced by projdialog for quite a while and is not used
1087            anymore.
1088    
1089            * Thuban/UI/colordialog.py: New. Abstraction for color selection
1090            dialog(s).
1091    
1092            * Thuban/UI/classifier.py (SelectPropertiesDialog.__GetColor):
1093            Now calls the abstract ColorDialog instead of wxColourDialog.
1094            This also removed the dependency to Color class conversion
1095            from this function.
1096    
1097    2004-05-04  Frank Koormann  <[email protected]>
1098    
1099            * Extensions/bboxdump/__init__.py: Fixed string left over from
1100            copying.
1101    
1102            * Extensions/bboxdump/bboxdump.py (bboxdump):
1103            Use layer.ShapeStore().AllShapes() to loop over shapes instead of
1104            xrange(layer.NumShapes()). Compile the bboxmessage from a list
1105            of formatted outputs (string.join) instead of appending to the
1106            message. Two progress bar dialogs to report progress on the sometimes
1107            lenghty processing.
1108    
1109    2004-04-22  Frank Koormann  <[email protected]>
1110    
1111            New Extension to dump bounding boxes of all shapes of the selected
1112            layer. An optional column can be specified to group the objects,
1113            in this case the bounding box is a union of the separate boxes.
1114            Dump can be displayed in a ScrolledMessageDialog or written to file.
1115            The Extension is simply a combination of available and well tested
1116            Thuban functionality.
1117    
1118            * Extensions/bboxdump/__init__.py: New: Init to make this
1119            directory a package.
1120    
1121            * Extensions/bboxdump/bboxdump.py: New: Dump bounding boxes of
1122            all shapes of the selected layer.
1123    
1124    2004-04-22  Jan-Oliver Wagner <[email protected]>
1125    
1126            * Thuban/UI/classgen.py (GenUniquePanel.__init__): Fixed two
1127            strings to be i18n now.
1128    
1129    2004-04-18  Jan-Oliver Wagner <[email protected]>
1130    
1131            Changing popup menu of legend from direct building
1132            to using the Menu construction as used for the mainwindow.
1133    
1134            * Thuban/UI/mainwindow.py: New method commands: layer_to_top,
1135            layer_to_bottom, layer_visibility
1136            (MainWindow.LayerToTop): New. Put current layer to the top.
1137            (MainWindow.LayerToBottom): New. Put current layer to bottom.
1138            (MainWindow.HideLayer, MainWindow.ShowLayer, _has_visible_map):
1139            Replace 1,0 by True, False.
1140            (MainWindow.ToggleLayerVisibility): New. Toggle visibility of
1141            current layer.
1142            (MainWindow.LayerShowTable): Removed raising of dialog.
1143            (_has_selected_layer_visible): New. Support function.
1144    
1145            * Thuban/UI/legend.py: ID_POP_xxx: removed.
1146            (LegendPanel.__init__): Removed EVT_MENU bindings.
1147            (LegendTree._OnRightClick): Replace direct creation of
1148            menu via wx Classes by applying the menu definition
1149            as of Menu class of menu.py.
1150            
1151    2004-04-16  Jan-Oliver Wagner <[email protected]>
1152    
1153            * Thuban/UI/exceptiondialog.py (ExceptionDialog.dialog_layout): Improved
1154        button string to stronger clearify that Thuban will be closed when hitting
1155            the button.
1156    
1157            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Added docstring.
1158            Now for layers without a ShapeStore a corresponding message is given
1159            to the user, that this layer has no table to show.
1160    
1161    2004-04-15  Martin Schulze  <[email protected]>
1162    
1163            * Extensions/wms/layer.py (WMSLayer.setWMSFormat): Need to
1164            recalculate the format for the internal render engine as well.
1165    
1166            * Extensions/wms/properties.py (wmsProperties): First start for a
1167            properties dialog.  It's functional for a first selection of
1168            layers, but still has some weired wxWidgets/GTK problems but
1169            beautification can be done later.
1170    
1171            * Extensions/wms/layer.py: Added more documentation
1172            (WMSLayer.getFormats): New: Return list of supported image formats
1173            by the WMS server
1174            (WMSLayer.getLayers): New: Return the list of layer names
1175            supported by the WMS server
1176            (WMSLayer.getLayerTitle): New: Return the title of the named layer
1177            (WMSLayer.getWMSFormat): New: Return the image format that is used
1178            for WMS GetMap requests
1179            (WMSLayer.setWMSFormat): New: Set the image format that is used
1180            for WMS GetMap requests
1181            (WMSLayer.__init__): Move away from using only one layer to using
1182            a list of layers (unsorted at the moment, though).
1183            (WMSLayer.getVisibleLayers): New: Return the list of names for all
1184            visible layers
1185            (WMSLayer.setVisibleLayers): New: Set the list of names for all
1186            visible layers
1187    
1188            * Extensions/wms/wms.py: Moved the WMS layer into layer.py in
1189            order to establish a clean structure.
1190    
1191            * Extensions/wms/layer.py: Moved the WMS layer into a file on its
1192            own in order to establish a clean structure.
1193    
1194    2004-04-13  Martin Schulze  <[email protected]>
1195    
1196            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Added
1197            support for oldstyle (WMS 1.0 apparently) image format
1198            specification.
1199    
1200            * Extensions/wms/wms.py (WMSLayer.calcFormat): Reduce the list of
1201            supported graphic formats back to JPEG and BMP, PNG and others are
1202            too *cough* experimental...  Sorry, I meant to filter this out
1203            before I committed this part.  This should make the WMS extension
1204            run from CVS again.
1205            (wms_dialog): Reset an empty URL to None so that the subsequent
1206            program can depend on this, since the dialog will indeed return an
1207            empty URL, causing another declaration of love by Python.
1208    
1209            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerBBox):
1210            Whenever a native BoundingBox request cannot be fulfilled, check
1211            whether the requested SRS is EPSG:3426, in which case return the
1212            LatLonBoundingBox values.
1213    
1214            * Extensions/wms/test/test_parser.py
1215            (TestWMSCapabilitiesParser.test_LayerSRS): Added a test for
1216            ignoring AUTO:* SRS.
1217            (TestWMSCapabilitiesParser.test_LatLonBoundingBoxes_as_bboxes):
1218            Added another test method to test whether the LatLonBoundingBox
1219            values will be returned if BoundingBox values are requested with
1220            SRS set to EPSG:3426.
1221    
1222            * Extensions/wms/parser.py (WMSCapabilitiesParser.peekLayers):
1223            Added rudimentary support for non-EPSG SRS, i.e. ignore them for
1224            the moment by placing them into a variable which is currently
1225            unused.  Also test whether the EPSG SRS is numerical as it should
1226            be and add an error message if it is not.
1227    
1228            * Extensions/wms/test/sample.xml: Added AUTO:* SRS since they
1229            appear in the real world as well.  Since we cannot handle them yet
1230            (OGCLib can't either), we will ignore them for the moment.
1231    
1232            * Extensions/wms/parser.py: Use a variable for denoting the sample
1233            filename
1234            (WMSCapabilitiesParser.peekLayers): Added support for error
1235            messages during grok().  They will be aggregated in an array and
1236            may be displayed later.  We may have to add a classification
1237            "Warning" and "Error" to this.  That requires more experience,
1238            though, since not every error may be lethal.
1239    
1240            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Raise the
1241            ShowTable() dialog/frame when the user attempts to display it
1242            while it has been opened before already and not closed again.
1243    
1244    2004-04-11  Martin Schulze  <[email protected]>
1245    
1246            * Extensions/wms/infodialog.py: Adjusted the class documentation
1247    
1248            * Extensions/wms/wms.py (WMSLayer.__init__, WMSLayer.GetMapImg):
1249            Switch to using Thuban{Begin,End}BusyCursor instead of the pure
1250            wxWidgets variants.
1251            (WMSLayer.__init__): The epsg_id variable is named top_srs now.
1252    
1253            * Extensions/wms/infodialog.py: Added an information dialog that
1254            will display various information about the WMS current resource,
1255            so that additional information such as the title, the abstract,
1256            fees and access constraints can be displayed for the user if they
1257            are documented in the WMS XML.
1258    
1259    2004-04-10  Martin Schulze  <[email protected]>
1260    
1261            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Adjusted
1262            string handling.  It's "foo".lower() and not lower(foo) without
1263            lower imported from strings or something.
1264    
1265            * Extensions/wms/wms.py (WMSLayer): Incorporated WMSCapabilities
1266            from capabilities.py and parser.py.  Implement priority list for
1267            supported graphics formats, take care of wbmp != bmp.  PNG, TIFF
1268            and GIF are supported here, but not yet by main Thuban.  Hence,
1269            support for them may be removed later.  Special contribution to
1270            usability: get wxWidgets to change the cursor when we're waiting
1271            for data from the network so the user won't start to worry.  This
1272            causes a redrawing error/warning, though.
1273    
1274            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Unlink
1275            the DOM object.
1276    
1277    2004-04-01  Martin Schulze  <[email protected]>
1278    
1279            * Extensions/wms/capabilities.py: Adjusted documentation
1280            (WMSCapabilities.__init__): Improved documentation, fixed syntax
1281            (WMSCapabilities.saveCapabilities): Only catch IOError when
1282            handling files
1283            (WMSCapabilities.loadCapabilities): Only catch IOError when
1284            handling files
1285            __main__: corrected variable naming
1286            (WMSCapabilities.fetchCapabilities,loadCapabilities): Make this
1287            class a specialisation of WMSCapabilitiesParser as well.  Also
1288            execute grok() after loading or fetching capabilities, if that
1289            went well, so that subsequent calls can already access the data.
1290            (WMSCapabilities.getVersion): Export the used version of the
1291            GetCapabilities request, so we can use it for subsequent calls,
1292            i.e. for GetMap requests.
1293            (WMSCapabilities.fetchCapabilities): Added proper error handling
1294            when the GetCapabilities request failed, so that the surrounding
1295            program can act accordingly.
1296    
1297    2004-03-30  Martin Schulze  <[email protected]>
1298    
1299            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerSRS):
1300            Adjusted the getLayerSRS method to return the list of SRSes
1301            extracted from <SRS> elements instead of <BoundingBox> elements.
1302            Added a bit of documentation as well.
1303            (WMSCapabilitiesParser.checkLayerSRS): Removed integrity test
1304            since it was only implemented due to a misunderstanding.
1305    
1306            * Extensions/wms/test/test_parser.py
1307            (TestWMSCapabilitiesParser.test_LayerSRS): Adjust the tests to
1308            reflect the corrected interpretation of the standard: i.e. a layer
1309            does not have to define a BoundingBox for all SRSes it supports.
1310            Hence the <SRS></SRS> specification is authoritative, not the list
1311            of BoundingBoxes.
1312            (TestWMSCapabilitiesParser.test_BoundingBoxes): Added a new test
1313            to ensure None is returned for a non-existing SRS.
1314            (TestWMSCapabilitiesParser.test_grok): Removed test_grok method
1315            since it is not applicable anymore.  Listing more SRSes in <SRS>
1316            elements is valid according to the specs.
1317    
1318    2004-03-26  Bernhard Reiter <[email protected]>
1319    
1320            * README: Nicer formatting of text. Improved descriptions.
1321            Reflected wxWidgets name change.
1322            
1323            * Thuban/UI/about.py: Extended copyright to 2004 and added
1324            information about the thuban-devel mailinglist.
1325    
1326    2004-03-24  Martin Schulze  <[email protected]>
1327    
1328            * Extensions/wms/capabilities.py: Renamed the class to contain
1329            'WMS', also added a linebreak where required
1330    
1331            * Extensions/wms/parser.py: Finally added the XML parser for the
1332            GetCapabilities response.
1333    
1334            * Extensions/wms/test/sample.xml: Adjusted the sample file so that
1335            <SRS> elements match the <BoundingBox> elements, except for the
1336            layer 'beschriftung'.
1337    
1338            * Extensions/wms/test/test_parser.py: Encode non-ascii strings
1339            since Python uses unicode strings internally, otherwise
1340            comparisons will fail.  Removed tests for getLayerBBoxSRS() since
1341            the SRS will be calculated anyway and this method is obsoleted by
1342            getLayerSRS().  Denote SRS as strings and not as cardinal numbers.
1343            Move loading the sample file into the setUp method.  Added a test
1344            for finding the integrity problem in the sample response.
1345            Improved formatting.
1346    
1347            * Extensions/wms/domutils.py: Added convenience routines for
1348            handling of Document Object Model (DOM) nodes.
1349    
1350            * Extensions/wms/test/test_domutils.py: Added a test for the
1351            domutils module
1352    
1353    2004-03-19  Martin Schulze  <[email protected]>
1354    
1355            * Extensions/wms/test/test_parser.py (TestWMSCapabilitiesParser):
1356            Moved path detection and adding into a module of its own,
1357            adjustpath, which exports thubandir as main Thuban directory.
1358    
1359            * Extensions/wms/test/test_ogclib.py (TestWMSLib): Moved path
1360            detection and adding into a module of its own, adjustpath, which
1361            exports thubandir as main Thuban directory.  Reorganised the
1362            module in order to support the SkipTest feature for Thuban test
1363            cases.
1364    
1365            * Extensions/wms/test/adjustpath.py: Moved path detection and
1366            adding into a module of its own.
1367    
1368    2004-03-18  Martin Schulze  <[email protected]>
1369    
1370            * Extensions/wms/test/test_parser.py: Added another test for
1371            checking whether the WMS XML parser (to be implemented) returns
1372            the information we expect.  This requires a sample WMS WML file
1373            (sample.xml) which has been extracted from the frida server and
1374            "improved" manually.
1375    
1376            * Extensions/wms/test/test_ogclib.py: Added legacy code to add the
1377            main Thuban directory to the path in order to be able to import
1378            random modules.  Adjusted the PyOGCLib detection to reuse the
1379            information gathered.  Also added a note about the PYTHONPATH
1380            environment variable.
1381    
1382            * Extensions/wms/test/test_ogclib.py: The format specification is
1383            a mime-type, not a graphic format, hence image/jpeg wou ld be the
1384            proper format and not JPEG.  We'll also have to take care of the
1385            encoding of / as %2F.
1386    
1387    2004-03-16  Martin Schulze  <[email protected]>
1388    
1389            * Extensions/wms/test/test_ogclib.py: Added a (hopefully)
1390            comprehensive test for the getMapURL method, built compare URLs
1391            according to the documentation in OGC 01-068r3
1392    
1393            * Extensions/wms/capabilities.py (WMSCapabilities): Added the
1394            class WMSCapabilities to manage capabilites, will incorporate
1395            parsing the capabilities response and provide details for other
1396            classes.
1397    
1398    2004-03-12  Bernhard Herzog  <[email protected]>
1399    
1400            Support views in addition to normal tables in the postgis
1401            shapestore
1402    
1403            * Thuban/Model/postgisdb.py
1404            (PostGISShapeStore._fetch_table_information): Add a fallback for
1405            the case where the table name is not in the geometry_columns
1406            table.  This is usually the case for views.  Also, set
1407            self.shapestore here.
1408            (PostGISShapeStore.ShapeType): No need to query the database all
1409            the time.  The shape type is now determined in
1410            _fetch_table_information
1411    
1412            * test/postgissupport.py (PostgreSQLServer.new_postgis_db)
1413            (PostgreSQLServer.get_static_data_db, PostGISDatabase.__init__):
1414            New parameter to specify views.
1415            (PostGISDatabase.has_data): Also compare the views.  New views
1416            parameter
1417            (PostGISDatabase.initdb): Create the views.
1418            (PostgreSQLServer.get_default_static_data_db): Add the v_landmarks
1419            view
1420    
1421            * test/test_postgis_db.py
1422            (TestPostGISShapestorePointFromViews): New.  Test a
1423            PostGISShapeStore with a view
1424            (TestPostGISShapestorePointOIDAsGIDColumn.setUp): Pass the name of
1425            the geometry_column explicitly to test whether that works
1426    
1427    2004-03-12  Bernhard Herzog  <[email protected]>
1428    
1429            Final step for explicit id/geometry columns: Loading and saving
1430    
1431            * Resources/XML/thuban-1.1.dtd: New.  Derived from thuban-1.0.dtd
1432            with the following changes:
1433            (dbshapesource): Two new attributes id_column and geometry_column
1434    
1435            * Thuban/Model/save.py (SessionSaver.write): Use the new dtd
1436            (SessionSaver.write_session): Use the new namespace
1437            (SessionSaver.write_data_containers): Write the new dbshapesource
1438            parameters
1439    
1440            * Thuban/Model/load.py (SessionLoader.__init__): New namespace for
1441            the new file format version
1442            (SessionLoader.start_dbshapesource): Handle the new db parameters
1443    
1444            * test/test_save.py: Update to the new dtd and namespace
1445            (SaveSessionTest.test_save_postgis): Update the NonConnectionStore
1446            mock object to provide a working IDColumn method.
1447    
1448            * test/test_load_1_0.py: New.  Copy of the test_load.py before
1449            today's changes but with the round-trip tests removed.
1450    
1451            * test/test_load_0_9.py: Update doc-string.
1452    
1453            * test/test_load.py: Update all .thuban files to the new dtd and
1454            namespace.
1455            (TestPostGISLayer.file_contents): Add the new dbshapesource
1456            paramters
1457    
1458    2004-03-11  Bernhard Herzog  <[email protected]>
1459    
1460            Next step for explicit id/geometry columns: User interaction
1461    
1462            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Rework how
1463            the dialog is constructed. Add combo boxes to select id and
1464            geometry column.  Rename some instance variables.
1465            (ChooseDBTableDialog.GetTable): Return id and geometry column
1466            names
1467            (ChooseDBTableDialog.OnTableSelect): New. Event handler for
1468            selections in the table list
1469    
1470            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Use id_column
1471            and geometry_column
1472    
1473            * Thuban/Model/session.py (Session.OpenDBShapeStore): Add the new
1474            parameters for id_column and geometry column of PostGISShapeStore
1475            here as well.
1476    
1477            * Thuban/Model/postgisdb.py (type_map): Add ROWID psycog type.
1478            (_raw_type_map): New. Map raw PostgreSQL type ints to thuban types
1479            (PostGISConnection.GeometryTables): Use a better query to
1480            determine which relations in the database might be usable for
1481            shapestores.  Now supports views as well but is more PostgreSQL
1482            specific
1483            (PostGISConnection.table_columns): New. Somewhat experimental
1484            method to let the db dialogs provide lists of columns to users so
1485            that they can select id and geometry columns.
1486            (PostGISTable.__init__): The default value of the id_column
1487            parameter is now None it still means "gid" effectively, though.
1488            (PostGISTable.IDColumn): New introspection method to return a
1489            column object for the id column
1490            (PostGISShapeStore.GeometryColumn): New introspection method to
1491            return a column object for the geometry column
1492    
1493            * test/test_postgis_db.py
1494            (TestPostGISConnection.test_gis_tables_non_empty):
1495            Removed. Subsumed by the new:
1496            (TestPostGISConnection.test_gis_tables_with_views_and_tables):
1497            New. Tes the GeometryTables and table_columns methods with actual
1498            tables and views.
1499            (PointTests.test_id_column, PointTests.test_geometry_column):
1500            New. tests for the new methods.
1501            (TestPostGISShapestorePoint.setUp)
1502            (TestPostGISShapestorePointSRID.setUp)
1503            (TestPostGISShapestorePointExplicitGIDColumn.setUp): Fill the
1504            instance variables needed by the new tests
1505    
1506    2004-03-11  Bernhard Herzog  <[email protected]>
1507    
1508            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): The row
1509            numbers given to ReadValue are ordinals.
1510    
1511    2004-03-11  Bernhard Herzog  <[email protected]>
1512    
1513            Elimiate the requirement for PostGIS tables to have a column
1514            called "gid".
1515    
1516            * Thuban/Model/postgisdb.py (PostGISTable.__init__): New parameter
1517            id_column to specify which column to use to identify rows.  Also
1518            new instance variables id_column and quoted_id_column
1519            (PostGISTable.RowIdToOrdinal, PostGISTable.RowOrdinalToId)
1520            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue)
1521            (PostGISTable.SimpleQuery): Use the id column name provided to the
1522            constructor instead of "gid"
1523            (PostGISShapeStore.__init__): New parameter id_column analogously
1524            to PostGISTable.__init__.  This parameter is simply passed through
1525            to the base class constructor
1526            (PostGISShapeStore._create_col_from_description): Fix typo in
1527            doc-string
1528            (PostGISShapeStore.Shape, PostGISShapeStore.AllShapes)
1529            (PostGISShapeStore.ShapesInRegion): Use the id column name
1530            provided to the constructor instead of "gid"
1531    
1532            * test/postgissupport.py
1533            (PostgreSQLServer.get_default_static_data_db): New static table
1534            landmarks_point_id with an id column != "gid.  Update the comments
1535            a bit.
1536            (skip_if_addgeometrycolumn_does_not_use_quote_ident): Fix typo in
1537            doc-
1538            (upload_shapefile): New parameter gid_column to use a name other
1539            than "gid" for the column to store the shape ids
1540    
1541            * test/test_postgis_db.py (TableTests): New.  Mixin-class
1542            containing all tests previously in TestPostGISTable.  The actual
1543            tests are the same but the code is a bit more configurable to
1544            allow for different id columns etc.
1545            (TestPostGISTable): Derive from TableTests now for the actual
1546            tests.
1547            (TestPostGISTableExplicitGIDColumn): New. Like TestPostGISTable
1548            except that it the landmarks_point_id table to test the id_column
1549            parameter
1550            (PointTests): Extend the doc-string
1551            (TestPostGISShapestorePointExplicitGIDColumn)
1552            (TestPostGISShapestorePointOIDAsGIDColumn): New classes derived
1553            from PointTests to test the explicit id_column parameter.  One
1554            tests with the name of the column holding the shape ids, the other
1555            uses PostgreSQL's OID column.  For the latter a number of methods
1556            have to be overwritten to make them independent of the actual id
1557            values.
1558    
1559    2004-03-08  Silke Reimer  <[email protected]>
1560    
1561            Update debian directory:
1562    
1563            * debian/changelog: Added new version.
1564            * deiban/rules: Updated management of patches (with cbds)
1565            * debian/control: Added cbds to dependencies
1566            * debian/patches/*: New. Adds better support for patches of thuban in
1567                            debian
1568            * debian/menu: Syntax of menu changed slightly
1569            * debian/setup.py.patch: removed because it has been moved to
1570                            debian/patechs/setup.py.patch
1571            
1572    
1573    2004-02-26  Bernhard Herzog  <[email protected]>
1574    
1575            Create the Doc/technotes directory for text files with information
1576            for developers
1577    
1578            * Doc/technotes/README: New. README for the technotes
1579    
1580            * Doc/technotes/coding_guidelines.txt: New. Coding guidelines for
1581            Thuban
1582    
1583            * Doc/technotes/release_process.txt: New. Used to be
1584            HOWTO-Release.  Now slightly adapted to technote formatting style.
1585    
1586            * HOWTO-Release: Removed.  It's contents are now in
1587            Doc/technotes/release_process.txt
1588    
1589    2004-02-25  Bernhard Herzog  <[email protected]>
1590    
1591            * libraries/thuban/wxproj.cpp (get_wx_version): New.  Return the
1592            version of wxWindows the module was compiled with so we can check
1593            that against the wxPython version.
1594    
1595            * Thuban/version.py (thuban_branch, thuban_release): New variables
1596            controlling which and how Thuban versions are shown.  See the
1597            comments for details.
1598            (verify_versions): Also check that the wx version that wxproj is
1599            compiled against matches that of the wxPython we use at runtime
1600    
1601    2004-02-20  Bernhard Herzog  <[email protected]>
1602    
1603            * Extensions/wms/wms.py (epsg_code_to_projection): Use
1604            get_system_proj_file to read the epsg projections.  The old way
1605            depended on the current directory being the top Thuban directory.
1606    
1607    2004-02-20  Bernhard Herzog  <[email protected]>
1608    
1609            * Extensions/svgexport/test/test_svgmapwriter.py
1610            (TestVirtualDC.test_clippath): Remove a debug print
1611    
1612    2004-02-20  Bernhard Herzog  <[email protected]>
1613    
1614            * Extensions/svgexport/__init__.py: New.  Turn
1615            Extensions/svgexport into a package.
1616    
1617            * Extensions/svgexport/svgmapwriter.py: Reorder the imports and
1618            doc-string a bit.  The doc-string must come first, otherwise it's
1619            not a doc-string.  The __future__ import must be the first thing
1620            after the doc-string.  Use only double quotes in doc-strings.
1621            Single quotes trip up emacs syntax highlighting if the text
1622            contains apostrophes.
1623    
1624    2004-02-20  Bernhard Herzog  <[email protected]>
1625    
1626            * Extensions/svgexport/test/__init__.py,
1627            Extensions/svgexport/test/test_svgmapwriter.py: New. Initial test
1628            suite for svgexport
1629    
1630            * test/runtests.py (find_test_modules): New. Function with the
1631            module finding code from main.
1632            (main): Use find_test_modules to figure out the default test
1633            modules and take modules from Extensions.svgexport.test too.
1634    
1635    2004-02-19  Bernhard Herzog  <[email protected]>
1636    
1637            * Thuban/UI/application.py (ThubanApplication.OnInit): Make sure
1638            the mainwindow has a reference to the map of the initial session.
1639            This fixes a bug introduced with the fix for RT#2245
1640    
1641    2004-02-19  Bernhard Herzog  <[email protected]>
1642    
1643            * Extensions/svgexport/svgsaver.py,
1644            Extensions/svgexport/svgmapwriter.py,
1645            Extensions/svgexport/maplegend.py: Added again.  This time in the
1646            correct place.
1647    
1648    2004-02-17  Bernhard Herzog  <[email protected]>
1649    
1650            Fix for RT#2245
1651    
1652            * Thuban/UI/application.py (ThubanApplication.OnInit): Initialize
1653            instance variables before trying to create any windows.  Creating
1654            windows can start an event loop if e.g. message boxes are popped
1655            up for some reason, and event handlers, especially EVT_UPDATE_UI
1656            may want to access things from the application.
1657            (ThubanApplication.maps_changed): The mainwindow may not have been
1658            created yet, so check whether it has been created before calling
1659            its methods
1660    
1661            * Thuban/UI/view.py (MapCanvas.OnIdle): Only try to redraw if we
1662            have a map
1663    
1664    2004-02-17  Bernhard Herzog  <[email protected]>
1665    
1666            * test/test_svgmapwriter.py, Extensions/svgsaver.py,
1667            Extensions/svgmapwriter.py, Extensions/maplegend.py,
1668            extensions/svgexport/svgsaver.py,
1669            extensions/svgexport/svgmapwriter.py,
1670            extensions/svgexport/maplegend.py: Removed.  These files were in
1671            the wrong places or didn't work at all.
1672    
1673    2004-02-16  Bernhard Herzog  <[email protected]>
1674    
1675            * Thuban/UI/view.py (MapCanvas.Export): Remove accidentally added
1676            line
1677    
1678    2004-02-16  Bernhard Herzog  <[email protected]>
1679    
1680            * Thuban/UI/view.py (MapCanvas.Export): Avoid UnboundLocalError.
1681    
1682    2004-02-15  Markus Rechtien  <[email protected]>
1683            
1684            * Extensions/svgexport/svgmapwriter.py: New. Adds the capability
1685            to write a session to a file in SVG format.
1686            * Extensions/svgexport/svgsaver.py: New. Uses svgmapwriter.py
1687            to write a SVG map of a session.
1688            * Extensions/svgexport/maplegend: New. Writes a basic maplegend
1689            in SVG format for the current session.
1690    
1691    2004-02-13  Bernhard Herzog  <[email protected]>
1692    
1693            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): When the layer
1694            can't be created, return immediately after displaying the error
1695            message.
1696    
1697    2004-02-11  Bernhard Herzog  <[email protected]>
1698    
1699            Handle postgis tables with more than one geometry column.
1700    
1701            * Thuban/Model/postgisdb.py
1702            (PostGISTable._fetch_table_information): Delegate the creation of
1703            column objects to a different method so that we can extend that in
1704            derived classes
1705            (PostGISTable._create_col_from_description): New. Column object
1706            creation part of _fetch_table_information
1707            (PostGISShapeStore._create_col_from_description): New. Extend
1708            inherited method to handle geometry columns
1709            (PostGISShapeStore.__init__): New parameter geometry_column to
1710            specify which geometry column to use.  Optional but mandatory for
1711            tables with more than one geometry column
1712            (PostGISShapeStore._fetch_table_information): Also use the name of
1713            the geometry column when looking for the srid
1714            (PostGISShapeStore.ShapeType): Also use the name of the geometry
1715            column when looking for the shape type
1716    
1717            * test/test_save.py (SaveSessionTest.test_save_postgis): Adapt
1718            NonConnectionStore to changes in the PostGISShapeStore
1719    
1720            * test/test_postgis_db.py
1721            (TestPostGISSpecialCases.test_shapestore_two_geom_cols): Test
1722            PostGISShapeStore with tables having two geometry columns.
1723    
1724    2004-02-10  Bernhard Herzog  <[email protected]>
1725    
1726            Fix some postgis problems.  What remains to be done is real
1727            handling of SRIDs as they affect how reprojection is done
1728    
1729            * Thuban/Model/postgisdb.py (quote_identifier): Fix typo in
1730            doc-string
1731            (PostGISShapeStore._fetch_table_information): New. Extend
1732            inherited method to retrieve srid
1733            (PostGISShapeStore.BoundingBox): Handle tables without data.
1734            extent yields NULL for those
1735            (PostGISShapeStore.ShapesInRegion): Use the srid of the table.
1736    
1737            * test/test_postgis_db.py
1738            (TestPostGISSpecialCases.test_shapestore_empty_table): New test
1739            for the special case of a table without any data
1740            (TestPostGISShapestorePointSRID): New class with tests for a table
1741            that uses srids
1742            (PolygonTests): Fix a doc-string typo
1743    
1744            * test/postgissupport.py (PostGISDatabase.__init__): New parameter
1745            reference_systems with a specification of spacial reference
1746            systems to create in the new db.
1747            (PostgreSQLServer.new_postgis_db)
1748            (PostgreSQLServer.get_static_data_db): New parameter
1749            reference_systems to be passed through ultimately to
1750            PostGISDatabase.  In new_postgis_db also check whether an existing
1751            db already has the right srids
1752            (PostgreSQLServer.get_default_static_data_db): Add srids and a
1753            table that uses srids
1754            (PostGISDatabase.initdb): Create the entries for the reference
1755            systems
1756            (PostGISDatabase.has_data): Add reference_systems parameter to
1757            check for those too
1758            (upload_shapefile): New parameter srid to create tables with a
1759            specific srid
1760    
1761    2004-02-06  Frank Koormann  <[email protected]>
1762    
1763            * po/pt_BR.po: Fixed charset
1764    
1765    2004-02-05  Frank Koormann  <[email protected]>
1766    
1767            * po/pt_BR.po: Fixed format string for error message, missing %s
1768            added (Thuban/UI/application.py:273)
1769    
1770    2004-02-03  Frank Koormann  <[email protected]>
1771            
1772            First version of Portuguese (Brazilian) translation
1773    
1774            * po/pt_BR.po: New, translation of pot (2004-01-15 16:07+0300) for
1775            Brazilian Portuguese by Eduardo Patto Kanegae.
1776    
1777            * Thuban/UI/about.py (About.__init.py__): Added Eduardo to the list of
1778            translators.
1779    
1780    
1781    2004-01-22  Frank Koormann  <[email protected]>
1782    
1783            * Doc/manual/thuban-manual.xml: Added section on installation of
1784            Thuban under Win32 systems. Fixed image path references in the postgis
1785            section. Some minor source formattings.
1786    
1787    2004-01-21  Frank Koormann  <[email protected]>
1788    
1789            Make Thuban remember path selections (at least for one application run).
1790    
1791            * Thuban/UI/application.py (Application.OnInit): Initialize path as a
1792            attribute of application object. Path is a dictionary of
1793            strings, currently with the items "data" and "projection".  
1794            (Application.SetPath): New, stores path for the specified item.
1795            (Application.Path): New, return path for the specified item.
1796    
1797            * Thuban/UI/mainwindow.py
1798            (MainWindow.OpenSession, MainWindow.SaveSessionAs,
1799            MainWindow.AddLayer, MainWindow.AddRasterLayer,
1800            MainWindow.TableOpen): Access "data" path information of the
1801            application.
1802            
1803            * Thuban/UI/projdialog.py (ProjFrame._OnImport, ProjFrame._OnExport):
1804            Access "projection" path information of the application.
1805    
1806    2004-01-05  Bernhard Herzog  <[email protected]>
1807    
1808            * po/ru.po: Updated translations from Alex Shevlakov
1809    
1810    2004-01-05  Bernhard Herzog  <[email protected]>
1811    
1812            * po/Makefile, po/README: Move the description of how to generate
1813            the translation statistics to the README.
1814    
1815    2003-12-23  Bernhard Herzog  <[email protected]>
1816    
1817            * NEWS: Update for 1.0.0
1818    
1819            * po/it.po: Another update from Maurizio Napolitano
1820    
1821    2003-12-23  Bernhard Herzog  <[email protected]>
1822    
1823            * po/it.po: Updated translation from Maurizio Napolitano
1824    
1825    2003-12-23  Bernhard Herzog  <[email protected]>
1826    
1827            * Thuban/UI/join.py (JoinDialog.__init__): Mark one more string
1828            for translation
1829    
1830            * Thuban/UI/mainwindow.py (MainWindow.TableRename)
1831            (MainWindow.RenameMap, MainWindow.RenameLayer): Mark some more
1832            strings for translation
1833    
1834            * po/de.po: Update with the newly marked strings.
1835    
1836    2003-12-22  Bernhard Herzog  <[email protected]>
1837    
1838            * HOWTO-Release: Fix the places where version numbers have to be
1839            updated
1840    
1841    2003-12-22  Bernhard Herzog  <[email protected]>
1842    
1843            * setup.py (setup call): 1.0.0, yeah!
1844    
1845            * Thuban/version.py (longversion): 1.0.0, yeah!
1846    
1847            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
1848            1.0.0 namespace too
1849    
1850            * Thuban/Model/save.py (SessionSaver.write_session): Save with
1851            1.0.0 namespace
1852    
1853            * test/test_load.py (LoadSessionTest.dtd)
1854            (TestSingleLayer.file_contents)
1855            (TestNonAsciiColumnName.file_contents)
1856            (TestLayerVisibility.file_contents)
1857            (TestClassification.file_contents, TestLabels.file_contents)
1858            (TestLayerProjection.file_contents)
1859            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
1860            (TestLabelLayer.file_contents, TestPostGISLayer.file_contents)
1861            (TestPostGISLayerPassword.file_contents)
1862            (TestLoadError.file_contents, TestLoadError.test): Update for
1863            1.0.0 namespace
1864    
1865            * test/test_save.py (SaveSessionTest.dtd)
1866            (SaveSessionTest.testEmptySession)
1867            (SaveSessionTest.testSingleLayer)
1868            (SaveSessionTest.testLayerProjection)
1869            (SaveSessionTest.testRasterLayer)
1870            (SaveSessionTest.testClassifiedLayer)
1871            (SaveSessionTest.test_dbf_table)
1872            (SaveSessionTest.test_joined_table)
1873            (SaveSessionTest.test_save_postgis): Update for 1.0.0 namespace
1874    
1875    2003-12-22  Bernhard Herzog  <[email protected]>
1876    
1877            * Thuban/Model/load.py (SessionLoader.start_label): Make sure the
1878            alignment flags are byte strings not unicode and that they have
1879            valid values
1880    
1881            * test/test_load.py (TestLabelLayer): New. Test loading (and
1882            indirectly saving) of maps with labels.
1883    
1884    2003-12-22  Bernhard Herzog  <[email protected]>
1885    
1886            * Thuban/UI/tableview.py (TableGrid.OnDestroy)
1887            (TableGrid.__init__): Handle EVT_WINDOW_DESTROY in the grid to
1888            unsubscribe all subscribers.
1889            (LayerTableFrame.OnDestroy): Do not unsubscribe any messages from
1890            self.grid since it may already have been destroyed.
1891            Fixes RT #2256
1892    
1893    2003-12-19  Bernhard Herzog  <[email protected]>
1894    
1895            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
1896    
1897    2003-12-16  Bernhard Herzog  <[email protected]>
1898            
1899            * debian/bitmappath.patch, debian/setup.py.patch:
1900                    added to ensure compliance with FHS for debian
1901            * debian/rules, debian/changelog:
1902                added patches in rules to ensure compliance with FHS for debian
1903    
1904    2003-12-16  Bernhard Herzog  <[email protected]>
1905    
1906            * po/Makefile (mo): Make the output a bit nicer so that it prints
1907            statistics about the translations. Add a comment how produce even
1908            nicer statistics with sed.
1909    
1910    2003-12-09  Frank Koormann   <[email protected]>
1911    
1912            * Resources/Projections/defaults.proj:
1913            French projection sample with correct accents (UNICODE).
1914    
1915    2003-12-05  Bernhard Herzog  <[email protected]>
1916    
1917            * MANIFEST.in: Add the devtools directory
1918    
1919            * setup.py (setup call): Use license instead of licence. This
1920            silences a deprecation warning on Python 2.3
1921    
1922    2003-12-05  Frank Koormann   <[email protected]>
1923    
1924            Documentation synced with 1.0rc1
1925    
1926            * Doc/manual/thuban-manual.xml:
1927            Minor formatting changes and references to database layers .
1928            Introduction.Internationalization: New section on i18n.
1929            MapManagement.AddingandRemovingLayers: Added item on database layers.  
1930            MapManagement.TheLegend: Added section and screenshot on popup menu.
1931            ProjectionManagement: Updated screenshot and sentence on EPSG.
1932            Appendix.SupportedDataSources: Added PostGIS.
1933            Appendix.WorkingwithPostGIS: New section.
1934    
1935            * Doc/manual/images/6_projection.png: Updated screenshot including
1936            EPSG checkboxes.
1937    
1938            * Doc/manual/images/3_5_popup_menu.png: New, popup menu screenshot.
1939    
1940            * Doc/manual/images/app_postgis_add_layer.png,
1941            Doc/manual/images/app_postgis_db_add.png,
1942            Doc/manual/images/app_postgis_db_management.png:
1943            New screenshots focussing on database layers
1944    
1945    2003-12-05  Frank Koormann   <[email protected]>
1946    
1947            * Thuban/UI/projdialog.py (load_user_proj): If user.proj is missing
1948            write warning to stderr instead of rising a warning dialog
1949    
1950    2003-12-03  Bernhard Herzog  <[email protected]>
1951    
1952            Fix for RT #2243
1953    
1954            * Thuban/UI/mainwindow.py (MainWindow.has_selected_shape_layer):
1955            New. Like has_selected_layer but for shape layers only
1956            (_has_selected_shape_layer): New. Like _has_selected_layer but for
1957            shape layers only
1958            (layer_show_table command, layer_jointable command): Use these
1959            commands should only be available for shape layers
1960    
1961    2003-12-03  Bernhard Herzog  <[email protected]>
1962    
1963            * Thuban/UI/mainwindow.py (MainWindow.Unsubscribe): Deal with
1964            publishers that are wx objects and may have been destroyed by wx
1965            already. Fixes RT #2242.
1966    
1967    2003-12-03  Bernhard Herzog  <[email protected]>
1968    
1969            * po/ru.po: Updates from Alex Shevlakov
1970    
1971    2003-12-03  Silke Reimer <silkeintevation.de>
1972    
1973            * debian/control, debian/changelog: Added gdal-support to
1974                    debian package, updated to new thuban version
1975    
1976    
1977    2003-12-03  Bernhard Herzog  <[email protected]>
1978    
1979            * Thuban/Lib/version.py: New. Module for version number
1980            manipulations. The version of make_tuple here also deals better
1981            with more unusual version number strings, such as e.g.
1982            "1.2+cvs20031111"
1983    
1984            * Thuban/version.py (make_tuple): Removed. It's now in
1985            Thuban.Lib.version. Use that implementation instead.
1986    
1987            * test/test_lib_version.py: New. Tests for Thuban/Lib/version.py
1988    
1989    2003-12-02  Bernhard Herzog  <[email protected]>
1990    
1991            * MANIFEST.in: Add debian files
1992    
1993            * setup.py (setup call): Add packages for the Extensions so that
1994            they're installed too
1995            (data_files): Add READMEs and sample data from some Extensions
1996    
1997            * NEWS: Add note about the extensions in binary packages
1998    
1999    2003-12-02  Bernhard Herzog  <[email protected]>
2000    
2001            * Thuban/Model/save.py (SessionSaver.write_session): Save files
2002            with the thuban-1.0rc1
2003    
2004            * Thuban/Model/load.py (SessionLoader.__init__): Recognize the
2005            thuban-1.0rc1 namespace too
2006    
2007            * test/test_save.py (SaveSessionTest.dtd)
2008            (SaveSessionTest.testEmptySession)
2009            (SaveSessionTest.testSingleLayer)
2010            (SaveSessionTest.testLayerProjection)
2011            (SaveSessionTest.testRasterLayer)
2012            (SaveSessionTest.testClassifiedLayer)
2013            (SaveSessionTest.test_dbf_table)
2014            (SaveSessionTest.test_joined_table)
2015            (SaveSessionTest.test_save_postgis): Update to thuban-1.0rc1
2016            namespace
2017    
2018            * test/test_load.py (LoadSessionTest.dtd): Update to thuban-1.0rc1
2019            namespace
2020            (TestSingleLayer.file_contents)
2021            (TestNonAsciiColumnName.file_contents)
2022            (TestLayerVisibility.file_contents)
2023            (TestClassification.file_contents, TestLabels.file_contents)
2024            (TestLayerProjection.file_contents)
2025            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
2026            (TestPostGISLayer.file_contents)
2027            (TestPostGISLayerPassword.file_contents)
2028            (TestLoadError.file_contents, TestLoadError.test): Update to
2029            thuban-1.0rc1 namespace
2030    
2031    2003-12-01  Bernhard Herzog  <[email protected]>
2032    
2033            * setup.py (proj4_prefix, wx_prefix, gdal_prefix): Fix these for
2034            nt to better match Intevation's current w32 setup
2035    
2036            * HOWTO-Release: Add note about updating MANIFEST.in
2037    
2038            * MANIFEST.in: Add the Extensions
2039    
2040            * NEWS: Update for 1.0rc1
2041    
2042    2003-12-01  Bernhard Herzog  <[email protected]>
2043    
2044            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Change the wild
2045            cards for the dialog so that shapefiles ending in all uppercase
2046            SHP are listed too
2047    
2048    2003-11-28  Bernhard Herzog  <[email protected]>
2049    
2050            * Thuban/version.py (longversion): Update to 1.0rc1
2051    
2052            * setup.py (setup call): Update version to 1.0rc1. Use the
2053            [email protected] email address as author email instead of my
2054            personal one.
2055    
2056    2003-11-28  Bernhard Herzog  <[email protected]>
2057    
2058            * po/de.po: Update german translation.
2059    
2060    2003-11-28  Bernhard Herzog  <[email protected]>
2061    
2062            Unify the filenames stored in .thuban files so that the .thuban
2063            files are more platform independend
2064    
2065            * Thuban/Model/save.py (unify_filename): New. Unify filenames so
2066            that they can be used on both windows and unix
2067            (SessionSaver.prepare_filename): New. Handle all filename
2068            transformations for filenames stored in the thuban file
2069            (SessionSaver.write_data_containers, SessionSaver.write_layer):
2070            Use prepare_filename
2071    
2072            * test/test_save.py (SaveSessionTest.testSingleLayer)
2073            (SaveSessionTest.testLayerProjection)
2074            (SaveSessionTest.testRasterLayer)
2075            (SaveSessionTest.testClassifiedLayer)
2076            (SaveSessionTest.test_dbf_table)
2077            (SaveSessionTest.test_joined_table): Filenames are always stored
2078            with slashes on all currently supported platforms so adapt all
2079            tests to this
2080    
2081            * test/test_load.py (LoadSessionTest.filenames): With the new
2082            filename scheme the filenames in the tests should be
2083            understandable on all currently supported platforms so we turn
2084            this into an empty list because we don't have to normalize them
2085            anymore
2086    
2087    2003-11-28  Bernhard Herzog  <[email protected]>
2088    
2089            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
2090            Add the ellipsoid to the projection since some Proj versions
2091            complain if it's missing.
2092    
2093    2003-11-27  Bernhard Herzog  <[email protected]>
2094    
2095            Corect some bounding box projection problems
2096    
2097            * Thuban/Model/proj.py (Projection.InverseBBox): New. Inverse
2098            version of ForwardBBox
2099            (Projection._transform_bbox): New. common implementation of
2100            ForwardBBox and InverseBBox
2101            (Projection.ForwardBBox): Use _transform_bbox.
2102    
2103            * test/test_proj.py (TestProjection.test): Add test for
2104            InverseBBox
2105    
2106            * Thuban/Model/layer.py (Layer.LatLongBoundingBox)
2107            (Layer.ShapesBoundingBox, RasterLayer.LatLongBoundingBox): Use the
2108            new InverseBBox method to determine the unprojected bounding box
2109            (Layer.ShapesInRegion): Use the ForwardBBox method to project the
2110            bbox.
2111    
2112            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
2113            Removed.
2114            (TestLayer.test_arc_layer_with_projection): New. This test is
2115            better able to test whether bounding boxes are projected correctly
2116            than test_point_layer_with_projection
2117    
2118            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Use
2119            InverseBBox to unproject bboxes
2120    
2121    2003-11-25  Bernhard Herzog  <[email protected]>
2122    
2123            * Thuban/UI/about.py (About.__init__): Make sure we have ASCII
2124            source code.
2125    
2126    2003-11-25  Bernhard Herzog  <[email protected]>
2127    
2128            * Thuban/Model/layer.py (Layer.__getattr__): Removed. It was only
2129            there for backwards compatibility and all code relying on that
2130            should have been updated by now.
2131    
2132    2003-11-25  Bernhard Herzog  <[email protected]>
2133    
2134            * test/test_load.py (TestClassification.test): Add the missing
2135            round trip test.
2136            (TestClassification.file_contents): Update to the newest file
2137            format
2138    
2139    2003-11-25  Bernhard Herzog  <[email protected]>
2140    
2141            Add very experimental (and possibly dangerous) extension to draw
2142            polygons:
2143    
2144            * Extensions/drawshape/README: New. Brief installation
2145            instructions
2146    
2147            * Extensions/drawshape/drawshape.py: New. Implementation of the
2148            drawshape extensions
2149    
2150            * Extensions/drawshape/patch.diff: Patch to apply before the
2151            extension can be used.
2152    
2153    2003-11-24  Bernhard Herzog  <[email protected]>
2154    
2155            * Thuban/Model/data.py (ShapefileStore._open_shapefile)
2156            (ShapefileStore.__init__): Factor opening the shapefile into a
2157            separate method (the new _open_shapefile). This makes the code a
2158            bit more readable but the real reason is that it makes some evil
2159            hacks easier. :-)
2160    
2161    2003-11-24  Bernhard Herzog  <[email protected]>
2162    
2163            * Thuban/Model/load.py (SessionLoader.check_attrs): If no
2164            converter is specified for an attribute assume it's a string
2165            containing only Latin1 characters. Update doc-string accordingly.
2166            This change should fix many places where unicode objects might
2167            accidentally enter Thuban.
2168    
2169            * test/test_load.py (TestNonAsciiColumnName): New test to check
2170            what happens with column names in DBF files that contain non-ascii
2171            characters
2172    
2173    2003-11-21  Bernhard Herzog  <[email protected]>
2174    
2175            Enable the experimental attribute editing again and introduce a
2176            command line switch to actually activate it
2177    
2178            * Thuban/UI/main.py (options): New. Container for options set on
2179            the commmand line
2180            (main): Add the --enable-attribute-editing flag.
2181    
2182            * Thuban/UI/identifyview.py (IdentifyView.__init__): If attribute
2183            editing is enabled use the grid ctrl which allows editing of the
2184            values
2185    
2186            * Thuban/Model/transientdb.py (AutoTransientTable.write_record):
2187            New. Just delegate this to the underlying table.
2188    
2189    2003-11-20  Bernhard Herzog  <[email protected]>
2190    
2191            * test/test_proj.py (ProjFileReadTests.test_read_unreadable_file):
2192            Skip this test if run under non-posix systems since it only works
2193            there
2194    
2195  2003-11-19  Bernhard Herzog  <[email protected]>  2003-11-19  Bernhard Herzog  <[email protected]>
2196    
2197          * Thuban/Model/resource.py: Rework the way gdal support is          * Thuban/Model/resource.py: Rework the way gdal support is
# Line 3612  Line 5806 
5806          Fix problem of hidden properties dialog under windows after double          Fix problem of hidden properties dialog under windows after double
5807          click on layer tree:          click on layer tree:
5808          The tree control always gets an Expanded / Collapsed event after          The tree control always gets an Expanded / Collapsed event after
5809          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.
5810            We add a second ItemActivated event to the queue, which simply
5811          raises the already displayed window.          raises the already displayed window.
5812    
5813          * 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.2444

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26