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

Legend:
Removed from v.1967  
changed lines
  Added in v.2343

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26