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

Legend:
Removed from v.2020  
changed lines
  Added in v.2351

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26