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

Legend:
Removed from v.2021  
changed lines
  Added in v.2435

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26