/[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 1788 by bh, Wed Oct 8 10:39:32 2003 UTC
# Line 1  Line 1 
1    2003-10-08  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/Model/resource.py (read_proj_file): Return the warnings
4            too. Update the doc-string
5            (get_proj_files): Removed. It wasn't used anywhere
6            (get_system_proj_files, get_system_proj_file): Rename to
7            get_system_proj_file and return the ProjFile object and not a list
8            of ProjFile objects. Update the callers.
9            (get_user_proj_files, get_user_proj_file): Rename to
10            get_user_proj_file return the ProjFile object and not a list of
11            ProjFile objects. Update the callers.
12            (ProjFileReader.__init__): New instance variable for the warnings.
13            Rename the __pf ivar to projfile. Update the methods referring to
14            __pf
15            (ProjFileReader.end_projection): Catch any errors raised when
16            instantiating the projection and record that as an error. The
17            projection will not be in the final ProjFile object.
18            (ProjFileReader.GetWarnings): New method to return the warnings.
19    
20            * Thuban/UI/projdialog.py (ProjFrame.show_warnings): New method to
21            show the warnings from the projfile reader
22            (ProjFrame._OnImport): Deal with any warnings returned by
23            read_proj_file
24            (ProjFrame.__FillAvailList): Deal with any warnings returned by
25            get_system_proj_file or get_user_proj_file.
26    
27            * test/test_proj.py (TestProjFile.doTestRead): Check the warnings.
28            (TestProjFileWithInvalidParameters.file_contents): New test cases
29            to test whether read_proj_file handles invalid projection
30            parameters correctly
31            (TestProjFile.test_get_system_proj_file): New. Simple test for
32            resource.get_system_proj_file
33    
34    2003-10-07  Bernhard Herzog  <[email protected]>
35    
36            * test/test_derivedshapestore.py
37            (TestDerivedShapeStoreExceptions.tearDown): Clear the session
38            properly so that the temporary directories get deleted correctly
39    
40    2003-10-06  Bernhard Herzog  <[email protected]>
41    
42            Handle the title changes in a proper MVC way.
43    
44            * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
45            canvas' TITLE_CHANGED messages
46            (MainWindow.update_title): New. Update the main window's title
47            (MainWindow.__SetTitle): Removed. Use update_title instead.
48            (MainWindow.SetMap): Use update_title instead of __SetTitle
49            (MainWindow.RenameMap): Do change the window title explicitly
50            here. That's handled in a proper MVC way now.
51            (MainWindow.title_changed): New. Subscriber for the TITLE_CHANGED
52            messages
53    
54            * Thuban/Lib/connector.py (Conduit): New class to help classes
55            that forward messages
56    
57            * Thuban/UI/viewport.py: Forward the map's TITLE_CHANGED messages
58            (ViewPort): Derive from Conduit instead of Publisher
59            (ViewPort.Subscribe, ViewPort.Unsubscribe): Use the new base class
60            when calling the inherited versions
61            (ViewPort._subscribe_map, ViewPort._unsubscribe_map): New helper
62            methods to subscribe and unsubscribe map messages
63            (ViewPort.SetMap, ViewPort.Destroy): Use the new helper methods to
64            handle the map subscriptions
65            (ViewPort.Map, ViewPort.map_projection_changed)
66            (ViewPort.layer_projection_changed): Add or update doc-strings
67    
68            * test/test_connector.py (TestPublisher.test_issue_simple): Fix
69            typo
70            (MyConduit): Helper class for the Conduit test.
71            (TestConduit): Test cases for Conduit
72    
73            * test/test_connector.py: Use support.run_tests as main.
74    
75            * test/test_viewport.py (ViewPortTest.setUp): Also subscribe to
76            the TITLE_CHANGED messages
77            (ViewPortTest.test_forwarding_title_changed): New test to check
78            whether the viewport forwards the map's TITLE_CHANGED messages
79            (TestViewportWithPostGIS.tearDown): Call the map's Destroy method
80            after the port's because the latter may require a still functional
81            map.
82    
83    2003-10-06  Bernhard Herzog  <[email protected]>
84    
85            * Thuban/UI/application.py (ThubanApplication.maps_changed): Add
86            doc-string
87    
88    2003-10-06  Bernhard Herzog  <[email protected]>
89    
90            * test/test_viewport.py (ViewPortTest.setUp)
91            (SimpleViewPortTest.test_init_with_size): Move the test for the
92            initial size as a constructor parameter from ViewPortTest.setUp
93            method to a new separate test in SimpleViewPortTest.
94    
95    2003-10-06  Bernhard Herzog  <[email protected]>
96    
97            * test/test_viewport.py (MockView): New class derived from
98            ViewPort with a mock implementation of GetTextExtent to be used in
99            the test cases
100            (ViewPortTest.setUp): Use MockView instead of ViewPort
101    
102            * Thuban/UI/viewport.py (ViewPort.GetTextExtent): Turn this method
103            into what would be a "pure virtual function" in C++: always raise
104            NotImplementedError. Mock implementations for test cases don't
105            belong into the real code
106    
107    2003-10-02  Bernhard Herzog  <[email protected]>
108    
109            * test/test_layer.py (TestLayer.test_empty_layer): Explicitly
110            close the dbf file we create so that it's contents have been
111            written properly.
112    
113            * libraries/shapelib/shptree.c, libraries/shapelib/shpopen.c,
114            libraries/shapelib/shapefil.h, libraries/shapelib/dbfopen.c:
115            Update to shapelib 1.2.10
116    
117    2003-10-01  Jan-Oliver Wagner <[email protected]>
118    
119            * Thuban/UI/tree.py, Thuban/UI/main.py: Remove the #! line as
120            it annoys lintian which warns about these files not being
121            executable. The #! isn't necessary here since if you absolutely
122            must execute them you can always say "python <filename>".
123    
124    2003-09-26  Bernhard Herzog  <[email protected]>
125    
126            * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's
127            only used in GREAT-ER but not used in Thuban itself. When GREAT-ER
128            is ported to a newer the import will fail, so it should be noticed
129            immediately that this function is gone.
130            Fixes RT#1919
131    
132    2003-09-26  Bernhard Herzog  <[email protected]>
133    
134            Add a DTD for the projection files and make thuban write valid
135            projection files
136    
137            * Resources/XML/projfile.dtd: New. DTD for thuban's projection
138            files
139    
140            * Thuban/Model/resource.py (ProjFileSaver.write): Use
141            'projectionlist' as the name in the document type declaration so
142            that it matches the element type of the root element.
143    
144            * test/test_proj.py (sample_projfile, sample_projfile2): Use
145            'projectionlist' as the name in the document type declaration just
146            as it is done now in the files thuban would write
147            (sample_projfile, sample_projfile_data): Fix spelling of
148            "Mercator"
149            (TestProjFile.doTestWrite): Validate the written and the expected
150            XML data
151            (TestProjFile): Derive from ValidationTest so that we can run xml
152            validation tests
153    
154    2003-09-24  Bernhard Herzog  <[email protected]>
155    
156            * Thuban/UI/renderer.py (ExportRenderer.render_legend): Do not
157            modify the list returned by map.Layers() in place since it is the
158            actual list of layers used by the map.
159    
160    2003-09-23  Jan-Oliver Wagner <[email protected]>
161    
162            * Doc/manual/thuban-manual.xml: Added subsection to chapter
163            Extensions to describe the extensions coming with the Thuban
164            standard package (gns2shp and importAPR).
165    
166    2003-09-23  Bernhard Herzog  <[email protected]>
167    
168            * libraries/thuban/wxproj.cpp (project_point): if there's an
169            inverse but no forward projection, convert to degrees after
170            applying the inverse projection. Fixes RT#2096
171    
172            * test/test_wxproj.py: New. Test cases for wxproj.so. One test
173            implicitly tests for the fix to RT#2096
174    
175            * test/support.py (FloatComparisonMixin.assertFloatSeqEqual):
176            Check that the sequences have the same lengths
177    
178            * Resources/Projections/defaults.proj (Geographic projection): Use
179            a much more precise value for the to_meter attribute.
180    
181    2003-09-22  Bernhard Herzog  <[email protected]>
182    
183            * test/support.py (initthuban): Make sure to unset the LANG env.
184            var. so that tests that compare translated strings work. Solves RT
185            #2094
186    
187    2003-09-22  Jan-Oliver Wagner <[email protected]>
188    
189            Small improvement of APR import.
190    
191            * Extensions/importAPR/test/test_apr.py (aprTest.test_LClass):
192            Added tests for text-ranges.
193    
194            * Extensions/importAPR/apr.py (APR_LClass.GetThubanRange): Now
195            returns a string object if the range is based on text.
196    
197            * Extensions/importAPR/importAPR.py (import_apr_dialog): Unified
198            range retrieval.
199    
200    2003-09-22  Jan-Oliver Wagner <[email protected]>
201    
202            Initial version of the importAPR extension which is in
203            experimental state.
204    
205            * /Extensions/importAPR/, /Extensions/importAPR/samples/,
206            /Extensions/importAPR/test/: New directories.
207    
208            * /Extensions/importAPR/samples/README: New: Howto load the samples.
209    
210            * /Extensions/importAPR/samples/iceland.apr: New: A sample APR
211            file which refers to the Thuban Iceland demo data.
212    
213            * /Extensions/importAPR/test/README: New: Howto execute the tests.
214    
215            * /Extensions/importAPR/test/test_apr.py: New: Tests for APR classes.
216    
217            * /Extensions/importAPR/apr.py: New: Classes for ArcView Objects
218            as in '.apr'-files.
219    
220            * /Extensions/importAPR/odb.py: New: Classes for generic ArcView
221            ODB Objects as in '.apr', '.avl' and other files.
222    
223            * /Extensions/importAPR/__init__.py: New: Init to make this
224            directory a package.
225    
226            * /Extensions/importAPR/importAPR.py: New: Import a ArcView
227            project file (.apr) and convert it to Thuban.
228    
229    2003-09-22  Jan-Oliver Wagner <[email protected]>
230    
231            * Extensions/gns2shp.gns2shp.py: The main module of gns2shp.
232    
233    2003-09-19  Jan-Oliver Wagner <[email protected]>
234    
235            * Doc/manual/thuban-manual.xml: Extended section 'Installation'
236            with description on RPM installation and RPM binary package
237            creation.
238    
239    2003-09-18  Bernhard Herzog  <[email protected]>
240    
241            * setup.py (data_files): Only add the mo files if the Locales
242            directory actually exists, so that setup.py works with a fresh CVS
243            checkout
244    
245    2003-09-12  Jan-Oliver Wagner <[email protected]>
246    
247            * Examples/simple_extensions/simple_tool.py: bugfix: Tool is now
248            in viewport, not anymore in view
249    
250    2003-09-04  Jan-Oliver Wagner <[email protected]>
251    
252            Introducing first Extension (gns2shp).
253    
254            * Extensions, Extensions/gns2shp, Extensions/gns2shp/test: New.
255    
256            * Extensions/__init__.py: New. init to make this dir a package.
257    
258            * Extensions/gns2shp/__init__.py: New. init to make this dir a package.
259    
260            * Extensions/gns2shp/test/README: New. some info on this test directory.
261    
262            * Extensions/gns2shp/test/ls.txt: New. test data set (Liechtenstein).
263    
264            * Extensions/gns2shp/test/test_gns2shp.py: New. Test for correct creation
265            of Shapefile from GNS text file format
266    
267    2003-09-03  Jan-Oliver Wagner <[email protected]>
268    
269            Fix/workaround for bug #2019:
270            https://intevation.de/rt/webrt?serial_num=2019
271    
272            * Thuban/UI/identifyview.py (IdentifyView.ID_STOP): New.
273            (IdentifyView.__init__): Added another button that allows to
274            stop the identify mode.
275            (IdentifyView.OnStop): New. Stops the identify mode.
276    
277    2003-09-03  Jan-Oliver Wagner <[email protected]>
278    
279            Introducing a new exception dialog that allows to exit the
280            application immediately.
281            This fixes bug #2060: https://intevation.de/rt/webrt?serial_num=2060
282    
283            * Thuban/UI/exceptiondialog.py: New. A special exception dialog.
284    
285            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
286            Made strings available to translations. Exchanged the simple
287            ScrolledMessageDialog by the new ExceptionDialog.
288    
289    2003-09-01  Bernhard Herzog  <[email protected]>
290    
291            * NEWS: New. Summary of changes and release notes.
292    
293            * MANIFEST.in: Add NEWS
294    
295    2003-09-01  Bernhard Herzog  <[email protected]>
296    
297            * MANIFEST.in: Correct the include statement for the mo-files and
298            include the documentation too.
299    
300            * setup.py (data_files): Add the .mo files
301            (setup call): Up to version 0.9.0
302    
303    2003-09-01  Bernhard Herzog  <[email protected]>
304    
305            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Change the
306            parameter list to just parent and session
307            (ChooseDBTableDialog.__set_properties): Removed. Setting the
308            selection of empty list boxes is not allowed (and produces C++
309            assertion errors) and the rest of the setup is better done in
310            __init__ anyway.
311            (ChooseDBTableDialog.OnCancel, ChooseDBTableDialog.OnOK)
312            (ChooseDBTableDialog.OnLBDClick, DBDialog.OnOK): Use the Python
313            builtins True/False for booleans to avoid warnings from wxPython
314    
315            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Adapt to new
316            ChooseDBTableDialog constructor parameters.
317    
318    2003-09-01  Bernhard Herzog  <[email protected]>
319    
320            * Thuban/Model/postgisdb.py
321            (PostGISTable): Extend doc-string
322            (PostGISTable._fetch_table_information): Set the column index
323            correctly, pretending ignored columns don't exist.
324    
325            * test/test_postgis_db.py (TestPostGISIgnoredColumns): New tests
326            for postgis tables with data types not yet supported by thuban.
327    
328    2003-08-29  Bernhard Herzog  <[email protected]>
329    
330            * HOWTO-Release: Tweak item about running the tests.
331    
332    2003-08-29  Jan-Oliver Wagner <[email protected]>
333    
334            * /Doc/manual/thuban-manual.xml: updated to version 1.0pre2.
335    
336    2003-08-29  Bernhard Herzog  <[email protected]>
337    
338            Add some missing parameters to projections. Proj complains about
339            them on windows but for some reason not on Linux.
340    
341            * test/test_save.py (SaveSessionTest.testLayerProjection): Add
342            missing required projection parameters
343    
344            * test/test_proj.py (TestProjFile.test): Add missing required
345            projection parameters
346    
347            * test/test_load_0_8.py (TestLayerProjection.file_contents)
348            (TestLayerProjection.test): Add missing required projection
349            parameters and tests for them
350    
351            * test/test_load.py (TestLayerProjection.file_contents)
352            (TestLayerProjection.test): Add missing required projection
353            parameters and tests for them
354    
355            * test/test_layer.py (TestLayer.test_base_layer): Add missing
356            required projection parameters
357    
358    2003-08-29  Bernhard Herzog  <[email protected]>
359    
360            * libraries/pyprojection/Projection.i: Use pj_get_errno_ref to
361            access the pj_errno because directly accessing pj_errno doesn't
362            work on windows if the proj library is in a DLL
363    
364            * libraries/pyprojection/Projection_wrap.c: Update from Projection.i
365    
366    2003-08-28  Bernhard Herzog  <[email protected]>
367    
368            * test/test_proj.py: Import things from Thuban after calling
369            initthuban
370    
371            * test/test_load.py (LoadSessionTest.filenames): New class
372            variable with the filename attributes to normalize
373            (LoadSessionTest.check_format): Pass self.filenames to
374            sax_eventlist to normalize the filename attributes
375    
376            * test/xmlsupport.py: Add cvs keywords
377            (SaxEventLister.__init__): New parameter filenames which indicates
378            attributes that contain filenames
379            (SaxEventLister.startElementNS): Normalize the filename attributes
380            with os.path.normpath
381            (sax_eventlist): New parameter filenames to pass through to
382            SaxEventLister
383    
384            * test/test_derivedshapestore.py: Make this file callable as a
385            program to execute the tests
386            (TestDerivedShapeStoreExceptions.test_table_with_wrong_size): Bind
387            the session to self.session so that it gets destroyed properly
388    
389            * test/test_layer.py (TestLayer.tearDown): Call the session's
390            Destroy method
391    
392            * test/test_map.py (TestMapBase.tearDown): Destroy self.session
393            too if it exists
394            (TestMapAddLayer.test_add_layer): Bind the session to self.session
395            so that it gets destroyed properly
396    
397            * test/postgissupport.py (reason_for_not_running_tests): Add a
398            test for the existence of popen2.Popen4.
399    
400            * test/test_save.py (SaveSessionTest.tearDown): New. Provide a
401            reliable way to destroy the sessions created in the test cases
402            (SaveSessionTest.test_dbf_table): Bind the session to self.session
403            so that it gets destroyed properly
404            (SaveSessionTest.testLayerProjection): Bind the session to
405            self.session so that it gets destroyed properly
406    
407            * test/test_session.py (UnreferencedTablesTests.tearDown): Make
408            sure that the session is destroyed properly
409    
410            * test/test_shapefilestore.py: Make this callable as a program to
411            execute the tests
412    
413            * test/test_scalebar.py: Remove unnecessary import of _ from
414            Thuban
415    
416            * test/support.py (print_garbage_information): Call initthuban
417            here because it may be called indirectly from test cases that test
418            test support modules which do not use anything from thuban itself
419            (ThubanTestProgram.runTests): Remove unnecessary debug print
420    
421    2003-08-28  Bernhard Herzog  <[email protected]>
422    
423            * Thuban/version.py (longversion): Update to 0.9
424    
425            * Thuban/UI/mainwindow.py: Remove some unused imports
426    
427            * README: Add section about required additional software. Add date
428            and revision CVS keywords
429    
430            * HOWTO-Release: Add item about the translations. Add date and
431            revision CVs keywords and change formatting to match README a bit
432            better
433    
434            * po/de.po: Update for 0.9
435    
436            * test/README: Tweak the wording a little because many tests are
437            not really unittest.
438    
439    2003-08-27  Bernhard Herzog  <[email protected]>
440    
441            As preparation for the 0.9 release, switch thuban files to a
442            non-dev namespace
443    
444            * Thuban/Model/save.py (SessionSaver.write_session): Write files
445            with the http://thuban.intevation.org/dtds/thuban-0.9.dtd
446            namespace
447    
448            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
449            http://thuban.intevation.org/dtds/thuban-0.9.dtd namespace too
450    
451            * test/test_save.py (SaveSessionTest.dtd)
452            (SaveSessionTest.testEmptySession)
453            (SaveSessionTest.testSingleLayer)
454            (SaveSessionTest.testLayerProjection)
455            (SaveSessionTest.testRasterLayer)
456            (SaveSessionTest.testClassifiedLayer)
457            (SaveSessionTest.test_dbf_table)
458            (SaveSessionTest.test_joined_table)
459            (SaveSessionTest.test_save_postgis): Update for new namespace
460    
461            * test/test_load.py (LoadSessionTest.dtd, TestSingleLayer)
462            (TestLayerVisibility.file_contents, TestLabels.file_contents)
463            (TestLayerProjection.file_contents)
464            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
465            (TestPostGISLayer.file_contents)
466            (TestPostGISLayerPassword.file_contents)
467            (TestLoadError.file_contents, TestLoadError.test): Update for new
468            namespace
469    
470    2003-08-27  Bernhard Herzog  <[email protected]>
471    
472            Make the table interface distinguish between row ids (an integer
473            that uniquely identifies a row) and row ordinals (a simple row
474            count from 0 to NumRows() - 1)
475    
476            * Thuban/Model/postgisdb.py (PostGISTable.RowIdToOrdinal)
477            (PostGISTable.RowOrdinalToId): New methods to conver between row
478            ids and row ordinals
479            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue): New keyword
480            parameter row_is_ordinal to indicate whether the row parameter is
481            the row id or the ordinal
482    
483            * Thuban/Model/transientdb.py (TransientTableBase.RowIdToOrdinal)
484            (TransientTableBase.RowOrdinalToId)
485            (AutoTransientTable.RowIdToOrdinal)
486            (AutoTransientTable.RowOrdinalToId): Same new methods as in
487            PostGISTable.
488            (TransientTableBase.ReadRowAsDict, TransientTableBase.ReadValue)
489            (AutoTransientTable.ReadRowAsDict, AutoTransientTable.ReadValue):
490            Same new parameter as in PostGISTable.
491    
492            * Thuban/Model/table.py (DBFTable.RowIdToOrdinal)
493            (DBFTable.RowOrdinalToId, MemoryTable.RowIdToOrdinal)
494            (MemoryTable.RowOrdinalToId): Same new methods as in PostGISTable.
495            (DBFTable.ReadValue, DBFTable.ReadRowAsDict)
496            (MemoryTable.ReadValue, MemoryTable.ReadRowAsDict): Same new
497            parameter as in PostGISTable.
498    
499            * Thuban/UI/tableview.py (DataTable.RowIdToOrdinal)
500            (DataTable.RowOrdinalToId): New methods to convert between row ids
501            and row ordinals.
502            (TableGrid.SelectRowById): New method to select a row based on its
503            ID as opposed to its ordinal
504            (DataTable.GetValue, TableGrid.OnRangeSelect)
505            (TableGrid.OnSelectCell, LayerTableGrid.select_shapes)
506            (QueryTableFrame.OnQuery, QueryTableFrame.get_selected)
507            (LayerTableFrame.__init__): Convert between row ids and row
508            ordinals as appropriate
509    
510            * test/postgissupport.py (PostGISDatabase.__init__): Add
511            doc-string.
512            (PostGISDatabase.initdb): The optional third item in a tuple in
513            tables is now a (key, value) list with additional arguments to
514            pass to upload_shapefile
515            (upload_shapefile): New parameter gid_offset to allow gids that
516            are not the same as the shapeids in the shapefile
517            (PostgreSQLServer.get_default_static_data_db): Use the new
518            gid_offset to make the gids in landmarks 1000 higher than the
519            shapeids in the shapefile
520    
521            * test/test_viewport.py
522            (TestViewportWithPostGIS.test_find_shape_at_point): Adapt to the
523            new shapeids in the landmarks table
524    
525            * test/test_transientdb.py
526            (TestTransientTable.run_iceland_political_tests)
527            (TestTransientTable.test_transient_joined_table): Add tests for
528            the new table methods and new keywords arguments.
529    
530            * test/test_postgis_db.py
531            (TestPostGISTable.test_read_row_as_dict_row_count_mode)
532            (TestPostGISTable.test_read_value_row_count_mode)
533            (TestPostGISTable.test_row_id_to_ordinal)
534            (TestPostGISTable.test_row_oridnal_to_id): New test for the new
535            table methods and the new arguments
536            (TestPostGISShapestorePoint.test_shapes_in_region)
537            (TestPostGISShapestorePoint.test_shape_raw_data)
538            (TestPostGISShapestorePoint.test_shape_points)
539            (TestPostGISShapestorePoint.test_shape_shapeid)
540            (TestPostGISShapestorePoint.test_all_shapes)
541            (TestPostGISTable.test_simple_query)
542            (TestPostGISTable.test_simple_query)
543            (TestPostGISTable.test_simple_query)
544            (TestPostGISTable.test_read_value)
545            (TestPostGISTable.test_read_row_as_dict): Adapt to the new
546            shapeids in the landmarks table
547    
548            * test/test_memory_table.py
549            (TestMemoryTable.test_read_row_as_dict_row_count_mode)
550            (TestMemoryTable.test_read_value_row_count_mode)
551            (TestMemoryTable.test_row_id_to_ordinal)
552            (TestMemoryTable.test_row_oridnal_to_id): New test for the new
553            table methods and the new arguments
554    
555            * test/test_dbf_table.py
556            (TestDBFTable.test_read_row_as_dict_row_count_mode)
557            (TestDBFTable.test_read_value_row_count_mode)
558            (TestDBFTable.test_row_id_to_ordinal)
559            (TestDBFTable.test_row_oridnal_to_id): New test for the new table
560            methods and the new arguments
561    
562    2003-08-26  Bernhard Herzog  <[email protected]>
563    
564            * Thuban/Model/postgisdb.py (PostGISShapeStore.BoundingBox): Use a
565            more postgis specific but much faster method to get the bounding
566            box
567    
568    2003-08-26  Bernhard Herzog  <[email protected]>
569    
570            * Thuban/Model/postgisdb.py (PostGISTable.Title)
571            (PostGISShapeStore.AllShapes): Add these missing methods.
572            (PostGISShapeStore.ShapesInRegion): No need to raise
573            StopIteration. We can simply return
574    
575            * test/test_postgis_db.py (TestPostGISTable.test_title)
576            (TestPostGISShapestorePoint.test_all_shapes): New tests for the
577            new methods
578    
579    2003-08-25  Bernhard Herzog  <[email protected]>
580    
581            * Thuban/Model/postgisdb.py (shapetype_map): Add MUTLIPOLYGON.
582    
583            * test/test_postgis_db.py (PolygonTests): New class containing
584            those tests from TestPostGISShapestorePolygon that can also be
585            used to test MUTLIPOLYGON tables
586            (TestPostGISShapestorePolygon): Most tests are now in PolygonTests
587            so derive from that
588            (TestPostGISShapestoreMultiPolygon): New class with tests for
589            MUTLIPOLYGON tables
590    
591            * test/postgissupport.py (PostGISDatabase.initdb): Allow the
592            tables argument to have tuples with three items to override the
593            WKT type used.
594            (PostgreSQLServer.get_default_static_data_db): Use the above to
595            create a polygon table with MUTLIPOLYGONs
596            (point_to_wkt, coords_to_point, polygon_to_wkt, coords_to_polygon)
597            (arc_to_wkt, coords_to_multilinestring): Rename from *_to_wkt to
598            coords_to*
599            (coords_to_multipolygon): New. Convert to MUTLIPOLYGON
600            (wkt_converter): New. Map WKT types to converters
601            (upload_shapefile): New parameter force_wkt_type to use a
602            different WKT type than the default
603    
604    2003-08-25  Bernhard Herzog  <[email protected]>
605    
606            * Thuban/UI/application.py
607            (ThubanApplication.run_db_param_dialog): New. Suitable as a
608            db_connection_callback. Main difference is that the dialog run
609            from this method doesn't have a parent so it can be used even when
610            there is no main window
611            (ThubanApplication.OpenSession): Use self.run_db_param_dialog if
612            no db_connection_callback was given. This way the dialog pops up
613            even when the .thuban file was given as a command line parameter.
614    
615    2003-08-25  Bernhard Herzog  <[email protected]>
616    
617            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Release the the mouse
618            before calling MouseLeftUp. MouseLeftUp may pop up modal dialogs
619            which leads to an effectively frozen X session because the user
620            can only interact with the dialog but the mouse is still grabbed
621            by the canvas.
622            Also, call the tool's Hide method before MouseLeftUp because
623            MouseLeftUp may change the tool's coordinates.
624    
625    2003-08-25  Bernhard Herzog  <[email protected]>
626    
627            * Thuban/UI/application.py (ThubanApplication.OpenSession): Catch
628            LoadCancelled exceptions and handle them by returning immediately.
629    
630    2003-08-25  Bernhard Herzog  <[email protected]>
631    
632            GUI part of loading sessions with postgis connections which may
633            require user interaction to get passwords or updated parameters
634    
635            * Thuban/UI/dbdialog.py (DBDialog): Reimplement to make it look a
636            bit nucer and be more generic.
637            (DBFrame.OnAdd): Adapt to new DBDialog interface
638    
639            * Thuban/UI/application.py (ThubanApplication.OpenSession): New
640            optional parameter db_connection_callback which is passed to
641            load_session.
642    
643            * Thuban/UI/mainwindow.py (MainWindow.run_db_param_dialog): New.
644            Suitable as a db_connection_callback
645            (MainWindow.OpenSession): Use self.run_db_param_dialog as the
646            db_connection_callback of the application's OpenSession method
647    
648    
649    2003-08-25  Bernhard Herzog  <[email protected]>
650    
651            Basic loading of sessions containing postgis connections:
652    
653            * Thuban/Model/load.py (LoadError): Add doc-string
654            (LoadCancelled): New exception class to indicate a cancelled load
655            (SessionLoader.__init__): Add the db_connection_callback parameter
656            which will be used by the loader to get updated parameters and a
657            password for a database connection
658            (SessionLoader.__init__): Add the new XML elements to the
659            dispatchers dictionary
660            (SessionLoader.check_attrs): Two new conversions, ascii to convert
661            to a byte-string object and idref as a generic id reference
662            (SessionLoader.start_dbconnection)
663            (SessionLoader.start_dbshapesource): New. Handlers for the new XML
664            elements
665            (load_session): Add the db_connection_callback to pass through the
666            SessionLoader
667    
668            * test/test_load.py (TestPostGISLayer, TestPostGISLayerPassword):
669            New classes to test loading of sessions with postgis database
670            connections.
671    
672    2003-08-25  Bernhard Herzog  <[email protected]>
673    
674            * Thuban/UI/mainwindow.py (__ThubanVersion__): Remove this and
675            replace it and the comment with __BuildDate__ by the Source: and
676            Id: cvs keywords as used in the other files.
677    
678    2003-08-25  Bernhard Herzog  <[email protected]>
679    
680            * Thuban/Model/load.py (SessionLoader.check_attrs): Raise a
681            LoadError when a required attribute is missing. The code used to
682            be commented out for some reason, but probably should have been
683            active.
684    
685            * test/test_load.py (TestLoadError.test): Test the message in the
686            LoadError too to make sure it really is about the missing
687            attribute
688    
689    2003-08-22  Bernhard Herzog  <[email protected]>
690    
691            * test/test_save.py (SaveSessionTest.test_dbf_table)
692            (SaveSessionTest.test_joined_table): Add XML validation tests.
693    
694    2003-08-22  Bernhard Herzog  <[email protected]>
695    
696            Implement saving a session with a postgis connection
697    
698            * Resources/XML/thuban-0.9.dtd (dbconnection, dbshapesource) New
699            elements for database connections and shapestores using db
700            connections
701            (session): Add the dbconnections to the content model
702    
703            * Thuban/Model/save.py (SessionSaver.write_db_connections): New.
704            Write the db connections
705            (SessionSaver.write_session): Call write_db_connections to write
706            the connection before the data sources
707            (SessionSaver.write_data_containers): Handle postgis shapestores
708    
709            * test/test_save.py (SaveSessionTest.thubanids)
710            (SaveSessionTest.thubanidrefs): Update for new DTD
711            (SaveSessionTest.test_save_postgis): New. Test saving a session
712            with postgis connections
713    
714            * Thuban/Model/postgisdb.py (PostGISTable.DBConnection)
715            (PostGISTable.TableName): New accessor methods for the connection
716            and table name
717    
718            * test/test_postgis_db.py (TestPostGISTable.test_dbconn)
719            (TestPostGISTable.test_dbname): New methods to test the new
720            PostGISConnection methods
721    
722    2003-08-22  Bernhard Herzog  <[email protected]>
723    
724            * Thuban/Model/postgisdb.py (ConnectionError): New exception class
725            for exceptions occurring when establishing a Database connection
726            (PostGISConnection.connect): Catch psycopg.OperationalError during
727            connects and raise ConnectionError.
728    
729            * test/test_postgis_db.py (TestPostgisDBExceptions): New class for
730            tests for database exceptions
731    
732    2003-08-22  Bernhard Herzog  <[email protected]>
733    
734            Prepare the test suite for tests with required authentication
735    
736            * test/postgissupport.py (PostgreSQLServer.__init__): Add instance
737            variables with two predefined users/passwords, one for the admin
738            and one for a non-privileged user.
739            (PostgreSQLServer.createdb): Pass the admin name to initdb and add
740            the non-privileged user to the database and set the admin password
741            (PostgreSQLServer.wait_for_postmaster): Use the admin user name.
742            Better error reporting
743            (PostgreSQLServer.connection_params)
744            (PostgreSQLServer.connection_string): New methods to return
745            information about how to connect to the server
746            (PostgreSQLServer.execute_sql): New. Convenience method to execute
747            SQL statements
748            (PostgreSQLServer.require_authentication): Toggle whether the
749            server requires authentication
750            (PostgreSQLServer.create_user, PostgreSQLServer.alter_user): New.
751            Add or alter users
752            (PostGISDatabase.initdb): Pass the admin name one the
753            subprocesses' command lines. Grant select rights on
754            geometry_columns to everybody.
755            (upload_shapefile): Use the admin name and password when
756            connecting. Grant select rights on the new table to everybody.
757    
758            * test/test_viewport.py (TestViewportWithPostGIS.setUp): Use the
759            server's new methods to get the connection parameters.
760    
761            * test/test_postgis_session.py (TestSessionWithPostGIS.setUp)
762            (TestSessionWithPostGIS.test_remove_dbconn_exception): Use the
763            server's new methods to get the connection parameters.
764    
765            * test/test_postgis_db.py
766            (TestPostGISConnection.test_gis_tables_empty)
767            (TestPostGISConnection.test_gis_tables_non_empty)
768            (PostGISStaticTests.setUp): Use the server's new methods to get
769            the connection parameters.
770    
771    2003-08-22  Bernhard Herzog  <[email protected]>
772    
773            * Thuban/UI/about.py (About.__init__): Add the psycopg version.
774    
775            * Thuban/version.py: Add psycopg version
776    
777            * Thuban/Model/postgisdb.py (psycopg_version): New. Return the
778            version of the psycopg module
779    
780    2003-08-22  Bernhard Herzog  <[email protected]>
781    
782            * Thuban/UI/dbdialog.py (DBPwdDlg): Removed because it's not used.
783            (DBFrame.OnEdit): Removed because it's not used and wouldn't work
784            at the moment. The functionality should probably be implemented
785            some time, though.
786            (DBFrame.OnRemove): Display a message if the connection can't be
787            removed because it's still in use.
788    
789    2003-08-22  Jan-Oliver Wagner <[email protected]>
790    
791            * Thuban/UI/about.py (About.__init__): split up the huge about
792            text into elements/lists for easier translation. This fixes bug
793            https://intevation.de/rt/webrt?serial_num=2058
794            Also, made some forgotten string available for the i18n.
795    
796    2003-08-21  Bernhard Herzog  <[email protected]>
797    
798            Make postgis support really optional including insensitive menu
799            items.
800    
801            * Thuban/Model/postgisdb.py (has_postgis_support): New. Return
802            whether the postgis is supported.
803    
804            * Thuban/UI/dbdialog.py: Put the psycopg import into try..except
805            to make postgis support optional
806    
807            * Thuban/UI/mainwindow.py (_has_postgis_support): New. Context
808            version of Thuban.Model.postgisdb.has_postgis_support
809            (database_management command): Make it only sensitive if postgis
810            is supported.
811    
812    2003-08-21  Jan-Oliver Wagner <[email protected]>
813    
814            * Doc/manual/thuban-manual.xml: Added CVS revision for rev-history.
815            (section Adding and Removing Layers): Added text and described
816            multi-selection.
817            (chapter Extensions): New.
818    
819    2003-08-21  Jan-Oliver Wagner <[email protected]>
820    
821            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Changed dialog
822            settings to allow multiple files to load into the map.
823            Also reduced selection to *.shp as a default.
824    
825    2003-08-20  Bernhard Herzog  <[email protected]>
826    
827            Add dialogs and commands to open database connections and add
828            database layers.
829    
830            * Thuban/UI/mainwindow.py (MainWindow.DatabaseManagement): New
831            method to open the database connection management dialog
832            (MainWindow.AddDBLayer): New method to add a layer from a database
833            (_has_dbconnections): New helper function to use for sensitivity
834            (database_management command, layer_add_db command): New commands
835            that call the above new methods.
836            (main_menu): Add the new commands to the menu.
837    
838            * Thuban/Model/postgisdb.py (PostGISConnection.__init__)
839            (PostGISConnection.connect): Establish the actual connection in a
840            separate method and call it in __init__. This makes it easier to
841            override the behavior in test cases
842            (PostGISConnection.BriefDescription): New method to return a brief
843            description for use in dialogs.
844    
845            * test/test_postgis_db.py (NonConnection): DB connection that
846            doesn't actually connect
847            (TestBriefDescription): New class with tests for the new
848            BriefDescription method
849    
850    2003-08-19  Jan-Oliver Wagner <[email protected]>
851    
852            Moved anything from extensions to libraries.
853    
854            * libraries: New.
855    
856            * libraries/ pyprojection, pyshapelib, shapelib, thuban: New.
857    
858            * libraries/pyprojection/ LICENSE, MANIFEST.in, Projection.i,
859            Projection.py, Projection_wrap.c, setup.py, swighelp.txt: These files have
860            been moved here from thuban/extensions/pyprojection/
861            See there in the Attic for the older history.
862    
863            * libraries/pyshapelib/ COPYING, ChangeLog, NEWS, README, dbflib.i,
864            dbflib.py, dbflib_wrap.c, pyshapelib_api.h, pytest.py, setup.py,
865            shapelib.i, shapelib.py, shapelib_wrap.c, shptreemodule.c: These files
866            have been moved here from thuban/extensions/pyshapelib/
867            See there in the Attic for the older history.
868    
869            * libraries/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c: These
870            files have been moved here from thuban/extensions/shapelib/
871            See there in the Attic for the older history.
872    
873            * libraries/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
874            gdalwarp.cpp, wxproj.cpp: These files have been moved here from
875            thuban/extensions/thuban/
876            See there in the Attic for the older history.
877    
878            * MANIFEST.in, setup.cfg, setup.py: renamed extensions to libraries.
879    
880            * extensions/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
881            gdalwarp.cpp, wxproj.cpp: Moved to libraries/thuban.
882    
883            * extensions/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c:
884            Moved to libraries/shapelib.
885    
886            * extensions/pyshapelib/ COPYING, NEWS, dbflib.py, pytest.py,
887            shapelib.py, README, dbflib_wrap.c, setup.py, shapelib_wrap.c,
888            ChangeLog, dbflib.i, pyshapelib_api.h, shapelib.i, shptreemodule.c:
889            Moved to libraries/pyshapelib.
890    
891            * extensions/pyprojection/ MANIFEST.in, Projection.py, setup.py,
892            LICENSE, Projection.i, Projection_wrap.c, swighelp.txt:
893            Moved to libraries/pyprojection.
894    
895            * extensions/ pyprojection, pyshapelib, shapelib, thuban: Removed.
896    
897            * extensions: Removed.
898    
899    2003-08-19  Bernhard Herzog  <[email protected]>
900    
901            * test/test_viewport.py (ViewPortTest): We don't use the
902            facilities of FileTestMixin so don't derive from it.
903            (TestViewportWithPostGIS): New class with tests for using a
904            viewport on a map with postgis layers.
905    
906    2003-08-19  Bernhard Herzog  <[email protected]>
907    
908            Add the db connection management to the session.
909    
910            * Thuban/Model/session.py (Session.__init__): New instance
911            variable db_connections
912            (Session.AddDBConnection, Session.DBConnections)
913            (Session.HasDBConnections, Session.CanRemoveDBConnection)
914            (Session.RemoveDBConnection): New methods to manage and query the
915            db connections managed by the session
916            (Session.OpenDBShapeStore): New method to open a shapestore from a
917            db connection
918    
919            * Thuban/Model/messages.py (DBCONN_REMOVED, DBCONN_ADDED): New
920            messages for the db connection handling in the session
921    
922            * test/test_postgis_session.py: New. test cases for the session's
923            db connection handling with postgis connections
924    
925    2003-08-19  Bernhard Herzog  <[email protected]>
926    
927            Add very basic postgis database support and the corresponding test
928            cases. The test cases require a PostgreSQL + postgis installation
929            but no existing database. The database will be created
930            automatically by the test cases
931    
932            * test/README: Add note about skipped tests and the requirements
933            of the postgis tests.
934    
935            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
936    
937            * test/test_postgis_db.py: New. Test cases for the postgis
938            support.
939    
940            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
941            format
942    
943            * test/test_wellknowntext.py: New. Test cases for the
944            wellknowntext parser
945    
946            * test/postgissupport.py: New. Support module for tests involving
947            a postgis database.
948    
949            * test/support.py (execute_as_testsuite): Shut down the postmaster
950            if it's still running after the tests
951    
952            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
953            well known text format
954    
955    2003-08-19  Jan-Oliver Wagner <[email protected]>
956    
957            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
958            message dialog.
959    
960    2003-08-18  Bernhard Herzog  <[email protected]>
961    
962            * test/support.py (ThubanTestResult.printErrors): Indent the
963            reason for the skips in the output to make it a bit more readable.
964            (execute_as_testsuite): New helper function to run a test suite
965            and print some more information.
966            (run_tests): Use execute_as_testsuite to run the tests
967    
968            * test/runtests.py (main): Use execute_as_testsuite to run the
969            tests
970    
971    2003-08-18  Bernhard Herzog  <[email protected]>
972    
973            Fix some bugs in Thuban and the test suite that were uncovered by
974            changes introduced in Python 2.3:
975    
976            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
977            filename is an absolute name
978    
979            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
980            filename is an absolute name
981    
982            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
983            unique filename to save to and use the correct relative filename
984            in the expected output.
985            (SaveSessionTest.test_dbf_table): Use the correct relative
986            filename in the expected output.
987    
988            * test/test_layer.py (TestLayer.test_raster_layer): Update the
989            test to check whether the filename is absolute.
990    
991    2003-08-18  Jan-Oliver Wagner <[email protected]>
992    
993            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
994    
995    2003-08-15  Bernhard Herzog  <[email protected]>
996    
997            Change the way shapes are returned by a shape store. The
998            ShapesInRegion method returns an iterator over actual shape
999            objects instead of a list of shape ids.
1000    
1001            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
1002            id.
1003            (ShapefileStore.ShapesInRegion): Return an iterator over the
1004            shapes which yields shape objects instead of returning a list of
1005            shape ids
1006            (ShapefileStore.AllShapes): New. Return an iterator over all
1007            shapes in the shape store
1008            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
1009    
1010            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
1011            doc-string.
1012    
1013            * Thuban/UI/baserenderer.py
1014            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
1015            layer_shapes and make it return an iterator containg shapes
1016            instead of a list of ids.
1017            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
1018            layer_shapes() change
1019    
1020            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
1021            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
1022    
1023            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
1024            changes in the ShapesInRegion return value.
1025            (ViewPort._get_hit_tester): Remove commented out code
1026    
1027            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
1028            new return value.
1029            (SimpleShapeStore.AllShapes): New. Implement this method too.
1030    
1031            * test/test_layer.py (TestLayer.test_arc_layer)
1032            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
1033            (TestLayer.test_point_layer_with_projection)
1034            (TestLayer.test_derived_store): Adapt to changes in the
1035            ShapesInRegion return value.
1036    
1037            * test/test_shapefilestore.py
1038            (TestShapefileStoreArc.test_shapes_in_region)
1039            (TestShapefileStorePolygon.test_shapes_in_region)
1040            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
1041            in the ShapesInRegion return value.
1042            (TestShapefileStorePoint.test_all_shapes)
1043            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
1044            methods
1045    
1046            * test/test_derivedshapestore.py
1047            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
1048            the ShapesInRegion return value.
1049            (TestDerivedShapeStore.test_all_shapes)
1050            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
1051            methods
1052    
1053    2003-08-15  Bernhard Herzog  <[email protected]>
1054    
1055            Make the renderers deal correctly with raw vs. python level
1056            representation of shape geometries
1057    
1058            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
1059            Return a flag useraw in addition to the callable and the parameter
1060            to indicate whether the callable can deal with the raw shape data
1061            or uses the higher level python lists of coordinates. The callable
1062            now should accept either the raw data or the return value of the
1063            shape's Points() method.
1064            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
1065            change
1066            (BaseRenderer.projected_points): Instead of the shape id use the
1067            points list as parameter.
1068            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
1069            (BaseRenderer.draw_point_shape): Adapt to projected_points()
1070            change and accept the points list as parameter instead of the
1071            shape id.
1072    
1073            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
1074            the useraw flag as required by the BaseRenderer
1075            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
1076            changes.
1077    
1078            * test/test_baserenderer.py
1079            (TestBaseRenderer.test_point_with_classification): New test for
1080            rendering a map with classifications.
1081    
1082    2003-08-15  Bernhard Herzog  <[email protected]>
1083    
1084            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
1085            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
1086            (ViewPort._get_hit_tester, ViewPort.projected_points)
1087            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
1088            (ViewPort._find_label_at): Split the find_shape_at method into
1089            several new methods and use the functions in the hit-test module.
1090    
1091            * Thuban/UI/hittest.py: New module with Python-level hit-testing
1092            functions
1093    
1094            * test/test_hittest.py: New. Test for the new hittest module
1095    
1096    2003-08-15  Bernhard Herzog  <[email protected]>
1097    
1098            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
1099            projection to all corners of the bounding box to get a better
1100            approximation of the projected bounding box
1101    
1102            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
1103            New. Test coordinate handling of a layer with a projection.
1104            Catches the bug fixed in Layer.ShapesInRegion
1105    
1106    2003-08-15  Bernhard Herzog  <[email protected]>
1107    
1108            Move some of the mock objects in test_baserenderer into their own
1109            module so they can easily be used from other tests
1110    
1111            * test/mockgeo.py: New test helper module with some mock objects
1112            for geometry related things like shapes, shapestores and
1113            projections.
1114    
1115            * test/test_mockgeo.py: New. Tests for the new helper module
1116    
1117            * test/test_baserenderer.py: Some of the mock-objects are in
1118            mockgeo now.
1119    
1120    2003-08-12  Jan-Oliver Wagner <[email protected]>
1121    
1122            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
1123    
1124  2003-08-12  Bernhard Herzog  <[email protected]>  2003-08-12  Bernhard Herzog  <[email protected]>
1125    
1126          * po/de.po: New. German translations by Bjoern Broscheit          * po/de.po: New. German translations by Bjoern Broscheit
# Line 421  Line 1544 
1544    
1545          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
1546          it annoys lintian which warns about these files not being          it annoys lintian which warns about these files not being
1547          executable. The #1 isn't necessary here since if you absolutely          executable. The #! isn't necessary here since if you absolutely
1548          must execute them you can always say "python <filename>".          must execute them you can always say "python <filename>".
1549    
1550          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26