/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26