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

Legend:
Removed from v.2075  
changed lines
  Added in v.2489

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26