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

Legend:
Removed from v.2026  
changed lines
  Added in v.2487

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26