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

Legend:
Removed from v.1965  
changed lines
  Added in v.2553

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26