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

Legend:
Removed from v.1960  
changed lines
  Added in v.2532

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26