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

Legend:
Removed from v.1783  
changed lines
  Added in v.2053

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26