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

Legend:
Removed from v.2067  
changed lines
  Added in v.2419

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26