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

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

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26