/[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 2021 by bh, Wed Dec 3 18:57:06 2003 UTC revision 2585 by jan, Mon Mar 14 08:17:08 2005 UTC
# Line 1  Line 1 
1    2005-03-14  Jan-Oliver Wagner <[email protected]>
2    
3            * Doc/manual/thuban-manual-de.xml: More translations.
4    
5    2005-03-10  Jan-Oliver Wagner <[email protected]>
6    
7            Introducing initialization callbacks for extensions.
8    
9            * Thuban/UI/extensionregistry.py (ExtensionDesc.__init__): Added
10            optional parameter init_callback.
11            (ExtensionDesc.init_ext): New. Executes the callback and sets
12            a status.
13    
14            * Thuban/UI/application.py (ThubanApplication.OnInit): Add the
15            initialization of the extensions.
16            (ThubanApplication.init_extensions): Init all extensions.
17    
18            * Thuban/UI/about.py (About.__init__): Added status of the extensions
19            to the about text.
20    
21            * Extensions/gns2shp/__init__.py: Added init method for Extension
22            description.
23            (init): New. Contains the initialization of the module.
24    
25    2005-03-04  Nina H�ffmeyer <[email protected]>
26    
27            * Extensions/ogr/ogrdialog.py: Added a dialog, which asks for
28            OGRConnection to open a datasource. Removed dialog to display all
29            available drivers. Added some doc strings.
30    
31            * Extensions/ogr/ogrstart.py: Added menu entry for opening an
32            OGRDatasource with a string. Added two opening methods which return an
33            OGRDatasource (either data from file or from DB).
34    
35            * Extensions/ogr/ogrshapes.py: Added class OGRGeometry, which
36            represents a geometry reference of an OGRFeature. OGRShape now has a
37            list of referenced geometry objects (important for geometry
38            collections).
39            For OGRShapeStores loaded from a DB an ID column can be specified now.
40    
41    2005-02-22  Jan-Oliver Wagner <[email protected]>
42    
43            * test/test_map.py (TestMapWithContents.test_tree_info):
44            Added label layer for comparison.
45    
46    2005-02-18  Jonathan Coles <[email protected]>
47    
48            * libraries/thuban/gdalwarp.cpp (GetImageData): Optimize the loop
49            which builds a mask. Handle the majority of an image in a loop,
50            creating 8 bits at a time. Later, handle the edge case where less
51            than 8 bits are packed.
52    
53    2005-02-18  Bernhard Herzog  <[email protected]>
54    
55            * test/test_baserenderer.py (TestBaseRenderer.setUp): Fix
56            doc-string
57    
58    2005-02-18  Jonathan Coles <[email protected]>
59    
60            * setup.py: Remove wx_cs_params from gdal compile options.
61    
62    2005-02-18  Jonathan Coles <[email protected]>
63    
64            Refactored baserenderer.py and renderer.py to remove baserenderer.py's
65            dependencies on wxPython. Added a new method projected_raster_layer()
66            that returns a raster layer image in projected space. This must be
67            implemented in classes derived from BaseRenderer. This also eliminates
68            the dependency on gdal in baserenderer.py.
69    
70            * Thuban/UI/baserenderer.py (BaseRenderer.draw_raster_layer): Call
71            new projected_raster_layer() to get projected raster image instead
72            of directly calling ProjectRasterFile().
73            (BaseRenderer.projected_raster_layer): New. This must be implemented
74            by derived classes. It takes almost the same arguments as ProjectRasterFile
75            did and returns a projected image with mask and alpha data (if requested).
76            (BaseRenderer.render_map_incrementally): Remove the check for gdal since
77            that check will be done in MapRenderer.projected_raster_layer(). This
78            also allows other implementations to use different projection code.
79    
80            * Thuban/UI/renderer.py (MapRenderer.projected_raster_layer):
81            Implementation of BaseRenderer.projected_raster_layer. Checks for
82            gdal support and wxPython version. Also handles exceptions from
83            ProjectRasterFile.
84    
85            * libraries/thuban/gdalwarp.cpp: Removed checks for wxPython versions
86            and added a variable which can be set through the options argument
87            of ProjectRasterFile.
88    
89            * test/test_baserenderer.py (SimpleRenderer.projected_raster_layer): New.
90            Calls ProjectRasterFile and returns the result.
91            (TestBaseRenderer.test_projected_raster_layer): New. Tests the results
92            of calling projected_raster_layer() with different options.
93            (TestBaseRenderer.test_raster_no_projection): Removed tests based on
94            wxPython version and all tests of masks and alpha channels. These are
95            now in test_projected_raster_layer().
96    
97    2005-02-17  Jan-Oliver Wagner <[email protected]>
98    
99            * Thuban/Model/map.py, Thuban/Model/label.py: Fixed
100            doc-strings to comply with coding_guidelines.
101    
102    2005-02-17  Jan-Oliver Wagner <[email protected]>
103    
104            Docstring improvements and minor fixes for labellayer.
105    
106            * Thuban/Model/map.py:
107            (Map, Map.Destroy, Map.RemoveLayer, Map.ClearLayers,
108            Map.Layers, Map.HasLayers, Map.MoveLayerToTop,
109            Map.RaiseLayer, Map.LowerLayer, Map.MoveLayerToBottom,
110            Map.ProjectedBoundingBox, Map.GetProjection): Improved/added
111            doc string.
112            (Map.BoundingBox): Removed superfluous test for label_layer
113            and improved doc string.
114            (Map.TreeInfo): Added label_layer and improved sdo string.
115    
116            * Thuban/Model/label.py: Added import of _.
117            (Label, Label.__init__): Improved/added doc string.
118            (LabelLayer, LabelLayer.__init__, LabelLayer.Labels,
119            LabelLayer.RemoveLabel, LabelLayer.ClearLabels):
120            Improved/added doc string.
121            (LabelLayer.AddLabel): Use already defined names for
122            align strings and improved doc string.
123            (LabelLayer.TreeInfo): New. Return the object data for
124            the tree view.
125    
126    2005-02-16  Jonathan Coles <[email protected]>
127    
128            Further wxPython 2.5 changes using patches from Daniel Calvelo Aros
129            so that that wxproj doesn't crash. Added GUI support for selecting
130            alpha channel (opacity can't be selected yet).
131    
132            NOTE: If wxPython.h is including in future distribution packages
133            then it will not be necessary to have the files swigPtrConvertHack.h
134            and wxPython_int.h included with Thuban. This is hopefully
135            a temporary workaround.
136    
137            * setup.py (thuban_build_ext.finalize_options): gdalwarp needs
138            access to the macro wxCHECK_VERSION so that it will properly
139            generate a bit mask. There was a problem between wx2.4 and wx2.5
140            that this works around.
141    
142            * Thuban/Model/layer.py (RasterLayer.UseMask): Removed in favor
143            of RasterLayer.MaskType.
144            (RasterLayer.SetUseMask): Removed in favor of RasterLayer.SetMaskType
145            (RasterLayer.MaskType): New. Returns the type of mask to use. Can
146            specify none, a bitmap, or an alpha channel.
147            (RasterLayer.SetMaskType): New. Set what kind of mask to use.
148    
149            * Thuban/UI/baserenderer.py (BaseRenderer.draw_raster_layer):
150            Set the raster warping options for the mask based on the value
151            of RasterLayer.MaskType.
152    
153            * Thuban/UI/legend.py (LegendTree.__FillTreeLayer): Remove
154            deprecated calls to SetItemSelectedImage in favor of SetItemImage
155            with wxTreeItemIcon_Selected.
156    
157            * Thuban/UI/rasterlayerproperties.py: Support selecting to use
158            an alpha channel for the mask.
159    
160            * Thuban/UI/renderer.py (MapRenderer.draw_raster_data): Use alpha
161            data if it is available and an alpha channel is supported under
162            the current version of wxPython.
163    
164            * libraries/thuban/gdalwarp.cpp (GetImageData): Added compiler define
165            to select whether 1's or 0's select the desired portion of an image
166            in the bit mask. wx2.4 has a bug where the documentation is the opposite
167            from behavior.
168            (ProjectRasterFile): Only generate an alpha channel if the version
169            of wxPython is >= 2.5.3.
170    
171            * libraries/thuban/wxproj.cpp: Applied patches from Daniel Calvelo Aros.
172            When wxPython >= 2.5.3 use the special swig functions to decode an
173            object's address.
174    
175            * libraries/thuban/swigPtrConvertHack.h: Includes conditional code
176            based on the version of wxPython. If >= 2.5.3 use the special swig
177            functions from wxPython to decode wxPython objects, otherwise use
178            the old method of retrieving the address from the object __repr__ string.
179    
180            * libraries/thuban/wxPython_int.h: Copied from wxPython source.
181            Unnecessary code was removed to make it smaller.
182    
183            * test/test_baserenderer.py (TestBaseRenderer.test_raster_no_projection):
184            Add tests for returning an alpha channel.
185    
186            * test/test_layer.py (TestLayerModification.test_raster_layer): Fix
187            tests that used removed functions UseMask and SetUseMask
188    
189    
190    2005-02-08  Bernhard Herzog  <[email protected]>
191    
192            More wxPython 2.5 changes.  This time taken from a patch from
193            Daniel Calvelo Aros.
194    
195            * Thuban/UI/tableview.py (QueryTableFrame.__init__)
196            (QueryTableFrame.__init__): Pass the size of a spacer as a single
197            item.
198    
199            * Thuban/UI/projdialog.py (ProjFrame.build_dialog)
200            (ProjFrame.build_dialog): Pass the size of a spacer as a single
201            item.
202    
203            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Pass the
204            size of a spacer as a single item.
205    
206            * Thuban/UI/classifier.py (Classifier.dialog_layout): Pass the
207            size of a spacer as a single item.
208    
209    2005-02-08  Bernhard Herzog  <[email protected]>
210    
211            Compatibility with wxPython 2.5.  The changes should make it work
212            better with 2.5 while still keeping compatibility with 2.4.  There
213            are still problems with 2.5, though.
214    
215            * Thuban/UI/dock.py (DockableWindow.__CreateBorder): Pass the size
216            of a spacer as a single item.
217    
218            * Thuban/UI/classifier.py (ClassGroupPropertiesCtrl): Derive only
219            from wxControl
220    
221            * Thuban/UI/legend.py (LegendTree): When running with wxPython <
222            2.5, add an implementation of the GetFirstChild method that does
223            not require the second parameter.
224            (LegendTree.find_layer, LegendTree._OnMsgMapLayersAdded)
225            (LegendTree._OnMsgMapLayersRemoved, LegendTree.DeleteAllItems)
226            (LegendTree.DeleteChildren, LegendTree.__ShowHideLayer): Do not
227            pass the second parameter to GetFirstChild
228    
229    2005-02-08  Nina H�ffmeyer <[email protected]>
230    
231            * Extensions/ogr/ogrshapes.py: Removed some print commands.
232    
233            * Extensions/ogr/ogrstart.py: Changed the GUI. OGR is no longer an
234            additional menu but appears as a possibility in the menu Map.
235    
236    2005-02-07  Jonathan Coles <[email protected]>
237            * libraries/thuban/gdalwarp.cpp: Removed the macros PYTHON_ERR
238            and PYTHON_ERRF since they were no longer necessary.
239    
240    2005-02-07  Bernhard Reiter <[email protected]>
241            * Thuban/UI/classifier.py (ClassGrid.DeleteSelectedRows):
242            Enable translation for message string.
243    
244    2005-02-06  Martin Schulze  <[email protected]>
245    
246            * Extensions/wms/infodialog.py (wmsInfoDialog.__init__): Adjusted
247            the arguments of the contstructor to fit the global scheme
248    
249    2005-01-31  Nina H�ffmeyer <[email protected]>
250    
251            * Extensions/ogr/ogrdialog.py: Added class ogrdialog.py, which provides
252            some dialogs needed to start ogr.
253            
254            * Extensions/ogr/__init__.py: Changed comments to avoid encoding
255            warnings.
256    
257            * Extensions/ogr/test/test_OGRShapestore.py: Changed comments to avoid
258            encoding warnings.
259    
260    2005-01-28  Jonathan Coles <[email protected]>
261    
262            * libraries/thuban/gdalwarp.cpp (GetImageData): Recode how the
263            mask is packed into a bit array. It's now slightly faster.
264    
265    2005-01-28  Jonathan Coles <[email protected]>
266    
267            * Thuban/Model/layer.py (RasterLayer.__init__): Make use_mask
268            default to true.
269    
270            * Thuban/Model/load.py (SessionLoader.start_rasterlayer): Remove
271            code that loads the state of the layer's use_mask flag. Its
272            usefulness is still being debated.
273    
274            * Thuban/Model/save.py (SessionSaver.write_layer): Remove
275            code that saves the state of the layer's use_mask flag. Its
276            usefulness is still being debated.
277    
278            * Thuban/UI/baserenderer.py (BaseRenderer.draw_raster_layer): Pass
279            options to ProjectRasterFile based on the state of layer.UseMask().
280            Catch more exceptions from ProjectRasterFile so that Thuban doesn't
281            quit is there is a problem projecting.
282            (BaseRenderer.draw_raster_data): Change the documentation to
283            describe the new format (XBM) that the mask data will be in.
284    
285            * Thuban/UI/renderer.py (MapRenderer.draw_raster_data): The mask
286            data is in XBM format when format='RAW' which means it doesn't
287            need to be converted to a wxImage before being used as a mask
288            for a wxBitmap. Assume that if format != 'RAW' that the image
289            data and mask data are in the same format.
290    
291            * libraries/thuban/gdalwarp.cpp (GetImageData): If alpha is enabled
292            and a mask is requested, convert the alpha band to a bit array in
293            XBM format. if an alpha channel is requested, simply return the
294            data in the alpha band. Provide better error handling by returning
295            python error messages (also fixes RT #2947).
296            (ProjectRasterFile): Support multiple mask options, rather than simply
297            a flag indicating that a mask should or should not be used. Provide
298            better error handling by returning python error messages.
299    
300            * test/test_baserenderer.py (TestBaseRenderer.test_raster_no_projection):
301            Add mask data to test.
302    
303            * test/test_layer.py (TestLayer.test_raster_layer): Test that a layer
304            should use the mask by default.
305            (TestLayerModificaton.test_raster_layer): Test that a layer should use
306            the mask by default.
307    
308            * test/test_load.py (TestRasterLayer.test): Remove testing for
309            use_mask flag in file.
310    
311            * test/test_save.py (SaveSessionTest.testRasterLayer): Remove testing
312            for use_mask in file.
313    
314            * test/test_load_1_0_1.py: Removed. Shouldn't have been checked in.
315            
316    2005-01-26  Jonathan Coles <[email protected]>
317    
318            Add a new dialog box for raster layers. The dialog box allows
319            the user to toggle a mask that is generated by ProjectRasterFile
320            and is used to only draw the real parts of the projected image.
321    
322            * Thuban/UI/baserenderer.py (BaseRenderer.draw_raster_layer):
323            Instruct the warping code to generate a mask if the raster layer
324            requests one.
325            (BaseRenderer.draw_raster_data): Removed obsolete optional mask argument.
326    
327            * Thuban/UI/renderer.py (MapRenderer.draw_raster_data): Removed
328            obsolete optional mask argument.
329    
330            * Thuban/UI/classifier.py (Classifier): Change the parent class
331            to LayerProperties and rework the code to support layout calls
332            from the parent.
333            (Classifier.dialog_layout): New. Layout the dialog box.
334            (Classifier.map_layers_removed): Removed. Moved to parent class.
335            (Classifier.map_replaced): Removed. Moved to parent class.
336            (Classifier._OnTry): Renamed to OnTry to support parent class.
337            (Classifier.OnClose): Removed. Supplied in parent class.
338            (Classifier._OnCloseBtn): Removed. Supplied in parent class as OnCloseBtn.
339            (Classifier._OnOK): Renamed to OnOK to support parent class.
340            (Classifier._OnRevert): Renamed to OnRevert to support parent class.
341    
342            * Thuban/UI/layerproperties.py: New. Base class for layer properties
343            dialog boxes.
344    
345            * Thuban/UI/rasterlayerproperties.py: New. Class for displaying
346            raster layer properties.
347    
348            * libraries/thuban/gdalwarp.cpp: Replace the old gdalwarp.cpp code
349            with the non-simple version supplied with gdal. This allows added
350            features such as creating an alpha band.
351            (GetImageData): Generate a mask array from the alpha band that is
352            generated by gdal if the user has selected it. Try to support images
353            that have more than three bands, such as images with RGB plus an
354            alpha band.
355            (ProjectRasterFile): Convert python argument for mask and tell
356            gdal to enable or disable an alpha band.
357    
358            * Thuban/Model/layer.py (BaseLayer.Type): New. Returns a string
359            describing what kind of layer the class is. Defaults to "Unknown",
360            but should be overridden by subclasses.
361            (Layer.Type): New. Override base class method.
362            (RasterLayer.__init__): Create a flag for using a mask. Record extra
363            data from gdal for display in the properties dialog.
364            (RasterLayer.Type): New. Override base class method.
365            (RasterLayer.UseMask): New. Returns True if the mask should be used.
366            (RasterLayer.SetUseMask): New. Set if the mask should be used.
367            (RasterLayer.ImageInfo): New. Return extra information about the image.
368    
369            * Thuban/Model/load.py (SessionLoader.start_rasterlayer): Load
370            the mask information.
371    
372            * Thuban/Model/save.py (SessionSaver.write_layer): Save mask information.
373    
374            * Thuban/UI/mainwindow.py: Register the RasterLayerProperties and
375            Classifier classes as dialogs to use with the proper layer types.
376    
377            * test/test_baserenderer.py (TestBaseRenderer.test_raster_no_projection):
378            Fix test.
379    
380            * test/test_layer.py (TestLayer.test_raster_layer): Test new methods.
381            (TestLayerModification.build_path): New. Support function.
382            (TestLayerModification.test_raster_layer): New. Test new methods.
383    
384            * test/test_save.py (SaveSessionTest.testRasterLayer): Add tests for mask.
385    
386            * test/test_load.py (TestRasterLayer): Add tests for mask.
387    
388            * test/test_load_1_0_1.py: New. Copied from test_load.py.
389    
390            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Removed
391            obsolete optional mask argument.
392    
393    2005-01-26  Nina H�ffmeyer <[email protected]>
394    
395            * Extensions/ogr/ogrshapes.py: Added two dictionaries to ShapeStore
396            which maps the ids and the ordinals. Fixed RowIdToOrdinal(),
397            RowOrdinalToId() and ReadRowAsDict().
398    
399            * Extensions/ogr/ogrstart.py: Added menu item which opens database
400            layers for existing database connections.
401    
402            * Extensions/ogr/test/test_OGRShapestore.py: Fixed a message string.
403    
404    
405    2005-01-26  Jan-Oliver Wagner <[email protected]>
406    
407            * Doc/manual/thuban-manual-de.xml: More translations.
408    
409    2005-01-24  Bernhard Herzog  <[email protected]>
410    
411            Rework the status bar updates a bit to make sure the message about
412            the projections is produced at the right times.
413    
414            * Thuban/UI/mainwindow.py (MainWindow.update_status_bar_messages):
415            New class variable with messages that may require a status bar
416            update.
417            (MainWindow.view_position_changed)
418            (MainWindow.update_status_bar): Rename from view_position_changed
419            to update_status_bar.  It's meaning has changed now that it may
420            also generate messages about problems with projection settings.
421            (MainWindow.__init__): Use the new update_status_bar_messages
422            class variable to subscribe update_status_bar
423            (MainWindow.set_position_text): Update doc-string.  This method
424            has to be renamed at some point.  See doc-string and comments.
425            (MainWindow.OnClose): Unsubscribe update_status_bar from all
426            messages in update_status_bar_messages
427    
428            * Thuban/UI/viewport.py (ViewPort.forwarded_map_messages): New
429            class attribute.  map messages to be forwarded by the viewport.
430            (ViewPort._subscribe_map, ViewPort._unsubscribe_map): (un)subscribe
431            the messages in forwarded_map_messages
432    
433    2005-01-21  Bernhard Herzog  <[email protected]>
434    
435            * test/postgissupport.py (PostGISDatabase.__init__): Tweak
436            doc-string
437            (find_postgis_sql): Update for postgis-1.0.0-rc1, which uses a
438            different name for the initialization SQL file.
439    
440    2005-01-21  Jonathan Coles <[email protected]>
441    
442            * Thuban/UI/baserenderer.py (proj_params_to_str): New. Takes
443            a projection and returns a formatted string representing the
444            parameters to feed to gdalwarp. This function eliminates
445            redundancy in draw_raster_layer().
446            (BaseRenderer.render_map_incrementally): Removed the optimization which
447            drew the top most raster layer first and then only those vector-
448            based layers that are above it. With the support for transparency
449            this optimization breaks correct behaviour.
450            (BaseRenderer.draw_raster_layer): Reorganize code to support possible
451            future enhancements to raster layer bounding box. The old behaviour has
452            not changed. Also, change calling parameters to draw_raster_data()
453            to specify new RAW data format and mask.
454            (BaseRenderer.draw_raster_data): Change signature to include an optional
455            parameter for mask information. Change documentation to mention
456            support for new parameter and added option for RAW data format.
457            The data argument is now a list of [width, height, data].
458    
459            * Thuban/UI/renderer.py (MapRenderer.draw_raster_data): Add new optional
460            mask parameter. Add new condition for RAW format, which
461            significantly reduces rendering time. Add condition for
462            mask parameter.
463    
464            * libraries/thuban/gdalwarp.cpp (GetImageData): New. Creates a
465            data array of RGB values from the projected image returned from
466            the gdal warping functions. In the case of palette based images, it
467            converts the NO_DATA index to the mask color.
468            (ProjectRasterFile): Removed all custom memory driver references
469            and replaced it with the standard in-memory dataset provided
470            by gdal. The return data is no longer a BMP file, but an array
471            of RGB values, one set triple per pixel.
472    
473            * libraries/thuban/bmpdataset.cpp: Removed. Unnecessary.
474            * libraries/thuban/cpl_mfile.h: Removed. Unnecessary.
475            * libraries/thuban/cpl_mfile.cpp: Removed. Unnecessary.
476    
477            * setup.py (thuban_build_ext.finalize_options): Removed mention
478            of cpl_mfile.cpp and bmpdataset.cpp files in the list of source
479            files. These are obsolete with the new version of gdalwarp.cpp
480    
481            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data):
482            Updated signature.
483            (TestBaseRenderer.test_raster_no_projection): Changed the test
484            data to be data in the uncompressed RAW format returned from
485            ProjectRasterFile.
486    
487    2005-01-21  Jan-Oliver Wagner <[email protected]>
488    
489            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed): Made
490            string available for i18n.
491    
492    2005-01-20  Russell Nelson  <[email protected]>
493    
494            * Resources/Projections/defaults.proj: Ruin the speling of the
495            Lambert-93 projection so it doesn't run into the wx UTF-8 bug.
496            It's the wrong thing to do in the long run, but it's necessary for
497            those users until that bug is fixed.  Otherwise the projection
498            dialog segfaults.  Better to annoy some Lambert-93 users with a
499            spelling mistake than every Fedora Core 3 user of Thuban-CVS.
500    
501    2005-01-20  Bernhard Reiter <[email protected]>
502    
503            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed): Added
504            docstring and comment that the warning code here is a hack.
505    
506    2005-01-20  Russell Nelson  <[email protected]>
507    
508            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed): Warn
509            user about misprojected layers when their lat/lon bounding
510            box exceeds rational lat/lon values.
511    
512    2005-01-20  Bernhard Reiter <[email protected]>
513    
514            * Thuban/UI/about.py (unicodeToLocale): Improved:
515            Use 'ascii' and then 'replace' for other characters
516            when getdefaultlocale returns None. Thanks to Bernhard H. .
517    
518    2005-01-20  Bernhard Reiter <[email protected]>
519    
520            * Thuban/UI/classgen.py (GenQuantilesPanel.OnRetrieve): Added a comment
521            that OnRangeText might be called twice and using None as argument.
522    
523    2005-01-20  Bernhard Reiter <[email protected]>
524    
525            * Thuban/UI/classgen.py (GenQuantilesPanel.OnRetrieve): Add a
526            OnRangeText(0) to work around a different in wx Behaviour noticed
527            on MacOSX, thanks to Lorenzo Moretti and Daniel Calvelo for the fix.
528    
529    2005-01-20  Bernhard Reiter <[email protected]>
530    
531            * Thuban/UI/about.py: take iso-8859-15 when getdefaultlocale returns
532            None. (Fixes rt#2910.)
533            
534    2005-01-18  Frank Koormann <[email protected]>
535    
536            New Extension: mouseposition
537            Tool to collect mouse click positions (map coordinates) in a dialog.
538    
539            * Extensions/mouseposition/__init__.py: New, extension registration
540    
541            * Extensions/mouseposition/mouseposition.py: New, implements the
542            dialog and adds a tool to Thuban mainwindow.
543    
544            * Extensions/mouseposition/position.xpm: New, icon for tool.
545    
546    2005-01-14  Jan-Oliver Wagner <[email protected]>
547    
548            * Doc/manual/thuban-manual-de.xml: More translations.
549    
550    2005-01-11  Frank Koormann <[email protected]>
551    
552            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer):
553            Fix indention bug.
554    
555    2005-01-09  Frank Koormann <[email protected]>
556    
557            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer):
558            BugFix 2901: Explicitly copy layers ClassificationColumn since it
559            is not part of the layers Classification.
560    
561    2005-01-03  Frank Koormann <[email protected]>
562    
563            * Thuban/UI/renderer.py (ScreenRendererdraw_selection_incrementally):
564            BugFix 2883: Former implementation only worked on classified point
565            layers: KeyError was raised, now use the default size if field is None.
566    
567    2004-12-27  Bernhard Reiter <[email protected]>
568    
569            svgexport 1.0.0cvs: Fixed label export.
570    
571            * Extensions/svgexport/test/test_svgmapwriter.py:
572            class TestSVGRenderer(): New class; new test test_label_font().
573    
574            * Extensions/svgexport/svgmapwriter.py
575            (SVGRenderer.label_font()): initialised Font size with self.factor now,
576            makes test_label_font happy.
577    
578            * Extensions/svgexport/TODO: crossed out fixed label export item.
579            Added item for options.
580    
581            * Extensions/svgexport/__init__.py: Bumped version to 1.0.0cvs.
582    
583    2004-12-27  Russell Nelson  <[email protected]>
584    
585            Middle mouse button pans.
586    
587            * Thuban/UI/view.py (MapCanvas.__init__): Subscribe also
588            OnMiddleDown and OnMiddleUp events.
589            (MapCanvas.OnMiddleDown): New. Activate the pan tool and remember the
590            previously used tool.
591            (MapCanvas.OnMiddleUp): New. Reactivate the remebered tool used before
592            pressing the middle mouse button.
593    
594    2004-12-27  Jan-Oliver Wagner <[email protected]>
595    
596            * Doc/manual/thuban-manual-de.xml: More translations.
597    
598    2004-12-23  Jan-Oliver Wagner <[email protected]>
599    
600            * Thuban/UI/projdialog.py (ProjFrame.load_user_proj): Added a
601            \n to stderr after the warnings. Thanks to Russell Nelson.
602    
603    2004-12-20  Nina Hueffmeyer <[email protected]>
604    
605            * Extensions/ogr/ogrshapes.py: Fixed some issues from
606            Bernhard (coding guidelines etc.). Additionally it is now possible to
607            display shapefiles containing feature collections (e.g.polygons
608            with holes). Works with gdal 1.2.1 now.
609    
610            * Extensions/ogr/test/test_OGRShapestore.py: Fixed some issues
611            from Bernhard (coding guidelines etc.). If ogr can't be imported,
612            tests are skipped now.
613    
614            * Extensions/ogr/ogrstart.py: Fixed some typings.
615    
616    2004-12-20  Bernhard Reiter <[email protected]>
617    
618            * Extensions/svgexport/TODO: updated to add support for
619            raster layers and labels for 1.0.1.
620    
621            * Extensions/svgexport/svgmapwriter.py (draw_raster_layer):
622            Issue a warning now.
623    
624    2004-12-19  Bernhard Reiter <[email protected]>
625    
626            * Extensions/svgexport/TODO: Added idea to support triggering
627            the application down the pipe.
628    
629    2004-12-19  Bernhard Reiter <[email protected]>
630    
631            svgexport: Improved code quality, mainly by better naming.
632    
633            * Extensions/svgexport/svgmapwriter.py:
634            DrawPath() renamed to DrawPolygonPath(),
635            added documentation, improved comments and variable names.
636            
637            * Extensions/svgexport/svgmapwriter.py,
638              Extensions/svgexport/test/test_svgmapwriter.py:
639            All using DrawPolygonPath() now, the default parameter closed=True
640            omitted.
641    
642            * Extensions/svgexport/test/test_svgmapwriter.py:
643            renamed test_polygon_opened() to test_polyline()
644            renamed test_transparent_polygon() to test_transparent_polyline()
645    
646    2004-12-18  Jan-Oliver Wagner <[email protected]>
647    
648            Some fixes of gns2shp extension.
649    
650            * Extensions/gns2shp/test/__init__.py: New. Make this directory a
651            package.
652    
653            * Extensions/gns2shp/test/test_gns2shp.py: Add some import paths
654            dynamically.
655    
656            * Extensions/gns2shp/test/README: Simplified description how to test.
657    
658            * Extensions/gns2shp/gns2shp.py (gns2shp): Fixed doc-string,
659            fixed some dimensions of fields according to the GNS documentation
660            which seems to change undocumented.
661            Now killing trailing \n and/or \r from MODIFY_DATE.
662            This fixes RT#2453.
663    
664    2004-12-18  Bernhard Reiter <[email protected]>
665    
666            svgexport 1.0.0: Treats holes and islands nicely. Documentation added.
667    
668            * Extensions/svgexport/test/test_svgmapwriter.py:
669            Added new tests: test_export_polygon_with_hole()
670            and test_polygon_with_hole().
671    
672            * Extensions/svgexport/svgmapwriter.py
673            (draw_polygon_shape()): Uses DrawPath correctly now.
674    
675            * Doc/manual/thuban-manual.xml: Added documentation for stable
676            extention svgexport.    
677            * Doc/manual/thuban-manual-de.xml: Copied English section about
678            svexport over.
679    
680            * Extensions/svgexport/__init__.py: Bumped version number to 1.0.0.
681    
682            * Extensions/svgexport/svgsaver.py,maplegend.py:
683            Moved from experimental to stable extension menu.
684    
685            * Extensions/svgexport/TODO: updated.
686    
687    
688    2004-12-18  Bernhard Reiter <[email protected]>
689    
690            Added Extensions/svgexport/TODO
691    
692    2004-12-18  Bernhard Reiter <[email protected]>
693    
694            Refactored in svgexport:
695            DrawPath replaces DrawPolygon; added newline in front of "M" in paths.
696    
697            * Extensions/svgexport/svgmapwriter.py
698            Added verbosity level 3 to print out polygon points.
699            (class Point): added __repr__
700            (class Brush, __str__()): Added space after ,.
701            (DrawPolygon): Renamed to DrawPath()
702            (DrawPath): Takes list of polygons as input now, adds \n before "M"s.
703            (DrawLines): Using DrawPath now.
704    
705            * Extensions/svgexport/test/test_svgmapwriter.py:
706            Replaced DrawPolygon() calls with DrawPath() and put the first argument
707            inside another list. Adapted test data with a newline before "M".
708    
709    2004-12-18  Bernhard Reiter <[email protected]>
710            
711            Refactored svgexport tests: 9 double tests runs eliminated;
712            code size reduced by 8 lines.
713    
714            * Extensions/svgexport/test/test_svgmapwriter.py:
715            (class TestWithDC): Renamed to BaseTestWithDC, moved to top.
716            (class BaseWithDCtools): New, subclass from BaseTestWithDC.
717            (class TestDrawSplines): now subclass from BaseTestWithDCtools,
718            this fixed the double running of the nine tests of TestVirtualDC.
719            (class TestVirtualDC): Using self.dc and self.file from setUp().
720    
721    2004-12-17  Bernhard Herzog  <[email protected]>
722    
723            Two windows specific fixes ported from thuban-1�0-branch:
724    
725            * Thuban/UI/about.py (unicodeToLocale): Use getdefaultlocale
726            instead of getlocale because getlocale doesn't return a usable
727            encoding name on a german windows 2000
728    
729            * setup.py: windows build: Removed the absolute path names and
730            made all prfixes relative to the directory containing setup.py.
731            Makes it a little easier to adapt to a different system.
732    
733    2004-12-16  Bernhard Herzog  <[email protected]>
734    
735            Add support for PostGIS tables with LINESTRING geometries.
736            Fixes RT#2299
737    
738            * Thuban/Model/postgisdb.py (shapetype_map): Add LINESTRING
739    
740            * test/postgissupport.py
741            (PostgreSQLServer.get_default_static_data_db): Rename the "roads"
742            table to "roads-multi" because it now uses MULTILINESTRING
743            geometries and introduce a new "roads" table that uses LINESTRING
744            (coords_to_multilinestring): Make the doc string more precise
745            (coords_to_linestring): New.  Create a LINESTRING WKT
746            representatin
747            (wkt_converter): Add coords_to_linestring
748            (upload_shapefile): Rephrase the doc-string a bit.
749    
750            * test/test_postgis_db.py (TestPostGISShapestoreArc)
751            (LineStringTests)
752            (TestPostGISShapestoreLineString)
753            (TestPostGISShapestoreMultiLineString): Split
754            TestPostGISShapestoreArc into a base class LineStringTests and two
755            derived classes TestPostGISShapestoreLineString for LINESTRING
756            geometries and TestPostGISShapestoreMultiLineString for
757            MULTILINESTRING geometries.  Most test methods are in the base
758            class with the exception of tests that explicitly check the raw
759            format.
760    
761    2004-12-16  Bernhard Herzog  <[email protected]>
762    
763            Make the test suite work with PostGIS 0.8.2 and PostgreSQL 7.4
764    
765            * test/postgissupport.py (find_postgis_sql): Different postgis
766            versions put the postgis.sql file into slightly different places
767            so we have to look in both.  The updated doc string describes this
768            is more detail.
769    
770            * test/test_postgis_db.py
771            (TestPostGISSpecialCases.test_column_name_quoting): The return
772            value of UniqueValues is unsorted, so it has to be sorted for
773            comparison.
774    
775    2004-12-16  Bernhard Herzog  <[email protected]>
776    
777            Fix for RT#2237
778    
779            * Thuban/UI/projdialog.py (ProjFrame._show_proj_panel): If the
780            panel to be shown is the UnknownProjPanel disable the OK and Try
781            buttons.  Otherwise enable them.
782            (ProjFrame.__GetProjection): The UnknownProjPanel returns None for
783            the parameters.  In that case __GetProjection also returns None
784            now.
785    
786    2004-12-15  Bernhard Herzog  <[email protected]>
787    
788            * Thuban/UI/classgen.py (GenQuantilesPanel.__init__): Set the
789            minimum number of classes to 2.  The calculate_quantiles needs at
790            least two and raises an exception otherwise.  
791            Fixes RT#2549
792    
793    2004-12-15  Bernhard Herzog  <[email protected]>
794    
795            * test/postgissupport.py (PostgreSQLServer.execute_sql): Extend to
796            so that it returns a result for select statements.
797            (PostgreSQLServer.server_version): New.  Return the version of the
798            server software.
799            (PostgreSQLServer.require_authentication): The format of
800            pg_hba.conf has changed between PostgrSQL 7.2 and 7.3.  Check the
801            server version and generate the file in the correct format
802    
803    2004-12-15  Bernhard Herzog  <[email protected]>
804    
805            * test/postgissupport.py (PostgreSQLServer.is_running): Fix typo
806            in the doc string and rephrase it a little.
807    
808    2004-12-15  Frank Koormann <[email protected]>
809    
810            * test/test_load.py (TestAltPath.checkSession): New, extended checks if
811            session has been loaded successfully. The check is called by the relevant
812            tests after executing load_session().
813    
814    2004-12-13  Bernhard Herzog  <[email protected]>
815    
816            Make sure the region used to determine which shapes are visible
817            actually matches the region on the printed page.  If this isn't
818            done properly some shapes might not be printed.  
819            Fixes RT #2692
820    
821            * Thuban/UI/view.py (MapPrintout.draw_on_dc): The region for the
822            renderer has to be at the same position as the mapregion
823    
824            * Thuban/UI/renderer.py (ExportRenderer.RenderMap): self.region
825            has to be moved by (self.shiftx, self.shifty) too.
826    
827    2004-12-13  Bernhard Herzog  <[email protected]>
828    
829            * libraries/pyprojection/Projection.i: Work around a bug in the
830            generated python code which leads to exception in the __del__
831            method when the constructor fails.  See the comments in the code
832            for more details.
833    
834            * libraries/pyprojection/Projection.py: Updated from Projection.i
835            with SWIG.
836    
837    2004-12-13  Bernhard Herzog  <[email protected]>
838    
839            * test/test_load.py (TestAltPath.test_01_single_path_error_fix)
840            (TestAltPath.test_02_path_error_fix_from_list)
841            (TestAltPath.test_05_path_error_fix_from_list_changed)
842            (TestAltPath.test_06_path_error_fix_from_list_fails): self.session
843            is destroyed in tearDown, so there's no need to do it in a test
844            case.
845    
846            * Thuban/Model/load.py (SessionLoader.open_shapefile): Remove a
847            debug print
848    
849    2004-12-13  Bernhard Herzog  <[email protected]>
850    
851            * Extensions/svgexport/test/test_svgmapwriter.py
852            (TestDrawSplines.setUp): Do not use super with the unittest
853            classes because in Python 2.2 they're still old-style classes.
854    
855    2004-12-13  Frank Koormann <[email protected]>
856    
857        Alternative Path feature: When loading a (moved) session where
858            shapefiles cannot be found, ask the user. Use the specified path
859            if further shapefiles are missing. However, ask the usr for confirmation
860            in such cases.
861    
862            * test/test_load.py (TestAltPath): New, tests for alternative path feature
863            in load_session()
864            (Shapefile_CallBack): Helper, implements controllable callback.
865    
866            * Thuban/UI/application.py (ThubanApplication.OnInit):
867            Added "alt_path" to self.path
868            (ThubanApplication.OpenSession): Added shapefile_callback as second
869            callback similar to db_connection_callback.
870            (ThubanApplication.run_alt_path_dialog): New, implementaion of
871            shapefile_callback. In addition to raising the dialog the control of
872            self.path('alt_path') is implemented here.
873    
874            * Thuban/Model/load.py (SessionLoader.__init__): Added shapefile_callback.
875            (SessionLoader.open_shapefile): Open shapefile, eventually with
876            alternative path. This wrapps the "theSession.OpenShapefile(filename)"
877            formerly used in start_fileshapesource()/start_layer().
878            (SessionLoader.start_fileshapesource): Call open_shapefile().
879            (SessionLoader.start_layer): Call open_shapefile().
880            (load_session): Added shapefile_callback.
881    
882            * Thuban/UI/altpathdialog.py: New, implements dialogs for alternative path
883            feature (search / check).
884            
885            * Doc/manual/thuban-manual.xml: Added documentation of new feature.
886    
887    2004-12-11  Bernhard Reiter <[email protected]>
888    
889             svgexport 0.9.2: Point size supports for maps.
890    
891            * Extensions/svgexport/svgmapwriter.py: Added import of SHAPETYPE_POINT
892            (def draw_point_shape): new parameter size defaults to 2 as before.
893            (draw_shape_layer_incrementally): Moved draw_func log line higher.
894            Added draw_func call with size when dealing with a point layer.
895    
896            * Extensions/svgexport/__init__.py: bumped version to 0.9.2.
897            
898    2004-12-11  Bernhard Reiter <[email protected]>
899    
900            Made sure that newlines are inserted in the svg path d attributes
901            to raise the chance that the line length will be below 255 characters,
902            as recommended by REC SVG 1.1 in section 8.3.1.
903    
904            * Extensions/svgexport/svgmapwriter.py(DrawPolygon):
905            Adding \n before L's and changed whitespace handling.
906    
907            * Extensions/svgexport/test/test_svgmapwriter.py:
908            Adapted tests to new whitespace handling of DrawPolygon.
909    
910    2004-12-11  Bernhard Reiter <[email protected]>
911    
912            * Doc/technotes/coding_guidelines.txt: easy typo fixed.
913    
914            * Extensions/svgexport/test/test_svgmapwriter.py:
915            Removed test_drawbezier in favour of new test_drawspline3 and
916            test_drawspline4 within new class TestDrawSplines(TestVirtualDC).
917            All only to test DrawSpline.
918    
919            * Extensions/svgexport/svgmapwriter.py(DrawSpline):
920            New implementation now really using the strange algorithm of
921            xfig 3.1's approximated splines and its conversion to postscript
922            with one twist: SVG can do quadratic beziers, so skipped translation
923            to cubic beziers.
924            (TestWithDC): Typo in comment fixed.
925    
926    2004-12-09  Martin Schulze  <[email protected]>
927    
928            * Thuban/Model/classgen.py: Added missing character encoding
929    
930            * Extensions/wms/properties.py (OpenWMSProperties): removed
931    
932            * Extensions/wms/parser.py (WMSCapabilitiesParser.error): Dropped
933            support for get_srs_discrepancies() since there are no
934            discrepancies anymore (was a thinko)
935    
936            * Extensions/wms/layer.py (WMSLayer.GetMapImg): Improved graphic
937            format priority now that more formats are supported globally by
938            the render engine.
939    
940    2004-12-08  Silke Reimer <[email protected]>
941            * Extensions/ogr/ogrshapes.py: Substituted ogr-method CloseRings
942            because it is not available in all versions of ogr
943    
944    2004-12-08  Bernhard Reiter <[email protected]>
945            * Extensions/ogr/__init__.py: Added empty __init__.py to heal
946            global tests until a real one is commited.
947    
948    2004-12-07 Nina H�ffmeyer <[email protected]>
949    
950            * /Extensions/ogr/: Adding a new extension to read shapefiles with
951            ogr. It is planned to add other vector formats.
952    
953            * /test/runtests.py: Adding tests from /Extensions/ogr/test/.
954    
955    2004-12-07  Jan-Oliver Wagner <[email protected]>
956    
957            * /Extensions/svgexport/test/test_svgmapwriter.py: Reverting
958            part of a (non-)fix to renable that the tests are always
959            executed.
960    
961    2004-12-07  Bernhard Reiter <[email protected]>
962    
963            * Extensions/svgexport/test/test_svgmapwriter.py:
964            Added test_drawbezier() to test DrawSpline().
965    
966            * Extensions/svgexport/svgmapwriter.py(DrawSpline):
967            Really implemented bezier drawing.
968    
969            * Extensions/svgexport/__init__.py: Bumped version of svgexport
970            to 0.9.1 because now the legend examples lines styles
971            will be drawing with beziers.
972    
973    2004-12-05  Martin Schulze  <[email protected]>
974    
975            * Thuban/UI/renderer.py (raster_format_map): Added PNG, TIFF and
976            GIF as supported bitmap image formats (helpful for the WMS extension)
977    
978    2004-11-30  Martin Schulze  <[email protected]>
979    
980            * Extensions/wms/test/test_ogclib.py (TestOGCLib.test_compareURLs):
981            Improved the test for the internal compare method
982    
983    2004-11-27  Jan-Oliver Wagner <[email protected]>
984    
985            * Thuban/UI/about.py (About.__init__): Added
986            Norbert Solymosi for hungarian translation and Ole Rahn
987            as contrbutor. Moved Bernhard Reiter from Contributor
988            to Developer.
989    
990    2004-11-27  Bernhard Reiter <[email protected]>
991    
992            * Extensions/svgexport/test/test_svgmapwriter.py:
993            Removed Jan from author list as he did not change enough significant
994            lines yet.
995    
996            * Extensions/svgexport/__init__.py: Added Bernhard as author
997            of the Extension.
998    
999    2004-11-27  Jan-Oliver Wagner <[email protected]>
1000    
1001            * po/hu.po: New. Hungarian translation. Contributed
1002            by Norbert Solymosi.
1003    
1004    2004-11-26  Bernhard Herzog  <[email protected]>
1005    
1006            * Extensions/svgexport/test/test_svgmapwriter.py
1007            (Testobjectexport.test_transparent_polygon): Commented out some
1008            debug prints
1009    
1010    2004-11-24  Jan-Oliver Wagner <[email protected]>
1011    
1012            Fix broken tests for svg extension and added svg legend
1013            to Experimental menu.
1014    
1015            * Extensions/svgexport/test/test_svgmapwriter.py: Fix to have
1016            the test run correctly even if the extension is a package.
1017            Also removed the "import Thuban" which makes no sense.
1018    
1019            * Extensions/svgexport/__init__.py: Fix to have the extensions'
1020            test module also be executed from the global test routine.
1021            This is done by looking for the absense of the DISPLAY variable.
1022    
1023            * Extensions/svgexport/maplegend.py: Moved the menu entry from Extensions
1024            to Experimental menu since this module has yet not reached a stable
1025            status (ie. 1.0).
1026    
1027    2004-11-22  Bernhard Reiter <[email protected]>
1028    
1029            * Extensions/svgexport/svgmapwriter.py:
1030            Added verbose variable and some logging depending on it.
1031            (class VirtualDC(XMLWriter)): Minor improvement in the polygon loop,
1032            because counting i is not necessary.
1033            (class Pen, class Brush): Added simple __str__ methods.
1034            (SVGRenderer.draw_polygone_shape): Fix #2698 (transparent polygons are
1035            not exported to svg file) Note: holes still unhandled.
1036    
1037            * Extensions/svgexport/test/test_svgmapwriter.py:
1038                    Made a baseclass TestWithDC for test needed a DC.
1039                    Added tests for bug #2698 (transparent polygons are not
1040                    exported to svg file):
1041                    Testobjectexport.test_transparent_polygon()
1042    
1043            * Thuban/Model/base.py (UnsetModified):
1044            Fixed some typos in docstring.
1045    
1046            * Thuban/UI/baserenderer.py (BaseRenderer.draw_polygon_shape()):
1047            Added hints on the used algorithm for handling holes.
1048    
1049    2004-11-20  Jan-Oliver Wagner <[email protected]>
1050    
1051            Some face lifting for the examples.
1052    
1053            * Examples/__init__.py: Make this directory a package.
1054    
1055            * Examples/simple_extensions/__init__.py: Make this directory a package.
1056    
1057            * Examples/simple_extensions/hello_world.py: Moved entry from Extensions
1058            menu to Examples menu.
1059    
1060            * Examples/simple_extensions/simple_command.py: Some more comments,
1061            minor changes.
1062    
1063            * Examples/simple_extensions/simple_tool.py: Minor changes.
1064    
1065    2004-11-20  Jan-Oliver Wagner <[email protected]>
1066    
1067            Changed way of extension registry for wms and added extension
1068            registry for umn_mapserver extension.
1069    
1070            * Extensions/wms/__init__.py: Added registry entry and the importing
1071            of the actual wms module. Included a test for the required PyOGCLib.
1072    
1073            * Extensions/wms/wms.py: Removed registry entry (moved to __init__.py).
1074    
1075            * Extensions/umn_mapserver/__init__.py: Added registry entry and the
1076            importing of the actual umn mapserver management modules.
1077            Included a test for the required Python MapScript.
1078    
1079    2004-11-20  Jan-Oliver Wagner <[email protected]>
1080    
1081            Changed way of extension registry for importAPR, bboxdump
1082            and added extension registry for svgexport.extension registry for
1083            svgexport.
1084    
1085            * Extensions/importAPR/__init__.py: Added registry entry and the importing
1086            of the actual importAPR module.
1087    
1088            * Extensions/importAPR/importAPR.py: Removed registry entry (moved to
1089            __init__.py).
1090    
1091            * Extensions/bboxdump/__init__.py: Added registry entry and the importing
1092            ï¿½ï¿½ï¿½ï¿½of the actual bboxdump module.
1093    
1094            * Extensions/bboxdump/bboxdump.py: Removed registry entry (moved to
1095            ï¿½ï¿½ï¿½ï¿½__init__.py).
1096    
1097            * Extensions/svgexport/__init__.py: Added registry entry and the importing
1098            of the svgsaver module.
1099    
1100            * Extensions/svgexport/svgsaver.py: Moved the menu entry from Extensions
1101            to Experimental menu since this module has yet not reached a stable
1102            status (ie. 1.0).
1103    
1104    2004-11-18  Jan-Oliver Wagner <[email protected]>
1105    
1106            Now the hit test considers the size of point symbols.
1107    
1108            * Thuban/UI/viewport.py (ViewPort._hit_point): Added optional parameter
1109            'size' defaulting to the previously fixed value 5.
1110            Extended doc-string.
1111            (Viewport._find_shape_in_layer): Resolved FIXME regarding flexibility
1112            for symbols.
1113            Now the size of the largest point symbol is determined to find out
1114            about whether the point has been hit.
1115            This fixes the problem that only clicks inside a fixed distance of
1116            5 where found.
1117    
1118    2004-11-17  Jan-Oliver Wagner <[email protected]>
1119    
1120            Another open issue fixed regarding sizeable symbols: correct rendering of
1121            selected symbols.
1122    
1123            * Thuban/UI/renderer.py (ScreenRenderer.draw_selection_incrementally):
1124            Added consideration of the specific size of point symbols.
1125            The property for each point symbol is retrieved and the size applied
1126            for the rendering method.
1127            Added doc-string.
1128    
1129    2004-11-16  Jan-Oliver Wagner <[email protected]>
1130    
1131            Changed way of Extension Registry for gns2shp and profiling.
1132    
1133            * Extensions/gns2shp/gns2shp.py: Removed registry entry (moved to
1134            __init__.py).
1135    
1136            * Extensions/gns2shp/__init__.py: Added registry entry and the importing
1137            of the actual gns2shp module.
1138    
1139            * Extensions/profiling/profiling.py: Removed registry entry (moved to
1140            __init__.py).
1141    
1142            * Extensions/profiling/__init__.py: Added registry entry and the importing
1143            of the actual profiling module.
1144    
1145    2004-10-28  Bernhard Reiter <[email protected]>
1146    
1147            * Extensions/svgexport/: Minor improvements to doc strings.
1148    
1149    2004-10-07  Jan-Oliver Wagner <[email protected]>
1150    
1151            Further elements for sizable point objects now
1152            making this feature usable though not yet complete.
1153    
1154            * Thuban/Model/save.py (SessionSaver.write_classification): Write
1155            attribute 'size' for cldata when the shape layer is of point type.
1156            This also now make the test_load.py tests happy.
1157    
1158            * Thuban/Model/classgen.py (CustomRamp.GetProperties): Added size
1159            gradient.
1160    
1161            * Thuban/UI/classifier.py (ID_SELPROP_SPINCTRL): Renamed to
1162            ID_SELPROP_SPINCTRL_LINEWIDTH.
1163            (ID_SELPROP_SPINCTRL_LINEWIDTH): New Id replaces ID_SELPROP_SPINCTRL.
1164            (ID_SELPROP_SPINCTRL_SIZE): New Id.
1165            (SelectPropertiesDialog.__init__): Added a second spin control
1166            for the size in case the corresponding layer is of point type.
1167            (SelectPropertiesDialog._OnSpin): Renamed to _OnSpinLineWidth.
1168            (SelectPropertiesDialog._OnSpinLineWidth): New. Former _OnSpin.
1169            (SelectPropertiesDialog._OnSpinSize): New. Set size of property
1170            and refresh preview.
1171    
1172    
1173    
1174    2004-10-04  Martin Schulze  <[email protected]>
1175    
1176            * Extensions/wms/test/test_parser.py
1177            (TestWMSCapabilitiesParser.test_compareLists): Added missing
1178            self-test for compareLists()
1179            (TestWMSCapabilitiesParser.test_compareDicts): Added missing
1180            self-test for compareDicts()
1181            (TestWMSCapabilitiesParser.test_compareLists): Adding more tests
1182            to verify the test routine fails with non-equal arguments
1183            (TestWMSCapabilitiesParser.test_compareDicts): Adding more tests
1184            to verify the test routine fails with non-equal arguments
1185    
1186    2004-10-03  Jan-Oliver Wagner <[email protected]>
1187    
1188            First elements for sizeable point objects.
1189    
1190            * Resources/XML/thuban-1.1.dtd: Added size attribute to cldata.
1191    
1192            * Data/iceland_sample_size.thuban: New. Sample for sized point objects.
1193    
1194            * test/test_load.py (ClassificationTest.TestLayers): Added SetSize in case
1195            of a corresponding argument is given.
1196            (TestSymbolSize): New. Test the size attribute of cldata.
1197    
1198            * Thuban/Model/classification.py: Removed some trailing whitespaces.
1199            (ClassGroupProperties.__init__): Set default size.
1200            (ClassGroupProperties.SetProperties): Set the size.
1201            (ClassGroupProperties.GetSize): New. Return the size.
1202            (ClassGroupProperties.SetSize): New. Set the size.
1203            (ClassGroupProperties__eq__): Compare also size.
1204            (ClassGroupProperties__repr__): Print also size.
1205    
1206            * Thuban/Model/load.py (SessionLoader.start_cldata): Also parse
1207            the size attribute.
1208    
1209            * Thuban/UI/classifier.py (ClassDataPreviewer.Draw): Added doc-string.
1210            Also, now there is a return value that indicates whether the drawing
1211            size exceeded the given rect extent and if so the new extent.
1212            Finally, point objects are drawn depending on the size. If either
1213            the width or height is exceeded, the new extent is returned.
1214            (ClassRenderer.Draw): Now when calling the previewer drawing function,
1215            evaluate the return value and, if not None, adapt the grid widget size
1216            accordingly and redraw again.
1217    
1218            * Thuban/UI/baserenderer.py (BaseRenderer.draw_shape_layer_incrementally):
1219            If the draw function is for points, call it with the size as additional
1220            parameter.
1221            (BaseRenderer.draw_point_shape): Added additional, optional parameter for
1222            the size. Compute the radius using the size.
1223    
1224            * Extensions/importAPR/apr.py (APR_BMkSym.GetThubanProp): Now
1225            that Thuban supports size, apply this correctly.
1226    
1227            * Extensions/importAPR/importAPR.py: Bumped version to 0.1.1.
1228    
1229    2004-10-03  Jan-Oliver Wagner <[email protected]>
1230    
1231            * Doc/manual/thuban-manual-de.xml: Started translation of
1232            Map chapter.
1233    
1234    2004-10-01  Martin Schulze  <[email protected]>
1235    
1236            * Extensions/wms/properties.py (wmsProperties.__init__): Extended
1237            argument for general use through properties-dialog selector
1238            
1239            * Thuban/UI/classifier.py: Register properties dialog classes for
1240            both provided layer classes/types.
1241    
1242            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): The
1243            map can be retrieved through the parent which is passed to the
1244            constructor anyway and doesn't require an argument of its own,
1245            required for the unification of arguments for general use through
1246            properties-dialog selector.
1247            (MainWindow.OpenOrRaiseDialog): Move the logic for checking
1248            whether a dialog is already opened (and raising it to the users
1249            attention) and creating a new dialog into a function of its own
1250            (MainWindow.OpenLayerProperties): Use the new OpenOrRaiseDialog()
1251            method
1252            (MainWindow.OpenLayerProperties): Utilise the new ClassMapper for
1253            global registration of properties dialog classes (which are indeed
1254            layer-specific).
1255    
1256            * Thuban/UI/classifier.py (Classifier.__init__): Unify arguments
1257            for general use through properties-dialog selector, the map can be
1258            retrieved through the parent and doesn't require an argument of
1259            its own.
1260    
1261            * Extensions/wms/wms.py: Register the properties dialog class for
1262            the provided WMS layer
1263    
1264    2004-09-28  Jan-Oliver Wagner <[email protected]>
1265    
1266            New feature: Registry for Extensions.
1267    
1268            * Thuban/UI/extensionregistry.py: This module defines a registry for
1269            Extensions.
1270    
1271            * Thuban/UI/about.py (About.__init__): Added description
1272            of the registered extensions with all of the information.
1273    
1274            * Thuban/Model/extension.py (Extension): Improved doc-string.
1275    
1276            * Extensions/gns2shp/gns2shp.py, Extensions/importAPR/importAPR.py,
1277            Extensions/bboxdump/bboxdump.py, Extensions/profiling/profiling.py,
1278            Extensions/wms/wms.py: Added registration of the extension.
1279    
1280    2004-09-27  Bernhard Reiter <[email protected]>
1281    
1282            More fixes to svgexport to make used ids unique and
1283            conforming to XML's Name production.
1284    
1285            * Extensions/svgexport/test/test_svgmapwriter.py: Added new tests
1286            test_xml_id_constraints(), test_make_ide_nosetbaseid() and
1287            test_make_id_nonintegersetid().  Switched SetID and SetBaseID.
1288            Added Bernhard R. as author.
1289            * Extensions/svgexport/svgmapwriter.py (make_id): Using "_" as
1290            concatenation char now (makes test_make_ide_nosetbaseid() valid).
1291            Also transform second id part with "%d" and catch the TypeError
1292            to raise SVGMapWriterError (making test_make_id_nonintegersetid() ok).
1293            Corrected typo inBernhard's author line.
1294            (SetBaseID): Return the transformed base id. Transform characters
1295            which are not alnum() or in ".-_" to binascii.b2a_hex(). Added
1296            import binascii. If to be set string starts with "xml" or so, add "t".
1297            (draw_shape_layer_incrementally): use the returned value of SetBaseID
1298            for used_baseids checks.
1299    
1300    2004-09-25  Bernhard Herzog  <[email protected]>
1301    
1302            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
1303            Remove a debug print and some tab characters.
1304    
1305    2004-09-25  Bernhard Reiter <[email protected]>
1306    
1307            * Extensions/svgexport/svgmapwriter.py: Added Bernhard R. as Author.
1308            (SetBaseID, SetID, make_id): Improved docstring comments to explain
1309            the interaction of the three functions and the XML id contrains.
1310    
1311    
1312    2004-09-23  Jan-Oliver Wagner <[email protected]>
1313    
1314            * Doc/ThubanModel.xmi: New. UML file for Thuban Model
1315            Module.
1316    
1317            * Doc/README: Added info on ThubanModel.xmi.
1318    
1319    2004-09-23  Jan-Oliver Wagner <[email protected]>
1320    
1321            * Doc/README: New. Some info about how to generate technical
1322            documentation from the source code.
1323            This text was send to the Thuban developer mailing list on
1324            September 21st 2004 by Bernhard Reiter.
1325    
1326    2004-09-21  Bernhard Reiter <[email protected]>
1327    
1328            Improved the svgexport to only use unique ids. Will issues
1329            an error message dialoge when two layer names are the same.
1330            ShapeIDs are now added with a dash within the svg ids.
1331    
1332            * Extensions/svgexport/svgmapwriter.py (SVGMapWriterError): New.
1333            * Extensions/svgexport/test/test_svgmapwriter.py: Added imports
1334            (TestSVGRenderer): New test class with test_make_in() and
1335            test_check_for_layer_name_clash()
1336            * Extensions/svgexport/svgmapwriter.py (SVGRenderer): Fixed __init__()
1337            and draw_shape_layer_incrementally() to not use a baseid twice,
1338            satisfying test_check_for_layer_name_clash()
1339            (VirtualDC.make_id): Use a dash between baseit and id, satisfies
1340            test_make_in().
1341            * Extensions/svexport/svgsaver.py: Import SVGMapWriterError, wxOK
1342            and wxICON_HAND.
1343            (write_to_svg): Put dc and rendering in a try statement and on
1344            catching SVGmapWriterError notify the user and delete the target file.
1345    
1346    2004-09-20  Bernhard Reiter <[email protected]>
1347    
1348            * Model/base.by, Model/layer.py: Fixed typos in docstrings.
1349    
1350    2004-09-03  Jan Sch�ngel  <[email protected]>
1351    
1352            * Extensions/umn_mapserver/mapfile(MF_Class.add_thubanstyle): Fix a
1353            small bug with the line color. Now the line color will now only set
1354            if it is set in Thuban an not Transparent.
1355            
1356            * Extensions/umn_mapserver/mf_export(tblayer_to_map): Fixed a bug with
1357            deleting the layers from mapfile. Now all layers will delete backwards
1358            from the last.
1359    
1360    2004-08-20  Silke Reimer <[email protected]>
1361    
1362            * Thuban/Model/layer.py:
1363            Fixes bug in projection handling: Otherwise very large region might not
1364            have valid values in the layer's projection.
1365    
1366    2004-08-20  Silke Reimer <[email protected]>
1367    
1368            * Thuban/UI/about.py:
1369            small changes to be consistent with coding style.
1370              
1371    2004-08-13  Martin Schulze  <[email protected]>
1372    
1373            * Extensions/wms/test/test_ogclib.py (TestOGCLib.compare_URLs):
1374            Adjusted a comment
1375    
1376    2004-08-11  Silke Reimer <[email protected]>
1377    
1378            * Thuban/UI/about.py: Small changes to encoding related stuff to avoid
1379                    too many and too enhanced imports of locale
1380    
1381    2004-08-10  Silke Reimer <[email protected]>
1382    
1383            * Thuban/UI/about.py: Fixed encoding problem of about dialog: Added
1384                    function unicodeToLocale() to convert special characters to users
1385                    locale encoding
1386    
1387    2004-08-10  Jan-Oliver Wagner <[email protected]>
1388    
1389            * Doc/technotes/coding_guidelines.txt: Added rule 'Method names start with
1390            lower case letter'
1391    
1392    2004-08-09  Jan Sch�ngel  <[email protected]>
1393    
1394            * ChangeLog: Rewrite the last ChangeLog entry to follow
1395            the standard way.
1396    
1397            * Extensions/umn_mapserver/mapfile: Moved the import AnnotationLayer to
1398            the function where it is needed, because it don't works if it stands
1399            at the beginning.
1400            (MF_Layer.__init__): Removed the extra numclassed variable. Now
1401            numclasses from the mapscript will be used.
1402            (MF_Layer.get_index): New. Return the index of the layer in mapfile.
1403            (MF_Layer.set_classes): New. A Classlist will be set to the layer.
1404            (MF_Layer.set_metadata): New. A Metadata mapscript object will set.
1405            (MF_Layer.remove_allclasses): New. All class of the layer will remove.
1406            (MF_Map.create_new_layer): New. A new Layer is created and associated
1407            with the mapscript object.
1408            (MF_Map.set_layerorder): New. The Layer order like in thuban is set in
1409            the mapscript.
1410            (MF_Map.add_thubanlayer): Now a new layerobj is created if no one is
1411            linked to the layer in thuban, else the layerobject linked to the
1412            thubanlayer will be used.
1413            AnnotationLayer will now store the filename of the shapefile.
1414            (MF_Map.remove_layer): If a layer is removed the associated object
1415            must be set new.
1416            
1417            * Extensions/umn_mapserver/mf_export.py(tb_layer_to_map): Add all
1418            layers which are exists in thuban to the mapobj. All removed Layers
1419            will be removed from the mapobj.
1420            Added comments to all functions.
1421            (thuban_to_map): No layer will be removed here.
1422            
1423            * Extensions/umn_mapserver/mf_handle.py
1424            (_has_umn_mapobj_and_selectedlayer): Activating the layer menu. Now
1425            Layersettings for the mapserver kann be edited.
1426    
1427            * Extensions/umn_mapserver/mf_import.py: Now all layers which are
1428            imported, will be linked with the associated MF_Layer.
1429            (import_mapfile): All layers, which are not selected, will be removed.
1430            Disable the "import layer from mapfile" menu option.
1431    
1432            * Extensions/umn_mapserver/sample/iceland.map: Set the status of the
1433            Annotation Layer from DEFAULT to OFF. The DEFAULT setting turns the
1434            layer on permanently.
1435    
1436    2004-08-03  Jan Sch�ngel  <[email protected]>
1437    
1438            * Extensions/umn_mapserver/mapfile.py(MF_Metadata.remove_allmetadata):
1439            New. This function removes all metadata
1440            (MF_Layer.set_group): New. Set the group setting.
1441            (MF_Layer.get_group): New. Get the group setting.
1442            (MF_Map): Removed the extra numlayers variable, used the mapscript
1443            parameter instead.
1444            (MF_Map.get_numlayers): New. This get numlayers.
1445            (MF_Map.remove_all_layers): New. Removes all layers from the mapobj.
1446            (MF_Map.add_thubanlayer): Replaced the exception handling by a check
1447            if the object is an instance. Also added the annotation layer here to
1448            export, but only the layer is created in the mapfile.
1449    
1450            * Extensions/umn_mapserver/mf_export.py(export_mapfile): Removed
1451            the check if a mapobj exist, because its not needed anymore. The
1452            export function is only available if a mapobj exist.
1453            Use the new function to remove all layers.
1454            
1455            * Extensions/umn_mapserver/mf_handle.py(Layer_Dialog): Added a group
1456            option and the metadata button. The layer dialog is temporary disabled.
1457            (Metadata_CustomDataTable): Added some functions to show the grid
1458            correct.
1459    
1460            * Extensions/umn_mapserver/mf_import.py: Moved the code for showing
1461            the number of layer from import_mapfile to this function.
1462            (AnnotationLayer): New. This Class shows the Annotation layer in
1463            thuban. The layer don't do anything. It's only to show the layer
1464            and to save the layer order.
1465            (add_annotationlayer): New. Import an annotation layer to thuban.
1466            (select_layer2import): New. Import only layers to thuban and not
1467            the other settings like projection or scalebar.
1468            (create_new_mapfile): Moved the _has_umn_mapobj function and the
1469            create_new_mapfile functions from mf_handle.py to mf_import.py.
1470            
1471            * Extensions/umn_mapserver/sample/iceland.map: Added the group
1472            parameter to the roads and cultural layers. Also added a new
1473            Annotation Layer for the cultural points.
1474    
1475            * Extensions/umn_mapserver/sample/iceland.html: Added the select
1476            option for the annotation layer.
1477    
1478            * Extensions/umn_mapserver/sample/index.html: Added the start
1479            parameter for the annotation layer.
1480    
1481    2004-08-01  Jan-Oliver Wagner <[email protected]>
1482    
1483            * Doc/manual/thuban-manual-de.xml (Chapter Session Management):
1484            translation completed.
1485    
1486            * Doc/manual/thuban-manual.xml (Chapter Session Management):
1487            Fixed unprecise description for Save Session.
1488    
1489    2004-07-31  Jan-Oliver Wagner <[email protected]>
1490    
1491            Started translation of Users Manual into german.
1492    
1493            * Doc/manual/thuban-manual-de.xml: New. German Users Manual.
1494    
1495            * Doc/manual/Makefile: Added build instructions for german
1496            users manual.
1497    
1498            * Doc/manual/thuban-manual.xml: Minor corrections in Introduction.
1499    
1500    2004-07-28  Jan Sch�ngel  <[email protected]>
1501    
1502            * Extensions/umn_mapserver/mapfile.py(MF_Metadata): Changed all class
1503            functions. Now all metadata will handle by the function and its not
1504            needed to initialize it from outside. Therefor the associated mapobj
1505            will be stored in the Metadata Object. So we can use the special
1506            functions from the associated mapobj to get the Metadata.
1507            Therefor all initialization code for the metadata is removed from the
1508            other classes.
1509            (MF_Layer): Added a function to get the metadata object.
1510            (MF_Map): Added a function to set the mappath, the path where
1511            the mapfile ist stored.
1512    
1513            * Extensions/umn_mapserver/mf_export.py(thuban_to_map): Changed the code
1514            to set the extent in the mapfile. Now the code is set by the displayed
1515            data in the Thuban-view.
1516            (export_mapfile): The shapepath is now set empty, until relative
1517            pathnames are supported.
1518    
1519            * Extension/umn_mapserver/mf_handle.py: Added a dialog to handle
1520            metadata. Yet only mapfile metadata are supported. Layer and class
1521            supported are not implemented.
1522            Added a dialog to handle layer informations. The dialog only shows the
1523            selected layer at the moment.
1524    
1525            * Extensions/umn_mapserver/mf_import.py(import_mapfile): Changed the
1526            code for setting the extent in thuban. Now the extent is set to the
1527            given extent from the mapfile.
1528            Fixed a logical mistake. Now the extent is set when realy a layer is
1529            loaded, and not if one is selected to load.
1530    
1531            * Extensions/umn_mapserver/sample/iceland.html: Added code to zoom and
1532            move the shown map in the browser.
1533    
1534            * Extensions/umn_mapserver/sample/iceland.map: Added a new metadata
1535            line to the mapobj and added metadata to the political layer.
1536    
1537            * Extensions/umn_mapserver/test/test_mapserver.py: Changed the test
1538            for Metadata.
1539    
1540    2004-07-26  Martin Schulze  <[email protected]>
1541    
1542            * Thuban/Lib/classmapper.py (ClassMapper.has): Added the new
1543            ClassMapper
1544    
1545            * test/test_classmapper.py (TestMapping.test_mapper): Added a Test
1546            case for the new ClassMapper
1547    
1548    
1549    2004-07-22  Bernhard Herzog  <[email protected]>
1550    
1551            * Thuban/UI/viewport.py (ViewPort.VisibleExtent): New.  Return the
1552            visible extent of the map in projected coordinates
1553    
1554            * test/test_viewport.py (SimpleViewPortTest.test_default_size)
1555            (SimpleViewPortTest.test_init_with_size): Add some VisibleExtent()
1556            tests.
1557            (SimpleViewPortTest.test_visible_extent): New. The real test for
1558            VisibleExtent()
1559    
1560    2004-07-22  Bernhard Herzog  <[email protected]>
1561    
1562            * test/test_viewport.py: Use support.run_tests as the main
1563            function when running asa script.
1564    
1565    2004-07-22  Jan Sch�ngel <[email protected]>
1566    
1567            * Extensions/umn_mapserver/mf_export.py: Added "import os"
1568            Removed the old "import Thuban.UI.mainwindow" code.
1569            (tbextent_to_map): Removed the extra function and at the code direct
1570            to "thuban_to_map" function.
1571            (write_creatorcomment): Added. Now a short comment is added to the
1572            beginning of an generated mapfile.
1573            (export_mapfile): Now the Path and filename are saved in to variables,
1574            and not together in one variable. This is needed for the new
1575            write_creatorcomment function.
1576                    
1577            * Extensions/umn_mapserver/mf_import.py (import_mapfile): Added the
1578            import module "re". Also added Range and the ClassGroupRange import
1579            from Thuban. Both are needed for the new range expression import.
1580            (create_rangeexpression): Added. Creates a Range Expression in Thuban
1581            style from a given mapfile expression.
1582            (added_rasterlayer): Make some small code changes. The shapepath is
1583            now stored in an extra variable and the clazz_name is set empty if no
1584            class name set in the mapfile.
1585            Changed the Error message for Range Expressions, becaus the new
1586            function create a error string which will be shown in the dialog.
1587    
1588            * Extensions/umn_mapserver/test/test_mapserver.py: Added a test for the
1589            range expression import.
1590    
1591    2004-07-21  Jan-Oliver Wagner <[email protected]>
1592    
1593            * Extensions/umn_mapserver/README: Added hint that
1594            installation as root can be avoided. Removed all tabs.
1595    
1596    2004-07-16  Bernhard Herzog  <[email protected]>
1597    
1598            * test/test_viewport.py
1599            (ViewPortTest.test_changing_map_projection): Check that changing
1600            the projection of an empty map shown in a viewport doesn't lead to
1601            exceptions in the viewport's handler for the
1602            MAP_PROJECTION_CHANGED messages
1603    
1604            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Only
1605            try to keep the same region visible when the map actually contains
1606            something
1607    
1608    2004-07-15  Jan Sch�ngel <[email protected]>
1609    
1610            * Extensions/umn_mapserver/mapfile.py: Added a function to get the
1611            mappath directly from the mapobj. Is needed because of the changes
1612            in mf_import.py.
1613            (MF_Layer.add_thubanclass): Added a new comment.
1614            (MF_Map.set_extent): Fixed a bug with exporting empty mapobj. If the
1615            mapobj is empty there is no extent get from thuban an so no one can
1616            set to th mapobj.
1617            
1618            * Extensions/umn_mapserver/mf_import.py (import_mapfile): Updated
1619            the discription.
1620            Split the funktion in to three smaller ones. The new functions are
1621            add_rasterlayer, add_polygonlayer and select_layer2import.
1622            Removed the mapfilepath and filepath initialisation, because its know
1623            include in the new functions.
1624            Now nothing will be imported if cancel is pressed in the
1625            layer choice dialog.
1626    
1627    2004-07-14  Jan Sch�ngel <[email protected]>
1628    
1629            * Extensions/umn_mapserver/mapfile.py: Added ClassGroupDefault to
1630            import.
1631            (MF_Symbolset): Removed the extra variable for numsymbols.
1632            (MF_Class.__init__): Added a comment to the exception clause.
1633            Removed the extent init, because it was not needed anymore.
1634            (MF_Layer.add_thubanclass): Added the code to set the class name to
1635            the expression value from thuban if no label is defined.
1636            Added the code to export Range expressions from thuban to the mapfile.
1637            (MF_Map.set_extent): Removed the exception and replace it by some if
1638            code. If the size of a map is not defined the size will be set to 1,1.
1639            This is necessary because if the extent is set, mapscript checks if
1640            the size is greater than zero.
1641            (MF_Web): Added the get and set function for the template.
1642    
1643            * Extensions/umn_mapserver/mf_export.py: Added the function to check
1644            if a mapobject exists and used it to set the status of the menu items.
1645            If no mapfile exists the settings could not be edditied.
1646            Define after which menuitem the exportitem will include.
1647            
1648            * Extensions/umn_mapserver/mf_handle.py: Removed the import
1649            Thuban.UI.mainwindow clause, because it is not needed.
1650            Added the command Refresh() to all "OnChangeColor()" functions,
1651            because the color preview window was not updated on a color change.
1652            Added the function to check if a mapobject exists and used it to set the
1653            status of the menu items. If no mapobject exists the settings could not
1654            be edditied.
1655            (Map_Dialog): Moved the imagetype selector from the
1656            Outputformat_Dialog to Map_Dialog and removed Outputformat_Dialog.
1657            (Web_Dialog): Removed the name label and added the template textbox.
1658    
1659            * Extensions/umn_mapserver/mf_import.py (import_mapfile): Replace
1660            the exception handling on loading the layers by an if statement. It
1661            is not necessary to us the exception there.
1662            The Filepath creation now use os.path.join to build the path.
1663    
1664            * Extensions/umn_mapserver/test/test_mapserver.py: Moved the testMap
1665            definition from global to the setUp function. Now the testMap will
1666            initialize new on each test.
1667    
1668            * Extensions/umn_mapserver/sample/iceland.map: Include three new
1669            classes in the Line Layer, to test logical Expressions.
1670            Set the status of the class "Point9" in the Point Layer to off
1671            
1672    2004-07-13  Bernhard Herzog  <[email protected]>
1673    
1674            * Thuban/UI/baserenderer.py
1675            (BaseRenderer.render_map_incrementally): Fix a logic bug in the
1676            optimization that tries not to draw layers under a raster layer.
1677            The bug was harmless.  All it effectively did was to produce The a
1678            strange messages about not being able to draw Layer instances for
1679            all vector layers below a raster layer which would be invisible
1680            anyway because the raster layer currently always covers the entire
1681            window
1682    
1683    2004-07-08  Jan Sch�ngel <[email protected]>
1684    
1685            * Extensions/umn_mapserver/mapfile.py: Added code to generade and get
1686            a list of supported outputformats. This formats are not alle supported
1687            because there is no possibility to get the outputformat without the
1688            name known. Make some formal changes to the code.
1689            (MF_Map.set_name()): Fixed a bug if the name is None.
1690    
1691            * Extensions/umn_mapserver/mf_handle.py: Removed the image_type import
1692            statement, because its not needed anymore. The Outputformat is now
1693            given as string from the object. Make some formal changes to the code.
1694    
1695            * Extensions/umn_mapserver/test/test_mapserver.py: Added new test for
1696            most of the new setting which were added during the last changes.
1697            Removed the MF_Size Test.
1698            
1699            * Extensions/umn_mapserver/test/test.map: Added a new class to the
1700            cultural Layer to test expressions and the the status of that layer
1701            from on to default.
1702            Changed the data path the the correct Thuban Data
1703            Added the Outputformat Object and Symbol Object
1704            
1705    2004-07-07  Jan Sch�ngel <[email protected]>
1706    
1707            * Extensions/umn_mapserver/mapfile.py: Added some new
1708            settings to edit (outputformat, label, imagetype)
1709    
1710            * Extensions/umn_mapserver/mf_handle.py: Added some setting to
1711            the Label Dialog and add the OutputDialog.
1712            Make some changes to the code order.
1713    
1714    2004-07-06  Jan Sch�ngel <[email protected]>
1715    
1716            * Extensions/umn_mapserver/mapfile.py: Added the symbolObj, pointObj
1717            and line Obj and add the scalebar_status_type, scalebar_style_type and
1718            scalebar_position_type.
1719            Added the symbol- and symbolsetObject (MF_Symbol,MF_Symbolset). The
1720            are only used to create a Symbol like the circle in Thuban.
1721            Added the scalebarObject (MF_Scalebar)
1722            (MF_Class): Added set_status and get_status.
1723            (MF_Layer.add_thubanclass): Added code to set the class status
1724            (MF_Map): Added code to handle the symbols and scalebar
1725            (MF_Label): Added the set_partials and get_partials functions
1726            
1727            * Extensions/umn_mapserver/mf_export.py: Added MF_Symbol to import
1728            from mapfile. Added a function to create a circle object like the one
1729            from thuban if no one exists.
1730            
1731            * Extensions/umn_mapserver/mf_handle.py: All colors are now set when
1732            press ok in the assosiated dialog and not at the end of the
1733            colordialog.
1734            Added the Dialog for the Scalebar.
1735            (Label_Dialog): Added the offset option
1736    
1737            * Extensions/umn_mapserver/mf_import.py: Added code to import the
1738            status of the Classes.
1739            Fixed a bug with the projection. Now the to_meter parameter will be
1740            added to the Projection only if it doesn't exists.
1741    
1742    2004-07-01  Jan Sch�ngel <[email protected]>
1743    
1744            Added the functionality to handle the content thuban is not
1745            able to handle directly.
1746    
1747            * Extensions/umn_mapserver/mf_handle.py: New. This module extents
1748            Thuban with the possibility to edit the mapfile content.        
1749            
1750            * Extensions/umn_mapserver/mf_import.py: Added the possibility
1751            to import mapfiles without any layer selected. So it is possible
1752            to edit the other settings in a mapfile.
1753            (import_mapfile): Added code to use the editing functions.
1754            Added the possibility to import the projection to a layer if one
1755            is defined.
1756            Status settings (On,Off) will now set in thuban (visible, invisible).
1757            fixed a bug with with classnames. If no classname is set in mapfile
1758            the value in Thuban will set to the expression.
1759            
1760            * Extensions/umn_mapserver/mf_export.py(export_mapfile): Added the
1761            possibility to save a new mapfile or use the old one which is
1762            imported or new created.
1763            Added code to use the editing functions.
1764            Remove some not needed import statements
1765    
1766            * Extensions/umn_mapserver/mapfile.py: Added new types which are
1767            need for the editing functions.
1768            Added needed set-functions for the editing functions.
1769            Added the possibility to export rasterimages.
1770            Added new classes (MF_Web, MF_Label, MF_Legend, MF_Symbol,
1771            MF_SymbolSet). MF_Symbol and MF_SymbolSet are not needed at the
1772            moment.
1773            (MF_Class.set_thubanstyle): Now point layers will set to a default
1774            symbol to show a circle in mapserver and not only a 1px dot.
1775            (MF_Style.__init__): Fixed a bug with the color. Color was not set
1776            correct before.
1777            (MF_Size): Removed, because it is not needed.
1778            
1779            * Extensions/umn_mapserver/README: Added the hints to use the
1780            export and editing functions, too.
1781    
1782            * Extensions/umn_mapserver/sample/iceland.map: Added the
1783            new parameter "UNITS METERS".
1784            Change the political layer to status OFF.
1785    
1786            * Extensions/umn_mapserver/sample/README: Added some
1787            more details to setup the sample in the MapServer.
1788            
1789    2004-06-26  Bernhard Reiter <[email protected]>
1790    
1791            * Extensions/svgexport/test/test_svgmapwriter.py:
1792            Removed class VFile and used standard StringIO instead.
1793    
1794    2004-06-23  Jan Sch�ngel  <[email protected]>
1795    
1796            Add the export function to the umn_mapserver extension.
1797    
1798            * Extension/umn_mapserver/mf_export.py: New. This module extents
1799            Thuban with the possibility to export the Thuban content.
1800    
1801            * Extensions/umn_mapserver/mapfile.py: Expand the classes to use
1802            with the export module. Especially added the possibility to
1803            add thuban objects directly to the map objects.
1804    
1805            * Extensions/umn_mapserver/mf_import.py: Removed the wxCHANGE_DIR,
1806            because of the hint from Bernhard Herzog.
1807            Corrected the handling of absolute pathnames.
1808            Changed the Text of the Menu-Item, now the beginning is upper case.
1809    
1810            * Extensions/umn_mapserver/README: Added the --with-tiff statement.
1811    
1812    2004-06-16  Jan Sch�ngel  <[email protected]>
1813    
1814            Add a sample and make some changes.
1815    
1816            * Extension/umn_mapserver/mf_import.py: Changed the wxPython.wx
1817            import from * to explicit used statements. Changed the
1818            Thuban.UI.mainwindow import phrase, too.
1819            (import_mapfile):Corrected a clerical mistake.
1820            Added wxCHANGE_DIR in OpenFile Dialog.
1821            Added a MultipleChoiceDialog, to select the layers to load from
1822            mapfile into thuban. Thereby the projection is only set if one layer
1823            is selected.
1824            Added the possibility to handle relative pathnames which uses
1825            up-level references.
1826            Removed some doubled code.
1827            Corrected an error with integer values used as label in thuban
1828            ClassGroup.
1829            
1830            * Extensions/umn_mapserver/sample: New.
1831    
1832            * Extensions/umn_mapserver/sample/README: New. Describes the
1833            usage of the sample files.
1834    
1835            * Extensions/umn_mapserver/sample/iceland.map: New. This is
1836            a suitable .map-file for the iceland data.
1837    
1838            * Extensions/umn_mapserver/sample/index.html: New. The template
1839            for the mapfile.  
1840    
1841            * Extensions/umn_mapserver/sample/iceland.html: New. Initialisation
1842            file for the Iceland Application on web.
1843    
1844            * Extensions/umn_mapserver/README: Corrected a inaccuracy and added
1845            some details.
1846    
1847            * Extensions/umn_mapserver/test/test_mapserver
1848            (mapserver_import_Test_generalClasses.test_MF_Color):
1849            Corrected the thubancolor test.
1850    
1851    2004-06-15  Jan Sch�ngel  <[email protected]>
1852    
1853            * Extensions/umn_mapserver/README: New. Install instruction.
1854    
1855    2004-06-14  Bernhard Reiter <[email protected]>
1856    
1857            * libraries/thuban/cpl_mfile.h: Added copyright header.
1858    
1859            * libraries/thuban/ cpl_mfile.cpp, cpl_mfile.h: Added non-protecting
1860            Free Software License so that it is most useful with gdalwarp
1861            and bmpdataset.
1862    
1863    2004-06-14  Bernhard Herzog  <[email protected]>
1864    
1865            * Thuban/UI/multiplechoicedialog.py (__version__): Add missing
1866            import of wxPython.wx itself (as opposed to the contents of
1867            wxPython.wx).  For some reason wxPython.wx is available as
1868            wxPython.wx.wx in at least some 2.4 releases.  Fixes RT#2482
1869            wrt. wxPython 2.4.
1870    
1871    2004-06-10  Jan Sch�ngel  <[email protected]>
1872    
1873            Initial version of new extension "umn_mapserver".  This extension aims
1874            to manage configuration for the UMN MapServer application.  This
1875            inital version just imports the .map-files and displays all, Thuban is
1876            capable of.
1877    
1878            * Extensions/umn_mapserver, Extensions/umn_mapserver/test: New.
1879    
1880            * Extensions/umn_mapserver/test/README: New. Describes how to run the
1881            tests.
1882    
1883            * Extensions/umn_mapserver/test/test.map: New. This is a test
1884            .map-file for automated tests of the umn_mapserver extension of
1885            Thuban.
1886    
1887            * Extensions/umn_mapserver/test/test_mapserver.py: New. Tests for
1888            UMN Mapserver classes.
1889    
1890            * Extensions/umn_mapserver/__init__.py: New. Init to make this
1891            directory a package.
1892    
1893            * Extensions/umn_mapserver/mapfile.py: New. Classes to represent
1894            '.map'-file objects.
1895    
1896            * Extensions/umn_mapserver/mf_import.py: New. This module extends
1897            Thuban with the possibility to handle UMN MapServer mapfiles.
1898    
1899    2004-06-03  Bernhard Herzog  <[email protected]>
1900    
1901            * Thuban/Model/layer.py (Layer.TreeInfo): Convert the bounding box
1902            to a tuple before using it as arguments to the % operator.  This
1903            fixes the formatting issue filed in RT#2239 on 2004-01-13 and
1904            reported today on thuban-list by Jan Sch�ngel
1905    
1906            * test/test_layer.py (TestLayerModification.setUp): Save the
1907            filename as an instance variable so we can refer to it in tests
1908            (TestLayerModification.test_tree_info): Uncomment this method
1909            again and make it work.  This tests for the formatting issue
1910            filed in RT#2239 on 2004-01-13
1911    
1912    2004-05-28  Bernhard Herzog  <[email protected]>
1913    
1914            * Thuban/UI/baserenderer.py: Fix some typos.
1915    
1916    2004-05-18  Jan-Oliver Wagner <[email protected]>
1917    
1918            * Extensions/gns2shp/gns2shp.py (gns2shp): Fixed a bug
1919            by increasing a field size.
1920    
1921    2004-05-17  Bernhard Herzog  <[email protected]>
1922    
1923            Update to newest shapelib and get rid of Thuban specific
1924            extensions, i.e. use the new DBFUpdateHeader instead of our
1925            DBFCommit kludge
1926    
1927            * libraries/shapelib/shpopen.c: Update to version from current
1928            shapelib CVS.
1929    
1930            * libraries/shapelib/shapefil.h: Update to version from current
1931            shapelib CVS.
1932    
1933            * libraries/shapelib/dbfopen.c: Update to version from current
1934            shapelib CVS.
1935            (DBFCommit): Effectively removed since shapelib itself has
1936            DBFUpdateHeader now which is better for what DBFCommit wanted to
1937            achieve.  
1938            We're now using an unmodified version of dbfopen.
1939    
1940            * setup.py (extensions): Add the HAVE_UPDATE_HEADER macro with
1941            value '1' to the Lib.dbflibc extension.  This simply reflects the
1942            shapelib and pyshapelib updates
1943    
1944    2004-05-16  Jan-Oliver Wagner <[email protected]>
1945    
1946            Finished introduction of Menu.FindOrInsertMenu.
1947    
1948            * Extensions/drawshape/drawshape.py: Add the command
1949            to the experimental menu additionally to the toolbar.
1950    
1951            * Extensions/svgexport/svgsaver.py: Use FindOrInsertMenu() instead of
1952            finding menu on its own.
1953    
1954            * Doc/manual/thuban-manual.xml: updated sample file
1955            to use FindOrInsertMenu().
1956    
1957            * Examples/simple_extensions/hello_world.py: Use FindOrInsertMenu()
1958            instead of finding menu on its own.
1959    
1960    2004-05-11  Jan-Oliver Wagner <[email protected]>
1961    
1962            * test/test_menu.py (MenuTest.test): Added testing
1963            of method Menu.FindOrInsertMenu.
1964    
1965    2004-05-10  Jan-Oliver Wagner <[email protected]>
1966    
1967            Introduce and use Menu.FindOrInsertMenu.
1968    
1969            * Thuban/UI/menu.py (Menu.FindOrInsertMenu): New. Find a
1970              given menu or, if not found, insert it.
1971    
1972            * Extensions/bboxdump/bboxdump.py, /Extensions/gns2shp/gns2shp.py,
1973            /Extensions/importAPR/importAPR.py, Extensions/profiling/profiling.py,
1974            /Extensions/wms/wms.py: Use FindOrInsertMenu() instead of finding
1975            menu on its own.
1976    
1977    2004-05-06  Jan-Oliver Wagner <[email protected]>
1978    
1979            Introduce a abstract ColorDialog class and remove
1980            and outdated file.
1981    
1982            * Thuban/UI/proj4dialog.py: Removed. It is has been
1983            replaced by projdialog for quite a while and is not used
1984            anymore.
1985    
1986            * Thuban/UI/colordialog.py: New. Abstraction for color selection
1987            dialog(s).
1988    
1989            * Thuban/UI/classifier.py (SelectPropertiesDialog.__GetColor):
1990            Now calls the abstract ColorDialog instead of wxColourDialog.
1991            This also removed the dependency to Color class conversion
1992            from this function.
1993    
1994    2004-05-04  Frank Koormann  <[email protected]>
1995    
1996            * Extensions/bboxdump/__init__.py: Fixed string left over from
1997            copying.
1998    
1999            * Extensions/bboxdump/bboxdump.py (bboxdump):
2000            Use layer.ShapeStore().AllShapes() to loop over shapes instead of
2001            xrange(layer.NumShapes()). Compile the bboxmessage from a list
2002            of formatted outputs (string.join) instead of appending to the
2003            message. Two progress bar dialogs to report progress on the sometimes
2004            lenghty processing.
2005    
2006    2004-04-22  Frank Koormann  <[email protected]>
2007    
2008            New Extension to dump bounding boxes of all shapes of the selected
2009            layer. An optional column can be specified to group the objects,
2010            in this case the bounding box is a union of the separate boxes.
2011            Dump can be displayed in a ScrolledMessageDialog or written to file.
2012            The Extension is simply a combination of available and well tested
2013            Thuban functionality.
2014    
2015            * Extensions/bboxdump/__init__.py: New: Init to make this
2016            directory a package.
2017    
2018            * Extensions/bboxdump/bboxdump.py: New: Dump bounding boxes of
2019            all shapes of the selected layer.
2020    
2021    2004-04-22  Jan-Oliver Wagner <[email protected]>
2022    
2023            * Thuban/UI/classgen.py (GenUniquePanel.__init__): Fixed two
2024            strings to be i18n now.
2025    
2026    2004-04-18  Jan-Oliver Wagner <[email protected]>
2027    
2028            Changing popup menu of legend from direct building
2029            to using the Menu construction as used for the mainwindow.
2030    
2031            * Thuban/UI/mainwindow.py: New method commands: layer_to_top,
2032            layer_to_bottom, layer_visibility
2033            (MainWindow.LayerToTop): New. Put current layer to the top.
2034            (MainWindow.LayerToBottom): New. Put current layer to bottom.
2035            (MainWindow.HideLayer, MainWindow.ShowLayer, _has_visible_map):
2036            Replace 1,0 by True, False.
2037            (MainWindow.ToggleLayerVisibility): New. Toggle visibility of
2038            current layer.
2039            (MainWindow.LayerShowTable): Removed raising of dialog.
2040            (_has_selected_layer_visible): New. Support function.
2041    
2042            * Thuban/UI/legend.py: ID_POP_xxx: removed.
2043            (LegendPanel.__init__): Removed EVT_MENU bindings.
2044            (LegendTree._OnRightClick): Replace direct creation of
2045            menu via wx Classes by applying the menu definition
2046            as of Menu class of menu.py.
2047            
2048    2004-04-16  Jan-Oliver Wagner <[email protected]>
2049    
2050            * Thuban/UI/exceptiondialog.py (ExceptionDialog.dialog_layout): Improved
2051        button string to stronger clearify that Thuban will be closed when hitting
2052            the button.
2053    
2054            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Added docstring.
2055            Now for layers without a ShapeStore a corresponding message is given
2056            to the user, that this layer has no table to show.
2057    
2058    2004-04-15  Martin Schulze  <[email protected]>
2059    
2060            * Extensions/wms/layer.py (WMSLayer.setWMSFormat): Need to
2061            recalculate the format for the internal render engine as well.
2062    
2063            * Extensions/wms/properties.py (wmsProperties): First start for a
2064            properties dialog.  It's functional for a first selection of
2065            layers, but still has some weired wxWidgets/GTK problems but
2066            beautification can be done later.
2067    
2068            * Extensions/wms/layer.py: Added more documentation
2069            (WMSLayer.getFormats): New: Return list of supported image formats
2070            by the WMS server
2071            (WMSLayer.getLayers): New: Return the list of layer names
2072            supported by the WMS server
2073            (WMSLayer.getLayerTitle): New: Return the title of the named layer
2074            (WMSLayer.getWMSFormat): New: Return the image format that is used
2075            for WMS GetMap requests
2076            (WMSLayer.setWMSFormat): New: Set the image format that is used
2077            for WMS GetMap requests
2078            (WMSLayer.__init__): Move away from using only one layer to using
2079            a list of layers (unsorted at the moment, though).
2080            (WMSLayer.getVisibleLayers): New: Return the list of names for all
2081            visible layers
2082            (WMSLayer.setVisibleLayers): New: Set the list of names for all
2083            visible layers
2084    
2085            * Extensions/wms/wms.py: Moved the WMS layer into layer.py in
2086            order to establish a clean structure.
2087    
2088            * Extensions/wms/layer.py: Moved the WMS layer into a file on its
2089            own in order to establish a clean structure.
2090    
2091    2004-04-13  Martin Schulze  <[email protected]>
2092    
2093            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Added
2094            support for oldstyle (WMS 1.0 apparently) image format
2095            specification.
2096    
2097            * Extensions/wms/wms.py (WMSLayer.calcFormat): Reduce the list of
2098            supported graphic formats back to JPEG and BMP, PNG and others are
2099            too *cough* experimental...  Sorry, I meant to filter this out
2100            before I committed this part.  This should make the WMS extension
2101            run from CVS again.
2102            (wms_dialog): Reset an empty URL to None so that the subsequent
2103            program can depend on this, since the dialog will indeed return an
2104            empty URL, causing another declaration of love by Python.
2105    
2106            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerBBox):
2107            Whenever a native BoundingBox request cannot be fulfilled, check
2108            whether the requested SRS is EPSG:3426, in which case return the
2109            LatLonBoundingBox values.
2110    
2111            * Extensions/wms/test/test_parser.py
2112            (TestWMSCapabilitiesParser.test_LayerSRS): Added a test for
2113            ignoring AUTO:* SRS.
2114            (TestWMSCapabilitiesParser.test_LatLonBoundingBoxes_as_bboxes):
2115            Added another test method to test whether the LatLonBoundingBox
2116            values will be returned if BoundingBox values are requested with
2117            SRS set to EPSG:3426.
2118    
2119            * Extensions/wms/parser.py (WMSCapabilitiesParser.peekLayers):
2120            Added rudimentary support for non-EPSG SRS, i.e. ignore them for
2121            the moment by placing them into a variable which is currently
2122            unused.  Also test whether the EPSG SRS is numerical as it should
2123            be and add an error message if it is not.
2124    
2125            * Extensions/wms/test/sample.xml: Added AUTO:* SRS since they
2126            appear in the real world as well.  Since we cannot handle them yet
2127            (OGCLib can't either), we will ignore them for the moment.
2128    
2129            * Extensions/wms/parser.py: Use a variable for denoting the sample
2130            filename
2131            (WMSCapabilitiesParser.peekLayers): Added support for error
2132            messages during grok().  They will be aggregated in an array and
2133            may be displayed later.  We may have to add a classification
2134            "Warning" and "Error" to this.  That requires more experience,
2135            though, since not every error may be lethal.
2136    
2137            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Raise the
2138            ShowTable() dialog/frame when the user attempts to display it
2139            while it has been opened before already and not closed again.
2140    
2141    2004-04-11  Martin Schulze  <[email protected]>
2142    
2143            * Extensions/wms/infodialog.py: Adjusted the class documentation
2144    
2145            * Extensions/wms/wms.py (WMSLayer.__init__, WMSLayer.GetMapImg):
2146            Switch to using Thuban{Begin,End}BusyCursor instead of the pure
2147            wxWidgets variants.
2148            (WMSLayer.__init__): The epsg_id variable is named top_srs now.
2149    
2150            * Extensions/wms/infodialog.py: Added an information dialog that
2151            will display various information about the WMS current resource,
2152            so that additional information such as the title, the abstract,
2153            fees and access constraints can be displayed for the user if they
2154            are documented in the WMS XML.
2155    
2156    2004-04-10  Martin Schulze  <[email protected]>
2157    
2158            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Adjusted
2159            string handling.  It's "foo".lower() and not lower(foo) without
2160            lower imported from strings or something.
2161    
2162            * Extensions/wms/wms.py (WMSLayer): Incorporated WMSCapabilities
2163            from capabilities.py and parser.py.  Implement priority list for
2164            supported graphics formats, take care of wbmp != bmp.  PNG, TIFF
2165            and GIF are supported here, but not yet by main Thuban.  Hence,
2166            support for them may be removed later.  Special contribution to
2167            usability: get wxWidgets to change the cursor when we're waiting
2168            for data from the network so the user won't start to worry.  This
2169            causes a redrawing error/warning, though.
2170    
2171            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Unlink
2172            the DOM object.
2173    
2174    2004-04-01  Martin Schulze  <[email protected]>
2175    
2176            * Extensions/wms/capabilities.py: Adjusted documentation
2177            (WMSCapabilities.__init__): Improved documentation, fixed syntax
2178            (WMSCapabilities.saveCapabilities): Only catch IOError when
2179            handling files
2180            (WMSCapabilities.loadCapabilities): Only catch IOError when
2181            handling files
2182            __main__: corrected variable naming
2183            (WMSCapabilities.fetchCapabilities,loadCapabilities): Make this
2184            class a specialisation of WMSCapabilitiesParser as well.  Also
2185            execute grok() after loading or fetching capabilities, if that
2186            went well, so that subsequent calls can already access the data.
2187            (WMSCapabilities.getVersion): Export the used version of the
2188            GetCapabilities request, so we can use it for subsequent calls,
2189            i.e. for GetMap requests.
2190            (WMSCapabilities.fetchCapabilities): Added proper error handling
2191            when the GetCapabilities request failed, so that the surrounding
2192            program can act accordingly.
2193    
2194    2004-03-30  Martin Schulze  <[email protected]>
2195    
2196            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerSRS):
2197            Adjusted the getLayerSRS method to return the list of SRSes
2198            extracted from <SRS> elements instead of <BoundingBox> elements.
2199            Added a bit of documentation as well.
2200            (WMSCapabilitiesParser.checkLayerSRS): Removed integrity test
2201            since it was only implemented due to a misunderstanding.
2202    
2203            * Extensions/wms/test/test_parser.py
2204            (TestWMSCapabilitiesParser.test_LayerSRS): Adjust the tests to
2205            reflect the corrected interpretation of the standard: i.e. a layer
2206            does not have to define a BoundingBox for all SRSes it supports.
2207            Hence the <SRS></SRS> specification is authoritative, not the list
2208            of BoundingBoxes.
2209            (TestWMSCapabilitiesParser.test_BoundingBoxes): Added a new test
2210            to ensure None is returned for a non-existing SRS.
2211            (TestWMSCapabilitiesParser.test_grok): Removed test_grok method
2212            since it is not applicable anymore.  Listing more SRSes in <SRS>
2213            elements is valid according to the specs.
2214    
2215    2004-03-26  Bernhard Reiter <[email protected]>
2216    
2217            * README: Nicer formatting of text. Improved descriptions.
2218            Reflected wxWidgets name change.
2219            
2220            * Thuban/UI/about.py: Extended copyright to 2004 and added
2221            information about the thuban-devel mailinglist.
2222    
2223    2004-03-24  Martin Schulze  <[email protected]>
2224    
2225            * Extensions/wms/capabilities.py: Renamed the class to contain
2226            'WMS', also added a linebreak where required
2227    
2228            * Extensions/wms/parser.py: Finally added the XML parser for the
2229            GetCapabilities response.
2230    
2231            * Extensions/wms/test/sample.xml: Adjusted the sample file so that
2232            <SRS> elements match the <BoundingBox> elements, except for the
2233            layer 'beschriftung'.
2234    
2235            * Extensions/wms/test/test_parser.py: Encode non-ascii strings
2236            since Python uses unicode strings internally, otherwise
2237            comparisons will fail.  Removed tests for getLayerBBoxSRS() since
2238            the SRS will be calculated anyway and this method is obsoleted by
2239            getLayerSRS().  Denote SRS as strings and not as cardinal numbers.
2240            Move loading the sample file into the setUp method.  Added a test
2241            for finding the integrity problem in the sample response.
2242            Improved formatting.
2243    
2244            * Extensions/wms/domutils.py: Added convenience routines for
2245            handling of Document Object Model (DOM) nodes.
2246    
2247            * Extensions/wms/test/test_domutils.py: Added a test for the
2248            domutils module
2249    
2250    2004-03-19  Martin Schulze  <[email protected]>
2251    
2252            * Extensions/wms/test/test_parser.py (TestWMSCapabilitiesParser):
2253            Moved path detection and adding into a module of its own,
2254            adjustpath, which exports thubandir as main Thuban directory.
2255    
2256            * Extensions/wms/test/test_ogclib.py (TestWMSLib): Moved path
2257            detection and adding into a module of its own, adjustpath, which
2258            exports thubandir as main Thuban directory.  Reorganised the
2259            module in order to support the SkipTest feature for Thuban test
2260            cases.
2261    
2262            * Extensions/wms/test/adjustpath.py: Moved path detection and
2263            adding into a module of its own.
2264    
2265    2004-03-18  Martin Schulze  <[email protected]>
2266    
2267            * Extensions/wms/test/test_parser.py: Added another test for
2268            checking whether the WMS XML parser (to be implemented) returns
2269            the information we expect.  This requires a sample WMS WML file
2270            (sample.xml) which has been extracted from the frida server and
2271            "improved" manually.
2272    
2273            * Extensions/wms/test/test_ogclib.py: Added legacy code to add the
2274            main Thuban directory to the path in order to be able to import
2275            random modules.  Adjusted the PyOGCLib detection to reuse the
2276            information gathered.  Also added a note about the PYTHONPATH
2277            environment variable.
2278    
2279            * Extensions/wms/test/test_ogclib.py: The format specification is
2280            a mime-type, not a graphic format, hence image/jpeg wou ld be the
2281            proper format and not JPEG.  We'll also have to take care of the
2282            encoding of / as %2F.
2283    
2284    2004-03-16  Martin Schulze  <[email protected]>
2285    
2286            * Extensions/wms/test/test_ogclib.py: Added a (hopefully)
2287            comprehensive test for the getMapURL method, built compare URLs
2288            according to the documentation in OGC 01-068r3
2289    
2290            * Extensions/wms/capabilities.py (WMSCapabilities): Added the
2291            class WMSCapabilities to manage capabilites, will incorporate
2292            parsing the capabilities response and provide details for other
2293            classes.
2294    
2295    2004-03-12  Bernhard Herzog  <[email protected]>
2296    
2297            Support views in addition to normal tables in the postgis
2298            shapestore
2299    
2300            * Thuban/Model/postgisdb.py
2301            (PostGISShapeStore._fetch_table_information): Add a fallback for
2302            the case where the table name is not in the geometry_columns
2303            table.  This is usually the case for views.  Also, set
2304            self.shapestore here.
2305            (PostGISShapeStore.ShapeType): No need to query the database all
2306            the time.  The shape type is now determined in
2307            _fetch_table_information
2308    
2309            * test/postgissupport.py (PostgreSQLServer.new_postgis_db)
2310            (PostgreSQLServer.get_static_data_db, PostGISDatabase.__init__):
2311            New parameter to specify views.
2312            (PostGISDatabase.has_data): Also compare the views.  New views
2313            parameter
2314            (PostGISDatabase.initdb): Create the views.
2315            (PostgreSQLServer.get_default_static_data_db): Add the v_landmarks
2316            view
2317    
2318            * test/test_postgis_db.py
2319            (TestPostGISShapestorePointFromViews): New.  Test a
2320            PostGISShapeStore with a view
2321            (TestPostGISShapestorePointOIDAsGIDColumn.setUp): Pass the name of
2322            the geometry_column explicitly to test whether that works
2323    
2324    2004-03-12  Bernhard Herzog  <[email protected]>
2325    
2326            Final step for explicit id/geometry columns: Loading and saving
2327    
2328            * Resources/XML/thuban-1.1.dtd: New.  Derived from thuban-1.0.dtd
2329            with the following changes:
2330            (dbshapesource): Two new attributes id_column and geometry_column
2331    
2332            * Thuban/Model/save.py (SessionSaver.write): Use the new dtd
2333            (SessionSaver.write_session): Use the new namespace
2334            (SessionSaver.write_data_containers): Write the new dbshapesource
2335            parameters
2336    
2337            * Thuban/Model/load.py (SessionLoader.__init__): New namespace for
2338            the new file format version
2339            (SessionLoader.start_dbshapesource): Handle the new db parameters
2340    
2341            * test/test_save.py: Update to the new dtd and namespace
2342            (SaveSessionTest.test_save_postgis): Update the NonConnectionStore
2343            mock object to provide a working IDColumn method.
2344    
2345            * test/test_load_1_0.py: New.  Copy of the test_load.py before
2346            today's changes but with the round-trip tests removed.
2347    
2348            * test/test_load_0_9.py: Update doc-string.
2349    
2350            * test/test_load.py: Update all .thuban files to the new dtd and
2351            namespace.
2352            (TestPostGISLayer.file_contents): Add the new dbshapesource
2353            paramters
2354    
2355    2004-03-11  Bernhard Herzog  <[email protected]>
2356    
2357            Next step for explicit id/geometry columns: User interaction
2358    
2359            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Rework how
2360            the dialog is constructed. Add combo boxes to select id and
2361            geometry column.  Rename some instance variables.
2362            (ChooseDBTableDialog.GetTable): Return id and geometry column
2363            names
2364            (ChooseDBTableDialog.OnTableSelect): New. Event handler for
2365            selections in the table list
2366    
2367            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Use id_column
2368            and geometry_column
2369    
2370            * Thuban/Model/session.py (Session.OpenDBShapeStore): Add the new
2371            parameters for id_column and geometry column of PostGISShapeStore
2372            here as well.
2373    
2374            * Thuban/Model/postgisdb.py (type_map): Add ROWID psycog type.
2375            (_raw_type_map): New. Map raw PostgreSQL type ints to thuban types
2376            (PostGISConnection.GeometryTables): Use a better query to
2377            determine which relations in the database might be usable for
2378            shapestores.  Now supports views as well but is more PostgreSQL
2379            specific
2380            (PostGISConnection.table_columns): New. Somewhat experimental
2381            method to let the db dialogs provide lists of columns to users so
2382            that they can select id and geometry columns.
2383            (PostGISTable.__init__): The default value of the id_column
2384            parameter is now None it still means "gid" effectively, though.
2385            (PostGISTable.IDColumn): New introspection method to return a
2386            column object for the id column
2387            (PostGISShapeStore.GeometryColumn): New introspection method to
2388            return a column object for the geometry column
2389    
2390            * test/test_postgis_db.py
2391            (TestPostGISConnection.test_gis_tables_non_empty):
2392            Removed. Subsumed by the new:
2393            (TestPostGISConnection.test_gis_tables_with_views_and_tables):
2394            New. Tes the GeometryTables and table_columns methods with actual
2395            tables and views.
2396            (PointTests.test_id_column, PointTests.test_geometry_column):
2397            New. tests for the new methods.
2398            (TestPostGISShapestorePoint.setUp)
2399            (TestPostGISShapestorePointSRID.setUp)
2400            (TestPostGISShapestorePointExplicitGIDColumn.setUp): Fill the
2401            instance variables needed by the new tests
2402    
2403    2004-03-11  Bernhard Herzog  <[email protected]>
2404    
2405            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): The row
2406            numbers given to ReadValue are ordinals.
2407    
2408    2004-03-11  Bernhard Herzog  <[email protected]>
2409    
2410            Elimiate the requirement for PostGIS tables to have a column
2411            called "gid".
2412    
2413            * Thuban/Model/postgisdb.py (PostGISTable.__init__): New parameter
2414            id_column to specify which column to use to identify rows.  Also
2415            new instance variables id_column and quoted_id_column
2416            (PostGISTable.RowIdToOrdinal, PostGISTable.RowOrdinalToId)
2417            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue)
2418            (PostGISTable.SimpleQuery): Use the id column name provided to the
2419            constructor instead of "gid"
2420            (PostGISShapeStore.__init__): New parameter id_column analogously
2421            to PostGISTable.__init__.  This parameter is simply passed through
2422            to the base class constructor
2423            (PostGISShapeStore._create_col_from_description): Fix typo in
2424            doc-string
2425            (PostGISShapeStore.Shape, PostGISShapeStore.AllShapes)
2426            (PostGISShapeStore.ShapesInRegion): Use the id column name
2427            provided to the constructor instead of "gid"
2428    
2429            * test/postgissupport.py
2430            (PostgreSQLServer.get_default_static_data_db): New static table
2431            landmarks_point_id with an id column != "gid.  Update the comments
2432            a bit.
2433            (skip_if_addgeometrycolumn_does_not_use_quote_ident): Fix typo in
2434            doc-
2435            (upload_shapefile): New parameter gid_column to use a name other
2436            than "gid" for the column to store the shape ids
2437    
2438            * test/test_postgis_db.py (TableTests): New.  Mixin-class
2439            containing all tests previously in TestPostGISTable.  The actual
2440            tests are the same but the code is a bit more configurable to
2441            allow for different id columns etc.
2442            (TestPostGISTable): Derive from TableTests now for the actual
2443            tests.
2444            (TestPostGISTableExplicitGIDColumn): New. Like TestPostGISTable
2445            except that it the landmarks_point_id table to test the id_column
2446            parameter
2447            (PointTests): Extend the doc-string
2448            (TestPostGISShapestorePointExplicitGIDColumn)
2449            (TestPostGISShapestorePointOIDAsGIDColumn): New classes derived
2450            from PointTests to test the explicit id_column parameter.  One
2451            tests with the name of the column holding the shape ids, the other
2452            uses PostgreSQL's OID column.  For the latter a number of methods
2453            have to be overwritten to make them independent of the actual id
2454            values.
2455    
2456    2004-03-08  Silke Reimer  <[email protected]>
2457    
2458            Update debian directory:
2459    
2460            * debian/changelog: Added new version.
2461            * deiban/rules: Updated management of patches (with cbds)
2462            * debian/control: Added cbds to dependencies
2463            * debian/patches/*: New. Adds better support for patches of thuban in
2464                            debian
2465            * debian/menu: Syntax of menu changed slightly
2466            * debian/setup.py.patch: removed because it has been moved to
2467                            debian/patechs/setup.py.patch
2468            
2469    
2470    2004-02-26  Bernhard Herzog  <[email protected]>
2471    
2472            Create the Doc/technotes directory for text files with information
2473            for developers
2474    
2475            * Doc/technotes/README: New. README for the technotes
2476    
2477            * Doc/technotes/coding_guidelines.txt: New. Coding guidelines for
2478            Thuban
2479    
2480            * Doc/technotes/release_process.txt: New. Used to be
2481            HOWTO-Release.  Now slightly adapted to technote formatting style.
2482    
2483            * HOWTO-Release: Removed.  It's contents are now in
2484            Doc/technotes/release_process.txt
2485    
2486    2004-02-25  Bernhard Herzog  <[email protected]>
2487    
2488            * libraries/thuban/wxproj.cpp (get_wx_version): New.  Return the
2489            version of wxWindows the module was compiled with so we can check
2490            that against the wxPython version.
2491    
2492            * Thuban/version.py (thuban_branch, thuban_release): New variables
2493            controlling which and how Thuban versions are shown.  See the
2494            comments for details.
2495            (verify_versions): Also check that the wx version that wxproj is
2496            compiled against matches that of the wxPython we use at runtime
2497    
2498    2004-02-20  Bernhard Herzog  <[email protected]>
2499    
2500            * Extensions/wms/wms.py (epsg_code_to_projection): Use
2501            get_system_proj_file to read the epsg projections.  The old way
2502            depended on the current directory being the top Thuban directory.
2503    
2504    2004-02-20  Bernhard Herzog  <[email protected]>
2505    
2506            * Extensions/svgexport/test/test_svgmapwriter.py
2507            (TestVirtualDC.test_clippath): Remove a debug print
2508    
2509    2004-02-20  Bernhard Herzog  <[email protected]>
2510    
2511            * Extensions/svgexport/__init__.py: New.  Turn
2512            Extensions/svgexport into a package.
2513    
2514            * Extensions/svgexport/svgmapwriter.py: Reorder the imports and
2515            doc-string a bit.  The doc-string must come first, otherwise it's
2516            not a doc-string.  The __future__ import must be the first thing
2517            after the doc-string.  Use only double quotes in doc-strings.
2518            Single quotes trip up emacs syntax highlighting if the text
2519            contains apostrophes.
2520    
2521    2004-02-20  Bernhard Herzog  <[email protected]>
2522    
2523            * Extensions/svgexport/test/__init__.py,
2524            Extensions/svgexport/test/test_svgmapwriter.py: New. Initial test
2525            suite for svgexport
2526    
2527            * test/runtests.py (find_test_modules): New. Function with the
2528            module finding code from main.
2529            (main): Use find_test_modules to figure out the default test
2530            modules and take modules from Extensions.svgexport.test too.
2531    
2532    2004-02-19  Bernhard Herzog  <[email protected]>
2533    
2534            * Thuban/UI/application.py (ThubanApplication.OnInit): Make sure
2535            the mainwindow has a reference to the map of the initial session.
2536            This fixes a bug introduced with the fix for RT#2245
2537    
2538    2004-02-19  Bernhard Herzog  <[email protected]>
2539    
2540            * Extensions/svgexport/svgsaver.py,
2541            Extensions/svgexport/svgmapwriter.py,
2542            Extensions/svgexport/maplegend.py: Added again.  This time in the
2543            correct place.
2544    
2545    2004-02-17  Bernhard Herzog  <[email protected]>
2546    
2547            Fix for RT#2245
2548    
2549            * Thuban/UI/application.py (ThubanApplication.OnInit): Initialize
2550            instance variables before trying to create any windows.  Creating
2551            windows can start an event loop if e.g. message boxes are popped
2552            up for some reason, and event handlers, especially EVT_UPDATE_UI
2553            may want to access things from the application.
2554            (ThubanApplication.maps_changed): The mainwindow may not have been
2555            created yet, so check whether it has been created before calling
2556            its methods
2557    
2558            * Thuban/UI/view.py (MapCanvas.OnIdle): Only try to redraw if we
2559            have a map
2560    
2561    2004-02-17  Bernhard Herzog  <[email protected]>
2562    
2563            * test/test_svgmapwriter.py, Extensions/svgsaver.py,
2564            Extensions/svgmapwriter.py, Extensions/maplegend.py,
2565            extensions/svgexport/svgsaver.py,
2566            extensions/svgexport/svgmapwriter.py,
2567            extensions/svgexport/maplegend.py: Removed.  These files were in
2568            the wrong places or didn't work at all.
2569    
2570    2004-02-16  Bernhard Herzog  <[email protected]>
2571    
2572            * Thuban/UI/view.py (MapCanvas.Export): Remove accidentally added
2573            line
2574    
2575    2004-02-16  Bernhard Herzog  <[email protected]>
2576    
2577            * Thuban/UI/view.py (MapCanvas.Export): Avoid UnboundLocalError.
2578    
2579    2004-02-15  Markus Rechtien  <[email protected]>
2580            
2581            * Extensions/svgexport/svgmapwriter.py: New. Adds the capability
2582            to write a session to a file in SVG format.
2583            * Extensions/svgexport/svgsaver.py: New. Uses svgmapwriter.py
2584            to write a SVG map of a session.
2585            * Extensions/svgexport/maplegend: New. Writes a basic maplegend
2586            in SVG format for the current session.
2587    
2588    2004-02-13  Bernhard Herzog  <[email protected]>
2589    
2590            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): When the layer
2591            can't be created, return immediately after displaying the error
2592            message.
2593    
2594    2004-02-11  Bernhard Herzog  <[email protected]>
2595    
2596            Handle postgis tables with more than one geometry column.
2597    
2598            * Thuban/Model/postgisdb.py
2599            (PostGISTable._fetch_table_information): Delegate the creation of
2600            column objects to a different method so that we can extend that in
2601            derived classes
2602            (PostGISTable._create_col_from_description): New. Column object
2603            creation part of _fetch_table_information
2604            (PostGISShapeStore._create_col_from_description): New. Extend
2605            inherited method to handle geometry columns
2606            (PostGISShapeStore.__init__): New parameter geometry_column to
2607            specify which geometry column to use.  Optional but mandatory for
2608            tables with more than one geometry column
2609            (PostGISShapeStore._fetch_table_information): Also use the name of
2610            the geometry column when looking for the srid
2611            (PostGISShapeStore.ShapeType): Also use the name of the geometry
2612            column when looking for the shape type
2613    
2614            * test/test_save.py (SaveSessionTest.test_save_postgis): Adapt
2615            NonConnectionStore to changes in the PostGISShapeStore
2616    
2617            * test/test_postgis_db.py
2618            (TestPostGISSpecialCases.test_shapestore_two_geom_cols): Test
2619            PostGISShapeStore with tables having two geometry columns.
2620    
2621    2004-02-10  Bernhard Herzog  <[email protected]>
2622    
2623            Fix some postgis problems.  What remains to be done is real
2624            handling of SRIDs as they affect how reprojection is done
2625    
2626            * Thuban/Model/postgisdb.py (quote_identifier): Fix typo in
2627            doc-string
2628            (PostGISShapeStore._fetch_table_information): New. Extend
2629            inherited method to retrieve srid
2630            (PostGISShapeStore.BoundingBox): Handle tables without data.
2631            extent yields NULL for those
2632            (PostGISShapeStore.ShapesInRegion): Use the srid of the table.
2633    
2634            * test/test_postgis_db.py
2635            (TestPostGISSpecialCases.test_shapestore_empty_table): New test
2636            for the special case of a table without any data
2637            (TestPostGISShapestorePointSRID): New class with tests for a table
2638            that uses srids
2639            (PolygonTests): Fix a doc-string typo
2640    
2641            * test/postgissupport.py (PostGISDatabase.__init__): New parameter
2642            reference_systems with a specification of spacial reference
2643            systems to create in the new db.
2644            (PostgreSQLServer.new_postgis_db)
2645            (PostgreSQLServer.get_static_data_db): New parameter
2646            reference_systems to be passed through ultimately to
2647            PostGISDatabase.  In new_postgis_db also check whether an existing
2648            db already has the right srids
2649            (PostgreSQLServer.get_default_static_data_db): Add srids and a
2650            table that uses srids
2651            (PostGISDatabase.initdb): Create the entries for the reference
2652            systems
2653            (PostGISDatabase.has_data): Add reference_systems parameter to
2654            check for those too
2655            (upload_shapefile): New parameter srid to create tables with a
2656            specific srid
2657    
2658    2004-02-06  Frank Koormann  <[email protected]>
2659    
2660            * po/pt_BR.po: Fixed charset
2661    
2662    2004-02-05  Frank Koormann  <[email protected]>
2663    
2664            * po/pt_BR.po: Fixed format string for error message, missing %s
2665            added (Thuban/UI/application.py:273)
2666    
2667    2004-02-03  Frank Koormann  <[email protected]>
2668            
2669            First version of Portuguese (Brazilian) translation
2670    
2671            * po/pt_BR.po: New, translation of pot (2004-01-15 16:07+0300) for
2672            Brazilian Portuguese by Eduardo Patto Kanegae.
2673    
2674            * Thuban/UI/about.py (About.__init.py__): Added Eduardo to the list of
2675            translators.
2676    
2677    
2678    2004-01-22  Frank Koormann  <[email protected]>
2679    
2680            * Doc/manual/thuban-manual.xml: Added section on installation of
2681            Thuban under Win32 systems. Fixed image path references in the postgis
2682            section. Some minor source formattings.
2683    
2684    2004-01-21  Frank Koormann  <[email protected]>
2685    
2686            Make Thuban remember path selections (at least for one application run).
2687    
2688            * Thuban/UI/application.py (Application.OnInit): Initialize path as a
2689            attribute of application object. Path is a dictionary of
2690            strings, currently with the items "data" and "projection".  
2691            (Application.SetPath): New, stores path for the specified item.
2692            (Application.Path): New, return path for the specified item.
2693    
2694            * Thuban/UI/mainwindow.py
2695            (MainWindow.OpenSession, MainWindow.SaveSessionAs,
2696            MainWindow.AddLayer, MainWindow.AddRasterLayer,
2697            MainWindow.TableOpen): Access "data" path information of the
2698            application.
2699            
2700            * Thuban/UI/projdialog.py (ProjFrame._OnImport, ProjFrame._OnExport):
2701            Access "projection" path information of the application.
2702    
2703    2004-01-05  Bernhard Herzog  <[email protected]>
2704    
2705            * po/ru.po: Updated translations from Alex Shevlakov
2706    
2707    2004-01-05  Bernhard Herzog  <[email protected]>
2708    
2709            * po/Makefile, po/README: Move the description of how to generate
2710            the translation statistics to the README.
2711    
2712    2003-12-23  Bernhard Herzog  <[email protected]>
2713    
2714            * NEWS: Update for 1.0.0
2715    
2716            * po/it.po: Another update from Maurizio Napolitano
2717    
2718    2003-12-23  Bernhard Herzog  <[email protected]>
2719    
2720            * po/it.po: Updated translation from Maurizio Napolitano
2721    
2722    2003-12-23  Bernhard Herzog  <[email protected]>
2723    
2724            * Thuban/UI/join.py (JoinDialog.__init__): Mark one more string
2725            for translation
2726    
2727            * Thuban/UI/mainwindow.py (MainWindow.TableRename)
2728            (MainWindow.RenameMap, MainWindow.RenameLayer): Mark some more
2729            strings for translation
2730    
2731            * po/de.po: Update with the newly marked strings.
2732    
2733    2003-12-22  Bernhard Herzog  <[email protected]>
2734    
2735            * HOWTO-Release: Fix the places where version numbers have to be
2736            updated
2737    
2738    2003-12-22  Bernhard Herzog  <[email protected]>
2739    
2740            * setup.py (setup call): 1.0.0, yeah!
2741    
2742            * Thuban/version.py (longversion): 1.0.0, yeah!
2743    
2744            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
2745            1.0.0 namespace too
2746    
2747            * Thuban/Model/save.py (SessionSaver.write_session): Save with
2748            1.0.0 namespace
2749    
2750            * test/test_load.py (LoadSessionTest.dtd)
2751            (TestSingleLayer.file_contents)
2752            (TestNonAsciiColumnName.file_contents)
2753            (TestLayerVisibility.file_contents)
2754            (TestClassification.file_contents, TestLabels.file_contents)
2755            (TestLayerProjection.file_contents)
2756            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
2757            (TestLabelLayer.file_contents, TestPostGISLayer.file_contents)
2758            (TestPostGISLayerPassword.file_contents)
2759            (TestLoadError.file_contents, TestLoadError.test): Update for
2760            1.0.0 namespace
2761    
2762            * test/test_save.py (SaveSessionTest.dtd)
2763            (SaveSessionTest.testEmptySession)
2764            (SaveSessionTest.testSingleLayer)
2765            (SaveSessionTest.testLayerProjection)
2766            (SaveSessionTest.testRasterLayer)
2767            (SaveSessionTest.testClassifiedLayer)
2768            (SaveSessionTest.test_dbf_table)
2769            (SaveSessionTest.test_joined_table)
2770            (SaveSessionTest.test_save_postgis): Update for 1.0.0 namespace
2771    
2772    2003-12-22  Bernhard Herzog  <[email protected]>
2773    
2774            * Thuban/Model/load.py (SessionLoader.start_label): Make sure the
2775            alignment flags are byte strings not unicode and that they have
2776            valid values
2777    
2778            * test/test_load.py (TestLabelLayer): New. Test loading (and
2779            indirectly saving) of maps with labels.
2780    
2781    2003-12-22  Bernhard Herzog  <[email protected]>
2782    
2783            * Thuban/UI/tableview.py (TableGrid.OnDestroy)
2784            (TableGrid.__init__): Handle EVT_WINDOW_DESTROY in the grid to
2785            unsubscribe all subscribers.
2786            (LayerTableFrame.OnDestroy): Do not unsubscribe any messages from
2787            self.grid since it may already have been destroyed.
2788            Fixes RT #2256
2789    
2790    2003-12-19  Bernhard Herzog  <[email protected]>
2791    
2792            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
2793    
2794    2003-12-16  Bernhard Herzog  <[email protected]>
2795            
2796            * debian/bitmappath.patch, debian/setup.py.patch:
2797                    added to ensure compliance with FHS for debian
2798            * debian/rules, debian/changelog:
2799                added patches in rules to ensure compliance with FHS for debian
2800    
2801    2003-12-16  Bernhard Herzog  <[email protected]>
2802    
2803            * po/Makefile (mo): Make the output a bit nicer so that it prints
2804            statistics about the translations. Add a comment how produce even
2805            nicer statistics with sed.
2806    
2807    2003-12-09  Frank Koormann   <[email protected]>
2808    
2809            * Resources/Projections/defaults.proj:
2810            French projection sample with correct accents (UNICODE).
2811    
2812    2003-12-05  Bernhard Herzog  <[email protected]>
2813    
2814            * MANIFEST.in: Add the devtools directory
2815    
2816            * setup.py (setup call): Use license instead of licence. This
2817            silences a deprecation warning on Python 2.3
2818    
2819    2003-12-05  Frank Koormann   <[email protected]>
2820    
2821            Documentation synced with 1.0rc1
2822    
2823            * Doc/manual/thuban-manual.xml:
2824            Minor formatting changes and references to database layers .
2825            Introduction.Internationalization: New section on i18n.
2826            MapManagement.AddingandRemovingLayers: Added item on database layers.  
2827            MapManagement.TheLegend: Added section and screenshot on popup menu.
2828            ProjectionManagement: Updated screenshot and sentence on EPSG.
2829            Appendix.SupportedDataSources: Added PostGIS.
2830            Appendix.WorkingwithPostGIS: New section.
2831    
2832            * Doc/manual/images/6_projection.png: Updated screenshot including
2833            EPSG checkboxes.
2834    
2835            * Doc/manual/images/3_5_popup_menu.png: New, popup menu screenshot.
2836    
2837            * Doc/manual/images/app_postgis_add_layer.png,
2838            Doc/manual/images/app_postgis_db_add.png,
2839            Doc/manual/images/app_postgis_db_management.png:
2840            New screenshots focussing on database layers
2841    
2842    2003-12-05  Frank Koormann   <[email protected]>
2843    
2844            * Thuban/UI/projdialog.py (load_user_proj): If user.proj is missing
2845            write warning to stderr instead of rising a warning dialog
2846    
2847  2003-12-03  Bernhard Herzog  <[email protected]>  2003-12-03  Bernhard Herzog  <[email protected]>
2848    
2849          Fix for RT #2243          Fix for RT #2243
# Line 3857  Line 6703 
6703          Fix problem of hidden properties dialog under windows after double          Fix problem of hidden properties dialog under windows after double
6704          click on layer tree:          click on layer tree:
6705          The tree control always gets an Expanded / Collapsed event after          The tree control always gets an Expanded / Collapsed event after
6706          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.
6707            We add a second ItemActivated event to the queue, which simply
6708          raises the already displayed window.          raises the already displayed window.
6709    
6710          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable

Legend:
Removed from v.2021  
changed lines
  Added in v.2585

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26