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

Legend:
Removed from v.2029  
changed lines
  Added in v.2352

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26