/[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 1847 by bh, Tue Oct 21 10:50:07 2003 UTC revision 2075 by bh, Thu Feb 19 13:38:47 2004 UTC
# Line 1  Line 1 
1    2004-02-19  Bernhard Herzog  <bh@intevation.de>
2    
3            * Extensions/svgexport/svgsaver.py,
4            Extensions/svgexport/svgmapwriter.py,
5            Extensions/svgexport/maplegend.py: Added again.  This time in the
6            correct place.
7    
8    2004-02-17  Bernhard Herzog  <bh@intevation.de>
9    
10            Fix for RT#2245
11    
12            * Thuban/UI/application.py (ThubanApplication.OnInit): Initialize
13            instance variables before trying to create any windows.  Creating
14            windows can start an event loop if e.g. message boxes are popped
15            up for some reason, and event handlers, especially EVT_UPDATE_UI
16            may want to access things from the application.
17            (ThubanApplication.maps_changed): The mainwindow may not have been
18            created yet, so check whether it has been created before calling
19            its methods
20    
21            * Thuban/UI/view.py (MapCanvas.OnIdle): Only try to redraw if we
22            have a map
23    
24    2004-02-17  Bernhard Herzog  <bh@intevation.de>
25    
26            * test/test_svgmapwriter.py, Extensions/svgsaver.py,
27            Extensions/svgmapwriter.py, Extensions/maplegend.py,
28            extensions/svgexport/svgsaver.py,
29            extensions/svgexport/svgmapwriter.py,
30            extensions/svgexport/maplegend.py: Removed.  These files were in
31            the wrong places or didn't work at all.
32    
33    2004-02-16  Bernhard Herzog  <bh@intevation.de>
34    
35            * Thuban/UI/view.py (MapCanvas.Export): Remove accidentally added
36            line
37    
38    2004-02-16  Bernhard Herzog  <bh@intevation.de>
39    
40            * Thuban/UI/view.py (MapCanvas.Export): Avoid UnboundLocalError.
41    
42    2004-02-15  Markus Rechtien  <markus@intevation.de>
43            
44            * Extensions/svgexport/svgmapwriter.py: New. Adds the capability
45            to write a session to a file in SVG format.
46            * Extensions/svgexport/svgsaver.py: New. Uses svgmapwriter.py
47            to write a SVG map of a session.
48            * Extensions/svgexport/maplegend: New. Writes a basic maplegend
49            in SVG format for the current session.
50    
51    2004-02-13  Bernhard Herzog  <bh@intevation.de>
52    
53            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): When the layer
54            can't be created, return immediately after displaying the error
55            message.
56    
57    2004-02-11  Bernhard Herzog  <bh@intevation.de>
58    
59            Handle postgis tables with more than one geometry column.
60    
61            * Thuban/Model/postgisdb.py
62            (PostGISTable._fetch_table_information): Delegate the creation of
63            column objects to a different method so that we can extend that in
64            derived classes
65            (PostGISTable._create_col_from_description): New. Column object
66            creation part of _fetch_table_information
67            (PostGISShapeStore._create_col_from_description): New. Extend
68            inherited method to handle geometry columns
69            (PostGISShapeStore.__init__): New parameter geometry_column to
70            specify which geometry column to use.  Optional but mandatory for
71            tables with more than one geometry column
72            (PostGISShapeStore._fetch_table_information): Also use the name of
73            the geometry column when looking for the srid
74            (PostGISShapeStore.ShapeType): Also use the name of the geometry
75            column when looking for the shape type
76    
77            * test/test_save.py (SaveSessionTest.test_save_postgis): Adapt
78            NonConnectionStore to changes in the PostGISShapeStore
79    
80            * test/test_postgis_db.py
81            (TestPostGISSpecialCases.test_shapestore_two_geom_cols): Test
82            PostGISShapeStore with tables having two geometry columns.
83    
84    2004-02-10  Bernhard Herzog  <bh@intevation.de>
85    
86            Fix some postgis problems.  What remains to be done is real
87            handling of SRIDs as they affect how reprojection is done
88    
89            * Thuban/Model/postgisdb.py (quote_identifier): Fix typo in
90            doc-string
91            (PostGISShapeStore._fetch_table_information): New. Extend
92            inherited method to retrieve srid
93            (PostGISShapeStore.BoundingBox): Handle tables without data.
94            extent yields NULL for those
95            (PostGISShapeStore.ShapesInRegion): Use the srid of the table.
96    
97            * test/test_postgis_db.py
98            (TestPostGISSpecialCases.test_shapestore_empty_table): New test
99            for the special case of a table without any data
100            (TestPostGISShapestorePointSRID): New class with tests for a table
101            that uses srids
102            (PolygonTests): Fix a doc-string typo
103    
104            * test/postgissupport.py (PostGISDatabase.__init__): New parameter
105            reference_systems with a specification of spacial reference
106            systems to create in the new db.
107            (PostgreSQLServer.new_postgis_db)
108            (PostgreSQLServer.get_static_data_db): New parameter
109            reference_systems to be passed through ultimately to
110            PostGISDatabase.  In new_postgis_db also check whether an existing
111            db already has the right srids
112            (PostgreSQLServer.get_default_static_data_db): Add srids and a
113            table that uses srids
114            (PostGISDatabase.initdb): Create the entries for the reference
115            systems
116            (PostGISDatabase.has_data): Add reference_systems parameter to
117            check for those too
118            (upload_shapefile): New parameter srid to create tables with a
119            specific srid
120    
121    2004-02-06  Frank Koormann  <frank@intevation.de>
122    
123            * po/pt_BR.po: Fixed charset
124    
125    2004-02-05  Frank Koormann  <frank@intevation.de>
126    
127            * po/pt_BR.po: Fixed format string for error message, missing %s
128            added (Thuban/UI/application.py:273)
129    
130    2004-02-03  Frank Koormann  <frank@intevation.de>
131            
132            First version of Portuguese (Brazilian) translation
133    
134            * po/pt_BR.po: New, translation of pot (2004-01-15 16:07+0300) for
135            Brazilian Portuguese by Eduardo Patto Kanegae.
136    
137            * Thuban/UI/about.py (About.__init.py__): Added Eduardo to the list of
138            translators.
139    
140    
141    2004-01-22  Frank Koormann  <frank@intevation.de>
142    
143            * Doc/manual/thuban-manual.xml: Added section on installation of
144            Thuban under Win32 systems. Fixed image path references in the postgis
145            section. Some minor source formattings.
146    
147    2004-01-21  Frank Koormann  <frank@intevation.de>
148    
149            Make Thuban remember path selections (at least for one application run).
150    
151            * Thuban/UI/application.py (Application.OnInit): Initialize path as a
152            attribute of application object. Path is a dictionary of
153            strings, currently with the items "data" and "projection".  
154            (Application.SetPath): New, stores path for the specified item.
155            (Application.Path): New, return path for the specified item.
156    
157            * Thuban/UI/mainwindow.py
158            (MainWindow.OpenSession, MainWindow.SaveSessionAs,
159            MainWindow.AddLayer, MainWindow.AddRasterLayer,
160            MainWindow.TableOpen): Access "data" path information of the
161            application.
162            
163            * Thuban/UI/projdialog.py (ProjFrame._OnImport, ProjFrame._OnExport):
164            Access "projection" path information of the application.
165    
166    2004-01-05  Bernhard Herzog  <bh@intevation.de>
167    
168            * po/ru.po: Updated translations from Alex Shevlakov
169    
170    2004-01-05  Bernhard Herzog  <bh@intevation.de>
171    
172            * po/Makefile, po/README: Move the description of how to generate
173            the translation statistics to the README.
174    
175    2003-12-23  Bernhard Herzog  <bh@intevation.de>
176    
177            * NEWS: Update for 1.0.0
178    
179            * po/it.po: Another update from Maurizio Napolitano
180    
181    2003-12-23  Bernhard Herzog  <bh@intevation.de>
182    
183            * po/it.po: Updated translation from Maurizio Napolitano
184    
185    2003-12-23  Bernhard Herzog  <bh@intevation.de>
186    
187            * Thuban/UI/join.py (JoinDialog.__init__): Mark one more string
188            for translation
189    
190            * Thuban/UI/mainwindow.py (MainWindow.TableRename)
191            (MainWindow.RenameMap, MainWindow.RenameLayer): Mark some more
192            strings for translation
193    
194            * po/de.po: Update with the newly marked strings.
195    
196    2003-12-22  Bernhard Herzog  <bh@intevation.de>
197    
198            * HOWTO-Release: Fix the places where version numbers have to be
199            updated
200    
201    2003-12-22  Bernhard Herzog  <bh@intevation.de>
202    
203            * setup.py (setup call): 1.0.0, yeah!
204    
205            * Thuban/version.py (longversion): 1.0.0, yeah!
206    
207            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
208            1.0.0 namespace too
209    
210            * Thuban/Model/save.py (SessionSaver.write_session): Save with
211            1.0.0 namespace
212    
213            * test/test_load.py (LoadSessionTest.dtd)
214            (TestSingleLayer.file_contents)
215            (TestNonAsciiColumnName.file_contents)
216            (TestLayerVisibility.file_contents)
217            (TestClassification.file_contents, TestLabels.file_contents)
218            (TestLayerProjection.file_contents)
219            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
220            (TestLabelLayer.file_contents, TestPostGISLayer.file_contents)
221            (TestPostGISLayerPassword.file_contents)
222            (TestLoadError.file_contents, TestLoadError.test): Update for
223            1.0.0 namespace
224    
225            * test/test_save.py (SaveSessionTest.dtd)
226            (SaveSessionTest.testEmptySession)
227            (SaveSessionTest.testSingleLayer)
228            (SaveSessionTest.testLayerProjection)
229            (SaveSessionTest.testRasterLayer)
230            (SaveSessionTest.testClassifiedLayer)
231            (SaveSessionTest.test_dbf_table)
232            (SaveSessionTest.test_joined_table)
233            (SaveSessionTest.test_save_postgis): Update for 1.0.0 namespace
234    
235    2003-12-22  Bernhard Herzog  <bh@intevation.de>
236    
237            * Thuban/Model/load.py (SessionLoader.start_label): Make sure the
238            alignment flags are byte strings not unicode and that they have
239            valid values
240    
241            * test/test_load.py (TestLabelLayer): New. Test loading (and
242            indirectly saving) of maps with labels.
243    
244    2003-12-22  Bernhard Herzog  <bh@intevation.de>
245    
246            * Thuban/UI/tableview.py (TableGrid.OnDestroy)
247            (TableGrid.__init__): Handle EVT_WINDOW_DESTROY in the grid to
248            unsubscribe all subscribers.
249            (LayerTableFrame.OnDestroy): Do not unsubscribe any messages from
250            self.grid since it may already have been destroyed.
251            Fixes RT #2256
252    
253    2003-12-19  Bernhard Herzog  <bh@intevation.de>
254    
255            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
256    
257    2003-12-16  Bernhard Herzog  <bh@intevation.de>
258            
259            * debian/bitmappath.patch, debian/setup.py.patch:
260                    added to ensure compliance with FHS for debian
261            * debian/rules, debian/changelog:
262                added patches in rules to ensure compliance with FHS for debian
263    
264    2003-12-16  Bernhard Herzog  <bh@intevation.de>
265    
266            * po/Makefile (mo): Make the output a bit nicer so that it prints
267            statistics about the translations. Add a comment how produce even
268            nicer statistics with sed.
269    
270    2003-12-09  Frank Koormann   <frank@intevation.de>
271    
272            * Resources/Projections/defaults.proj:
273            French projection sample with correct accents (UNICODE).
274    
275    2003-12-05  Bernhard Herzog  <bh@intevation.de>
276    
277            * MANIFEST.in: Add the devtools directory
278    
279            * setup.py (setup call): Use license instead of licence. This
280            silences a deprecation warning on Python 2.3
281    
282    2003-12-05  Frank Koormann   <frank@intevation.de>
283    
284            Documentation synced with 1.0rc1
285    
286            * Doc/manual/thuban-manual.xml:
287            Minor formatting changes and references to database layers .
288            Introduction.Internationalization: New section on i18n.
289            MapManagement.AddingandRemovingLayers: Added item on database layers.  
290            MapManagement.TheLegend: Added section and screenshot on popup menu.
291            ProjectionManagement: Updated screenshot and sentence on EPSG.
292            Appendix.SupportedDataSources: Added PostGIS.
293            Appendix.WorkingwithPostGIS: New section.
294    
295            * Doc/manual/images/6_projection.png: Updated screenshot including
296            EPSG checkboxes.
297    
298            * Doc/manual/images/3_5_popup_menu.png: New, popup menu screenshot.
299    
300            * Doc/manual/images/app_postgis_add_layer.png,
301            Doc/manual/images/app_postgis_db_add.png,
302            Doc/manual/images/app_postgis_db_management.png:
303            New screenshots focussing on database layers
304    
305    2003-12-05  Frank Koormann   <frank@intevation.de>
306    
307            * Thuban/UI/projdialog.py (load_user_proj): If user.proj is missing
308            write warning to stderr instead of rising a warning dialog
309    
310    2003-12-03  Bernhard Herzog  <bh@intevation.de>
311    
312            Fix for RT #2243
313    
314            * Thuban/UI/mainwindow.py (MainWindow.has_selected_shape_layer):
315            New. Like has_selected_layer but for shape layers only
316            (_has_selected_shape_layer): New. Like _has_selected_layer but for
317            shape layers only
318            (layer_show_table command, layer_jointable command): Use these
319            commands should only be available for shape layers
320    
321    2003-12-03  Bernhard Herzog  <bh@intevation.de>
322    
323            * Thuban/UI/mainwindow.py (MainWindow.Unsubscribe): Deal with
324            publishers that are wx objects and may have been destroyed by wx
325            already. Fixes RT #2242.
326    
327    2003-12-03  Bernhard Herzog  <bh@intevation.de>
328    
329            * po/ru.po: Updates from Alex Shevlakov
330    
331    2003-12-03  Silke Reimer <silkeintevation.de>
332    
333            * debian/control, debian/changelog: Added gdal-support to
334                    debian package, updated to new thuban version
335    
336    
337    2003-12-03  Bernhard Herzog  <bh@intevation.de>
338    
339            * Thuban/Lib/version.py: New. Module for version number
340            manipulations. The version of make_tuple here also deals better
341            with more unusual version number strings, such as e.g.
342            "1.2+cvs20031111"
343    
344            * Thuban/version.py (make_tuple): Removed. It's now in
345            Thuban.Lib.version. Use that implementation instead.
346    
347            * test/test_lib_version.py: New. Tests for Thuban/Lib/version.py
348    
349    2003-12-02  Bernhard Herzog  <bh@intevation.de>
350    
351            * MANIFEST.in: Add debian files
352    
353            * setup.py (setup call): Add packages for the Extensions so that
354            they're installed too
355            (data_files): Add READMEs and sample data from some Extensions
356    
357            * NEWS: Add note about the extensions in binary packages
358    
359    2003-12-02  Bernhard Herzog  <bh@intevation.de>
360    
361            * Thuban/Model/save.py (SessionSaver.write_session): Save files
362            with the thuban-1.0rc1
363    
364            * Thuban/Model/load.py (SessionLoader.__init__): Recognize the
365            thuban-1.0rc1 namespace too
366    
367            * test/test_save.py (SaveSessionTest.dtd)
368            (SaveSessionTest.testEmptySession)
369            (SaveSessionTest.testSingleLayer)
370            (SaveSessionTest.testLayerProjection)
371            (SaveSessionTest.testRasterLayer)
372            (SaveSessionTest.testClassifiedLayer)
373            (SaveSessionTest.test_dbf_table)
374            (SaveSessionTest.test_joined_table)
375            (SaveSessionTest.test_save_postgis): Update to thuban-1.0rc1
376            namespace
377    
378            * test/test_load.py (LoadSessionTest.dtd): Update to thuban-1.0rc1
379            namespace
380            (TestSingleLayer.file_contents)
381            (TestNonAsciiColumnName.file_contents)
382            (TestLayerVisibility.file_contents)
383            (TestClassification.file_contents, TestLabels.file_contents)
384            (TestLayerProjection.file_contents)
385            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
386            (TestPostGISLayer.file_contents)
387            (TestPostGISLayerPassword.file_contents)
388            (TestLoadError.file_contents, TestLoadError.test): Update to
389            thuban-1.0rc1 namespace
390    
391    2003-12-01  Bernhard Herzog  <bh@intevation.de>
392    
393            * setup.py (proj4_prefix, wx_prefix, gdal_prefix): Fix these for
394            nt to better match Intevation's current w32 setup
395    
396            * HOWTO-Release: Add note about updating MANIFEST.in
397    
398            * MANIFEST.in: Add the Extensions
399    
400            * NEWS: Update for 1.0rc1
401    
402    2003-12-01  Bernhard Herzog  <bh@intevation.de>
403    
404            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Change the wild
405            cards for the dialog so that shapefiles ending in all uppercase
406            SHP are listed too
407    
408    2003-11-28  Bernhard Herzog  <bh@intevation.de>
409    
410            * Thuban/version.py (longversion): Update to 1.0rc1
411    
412            * setup.py (setup call): Update version to 1.0rc1. Use the
413            thuban@intevation.de email address as author email instead of my
414            personal one.
415    
416    2003-11-28  Bernhard Herzog  <bh@intevation.de>
417    
418            * po/de.po: Update german translation.
419    
420    2003-11-28  Bernhard Herzog  <bh@intevation.de>
421    
422            Unify the filenames stored in .thuban files so that the .thuban
423            files are more platform independend
424    
425            * Thuban/Model/save.py (unify_filename): New. Unify filenames so
426            that they can be used on both windows and unix
427            (SessionSaver.prepare_filename): New. Handle all filename
428            transformations for filenames stored in the thuban file
429            (SessionSaver.write_data_containers, SessionSaver.write_layer):
430            Use prepare_filename
431    
432            * test/test_save.py (SaveSessionTest.testSingleLayer)
433            (SaveSessionTest.testLayerProjection)
434            (SaveSessionTest.testRasterLayer)
435            (SaveSessionTest.testClassifiedLayer)
436            (SaveSessionTest.test_dbf_table)
437            (SaveSessionTest.test_joined_table): Filenames are always stored
438            with slashes on all currently supported platforms so adapt all
439            tests to this
440    
441            * test/test_load.py (LoadSessionTest.filenames): With the new
442            filename scheme the filenames in the tests should be
443            understandable on all currently supported platforms so we turn
444            this into an empty list because we don't have to normalize them
445            anymore
446    
447    2003-11-28  Bernhard Herzog  <bh@intevation.de>
448    
449            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
450            Add the ellipsoid to the projection since some Proj versions
451            complain if it's missing.
452    
453    2003-11-27  Bernhard Herzog  <bh@intevation.de>
454    
455            Corect some bounding box projection problems
456    
457            * Thuban/Model/proj.py (Projection.InverseBBox): New. Inverse
458            version of ForwardBBox
459            (Projection._transform_bbox): New. common implementation of
460            ForwardBBox and InverseBBox
461            (Projection.ForwardBBox): Use _transform_bbox.
462    
463            * test/test_proj.py (TestProjection.test): Add test for
464            InverseBBox
465    
466            * Thuban/Model/layer.py (Layer.LatLongBoundingBox)
467            (Layer.ShapesBoundingBox, RasterLayer.LatLongBoundingBox): Use the
468            new InverseBBox method to determine the unprojected bounding box
469            (Layer.ShapesInRegion): Use the ForwardBBox method to project the
470            bbox.
471    
472            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
473            Removed.
474            (TestLayer.test_arc_layer_with_projection): New. This test is
475            better able to test whether bounding boxes are projected correctly
476            than test_point_layer_with_projection
477    
478            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Use
479            InverseBBox to unproject bboxes
480    
481    2003-11-25  Bernhard Herzog  <bh@intevation.de>
482    
483            * Thuban/UI/about.py (About.__init__): Make sure we have ASCII
484            source code.
485    
486    2003-11-25  Bernhard Herzog  <bh@intevation.de>
487    
488            * Thuban/Model/layer.py (Layer.__getattr__): Removed. It was only
489            there for backwards compatibility and all code relying on that
490            should have been updated by now.
491    
492    2003-11-25  Bernhard Herzog  <bh@intevation.de>
493    
494            * test/test_load.py (TestClassification.test): Add the missing
495            round trip test.
496            (TestClassification.file_contents): Update to the newest file
497            format
498    
499    2003-11-25  Bernhard Herzog  <bh@intevation.de>
500    
501            Add very experimental (and possibly dangerous) extension to draw
502            polygons:
503    
504            * Extensions/drawshape/README: New. Brief installation
505            instructions
506    
507            * Extensions/drawshape/drawshape.py: New. Implementation of the
508            drawshape extensions
509    
510            * Extensions/drawshape/patch.diff: Patch to apply before the
511            extension can be used.
512    
513    2003-11-24  Bernhard Herzog  <bh@intevation.de>
514    
515            * Thuban/Model/data.py (ShapefileStore._open_shapefile)
516            (ShapefileStore.__init__): Factor opening the shapefile into a
517            separate method (the new _open_shapefile). This makes the code a
518            bit more readable but the real reason is that it makes some evil
519            hacks easier. :-)
520    
521    2003-11-24  Bernhard Herzog  <bh@intevation.de>
522    
523            * Thuban/Model/load.py (SessionLoader.check_attrs): If no
524            converter is specified for an attribute assume it's a string
525            containing only Latin1 characters. Update doc-string accordingly.
526            This change should fix many places where unicode objects might
527            accidentally enter Thuban.
528    
529            * test/test_load.py (TestNonAsciiColumnName): New test to check
530            what happens with column names in DBF files that contain non-ascii
531            characters
532    
533    2003-11-21  Bernhard Herzog  <bh@intevation.de>
534    
535            Enable the experimental attribute editing again and introduce a
536            command line switch to actually activate it
537    
538            * Thuban/UI/main.py (options): New. Container for options set on
539            the commmand line
540            (main): Add the --enable-attribute-editing flag.
541    
542            * Thuban/UI/identifyview.py (IdentifyView.__init__): If attribute
543            editing is enabled use the grid ctrl which allows editing of the
544            values
545    
546            * Thuban/Model/transientdb.py (AutoTransientTable.write_record):
547            New. Just delegate this to the underlying table.
548    
549    2003-11-20  Bernhard Herzog  <bh@intevation.de>
550    
551            * test/test_proj.py (ProjFileReadTests.test_read_unreadable_file):
552            Skip this test if run under non-posix systems since it only works
553            there
554    
555    2003-11-19  Bernhard Herzog  <bh@intevation.de>
556    
557            * Thuban/Model/resource.py: Rework the way gdal support is
558            determined so that we can give a reason in the about why gdal is
559            not supported.
560            (gdal_support_status): New. Variable holding a string with the
561            reason for no gdal support
562    
563            * Thuban/UI/about.py (About.__init__): Add the reason why gdal is
564            not supported to the message
565    
566    2003-11-19  Bernhard Herzog  <bh@intevation.de>
567    
568            Remove the old table interface and its test cases
569    
570            * Thuban/Model/table.py (OldTableInterfaceMixin): Removed.
571            (DBFTable, MemoryTable): Do not derive from OldTableInterfaceMixin
572            anymore
573    
574            * Thuban/Model/transientdb.py (TransientTableBase)
575            (AutoTransientTable): Do not derive from OldTableInterfaceMixin
576            anymore
577    
578            * test/test_table.py: Removed since the old interface it tests is
579            gone.
580    
581            * test/runtests.py (main): The old table interface is gone and
582            with it the deprecation warnings so remove the code that turns
583            these warnings into errors
584    
585    2003-11-19  Bernhard Herzog  <bh@intevation.de>
586    
587            * test/test_table.py: Revert to revision 1.5 again. Changing the
588            tests to use the new table interface is completely wrong since the
589            whole purpose of the tests in this module is to test the old
590            interface.
591    
592    2003-11-18  Bernhard Herzog  <bh@intevation.de>
593    
594            * Thuban/Model/postgisdb.py (PostGISConnection.MatchesParameters):
595            New. Test whether the connection matches a set of connection
596            parameters
597    
598            * Thuban/UI/dbdialog.py (DBFrame.conns_changed): Fix doc-string
599            (DBFrame.OnAdd): Use the new MatchesParameters method when looking
600            for existing connections with the same parameters and break out of
601            the loop correctly.
602    
603            * test/test_postgis_db.py (TestBriefDescription)
604            (TestPostGISSimple.test_brief_description): Rename
605            TestBriefDescription to TestPostGISSimple and the test method to
606            test_brief_description so that we can add more test methods.
607            (TestPostGISSimple.test_matches_parameters): New. Test the new
608            MatchesParameters method
609    
610    2003-11-18  Bernhard Herzog  <bh@intevation.de>
611    
612            * Thuban/Lib/connector.py (Publisher): Introduce a new flag,
613            _was_destroyed, to indicate whether an publisher instance has
614            already been destroyed.
615            (Publisher.Unsubscribe): Only disconnect if the publisher has not
616            been destroyed yet.
617            (Publisher.Destroy): Set the _was_destroyed flag to true.
618    
619            * test/test_connector.py
620            (TestPublisher.test_unsubscribe_after_destroy): New. Test that
621            calling Unsubscribe after Destroy doesn't raise an exception
622    
623    2003-11-14  Bernhard Herzog  <bh@intevation.de>
624    
625            * Thuban/UI/identifyview.py (IdentifyView.selected_shape): Fix
626            typo in doc-string
627    
628    2003-11-13  Bernhard Herzog  <bh@intevation.de>
629    
630            Quote table and column names properly for postgis.
631    
632            * Thuban/Model/postgisdb.py (quote_identifier): New. Function to
633            quote an identifier for use in an sql statement
634            (PostGISColumn.__init__): Add the quoted_name attribute
635            (PostGISTable.__init__): New instance variable quoted_tablename
636            (PostGISTable._fetch_table_information): Use the quoted table
637            name. New isntance variable quoted_geo_col with a quoted version
638            of geometry_column
639            (PostGISTable.NumRows, PostGISTable.RowIdToOrdinal)
640            (PostGISTable.RowOrdinalToId): Use the quoted table name
641            (PostGISTable.ReadValue, PostGISTable.ValueRange)
642            (PostGISTable.UniqueValues, PostGISTable.SimpleQuery)
643            (PostGISShapeStore.BoundingBox, PostGISShapeStore.Shape)
644            (PostGISShapeStore.AllShapes, PostGISShapeStore.ShapesInRegion):
645            Use quoted table and column names
646    
647            * test/test_postgis_db.py (TestPostGISSpecialCases)
648            (TestPostGISIgnoredColumns): Rename the class to
649            TestPostGISSpecialCases because that better describes the new
650            cases
651            (TestPostGISSpecialCases.test_unsupported_types)
652            (TestPostGISSpecialCases.test): Rename the method to
653            test_unsupported_types because we need a more descriptive name now
654            that there are more methods
655            (TestPostGISSpecialCases.test_table_name_quoting)
656            (TestPostGISSpecialCases.test_column_name_quoting)
657            (TestPostGISSpecialCases.test_shapestore_name_quoting): New test
658            cases to test quoting of table and column names in PostGISTable
659            and PostGISShapeStore
660    
661            * test/postgissupport.py
662            (skip_if_addgeometrycolumn_does_not_use_quote_ident): New. Skip if
663            AddGeometryColumn desn't support table or column names with sapces
664            or double quotes
665    
666    2003-11-12  Jan-Oliver Wagner <jan@intevation.de>
667    
668            * Extensions/wms/__init__.py: New: Init to make this
669            directory a package.
670    
671            * Extensions/wms/wms.py: New: Provide layers via OGC WMS.
672    
673    2003-11-11  Bernhard Herzog  <bh@intevation.de>
674    
675            * Thuban/Model/resource.py (EPSG_DEPRECATED_PROJ_FILE): New.
676            Constant for the file woth deprecated epsg projections
677            (get_system_proj_file): Update doc-string
678    
679            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Add a space
680            above the EPS widgets, introduce a check box for the deprecated
681            eps projections and a label for the epsg widgets
682            (ProjFrame._OnShowEPSG): Handle the deprecated EPSG projections
683            too
684    
685    2003-11-11  Bernhard Herzog  <bh@intevation.de>
686    
687            Avoid warnings when run under Python 2.3
688    
689            * Thuban/UI/baserenderer.py (BaseRenderer.draw_point_shape)
690            (BaseRenderer.draw_label_layer): Coordinates must be ints.
691    
692            * Thuban/UI/renderer.py (MapRenderer.make_point): Turn this into a
693            real method so that we can convert to int.
694            (MapRenderer.label_font): The font size mist be an int.
695    
696            * Thuban/UI/common.py (Color2wxColour): The color values must be
697            ints. Also, remove the unnecessary asserts.
698    
699            * test/test_load_0_8.py (TestUnicodeStrings.file_contents)
700            (TestUnicodeStrings.test): Python source code should not contain
701            non-ascii characters unless an encoding is specified in the file.
702            Therefore use \x escapes in the string literals for non-ascii
703            characters.
704    
705    2003-11-11  Bernhard Herzog  <bh@intevation.de>
706    
707            * Thuban/Model/resource.py (get_system_proj_file): Add a filename
708            parameter so that this function can be used for all proj files in
709            Resource/Projections
710            (DEFAULT_PROJ_FILE, EPSG_PROJ_FILE): New. Predefined filenames for
711            get_system_proj_file
712    
713            * Thuban/UI/projdialog.py (ProjFrame.__init__): Instead of one
714            ProjFile self.__sysProjFile use a dictionary of system ProjFile
715            objects self._sys_proj_files
716            (ProjFrame.build_dialog): Adapt to the new changes in the
717            ProjectionList constructor. Add a check button to toggle whether
718            EPSG projections are shown
719            (ProjFrame._OnShowEPSG): New. Handler for the epsg check button
720            events.
721            (ProjFrame.load_user_proj, ProjFrame.load_system_proj): Only show
722            the busy cursor if the files have not yet been loaded by the
723            dialog.
724            (ProjFrame.load_system_proj): Add a parameter for the name of the
725            proj file. Maintain the dictionary of system projections
726            self._sys_proj_files
727    
728            * Thuban/UI/projlist.py (ProjectionList): Merge the system_projs,
729            user_projs parameters into one parameter proj_files which is a
730            list of proj files.
731            (ProjectionList._subscribe_proj_files)
732            (ProjectionList._unsubscribe_proj_files): New. Move
733            subscription/unsubscription of projfile messages to separate
734            methods
735            (ProjectionList.Destroy): The unsubscribe is now done in
736            _unsubscribe_proj_files
737            (ProjectionList.update_projections): We now have a list of proj
738            file objects
739            (ProjectionList.SetProjFiles): New method to set a new list of
740            proj file objects
741    
742            * test/test_proj.py (ProjFileReadTests.test_get_system_proj_file):
743            Specify explicitly which system proj file to load.
744    
745    2003-11-11  Bernhard Herzog  <bh@intevation.de>
746    
747            * Thuban/Model/load.py (SessionLoader.Destroy): New. Clear all
748            instance variables to cut cyclic references. The GC would have
749            collected the loader eventually but it can happen that it doesn't
750            run at all until thuban is closed (2.3 but not 2.2 tries a bit
751            harder and forces a collection when the interpreter terminates)
752            (load_session): Call the handler's Destroy method to make sure
753            that it gets garbage collected early. Otherwise it will be
754            collected very late if at all and it holds some references to e.g.
755            shapestores and the session which can lead to leaks (of e.g. the
756            temporary files)
757    
758            * test/test_load.py (TestSingleLayer.test_leak): New. test for the
759            resource leak in load_session
760    
761    2003-11-10  Bernhard Herzog  <bh@intevation.de>
762    
763            * Thuban/UI/baserenderer.py: Add a way to specify how layers in
764            extensions are to be rendered.
765            (_renderer_extensions): New. List with renderer for layers in
766            extensions
767            (add_renderer_extension): New. Add a renderer extension
768            (init_renderer_extensions): New. Init the renderer extensions
769            (BaseRenderer.render_map_incrementally): Search
770            _renderer_extensions for how to draw unknown layer types
771            (BaseRenderer.draw_raster_data): Add format parameter so that
772            formats other than BMP can be drawn
773            (BaseRenderer.draw_raster_layer): Pass an explicit format to
774            draw_raster_data
775    
776            * Thuban/UI/renderer.py (raster_format_map): New. Mapping form the
777            strings of the format parameter of draw_raster_data method to wx
778            constants
779            (MapRenderer.draw_raster_data): Add the format parameter and use
780            raster_format_map to map it to the right wxwindows constant for
781            wxImageFromStream
782    
783            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Add
784            the format parameter and record it
785            (TestBaseRenderer.test_raster_no_projection): check the format
786            paramter of the draw_raster_data method
787            (TestBaseRenderer.test_renderer_extension): New. Test the renderer
788            extension facility
789    
790    2003-11-07  Bernhard Herzog  <bh@intevation.de>
791    
792            Tweak the usage of the sqlite database to make common use cases
793            more responsive. In most cases copying the data to the sqlite
794            database takes so long that using sqlite doesn't have enough
795            advantages.
796    
797            * Thuban/Model/transientdb.py (TransientTableBase.ValueRange): Add
798            comments about performance and query the min and max in separate
799            statements because only that way will indexes be used.
800            (TransientTableBase.UniqueValues): Add some comments about
801            performance.
802            (AutoTransientTable.ValueRange, AutoTransientTable.UniqueValues):
803            Do not copy the data to the transient DB but use the transient
804            copy if it exists. See the new comments for the performance trade
805            offs
806    
807            * test/test_transientdb.py
808            (TestTransientTable.test_auto_transient_table): Make sure that the
809            data is copied to the transient database at some point.
810    
811    2003-11-03  Bernhard Herzog  <bh@intevation.de>
812    
813            * Thuban/Model/data.py (ShapefileStore.ShapesInRegion): Bind some
814            globals to locals so that it's a bit faster
815    
816    2003-11-03  Bernhard Herzog  <bh@intevation.de>
817    
818            * Thuban/UI/baserenderer.py
819            (BaseRenderer.draw_shape_layer_incrementally): Use the ReadValue
820            method. ReadValue is faster than ReadRowAsDict since it only reads
821            one cell especially now that the dbf file objects actually
822            implement it.
823    
824            * Thuban/Model/table.py (DBFTable.ReadValue): Use the new
825            read_attribute method of the dbf objects
826    
827    2003-11-03  Bernhard Herzog  <bh@intevation.de>
828    
829            * Extensions/profiling/profiling.py (popup_dialog_box): New config
830            variable to indicate whether the result should be shown in a
831            dialog box
832            (profile_screen_renderer, time_screen_renderer): Only show a
833            dialog box if popup_dialog_box is true.
834            (profile_screen_renderer): Flush stdout after the printing the
835            first part of the "profiling..." message
836    
837            * Thuban/UI/baserenderer.py
838            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
839            brushes for the groups so that they're not created over and over
840            again
841    
842            * Thuban/Model/classification.py (Classification.__getattr__)
843            (Classification._compile_classification)
844            (Classification._clear_compiled_classification): New. Methods to
845            manage a 'compiled' representation of the classification groups
846            which is created on demand
847            (Classification.InsertGroup, Classification.RemoveGroup)
848            (Classification.ReplaceGroup): reset the compiled representation
849            (Classification.FindGroup): Use the compiled representation to
850            find the matching group
851            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
852    
853    2003-10-31  Bernhard Herzog  <bh@intevation.de>
854    
855            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
856            Send a CLASS_CHANGED message
857            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
858            not return the removed group since it wasn't used.
859    
860            * test/test_classification.py
861            (TestClassification.test_set_default_group): New. Test the
862            SetDefaultGroup method
863            (TestClassification.test_insert_group): New. Test the InsertGroup
864            method
865            (TestClassification.test_remove_group): New. Test the RemoveGroup
866            method
867            (TestClassification.test_replace_group): New. Test the
868            ReplaceGroup method
869    
870    2003-10-31  Bernhard Herzog  <bh@intevation.de>
871    
872            * test/test_classification.py (TestClassification.setUp):
873            Subscribe to the CLASS_CHANGED messages
874            (TestClassification.tearDown): New. Destroy the classification
875            properly
876            (TestClassification.test_defaults): Add tests for the default line
877            width and whether no messages were sent yet
878            (TestClassification.test_set_default_properties): Add tests for
879            messages and setting the default line width
880            (TestClassification.test_add_singleton)
881            (TestClassification.test_add_range)
882            (TestClassification.test_multiple_groups): Add tests for messages
883    
884    2003-10-31  Bernhard Herzog  <bh@intevation.de>
885    
886            Some more refactoring in preparation for new tests:
887    
888            * test/test_classification.py (TestClassification.setUp): New.
889            Instantiate the classification here. Update the test methods
890            accordingly.
891            (TestClassification.test_multiple_groups): Make sure that the two
892            singletons matching 1 are considered different.
893    
894    2003-10-31  Bernhard Herzog  <bh@intevation.de>
895    
896            * test/test_classification.py (red, green, blue): New. These
897            constants were used in several cases. Update the relevant methods.
898            (TestClassification.test_defaults)
899            (TestClassification.test_set_default_properties)
900            (TestClassification.test_add_singleton)
901            (TestClassification.test_add_range)
902            (TestClassification.test_multiple_groups)
903            (TestClassification.test_deepcopy): New. These were formerly all
904            part of the single method test.
905            (TestClassification.test_deepcopy): Removed.
906            (TestClassIterator): Removed. The test case is now a method of
907            TestClassification since it tests part of the public interface of
908            Classification
909            (TestClassification.test_iterator): New. Used to be
910            TestClassIterator effectively
911    
912    2003-10-31  Jan-Oliver Wagner <jan@intevation.de>
913    
914            GUIfied the functions of the profiling extension.
915    
916            * /Extensions/profiling/__init__.py: New: Init to make this
917            directory a package.
918    
919            * Extensions/profiling/profiling.py: Moved menu entries to
920            the Extensions menu. Applied _() for strings.
921            (profile_screen_renderer): Catch the detailed printout and present
922            it in a dialog.
923            (time_screen_renderer): Raise a dialog to present the result instead
924            of printing it to stdout.
925    
926    2003-10-31  Bernhard Herzog  <bh@intevation.de>
927    
928            * test/test_classification.py (TestClassGroupProperties)
929            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
930            (TestClassGroupSingleton, TestClassIterator, TestClassification):
931            Split TestClassification into several classes, one for each class
932            being tested. TestClassification itself now only tests
933            Classification. This split makes changes to the tests a bit easier
934    
935    2003-10-31  Bernhard Herzog  <bh@intevation.de>
936    
937            * Extensions/profiling/profiling.py: New. Extension to measure
938            Thuban performance
939    
940    2003-10-31  Frank Koormann <frank@intevation.de>
941    
942            Added two items to legend popup menu: Remove Layer and Show Layer Table
943    
944            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
945            LegendPanel._OnShowTable): New event handlers, call the corresponding
946            mainwindow methods.
947            (LegendTree._OnRightClick): Added items to popup menu.
948    
949    2003-10-30  Bernhard Herzog  <bh@intevation.de>
950    
951            * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle
952            EVT_WINDOW_DESTROY
953            (ThubanFrame.OnDestroy): New. Handler for EVT_WINDOW_DESTROY. Does
954            nothing but is convenient for the derived classes.
955    
956            * Thuban/UI/tableview.py
957            (TableFrame.OnDestroy, LayerTableFrame.OnDestroy): New.
958            Unsubscribe the messages here not in OnClose because that might
959            get called multiple times. Fixes RT #2196
960            (TableFrame.OnClose, LayerTableFrame.OnClose): Removed. Not needed
961            anymore.
962    
963            * README: Update the minimum requirement for wxPython. Since we
964            now use the EVT_WINDOW_DESTROY event, we need at least 2.4.0.4,
965            the version in which that was introduced for all platforms
966    
967    2003-10-30  Frank Koormann <frank@intevation.de>
968    
969            * Thuban/UI/join.py (JoinDialog.OnJoin): Wrapped the major parts of
970            the join process in a ThubanBeginBusyCursor, ThubanEndBusyCursor
971            frame.
972    
973    2003-10-30  Jan-Oliver Wagner <jan@intevation.de>
974    
975            Improved APR import extension, added further EPSG definitions
976            and some cleanup regarding string class.
977    
978            * test/test_proj.py (TestProjection.test_get_projection_units_geo):
979            Added test for alias 'longlat'.
980    
981            * Resources/Projections/epsg-deprecated.proj: New. Contains
982            deprecated EPSG definitions.
983    
984            * Extensions/importAPR/odb.py (ODBBaseObject.TreeInfo): Added
985            the variable names for objects.
986    
987            * Extensions/importAPR/apr.py (APR_BLnSym, APR_BMkSym, APR_BShSym): New.
988            Copied from importAPR and provided with documentation.
989    
990            * Extensions/importAPR/importAPR.py (APR_BLnSym, APR_BMkSym, APR_BShSym):
991            Moved to apr.py.
992            (APR_View): Added object ref 'ITheme'.
993    
994            * Thuban/Lib/fileutil.py, Thuban/UI/proj4dialog.py: Replaced string
995            split function by corresponding use of the string class method.
996    
997            * Thuban/Model/xmlwriter.py: Replaced string replace function by
998            corresponding string method.
999    
1000    2003-10-29  Bernhard Herzog  <bh@intevation.de>
1001    
1002            * Thuban/UI/baserenderer.py
1003            (BaseRenderer.draw_shape_layer_incrementally): Speed up the
1004            special case of a classification that only has the default group
1005    
1006    2003-10-27  Bernhard Herzog  <bh@intevation.de>
1007    
1008            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
1009    
1010            * po/de.po: Update.
1011    
1012            * Thuban/UI/application.py
1013            (ThubanApplication.ShowExceptionDialog): Handle translation of the
1014            dialog message properly
1015    
1016    2003-10-27  Bernhard Herzog  <bh@intevation.de>
1017    
1018            Rework how localization works so that we use wx's translation
1019            functions when running Thuban as a normal application but not when
1020            we don't need any UI, such as in the test suite. See the comment
1021            in Thuban/__init__.py for details
1022    
1023            * Thuban/__init__.py (_): Add one level of indirection to make the
1024            translation handling more flexible and to make it possible to use
1025            either wx's translation services or not.
1026            (gettext_identity, translation_function_installed)
1027            (install_translation_function): New function to help with this
1028    
1029            * Thuban/UI/__init__.py: Install the wx specific translation
1030            function if it's OK to do that
1031    
1032            * test/support.py (initthuban): Install a dummy translation
1033            function so that importing Thuban.UI doesn't install a wx specific
1034            one for which would need to import wxPython
1035    
1036    2003-10-27  Bernhard Herzog  <bh@intevation.de>
1037    
1038            * HOWTO-Release: Source archives should be created first and the
1039            binary packages should be created from the source archives.
1040            There's an official debian package now so there's no need to test
1041            the rpm on debian anymore
1042    
1043    2003-10-27  Bernhard Herzog  <bh@intevation.de>
1044    
1045            Several rendering changes:
1046    
1047             - Render the selection into a separate bitmap so that only that
1048               bitmap needs to be redrawn when the selection changes
1049    
1050             - Render incrementally showing previews and allowing interaction
1051               before rendering is complete
1052    
1053             - Update the renderer interface a bit. Most parameters of
1054               RenderMap are now parameters of the constructor
1055    
1056            * Thuban/UI/baserenderer.py (BaseRenderer.__init__): Add the map
1057            and the update region as parameters. Update the doc-string
1058            (BaseRenderer.render_map_incrementally): New. Generator function
1059            to renders the map incrementally
1060            (BaseRenderer.render_map): Remove the map argument (it's now in
1061            the constructor) and simply iterate over the
1062            render_map_incrementally generator to draw the map.
1063            (BaseRenderer.draw_shape_layer_incrementally)
1064            (BaseRenderer.draw_shape_layer): Renamed to
1065            draw_shape_layer_incrementally and changed into a generator that
1066            yields True every 500 shapes. Used by render_map_incrementally to
1067            render shape layers incrementally
1068    
1069            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Removed the
1070            map and region parameters which are now in the constructor
1071            (ScreenRenderer.RenderMapIncrementally): New. Public frontend for
1072            the inherited render_map_incrementally.
1073            (BaseRenderer.draw_shape_layer): Removed.
1074            (ScreenRenderer.draw_selection_incrementally): New. The selection
1075            drawing part of the removed draw_shape_layer as a generator
1076            (ScreenRenderer.layer_shapes): Update because of the region
1077            parameter change
1078            (ExportRenderer.__init__): New. Extend the inherited constructor
1079            with the destination region for the drawing
1080            (ExportRenderer.RenderMap): Removed the map and region parameters
1081            which are now in the constructor
1082    
1083            * Thuban/UI/view.py (MapCanvas.PreviewBitmap): New. Return a
1084            bitmap suitable for a preview in a tool
1085            (CanvasPanTool.MouseMove): Use the PreviewBitmap method to get the
1086            bitmap
1087            (MapPrintout.draw_on_dc): Adapt to new renderer interface
1088            (MapCanvas.OnPaint): Handle drawing the selection bitmap if it
1089            exists
1090            (MapCanvas.OnIdle): Update the logic to deal with incremental
1091            rendering and the selection bitmap
1092            (MapCanvas._do_redraw): Handle the instantiation of the render
1093            iterator and the redraws during rendering
1094            (MapCanvas._render_iterator): New. Generator to incrementally
1095            redraw both bitmaps
1096            (MapCanvas.Export): Adapt to new renderer interface.
1097            (MapCanvas.full_redraw): Reset the selection bitmap and the
1098            renderer iterator too
1099            (MapCanvas.redraw_selection): New. Force a redraw of the selection
1100            bitmap
1101            (MapCanvas.shape_selected): Only redraw the selection bitmap
1102    
1103            * test/test_baserenderer.py
1104            (TestBaseRenderer.test_polygon_no_projection)
1105            (TestBaseRenderer.test_raster_no_projection)
1106            (TestBaseRenderer.test_point_map_projection)
1107            (TestBaseRenderer.test_point_layer_and_map_projection)
1108            (TestBaseRenderer.test_point_layer_projection)
1109            (TestBaseRenderer.test_point_with_classification): Adapt to new
1110            renderer interface
1111    
1112    2003-10-24  Bernhard Herzog  <bh@intevation.de>
1113    
1114            * libraries/thuban/wxproj.cpp (draw_polygon_shape)
1115            (point_in_polygon_shape, shape_centroid): Raise an exception if
1116            the shape can't be read. Previously invalid shape ids would lead
1117            to a segfault.
1118    
1119            * test/test_wxproj.py (TestShapeCentroid.test_invalid_shape_id):
1120            New. test whether an exception is raised for invalid shape ids
1121    
1122    2003-10-24  Jan-Oliver Wagner <jan@intevation.de>
1123    
1124            * Thuban/Model/proj.py (Projection.GetProjectedUnits): Added 'longlat'
1125            as alias for 'latlong'.
1126    
1127            * Thuban/UI/projdialog.py (ProjFrame.__init__): Added 'longlat'
1128            as alias for 'latlong'.
1129    
1130    2003-10-24  Jan-Oliver Wagner <jan@intevation.de>
1131    
1132            * Thuban/UI/projdialog.py (ProjFrame.proj_selection_changed): Set
1133            the projection even for the UnknownPanel.
1134            (UnknownProjPanel.__init__): Define the text and create the textctrl
1135            widget.
1136            (UnknownProjPanel._DoLayout): Replaced static text widget by the
1137            textctrl created in __init__.
1138            (UnknownProjPanel.SetProjection): Set the text for the text ctrl
1139            including the parameters of the projection.
1140            
1141    2003-10-24  Jan-Oliver Wagner <jan@intevation.de>
1142    
1143            * Resources/Projections/epsg.proj: New. This is a list of
1144            EPSG codes with parameters for proj. The list has been
1145            generated using devtools/create_epsg.py based on the
1146            file nad/epsg of the proj 4.4.7 package. Four projection
1147            definitions have been deleted as they are not accepted by proj:
1148            "CH1903+ / LV95", "Bern 1898 (Bern) / LV03C", "CH1903 / LV03"
1149            and "HD72 / EOV".
1150    
1151    2003-10-22  Bernhard Herzog  <bh@intevation.de>
1152    
1153            Some more tweaks to the projection dialog which should fix RT
1154            #1886.
1155    
1156            * Thuban/UI/projlist.py (ProjectionList.Destroy): Unsubscribe from
1157            the ProjFile's messages and call the base class methods correctly
1158            (ProjectionList.SelectProjection): Set the wxLIST_STATE_FOCUSED
1159            flag on the newly selected item too. Otherwise some other item is
1160            focused and the first time the focus is moved with the keyboard
1161            the selection moves in unexpected ways.
1162    
1163            * Thuban/UI/projdialog.py (ProjFrame.__init__): Do not set the
1164            focus on the OK button, only on the projection list. That way the
1165            list really has the focus initially
1166            (ProjFrame.OnClose): Call the projection list's Destroy method to
1167            make it unsubscribe all messages
1168    
1169    2003-10-21  Bernhard Herzog  <bh@intevation.de>
1170    
1171            Rework the projection dialog to fix a few bugs, including RT 2166
1172            and most of 2168
1173    
1174            * Thuban/UI/projlist.py: New. The class ProjectionList is a
1175            special wxListCtrl to show a list of projections in a more MVC
1176            fashion
1177    
1178            * Thuban/UI/projdialog.py (ProjFrame): Substantial changes
1179            throughout the class. The main change is to use the ProjectionList
1180            class instead of a normal wxListBox. Also, add an explicit
1181            "Unknown" projection to the projection choice control.
1182            (ProjPanel.__init__): Add an "unknown" ellipsoid
1183            (TMPanel.__init__, LCCPanel.__init__): Tweak the order of
1184            instantiation of the panel's controls to make the tab-order more
1185            natural
1186    
1187    2003-10-21  Bernhard Herzog  <bh@intevation.de>
1188    
1189            * test/test_load.py (TestSingleLayer.file_contents)
1190            (TestSingleLayer.test): Add non-ascii characters to the titles of
1191            session, map and layer. This is effectively a port of the
1192            TestUnicodeStrings test in test_load_0_8.py which for some reason
1193            was only added there.
1194    
1195            * test/test_load_0_9.py (TestSingleLayer.file_contents)
1196            (TestSingleLayer.test): Same as in test_load.py: add non-ascii
1197            characters to the titles of session, map and layer,.
1198    
1199  2003-10-21  Bernhard Herzog  <bh@intevation.de>  2003-10-21  Bernhard Herzog  <bh@intevation.de>
1200    
1201          Add EPSG projection handling to .thuban files          Add EPSG projection handling to .thuban files

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

root@scm.wald.intevation.org
ViewVC Help
Powered by ViewVC 1.1.26