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

Legend:
Removed from v.1895  
changed lines
  Added in v.2339

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26