/[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 1582 by bh, Tue Aug 12 15:08:40 2003 UTC revision 1661 by bh, Tue Aug 26 12:54:55 2003 UTC
# Line 1  Line 1 
1    2003-08-26  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/Model/postgisdb.py (PostGISShapeStore.BoundingBox): Use a
4            more postgis specific but much faster method to get the bounding
5            box
6    
7    2003-08-26  Bernhard Herzog  <[email protected]>
8    
9            * Thuban/Model/postgisdb.py (PostGISTable.Title)
10            (PostGISShapeStore.AllShapes): Add these missing methods.
11            (PostGISShapeStore.ShapesInRegion): No need to raise
12            StopIteration. We can simply return
13    
14            * test/test_postgis_db.py (TestPostGISTable.test_title)
15            (TestPostGISShapestorePoint.test_all_shapes): New tests for the
16            new methods
17    
18    2003-08-25  Bernhard Herzog  <[email protected]>
19    
20            * Thuban/Model/postgisdb.py (shapetype_map): Add MUTLIPOLYGON.
21    
22            * test/test_postgis_db.py (PolygonTests): New class containing
23            those tests from TestPostGISShapestorePolygon that can also be
24            used to test MUTLIPOLYGON tables
25            (TestPostGISShapestorePolygon): Most tests are now in PolygonTests
26            so derive from that
27            (TestPostGISShapestoreMultiPolygon): New class with tests for
28            MUTLIPOLYGON tables
29    
30            * test/postgissupport.py (PostGISDatabase.initdb): Allow the
31            tables argument to have tuples with three items to override the
32            WKT type used.
33            (PostgreSQLServer.get_default_static_data_db): Use the above to
34            create a polygon table with MUTLIPOLYGONs
35            (point_to_wkt, coords_to_point, polygon_to_wkt, coords_to_polygon)
36            (arc_to_wkt, coords_to_multilinestring): Rename from *_to_wkt to
37            coords_to*
38            (coords_to_multipolygon): New. Convert to MUTLIPOLYGON
39            (wkt_converter): New. Map WKT types to converters
40            (upload_shapefile): New parameter force_wkt_type to use a
41            different WKT type than the default
42    
43    2003-08-25  Bernhard Herzog  <[email protected]>
44    
45            * Thuban/UI/application.py
46            (ThubanApplication.run_db_param_dialog): New. Suitable as a
47            db_connection_callback. Main difference is that the dialog run
48            from this method doesn't have a parent so it can be used even when
49            there is no main window
50            (ThubanApplication.OpenSession): Use self.run_db_param_dialog if
51            no db_connection_callback was given. This way the dialog pops up
52            even when the .thuban file was given as a command line parameter.
53    
54    2003-08-25  Bernhard Herzog  <[email protected]>
55    
56            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Release the the mouse
57            before calling MouseLeftUp. MouseLeftUp may pop up modal dialogs
58            which leads to an effectively frozen X session because the user
59            can only interact with the dialog but the mouse is still grabbed
60            by the canvas.
61            Also, call the tool's Hide method before MouseLeftUp because
62            MouseLeftUp may change the tool's coordinates.
63    
64    2003-08-25  Bernhard Herzog  <[email protected]>
65    
66            * Thuban/UI/application.py (ThubanApplication.OpenSession): Catch
67            LoadCancelled exceptions and handle them by returning immediately.
68    
69    2003-08-25  Bernhard Herzog  <[email protected]>
70    
71            GUI part of loading sessions with postgis connections which may
72            require user interaction to get passwords or updated parameters
73    
74            * Thuban/UI/dbdialog.py (DBDialog): Reimplement to make it look a
75            bit nucer and be more generic.
76            (DBFrame.OnAdd): Adapt to new DBDialog interface
77    
78            * Thuban/UI/application.py (ThubanApplication.OpenSession): New
79            optional parameter db_connection_callback which is passed to
80            load_session.
81    
82            * Thuban/UI/mainwindow.py (MainWindow.run_db_param_dialog): New.
83            Suitable as a db_connection_callback
84            (MainWindow.OpenSession): Use self.run_db_param_dialog as the
85            db_connection_callback of the application's OpenSession method
86    
87    
88    2003-08-25  Bernhard Herzog  <[email protected]>
89    
90            Basic loading of sessions containing postgis connections:
91    
92            * Thuban/Model/load.py (LoadError): Add doc-string
93            (LoadCancelled): New exception class to indicate a cancelled load
94            (SessionLoader.__init__): Add the db_connection_callback parameter
95            which will be used by the loader to get updated parameters and a
96            password for a database connection
97            (SessionLoader.__init__): Add the new XML elements to the
98            dispatchers dictionary
99            (SessionLoader.check_attrs): Two new conversions, ascii to convert
100            to a byte-string object and idref as a generic id reference
101            (SessionLoader.start_dbconnection)
102            (SessionLoader.start_dbshapesource): New. Handlers for the new XML
103            elements
104            (load_session): Add the db_connection_callback to pass through the
105            SessionLoader
106    
107            * test/test_load.py (TestPostGISLayer, TestPostGISLayerPassword):
108            New classes to test loading of sessions with postgis database
109            connections.
110    
111    2003-08-25  Bernhard Herzog  <[email protected]>
112    
113            * Thuban/UI/mainwindow.py (__ThubanVersion__): Remove this and
114            replace it and the comment with __BuildDate__ by the Source: and
115            Id: cvs keywords as used in the other files.
116    
117    2003-08-25  Bernhard Herzog  <[email protected]>
118    
119            * Thuban/Model/load.py (SessionLoader.check_attrs): Raise a
120            LoadError when a required attribute is missing. The code used to
121            be commented out for some reason, but probably should have been
122            active.
123    
124            * test/test_load.py (TestLoadError.test): Test the message in the
125            LoadError too to make sure it really is about the missing
126            attribute
127    
128    2003-08-22  Bernhard Herzog  <[email protected]>
129    
130            * test/test_save.py (SaveSessionTest.test_dbf_table)
131            (SaveSessionTest.test_joined_table): Add XML validation tests.
132    
133    2003-08-22  Bernhard Herzog  <[email protected]>
134    
135            Implement saving a session with a postgis connection
136    
137            * Resources/XML/thuban-0.9.dtd (dbconnection, dbshapesource) New
138            elements for database connections and shapestores using db
139            connections
140            (session): Add the dbconnections to the content model
141    
142            * Thuban/Model/save.py (SessionSaver.write_db_connections): New.
143            Write the db connections
144            (SessionSaver.write_session): Call write_db_connections to write
145            the connection before the data sources
146            (SessionSaver.write_data_containers): Handle postgis shapestores
147    
148            * test/test_save.py (SaveSessionTest.thubanids)
149            (SaveSessionTest.thubanidrefs): Update for new DTD
150            (SaveSessionTest.test_save_postgis): New. Test saving a session
151            with postgis connections
152    
153            * Thuban/Model/postgisdb.py (PostGISTable.DBConnection)
154            (PostGISTable.TableName): New accessor methods for the connection
155            and table name
156    
157            * test/test_postgis_db.py (TestPostGISTable.test_dbconn)
158            (TestPostGISTable.test_dbname): New methods to test the new
159            PostGISConnection methods
160    
161    2003-08-22  Bernhard Herzog  <[email protected]>
162    
163            * Thuban/Model/postgisdb.py (ConnectionError): New exception class
164            for exceptions occurring when establishing a Database connection
165            (PostGISConnection.connect): Catch psycopg.OperationalError during
166            connects and raise ConnectionError.
167    
168            * test/test_postgis_db.py (TestPostgisDBExceptions): New class for
169            tests for database exceptions
170    
171    2003-08-22  Bernhard Herzog  <[email protected]>
172    
173            Prepare the test suite for tests with required authentication
174    
175            * test/postgissupport.py (PostgreSQLServer.__init__): Add instance
176            variables with two predefined users/passwords, one for the admin
177            and one for a non-privileged user.
178            (PostgreSQLServer.createdb): Pass the admin name to initdb and add
179            the non-privileged user to the database and set the admin password
180            (PostgreSQLServer.wait_for_postmaster): Use the admin user name.
181            Better error reporting
182            (PostgreSQLServer.connection_params)
183            (PostgreSQLServer.connection_string): New methods to return
184            information about how to connect to the server
185            (PostgreSQLServer.execute_sql): New. Convenience method to execute
186            SQL statements
187            (PostgreSQLServer.require_authentication): Toggle whether the
188            server requires authentication
189            (PostgreSQLServer.create_user, PostgreSQLServer.alter_user): New.
190            Add or alter users
191            (PostGISDatabase.initdb): Pass the admin name one the
192            subprocesses' command lines. Grant select rights on
193            geometry_columns to everybody.
194            (upload_shapefile): Use the admin name and password when
195            connecting. Grant select rights on the new table to everybody.
196    
197            * test/test_viewport.py (TestViewportWithPostGIS.setUp): Use the
198            server's new methods to get the connection parameters.
199    
200            * test/test_postgis_session.py (TestSessionWithPostGIS.setUp)
201            (TestSessionWithPostGIS.test_remove_dbconn_exception): Use the
202            server's new methods to get the connection parameters.
203    
204            * test/test_postgis_db.py
205            (TestPostGISConnection.test_gis_tables_empty)
206            (TestPostGISConnection.test_gis_tables_non_empty)
207            (PostGISStaticTests.setUp): Use the server's new methods to get
208            the connection parameters.
209    
210    2003-08-22  Bernhard Herzog  <[email protected]>
211    
212            * Thuban/UI/about.py (About.__init__): Add the psycopg version.
213    
214            * Thuban/version.py: Add psycopg version
215    
216            * Thuban/Model/postgisdb.py (psycopg_version): New. Return the
217            version of the psycopg module
218    
219    2003-08-22  Bernhard Herzog  <[email protected]>
220    
221            * Thuban/UI/dbdialog.py (DBPwdDlg): Removed because it's not used.
222            (DBFrame.OnEdit): Removed because it's not used and wouldn't work
223            at the moment. The functionality should probably be implemented
224            some time, though.
225            (DBFrame.OnRemove): Display a message if the connection can't be
226            removed because it's still in use.
227    
228    2003-08-22  Jan-Oliver Wagner <[email protected]>
229    
230            * Thuban/UI/about.py (About.__init__): split up the huge about
231            text into elements/lists for easier translation. This fixes bug
232            https://intevation.de/rt/webrt?serial_num=2058
233            Also, made some forgotten string available for the i18n.
234    
235    2003-08-21  Bernhard Herzog  <[email protected]>
236    
237            Make postgis support really optional including insensitive menu
238            items.
239    
240            * Thuban/Model/postgisdb.py (has_postgis_support): New. Return
241            whether the postgis is supported.
242    
243            * Thuban/UI/dbdialog.py: Put the psycopg import into try..except
244            to make postgis support optional
245    
246            * Thuban/UI/mainwindow.py (_has_postgis_support): New. Context
247            version of Thuban.Model.postgisdb.has_postgis_support
248            (database_management command): Make it only sensitive if postgis
249            is supported.
250    
251    2003-08-21  Jan-Oliver Wagner <[email protected]>
252    
253            * Doc/manual/thuban-manual.xml: Added CVS revision for rev-history.
254            (section Adding and Removing Layers): Added text and described
255            multi-selection.
256            (chapter Extensions): New.
257    
258    2003-08-21  Jan-Oliver Wagner <[email protected]>
259    
260            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Changed dialog
261            settings to allow multiple files to load into the map.
262            Also reduced selection to *.shp as a default.
263    
264    2003-08-20  Bernhard Herzog  <[email protected]>
265    
266            Add dialogs and commands to open database connections and add
267            database layers.
268    
269            * Thuban/UI/mainwindow.py (MainWindow.DatabaseManagement): New
270            method to open the database connection management dialog
271            (MainWindow.AddDBLayer): New method to add a layer from a database
272            (_has_dbconnections): New helper function to use for sensitivity
273            (database_management command, layer_add_db command): New commands
274            that call the above new methods.
275            (main_menu): Add the new commands to the menu.
276    
277            * Thuban/Model/postgisdb.py (PostGISConnection.__init__)
278            (PostGISConnection.connect): Establish the actual connection in a
279            separate method and call it in __init__. This makes it easier to
280            override the behavior in test cases
281            (PostGISConnection.BriefDescription): New method to return a brief
282            description for use in dialogs.
283    
284            * test/test_postgis_db.py (NonConnection): DB connection that
285            doesn't actually connect
286            (TestBriefDescription): New class with tests for the new
287            BriefDescription method
288    
289    2003-08-19  Jan-Oliver Wagner <[email protected]>
290    
291            Moved anything from extensions to libraries.
292    
293            * libraries: New.
294    
295            * libraries/ pyprojection, pyshapelib, shapelib, thuban: New.
296    
297            * libraries/pyprojection/ LICENSE, MANIFEST.in, Projection.i,
298            Projection.py, Projection_wrap.c, setup.py, swighelp.txt: These files have
299            been moved here from thuban/extensions/pyprojection/
300            See there in the Attic for the older history.
301    
302            * libraries/pyshapelib/ COPYING, ChangeLog, NEWS, README, dbflib.i,
303            dbflib.py, dbflib_wrap.c, pyshapelib_api.h, pytest.py, setup.py,
304            shapelib.i, shapelib.py, shapelib_wrap.c, shptreemodule.c: These files
305            have been moved here from thuban/extensions/pyshapelib/
306            See there in the Attic for the older history.
307    
308            * libraries/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c: These
309            files have been moved here from thuban/extensions/shapelib/
310            See there in the Attic for the older history.
311    
312            * libraries/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
313            gdalwarp.cpp, wxproj.cpp: These files have been moved here from
314            thuban/extensions/thuban/
315            See there in the Attic for the older history.
316    
317            * MANIFEST.in, setup.cfg, setup.py: renamed extensions to libraries.
318    
319            * extensions/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
320            gdalwarp.cpp, wxproj.cpp: Moved to libraries/thuban.
321    
322            * extensions/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c:
323            Moved to libraries/shapelib.
324    
325            * extensions/pyshapelib/ COPYING, NEWS, dbflib.py, pytest.py,
326            shapelib.py, README, dbflib_wrap.c, setup.py, shapelib_wrap.c,
327            ChangeLog, dbflib.i, pyshapelib_api.h, shapelib.i, shptreemodule.c:
328            Moved to libraries/pyshapelib.
329    
330            * extensions/pyprojection/ MANIFEST.in, Projection.py, setup.py,
331            LICENSE, Projection.i, Projection_wrap.c, swighelp.txt:
332            Moved to libraries/pyprojection.
333    
334            * extensions/ pyprojection, pyshapelib, shapelib, thuban: Removed.
335    
336            * extensions: Removed.
337    
338    2003-08-19  Bernhard Herzog  <[email protected]>
339    
340            * test/test_viewport.py (ViewPortTest): We don't use the
341            facilities of FileTestMixin so don't derive from it.
342            (TestViewportWithPostGIS): New class with tests for using a
343            viewport on a map with postgis layers.
344    
345    2003-08-19  Bernhard Herzog  <[email protected]>
346    
347            Add the db connection management to the session.
348    
349            * Thuban/Model/session.py (Session.__init__): New instance
350            variable db_connections
351            (Session.AddDBConnection, Session.DBConnections)
352            (Session.HasDBConnections, Session.CanRemoveDBConnection)
353            (Session.RemoveDBConnection): New methods to manage and query the
354            db connections managed by the session
355            (Session.OpenDBShapeStore): New method to open a shapestore from a
356            db connection
357    
358            * Thuban/Model/messages.py (DBCONN_REMOVED, DBCONN_ADDED): New
359            messages for the db connection handling in the session
360    
361            * test/test_postgis_session.py: New. test cases for the session's
362            db connection handling with postgis connections
363    
364    2003-08-19  Bernhard Herzog  <[email protected]>
365    
366            Add very basic postgis database support and the corresponding test
367            cases. The test cases require a PostgreSQL + postgis installation
368            but no existing database. The database will be created
369            automatically by the test cases
370    
371            * test/README: Add note about skipped tests and the requirements
372            of the postgis tests.
373    
374            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
375    
376            * test/test_postgis_db.py: New. Test cases for the postgis
377            support.
378    
379            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
380            format
381    
382            * test/test_wellknowntext.py: New. Test cases for the
383            wellknowntext parser
384    
385            * test/postgissupport.py: New. Support module for tests involving
386            a postgis database.
387    
388            * test/support.py (execute_as_testsuite): Shut down the postmaster
389            if it's still running after the tests
390    
391            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
392            well known text format
393    
394    2003-08-19  Jan-Oliver Wagner <[email protected]>
395    
396            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
397            message dialog.
398    
399    2003-08-18  Bernhard Herzog  <[email protected]>
400    
401            * test/support.py (ThubanTestResult.printErrors): Indent the
402            reason for the skips in the output to make it a bit more readable.
403            (execute_as_testsuite): New helper function to run a test suite
404            and print some more information.
405            (run_tests): Use execute_as_testsuite to run the tests
406    
407            * test/runtests.py (main): Use execute_as_testsuite to run the
408            tests
409    
410    2003-08-18  Bernhard Herzog  <[email protected]>
411    
412            Fix some bugs in Thuban and the test suite that were uncovered by
413            changes introduced in Python 2.3:
414    
415            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
416            filename is an absolute name
417    
418            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
419            filename is an absolute name
420    
421            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
422            unique filename to save to and use the correct relative filename
423            in the expected output.
424            (SaveSessionTest.test_dbf_table): Use the correct relative
425            filename in the expected output.
426    
427            * test/test_layer.py (TestLayer.test_raster_layer): Update the
428            test to check whether the filename is absolute.
429    
430    2003-08-18  Jan-Oliver Wagner <[email protected]>
431    
432            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
433    
434    2003-08-15  Bernhard Herzog  <[email protected]>
435    
436            Change the way shapes are returned by a shape store. The
437            ShapesInRegion method returns an iterator over actual shape
438            objects instead of a list of shape ids.
439    
440            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
441            id.
442            (ShapefileStore.ShapesInRegion): Return an iterator over the
443            shapes which yields shape objects instead of returning a list of
444            shape ids
445            (ShapefileStore.AllShapes): New. Return an iterator over all
446            shapes in the shape store
447            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
448    
449            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
450            doc-string.
451    
452            * Thuban/UI/baserenderer.py
453            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
454            layer_shapes and make it return an iterator containg shapes
455            instead of a list of ids.
456            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
457            layer_shapes() change
458    
459            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
460            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
461    
462            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
463            changes in the ShapesInRegion return value.
464            (ViewPort._get_hit_tester): Remove commented out code
465    
466            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
467            new return value.
468            (SimpleShapeStore.AllShapes): New. Implement this method too.
469    
470            * test/test_layer.py (TestLayer.test_arc_layer)
471            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
472            (TestLayer.test_point_layer_with_projection)
473            (TestLayer.test_derived_store): Adapt to changes in the
474            ShapesInRegion return value.
475    
476            * test/test_shapefilestore.py
477            (TestShapefileStoreArc.test_shapes_in_region)
478            (TestShapefileStorePolygon.test_shapes_in_region)
479            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
480            in the ShapesInRegion return value.
481            (TestShapefileStorePoint.test_all_shapes)
482            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
483            methods
484    
485            * test/test_derivedshapestore.py
486            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
487            the ShapesInRegion return value.
488            (TestDerivedShapeStore.test_all_shapes)
489            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
490            methods
491    
492    2003-08-15  Bernhard Herzog  <[email protected]>
493    
494            Make the renderers deal correctly with raw vs. python level
495            representation of shape geometries
496    
497            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
498            Return a flag useraw in addition to the callable and the parameter
499            to indicate whether the callable can deal with the raw shape data
500            or uses the higher level python lists of coordinates. The callable
501            now should accept either the raw data or the return value of the
502            shape's Points() method.
503            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
504            change
505            (BaseRenderer.projected_points): Instead of the shape id use the
506            points list as parameter.
507            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
508            (BaseRenderer.draw_point_shape): Adapt to projected_points()
509            change and accept the points list as parameter instead of the
510            shape id.
511    
512            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
513            the useraw flag as required by the BaseRenderer
514            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
515            changes.
516    
517            * test/test_baserenderer.py
518            (TestBaseRenderer.test_point_with_classification): New test for
519            rendering a map with classifications.
520    
521    2003-08-15  Bernhard Herzog  <[email protected]>
522    
523            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
524            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
525            (ViewPort._get_hit_tester, ViewPort.projected_points)
526            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
527            (ViewPort._find_label_at): Split the find_shape_at method into
528            several new methods and use the functions in the hit-test module.
529    
530            * Thuban/UI/hittest.py: New module with Python-level hit-testing
531            functions
532    
533            * test/test_hittest.py: New. Test for the new hittest module
534    
535    2003-08-15  Bernhard Herzog  <[email protected]>
536    
537            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
538            projection to all corners of the bounding box to get a better
539            approximation of the projected bounding box
540    
541            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
542            New. Test coordinate handling of a layer with a projection.
543            Catches the bug fixed in Layer.ShapesInRegion
544    
545    2003-08-15  Bernhard Herzog  <[email protected]>
546    
547            Move some of the mock objects in test_baserenderer into their own
548            module so they can easily be used from other tests
549    
550            * test/mockgeo.py: New test helper module with some mock objects
551            for geometry related things like shapes, shapestores and
552            projections.
553    
554            * test/test_mockgeo.py: New. Tests for the new helper module
555    
556            * test/test_baserenderer.py: Some of the mock-objects are in
557            mockgeo now.
558    
559    2003-08-12  Jan-Oliver Wagner <[email protected]>
560    
561            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
562    
563  2003-08-12  Bernhard Herzog  <[email protected]>  2003-08-12  Bernhard Herzog  <[email protected]>
564    
565          * po/de.po: New. German translations by Bjoern Broscheit          * po/de.po: New. German translations by Bjoern Broscheit

Legend:
Removed from v.1582  
changed lines
  Added in v.1661

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26