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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26