/[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 1659 by bh, Tue Aug 26 10:35:20 2003 UTC revision 2013 by silke, Wed Dec 3 10:37:05 2003 UTC
# Line 1  Line 1 
1    2003-12-03  Silke Reimer <silkeintevation.de>
2    
3            * debian/control, debian/changelog: Added gdal-support to
4                    debian package, updated to new thuban version
5    
6    
7    2003-12-03  Bernhard Herzog  <[email protected]>
8    
9            * Thuban/Lib/version.py: New. Module for version number
10            manipulations. The version of make_tuple here also deals better
11            with more unusual version number strings, such as e.g.
12            "1.2+cvs20031111"
13    
14            * Thuban/version.py (make_tuple): Removed. It's now in
15            Thuban.Lib.version. Use that implementation instead.
16    
17            * test/test_lib_version.py: New. Tests for Thuban/Lib/version.py
18    
19    2003-12-02  Bernhard Herzog  <[email protected]>
20    
21            * MANIFEST.in: Add debian files
22    
23            * setup.py (setup call): Add packages for the Extensions so that
24            they're installed too
25            (data_files): Add READMEs and sample data from some Extensions
26    
27            * NEWS: Add note about the extensions in binary packages
28    
29    2003-12-02  Bernhard Herzog  <[email protected]>
30    
31            * Thuban/Model/save.py (SessionSaver.write_session): Save files
32            with the thuban-1.0rc1
33    
34            * Thuban/Model/load.py (SessionLoader.__init__): Recognize the
35            thuban-1.0rc1 namespace too
36    
37            * test/test_save.py (SaveSessionTest.dtd)
38            (SaveSessionTest.testEmptySession)
39            (SaveSessionTest.testSingleLayer)
40            (SaveSessionTest.testLayerProjection)
41            (SaveSessionTest.testRasterLayer)
42            (SaveSessionTest.testClassifiedLayer)
43            (SaveSessionTest.test_dbf_table)
44            (SaveSessionTest.test_joined_table)
45            (SaveSessionTest.test_save_postgis): Update to thuban-1.0rc1
46            namespace
47    
48            * test/test_load.py (LoadSessionTest.dtd): Update to thuban-1.0rc1
49            namespace
50            (TestSingleLayer.file_contents)
51            (TestNonAsciiColumnName.file_contents)
52            (TestLayerVisibility.file_contents)
53            (TestClassification.file_contents, TestLabels.file_contents)
54            (TestLayerProjection.file_contents)
55            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
56            (TestPostGISLayer.file_contents)
57            (TestPostGISLayerPassword.file_contents)
58            (TestLoadError.file_contents, TestLoadError.test): Update to
59            thuban-1.0rc1 namespace
60    
61    2003-12-01  Bernhard Herzog  <[email protected]>
62    
63            * setup.py (proj4_prefix, wx_prefix, gdal_prefix): Fix these for
64            nt to better match Intevation's current w32 setup
65    
66            * HOWTO-Release: Add note about updating MANIFEST.in
67    
68            * MANIFEST.in: Add the Extensions
69    
70            * NEWS: Update for 1.0rc1
71    
72    2003-12-01  Bernhard Herzog  <[email protected]>
73    
74            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Change the wild
75            cards for the dialog so that shapefiles ending in all uppercase
76            SHP are listed too
77    
78    2003-11-28  Bernhard Herzog  <[email protected]>
79    
80            * Thuban/version.py (longversion): Update to 1.0rc1
81    
82            * setup.py (setup call): Update version to 1.0rc1. Use the
83            [email protected] email address as author email instead of my
84            personal one.
85    
86    2003-11-28  Bernhard Herzog  <[email protected]>
87    
88            * po/de.po: Update german translation.
89    
90    2003-11-28  Bernhard Herzog  <[email protected]>
91    
92            Unify the filenames stored in .thuban files so that the .thuban
93            files are more platform independend
94    
95            * Thuban/Model/save.py (unify_filename): New. Unify filenames so
96            that they can be used on both windows and unix
97            (SessionSaver.prepare_filename): New. Handle all filename
98            transformations for filenames stored in the thuban file
99            (SessionSaver.write_data_containers, SessionSaver.write_layer):
100            Use prepare_filename
101    
102            * test/test_save.py (SaveSessionTest.testSingleLayer)
103            (SaveSessionTest.testLayerProjection)
104            (SaveSessionTest.testRasterLayer)
105            (SaveSessionTest.testClassifiedLayer)
106            (SaveSessionTest.test_dbf_table)
107            (SaveSessionTest.test_joined_table): Filenames are always stored
108            with slashes on all currently supported platforms so adapt all
109            tests to this
110    
111            * test/test_load.py (LoadSessionTest.filenames): With the new
112            filename scheme the filenames in the tests should be
113            understandable on all currently supported platforms so we turn
114            this into an empty list because we don't have to normalize them
115            anymore
116    
117    2003-11-28  Bernhard Herzog  <[email protected]>
118    
119            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
120            Add the ellipsoid to the projection since some Proj versions
121            complain if it's missing.
122    
123    2003-11-27  Bernhard Herzog  <[email protected]>
124    
125            Corect some bounding box projection problems
126    
127            * Thuban/Model/proj.py (Projection.InverseBBox): New. Inverse
128            version of ForwardBBox
129            (Projection._transform_bbox): New. common implementation of
130            ForwardBBox and InverseBBox
131            (Projection.ForwardBBox): Use _transform_bbox.
132    
133            * test/test_proj.py (TestProjection.test): Add test for
134            InverseBBox
135    
136            * Thuban/Model/layer.py (Layer.LatLongBoundingBox)
137            (Layer.ShapesBoundingBox, RasterLayer.LatLongBoundingBox): Use the
138            new InverseBBox method to determine the unprojected bounding box
139            (Layer.ShapesInRegion): Use the ForwardBBox method to project the
140            bbox.
141    
142            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
143            Removed.
144            (TestLayer.test_arc_layer_with_projection): New. This test is
145            better able to test whether bounding boxes are projected correctly
146            than test_point_layer_with_projection
147    
148            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Use
149            InverseBBox to unproject bboxes
150    
151    2003-11-25  Bernhard Herzog  <[email protected]>
152    
153            * Thuban/UI/about.py (About.__init__): Make sure we have ASCII
154            source code.
155    
156    2003-11-25  Bernhard Herzog  <[email protected]>
157    
158            * Thuban/Model/layer.py (Layer.__getattr__): Removed. It was only
159            there for backwards compatibility and all code relying on that
160            should have been updated by now.
161    
162    2003-11-25  Bernhard Herzog  <[email protected]>
163    
164            * test/test_load.py (TestClassification.test): Add the missing
165            round trip test.
166            (TestClassification.file_contents): Update to the newest file
167            format
168    
169    2003-11-25  Bernhard Herzog  <[email protected]>
170    
171            Add very experimental (and possibly dangerous) extension to draw
172            polygons:
173    
174            * Extensions/drawshape/README: New. Brief installation
175            instructions
176    
177            * Extensions/drawshape/drawshape.py: New. Implementation of the
178            drawshape extensions
179    
180            * Extensions/drawshape/patch.diff: Patch to apply before the
181            extension can be used.
182    
183    2003-11-24  Bernhard Herzog  <[email protected]>
184    
185            * Thuban/Model/data.py (ShapefileStore._open_shapefile)
186            (ShapefileStore.__init__): Factor opening the shapefile into a
187            separate method (the new _open_shapefile). This makes the code a
188            bit more readable but the real reason is that it makes some evil
189            hacks easier. :-)
190    
191    2003-11-24  Bernhard Herzog  <[email protected]>
192    
193            * Thuban/Model/load.py (SessionLoader.check_attrs): If no
194            converter is specified for an attribute assume it's a string
195            containing only Latin1 characters. Update doc-string accordingly.
196            This change should fix many places where unicode objects might
197            accidentally enter Thuban.
198    
199            * test/test_load.py (TestNonAsciiColumnName): New test to check
200            what happens with column names in DBF files that contain non-ascii
201            characters
202    
203    2003-11-21  Bernhard Herzog  <[email protected]>
204    
205            Enable the experimental attribute editing again and introduce a
206            command line switch to actually activate it
207    
208            * Thuban/UI/main.py (options): New. Container for options set on
209            the commmand line
210            (main): Add the --enable-attribute-editing flag.
211    
212            * Thuban/UI/identifyview.py (IdentifyView.__init__): If attribute
213            editing is enabled use the grid ctrl which allows editing of the
214            values
215    
216            * Thuban/Model/transientdb.py (AutoTransientTable.write_record):
217            New. Just delegate this to the underlying table.
218    
219    2003-11-20  Bernhard Herzog  <[email protected]>
220    
221            * test/test_proj.py (ProjFileReadTests.test_read_unreadable_file):
222            Skip this test if run under non-posix systems since it only works
223            there
224    
225    2003-11-19  Bernhard Herzog  <[email protected]>
226    
227            * Thuban/Model/resource.py: Rework the way gdal support is
228            determined so that we can give a reason in the about why gdal is
229            not supported.
230            (gdal_support_status): New. Variable holding a string with the
231            reason for no gdal support
232    
233            * Thuban/UI/about.py (About.__init__): Add the reason why gdal is
234            not supported to the message
235    
236    2003-11-19  Bernhard Herzog  <[email protected]>
237    
238            Remove the old table interface and its test cases
239    
240            * Thuban/Model/table.py (OldTableInterfaceMixin): Removed.
241            (DBFTable, MemoryTable): Do not derive from OldTableInterfaceMixin
242            anymore
243    
244            * Thuban/Model/transientdb.py (TransientTableBase)
245            (AutoTransientTable): Do not derive from OldTableInterfaceMixin
246            anymore
247    
248            * test/test_table.py: Removed since the old interface it tests is
249            gone.
250    
251            * test/runtests.py (main): The old table interface is gone and
252            with it the deprecation warnings so remove the code that turns
253            these warnings into errors
254    
255    2003-11-19  Bernhard Herzog  <[email protected]>
256    
257            * test/test_table.py: Revert to revision 1.5 again. Changing the
258            tests to use the new table interface is completely wrong since the
259            whole purpose of the tests in this module is to test the old
260            interface.
261    
262    2003-11-18  Bernhard Herzog  <[email protected]>
263    
264            * Thuban/Model/postgisdb.py (PostGISConnection.MatchesParameters):
265            New. Test whether the connection matches a set of connection
266            parameters
267    
268            * Thuban/UI/dbdialog.py (DBFrame.conns_changed): Fix doc-string
269            (DBFrame.OnAdd): Use the new MatchesParameters method when looking
270            for existing connections with the same parameters and break out of
271            the loop correctly.
272    
273            * test/test_postgis_db.py (TestBriefDescription)
274            (TestPostGISSimple.test_brief_description): Rename
275            TestBriefDescription to TestPostGISSimple and the test method to
276            test_brief_description so that we can add more test methods.
277            (TestPostGISSimple.test_matches_parameters): New. Test the new
278            MatchesParameters method
279    
280    2003-11-18  Bernhard Herzog  <[email protected]>
281    
282            * Thuban/Lib/connector.py (Publisher): Introduce a new flag,
283            _was_destroyed, to indicate whether an publisher instance has
284            already been destroyed.
285            (Publisher.Unsubscribe): Only disconnect if the publisher has not
286            been destroyed yet.
287            (Publisher.Destroy): Set the _was_destroyed flag to true.
288    
289            * test/test_connector.py
290            (TestPublisher.test_unsubscribe_after_destroy): New. Test that
291            calling Unsubscribe after Destroy doesn't raise an exception
292    
293    2003-11-14  Bernhard Herzog  <[email protected]>
294    
295            * Thuban/UI/identifyview.py (IdentifyView.selected_shape): Fix
296            typo in doc-string
297    
298    2003-11-13  Bernhard Herzog  <[email protected]>
299    
300            Quote table and column names properly for postgis.
301    
302            * Thuban/Model/postgisdb.py (quote_identifier): New. Function to
303            quote an identifier for use in an sql statement
304            (PostGISColumn.__init__): Add the quoted_name attribute
305            (PostGISTable.__init__): New instance variable quoted_tablename
306            (PostGISTable._fetch_table_information): Use the quoted table
307            name. New isntance variable quoted_geo_col with a quoted version
308            of geometry_column
309            (PostGISTable.NumRows, PostGISTable.RowIdToOrdinal)
310            (PostGISTable.RowOrdinalToId): Use the quoted table name
311            (PostGISTable.ReadValue, PostGISTable.ValueRange)
312            (PostGISTable.UniqueValues, PostGISTable.SimpleQuery)
313            (PostGISShapeStore.BoundingBox, PostGISShapeStore.Shape)
314            (PostGISShapeStore.AllShapes, PostGISShapeStore.ShapesInRegion):
315            Use quoted table and column names
316    
317            * test/test_postgis_db.py (TestPostGISSpecialCases)
318            (TestPostGISIgnoredColumns): Rename the class to
319            TestPostGISSpecialCases because that better describes the new
320            cases
321            (TestPostGISSpecialCases.test_unsupported_types)
322            (TestPostGISSpecialCases.test): Rename the method to
323            test_unsupported_types because we need a more descriptive name now
324            that there are more methods
325            (TestPostGISSpecialCases.test_table_name_quoting)
326            (TestPostGISSpecialCases.test_column_name_quoting)
327            (TestPostGISSpecialCases.test_shapestore_name_quoting): New test
328            cases to test quoting of table and column names in PostGISTable
329            and PostGISShapeStore
330    
331            * test/postgissupport.py
332            (skip_if_addgeometrycolumn_does_not_use_quote_ident): New. Skip if
333            AddGeometryColumn desn't support table or column names with sapces
334            or double quotes
335    
336    2003-11-12  Jan-Oliver Wagner <[email protected]>
337    
338            * Extensions/wms/__init__.py: New: Init to make this
339            directory a package.
340    
341            * Extensions/wms/wms.py: New: Provide layers via OGC WMS.
342    
343    2003-11-11  Bernhard Herzog  <[email protected]>
344    
345            * Thuban/Model/resource.py (EPSG_DEPRECATED_PROJ_FILE): New.
346            Constant for the file woth deprecated epsg projections
347            (get_system_proj_file): Update doc-string
348    
349            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Add a space
350            above the EPS widgets, introduce a check box for the deprecated
351            eps projections and a label for the epsg widgets
352            (ProjFrame._OnShowEPSG): Handle the deprecated EPSG projections
353            too
354    
355    2003-11-11  Bernhard Herzog  <[email protected]>
356    
357            Avoid warnings when run under Python 2.3
358    
359            * Thuban/UI/baserenderer.py (BaseRenderer.draw_point_shape)
360            (BaseRenderer.draw_label_layer): Coordinates must be ints.
361    
362            * Thuban/UI/renderer.py (MapRenderer.make_point): Turn this into a
363            real method so that we can convert to int.
364            (MapRenderer.label_font): The font size mist be an int.
365    
366            * Thuban/UI/common.py (Color2wxColour): The color values must be
367            ints. Also, remove the unnecessary asserts.
368    
369            * test/test_load_0_8.py (TestUnicodeStrings.file_contents)
370            (TestUnicodeStrings.test): Python source code should not contain
371            non-ascii characters unless an encoding is specified in the file.
372            Therefore use \x escapes in the string literals for non-ascii
373            characters.
374    
375    2003-11-11  Bernhard Herzog  <[email protected]>
376    
377            * Thuban/Model/resource.py (get_system_proj_file): Add a filename
378            parameter so that this function can be used for all proj files in
379            Resource/Projections
380            (DEFAULT_PROJ_FILE, EPSG_PROJ_FILE): New. Predefined filenames for
381            get_system_proj_file
382    
383            * Thuban/UI/projdialog.py (ProjFrame.__init__): Instead of one
384            ProjFile self.__sysProjFile use a dictionary of system ProjFile
385            objects self._sys_proj_files
386            (ProjFrame.build_dialog): Adapt to the new changes in the
387            ProjectionList constructor. Add a check button to toggle whether
388            EPSG projections are shown
389            (ProjFrame._OnShowEPSG): New. Handler for the epsg check button
390            events.
391            (ProjFrame.load_user_proj, ProjFrame.load_system_proj): Only show
392            the busy cursor if the files have not yet been loaded by the
393            dialog.
394            (ProjFrame.load_system_proj): Add a parameter for the name of the
395            proj file. Maintain the dictionary of system projections
396            self._sys_proj_files
397    
398            * Thuban/UI/projlist.py (ProjectionList): Merge the system_projs,
399            user_projs parameters into one parameter proj_files which is a
400            list of proj files.
401            (ProjectionList._subscribe_proj_files)
402            (ProjectionList._unsubscribe_proj_files): New. Move
403            subscription/unsubscription of projfile messages to separate
404            methods
405            (ProjectionList.Destroy): The unsubscribe is now done in
406            _unsubscribe_proj_files
407            (ProjectionList.update_projections): We now have a list of proj
408            file objects
409            (ProjectionList.SetProjFiles): New method to set a new list of
410            proj file objects
411    
412            * test/test_proj.py (ProjFileReadTests.test_get_system_proj_file):
413            Specify explicitly which system proj file to load.
414    
415    2003-11-11  Bernhard Herzog  <[email protected]>
416    
417            * Thuban/Model/load.py (SessionLoader.Destroy): New. Clear all
418            instance variables to cut cyclic references. The GC would have
419            collected the loader eventually but it can happen that it doesn't
420            run at all until thuban is closed (2.3 but not 2.2 tries a bit
421            harder and forces a collection when the interpreter terminates)
422            (load_session): Call the handler's Destroy method to make sure
423            that it gets garbage collected early. Otherwise it will be
424            collected very late if at all and it holds some references to e.g.
425            shapestores and the session which can lead to leaks (of e.g. the
426            temporary files)
427    
428            * test/test_load.py (TestSingleLayer.test_leak): New. test for the
429            resource leak in load_session
430    
431    2003-11-10  Bernhard Herzog  <[email protected]>
432    
433            * Thuban/UI/baserenderer.py: Add a way to specify how layers in
434            extensions are to be rendered.
435            (_renderer_extensions): New. List with renderer for layers in
436            extensions
437            (add_renderer_extension): New. Add a renderer extension
438            (init_renderer_extensions): New. Init the renderer extensions
439            (BaseRenderer.render_map_incrementally): Search
440            _renderer_extensions for how to draw unknown layer types
441            (BaseRenderer.draw_raster_data): Add format parameter so that
442            formats other than BMP can be drawn
443            (BaseRenderer.draw_raster_layer): Pass an explicit format to
444            draw_raster_data
445    
446            * Thuban/UI/renderer.py (raster_format_map): New. Mapping form the
447            strings of the format parameter of draw_raster_data method to wx
448            constants
449            (MapRenderer.draw_raster_data): Add the format parameter and use
450            raster_format_map to map it to the right wxwindows constant for
451            wxImageFromStream
452    
453            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Add
454            the format parameter and record it
455            (TestBaseRenderer.test_raster_no_projection): check the format
456            paramter of the draw_raster_data method
457            (TestBaseRenderer.test_renderer_extension): New. Test the renderer
458            extension facility
459    
460    2003-11-07  Bernhard Herzog  <[email protected]>
461    
462            Tweak the usage of the sqlite database to make common use cases
463            more responsive. In most cases copying the data to the sqlite
464            database takes so long that using sqlite doesn't have enough
465            advantages.
466    
467            * Thuban/Model/transientdb.py (TransientTableBase.ValueRange): Add
468            comments about performance and query the min and max in separate
469            statements because only that way will indexes be used.
470            (TransientTableBase.UniqueValues): Add some comments about
471            performance.
472            (AutoTransientTable.ValueRange, AutoTransientTable.UniqueValues):
473            Do not copy the data to the transient DB but use the transient
474            copy if it exists. See the new comments for the performance trade
475            offs
476    
477            * test/test_transientdb.py
478            (TestTransientTable.test_auto_transient_table): Make sure that the
479            data is copied to the transient database at some point.
480    
481    2003-11-03  Bernhard Herzog  <[email protected]>
482    
483            * Thuban/Model/data.py (ShapefileStore.ShapesInRegion): Bind some
484            globals to locals so that it's a bit faster
485    
486    2003-11-03  Bernhard Herzog  <[email protected]>
487    
488            * Thuban/UI/baserenderer.py
489            (BaseRenderer.draw_shape_layer_incrementally): Use the ReadValue
490            method. ReadValue is faster than ReadRowAsDict since it only reads
491            one cell especially now that the dbf file objects actually
492            implement it.
493    
494            * Thuban/Model/table.py (DBFTable.ReadValue): Use the new
495            read_attribute method of the dbf objects
496    
497    2003-11-03  Bernhard Herzog  <[email protected]>
498    
499            * Extensions/profiling/profiling.py (popup_dialog_box): New config
500            variable to indicate whether the result should be shown in a
501            dialog box
502            (profile_screen_renderer, time_screen_renderer): Only show a
503            dialog box if popup_dialog_box is true.
504            (profile_screen_renderer): Flush stdout after the printing the
505            first part of the "profiling..." message
506    
507            * Thuban/UI/baserenderer.py
508            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
509            brushes for the groups so that they're not created over and over
510            again
511    
512            * Thuban/Model/classification.py (Classification.__getattr__)
513            (Classification._compile_classification)
514            (Classification._clear_compiled_classification): New. Methods to
515            manage a 'compiled' representation of the classification groups
516            which is created on demand
517            (Classification.InsertGroup, Classification.RemoveGroup)
518            (Classification.ReplaceGroup): reset the compiled representation
519            (Classification.FindGroup): Use the compiled representation to
520            find the matching group
521            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
522    
523    2003-10-31  Bernhard Herzog  <[email protected]>
524    
525            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
526            Send a CLASS_CHANGED message
527            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
528            not return the removed group since it wasn't used.
529    
530            * test/test_classification.py
531            (TestClassification.test_set_default_group): New. Test the
532            SetDefaultGroup method
533            (TestClassification.test_insert_group): New. Test the InsertGroup
534            method
535            (TestClassification.test_remove_group): New. Test the RemoveGroup
536            method
537            (TestClassification.test_replace_group): New. Test the
538            ReplaceGroup method
539    
540    2003-10-31  Bernhard Herzog  <[email protected]>
541    
542            * test/test_classification.py (TestClassification.setUp):
543            Subscribe to the CLASS_CHANGED messages
544            (TestClassification.tearDown): New. Destroy the classification
545            properly
546            (TestClassification.test_defaults): Add tests for the default line
547            width and whether no messages were sent yet
548            (TestClassification.test_set_default_properties): Add tests for
549            messages and setting the default line width
550            (TestClassification.test_add_singleton)
551            (TestClassification.test_add_range)
552            (TestClassification.test_multiple_groups): Add tests for messages
553    
554    2003-10-31  Bernhard Herzog  <[email protected]>
555    
556            Some more refactoring in preparation for new tests:
557    
558            * test/test_classification.py (TestClassification.setUp): New.
559            Instantiate the classification here. Update the test methods
560            accordingly.
561            (TestClassification.test_multiple_groups): Make sure that the two
562            singletons matching 1 are considered different.
563    
564    2003-10-31  Bernhard Herzog  <[email protected]>
565    
566            * test/test_classification.py (red, green, blue): New. These
567            constants were used in several cases. Update the relevant methods.
568            (TestClassification.test_defaults)
569            (TestClassification.test_set_default_properties)
570            (TestClassification.test_add_singleton)
571            (TestClassification.test_add_range)
572            (TestClassification.test_multiple_groups)
573            (TestClassification.test_deepcopy): New. These were formerly all
574            part of the single method test.
575            (TestClassification.test_deepcopy): Removed.
576            (TestClassIterator): Removed. The test case is now a method of
577            TestClassification since it tests part of the public interface of
578            Classification
579            (TestClassification.test_iterator): New. Used to be
580            TestClassIterator effectively
581    
582    2003-10-31  Jan-Oliver Wagner <[email protected]>
583    
584            GUIfied the functions of the profiling extension.
585    
586            * /Extensions/profiling/__init__.py: New: Init to make this
587            directory a package.
588    
589            * Extensions/profiling/profiling.py: Moved menu entries to
590            the Extensions menu. Applied _() for strings.
591            (profile_screen_renderer): Catch the detailed printout and present
592            it in a dialog.
593            (time_screen_renderer): Raise a dialog to present the result instead
594            of printing it to stdout.
595    
596    2003-10-31  Bernhard Herzog  <[email protected]>
597    
598            * test/test_classification.py (TestClassGroupProperties)
599            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
600            (TestClassGroupSingleton, TestClassIterator, TestClassification):
601            Split TestClassification into several classes, one for each class
602            being tested. TestClassification itself now only tests
603            Classification. This split makes changes to the tests a bit easier
604    
605    2003-10-31  Bernhard Herzog  <[email protected]>
606    
607            * Extensions/profiling/profiling.py: New. Extension to measure
608            Thuban performance
609    
610    2003-10-31  Frank Koormann <[email protected]>
611    
612            Added two items to legend popup menu: Remove Layer and Show Layer Table
613    
614            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
615            LegendPanel._OnShowTable): New event handlers, call the corresponding
616            mainwindow methods.
617            (LegendTree._OnRightClick): Added items to popup menu.
618    
619    2003-10-30  Bernhard Herzog  <[email protected]>
620    
621            * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle
622            EVT_WINDOW_DESTROY
623            (ThubanFrame.OnDestroy): New. Handler for EVT_WINDOW_DESTROY. Does
624            nothing but is convenient for the derived classes.
625    
626            * Thuban/UI/tableview.py
627            (TableFrame.OnDestroy, LayerTableFrame.OnDestroy): New.
628            Unsubscribe the messages here not in OnClose because that might
629            get called multiple times. Fixes RT #2196
630            (TableFrame.OnClose, LayerTableFrame.OnClose): Removed. Not needed
631            anymore.
632    
633            * README: Update the minimum requirement for wxPython. Since we
634            now use the EVT_WINDOW_DESTROY event, we need at least 2.4.0.4,
635            the version in which that was introduced for all platforms
636    
637    2003-10-30  Frank Koormann <[email protected]>
638    
639            * Thuban/UI/join.py (JoinDialog.OnJoin): Wrapped the major parts of
640            the join process in a ThubanBeginBusyCursor, ThubanEndBusyCursor
641            frame.
642    
643    2003-10-30  Jan-Oliver Wagner <[email protected]>
644    
645            Improved APR import extension, added further EPSG definitions
646            and some cleanup regarding string class.
647    
648            * test/test_proj.py (TestProjection.test_get_projection_units_geo):
649            Added test for alias 'longlat'.
650    
651            * Resources/Projections/epsg-deprecated.proj: New. Contains
652            deprecated EPSG definitions.
653    
654            * Extensions/importAPR/odb.py (ODBBaseObject.TreeInfo): Added
655            the variable names for objects.
656    
657            * Extensions/importAPR/apr.py (APR_BLnSym, APR_BMkSym, APR_BShSym): New.
658            Copied from importAPR and provided with documentation.
659    
660            * Extensions/importAPR/importAPR.py (APR_BLnSym, APR_BMkSym, APR_BShSym):
661            Moved to apr.py.
662            (APR_View): Added object ref 'ITheme'.
663    
664            * Thuban/Lib/fileutil.py, Thuban/UI/proj4dialog.py: Replaced string
665            split function by corresponding use of the string class method.
666    
667            * Thuban/Model/xmlwriter.py: Replaced string replace function by
668            corresponding string method.
669    
670    2003-10-29  Bernhard Herzog  <[email protected]>
671    
672            * Thuban/UI/baserenderer.py
673            (BaseRenderer.draw_shape_layer_incrementally): Speed up the
674            special case of a classification that only has the default group
675    
676    2003-10-27  Bernhard Herzog  <[email protected]>
677    
678            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
679    
680            * po/de.po: Update.
681    
682            * Thuban/UI/application.py
683            (ThubanApplication.ShowExceptionDialog): Handle translation of the
684            dialog message properly
685    
686    2003-10-27  Bernhard Herzog  <[email protected]>
687    
688            Rework how localization works so that we use wx's translation
689            functions when running Thuban as a normal application but not when
690            we don't need any UI, such as in the test suite. See the comment
691            in Thuban/__init__.py for details
692    
693            * Thuban/__init__.py (_): Add one level of indirection to make the
694            translation handling more flexible and to make it possible to use
695            either wx's translation services or not.
696            (gettext_identity, translation_function_installed)
697            (install_translation_function): New function to help with this
698    
699            * Thuban/UI/__init__.py: Install the wx specific translation
700            function if it's OK to do that
701    
702            * test/support.py (initthuban): Install a dummy translation
703            function so that importing Thuban.UI doesn't install a wx specific
704            one for which would need to import wxPython
705    
706    2003-10-27  Bernhard Herzog  <[email protected]>
707    
708            * HOWTO-Release: Source archives should be created first and the
709            binary packages should be created from the source archives.
710            There's an official debian package now so there's no need to test
711            the rpm on debian anymore
712    
713    2003-10-27  Bernhard Herzog  <[email protected]>
714    
715            Several rendering changes:
716    
717             - Render the selection into a separate bitmap so that only that
718               bitmap needs to be redrawn when the selection changes
719    
720             - Render incrementally showing previews and allowing interaction
721               before rendering is complete
722    
723             - Update the renderer interface a bit. Most parameters of
724               RenderMap are now parameters of the constructor
725    
726            * Thuban/UI/baserenderer.py (BaseRenderer.__init__): Add the map
727            and the update region as parameters. Update the doc-string
728            (BaseRenderer.render_map_incrementally): New. Generator function
729            to renders the map incrementally
730            (BaseRenderer.render_map): Remove the map argument (it's now in
731            the constructor) and simply iterate over the
732            render_map_incrementally generator to draw the map.
733            (BaseRenderer.draw_shape_layer_incrementally)
734            (BaseRenderer.draw_shape_layer): Renamed to
735            draw_shape_layer_incrementally and changed into a generator that
736            yields True every 500 shapes. Used by render_map_incrementally to
737            render shape layers incrementally
738    
739            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Removed the
740            map and region parameters which are now in the constructor
741            (ScreenRenderer.RenderMapIncrementally): New. Public frontend for
742            the inherited render_map_incrementally.
743            (BaseRenderer.draw_shape_layer): Removed.
744            (ScreenRenderer.draw_selection_incrementally): New. The selection
745            drawing part of the removed draw_shape_layer as a generator
746            (ScreenRenderer.layer_shapes): Update because of the region
747            parameter change
748            (ExportRenderer.__init__): New. Extend the inherited constructor
749            with the destination region for the drawing
750            (ExportRenderer.RenderMap): Removed the map and region parameters
751            which are now in the constructor
752    
753            * Thuban/UI/view.py (MapCanvas.PreviewBitmap): New. Return a
754            bitmap suitable for a preview in a tool
755            (CanvasPanTool.MouseMove): Use the PreviewBitmap method to get the
756            bitmap
757            (MapPrintout.draw_on_dc): Adapt to new renderer interface
758            (MapCanvas.OnPaint): Handle drawing the selection bitmap if it
759            exists
760            (MapCanvas.OnIdle): Update the logic to deal with incremental
761            rendering and the selection bitmap
762            (MapCanvas._do_redraw): Handle the instantiation of the render
763            iterator and the redraws during rendering
764            (MapCanvas._render_iterator): New. Generator to incrementally
765            redraw both bitmaps
766            (MapCanvas.Export): Adapt to new renderer interface.
767            (MapCanvas.full_redraw): Reset the selection bitmap and the
768            renderer iterator too
769            (MapCanvas.redraw_selection): New. Force a redraw of the selection
770            bitmap
771            (MapCanvas.shape_selected): Only redraw the selection bitmap
772    
773            * test/test_baserenderer.py
774            (TestBaseRenderer.test_polygon_no_projection)
775            (TestBaseRenderer.test_raster_no_projection)
776            (TestBaseRenderer.test_point_map_projection)
777            (TestBaseRenderer.test_point_layer_and_map_projection)
778            (TestBaseRenderer.test_point_layer_projection)
779            (TestBaseRenderer.test_point_with_classification): Adapt to new
780            renderer interface
781    
782    2003-10-24  Bernhard Herzog  <[email protected]>
783    
784            * libraries/thuban/wxproj.cpp (draw_polygon_shape)
785            (point_in_polygon_shape, shape_centroid): Raise an exception if
786            the shape can't be read. Previously invalid shape ids would lead
787            to a segfault.
788    
789            * test/test_wxproj.py (TestShapeCentroid.test_invalid_shape_id):
790            New. test whether an exception is raised for invalid shape ids
791    
792    2003-10-24  Jan-Oliver Wagner <[email protected]>
793    
794            * Thuban/Model/proj.py (Projection.GetProjectedUnits): Added 'longlat'
795            as alias for 'latlong'.
796    
797            * Thuban/UI/projdialog.py (ProjFrame.__init__): Added 'longlat'
798            as alias for 'latlong'.
799    
800    2003-10-24  Jan-Oliver Wagner <[email protected]>
801    
802            * Thuban/UI/projdialog.py (ProjFrame.proj_selection_changed): Set
803            the projection even for the UnknownPanel.
804            (UnknownProjPanel.__init__): Define the text and create the textctrl
805            widget.
806            (UnknownProjPanel._DoLayout): Replaced static text widget by the
807            textctrl created in __init__.
808            (UnknownProjPanel.SetProjection): Set the text for the text ctrl
809            including the parameters of the projection.
810            
811    2003-10-24  Jan-Oliver Wagner <[email protected]>
812    
813            * Resources/Projections/epsg.proj: New. This is a list of
814            EPSG codes with parameters for proj. The list has been
815            generated using devtools/create_epsg.py based on the
816            file nad/epsg of the proj 4.4.7 package. Four projection
817            definitions have been deleted as they are not accepted by proj:
818            "CH1903+ / LV95", "Bern 1898 (Bern) / LV03C", "CH1903 / LV03"
819            and "HD72 / EOV".
820    
821    2003-10-22  Bernhard Herzog  <[email protected]>
822    
823            Some more tweaks to the projection dialog which should fix RT
824            #1886.
825    
826            * Thuban/UI/projlist.py (ProjectionList.Destroy): Unsubscribe from
827            the ProjFile's messages and call the base class methods correctly
828            (ProjectionList.SelectProjection): Set the wxLIST_STATE_FOCUSED
829            flag on the newly selected item too. Otherwise some other item is
830            focused and the first time the focus is moved with the keyboard
831            the selection moves in unexpected ways.
832    
833            * Thuban/UI/projdialog.py (ProjFrame.__init__): Do not set the
834            focus on the OK button, only on the projection list. That way the
835            list really has the focus initially
836            (ProjFrame.OnClose): Call the projection list's Destroy method to
837            make it unsubscribe all messages
838    
839    2003-10-21  Bernhard Herzog  <[email protected]>
840    
841            Rework the projection dialog to fix a few bugs, including RT 2166
842            and most of 2168
843    
844            * Thuban/UI/projlist.py: New. The class ProjectionList is a
845            special wxListCtrl to show a list of projections in a more MVC
846            fashion
847    
848            * Thuban/UI/projdialog.py (ProjFrame): Substantial changes
849            throughout the class. The main change is to use the ProjectionList
850            class instead of a normal wxListBox. Also, add an explicit
851            "Unknown" projection to the projection choice control.
852            (ProjPanel.__init__): Add an "unknown" ellipsoid
853            (TMPanel.__init__, LCCPanel.__init__): Tweak the order of
854            instantiation of the panel's controls to make the tab-order more
855            natural
856    
857    2003-10-21  Bernhard Herzog  <[email protected]>
858    
859            * test/test_load.py (TestSingleLayer.file_contents)
860            (TestSingleLayer.test): Add non-ascii characters to the titles of
861            session, map and layer. This is effectively a port of the
862            TestUnicodeStrings test in test_load_0_8.py which for some reason
863            was only added there.
864    
865            * test/test_load_0_9.py (TestSingleLayer.file_contents)
866            (TestSingleLayer.test): Same as in test_load.py: add non-ascii
867            characters to the titles of session, map and layer,.
868    
869    2003-10-21  Bernhard Herzog  <[email protected]>
870    
871            Add EPSG projection handling to .thuban files
872    
873            * test/test_save.py (SaveSessionTest.dtd)
874            (SaveSessionTest.testEmptySession)
875            (SaveSessionTest.testLayerProjection)
876            (SaveSessionTest.testRasterLayer)
877            (SaveSessionTest.testClassifiedLayer)
878            (SaveSessionTest.test_dbf_table)
879            (SaveSessionTest.test_joined_table)
880            (SaveSessionTest.test_save_postgis): Update to 1.0-dev namespace
881            (SaveSessionTest.testSingleLayer): Update to 1.0-dev namespace and
882            use a and epsg projection to test saving them
883    
884            * test/test_load.py (LoadSessionTest.dtd): Update to 1.0-dev
885            namespace
886            (TestLayerVisibility.file_contents, TestLabels.file_contents)
887            (TestLayerProjection.file_contents)
888            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
889            (TestPostGISLayer.file_contents)
890            (TestPostGISLayerPassword.file_contents)
891            (TestLoadError.file_contents, TestLoadError.test): Update to use
892            1.0-dev namespace
893            (TestSingleLayer.file_contents, TestSingleLayer.test): Update to
894            use 1.0-dev namespace and use an EPSG projection to test whether
895            loading it works
896    
897            * test/test_load_0_9.py: New. Effectively a copy of test_load.py
898            as of Thuban 0.9. These are now tests to determine whether Thuban
899            can still read files generated by Thuban 0.9
900    
901            * Thuban/Model/save.py (SessionSaver.write)
902            (SessionSaver.write_session): Use the 1.0 dtd and 1.0-dev
903            namespace
904            (SessionSaver.write_projection): Write the projection's epsg
905            attribute
906    
907            * Thuban/Model/load.py (SessionLoader.__init__): Also accept the
908            thuban-1.0-dev.dtd namespace
909            (SessionLoader.check_attrs): Allow a callable object as conversion
910            too
911            (SessionLoader.start_projection, SessionLoader.end_projection)
912            (SessionLoader.start_parameter): Handle the epsg attribute and
913            rename a few instance variables to lower case
914    
915            * Resources/XML/thuban-1.0.dtd: New. Only difference to
916            thuban-0.9.dtd is the epsg attribute for projections.
917    
918    2003-10-21  Bernhard Herzog  <[email protected]>
919    
920            * test/runtests.py (main): Let the user specify which tests to run
921            on the command line
922    
923            * test/support.py (ThubanTestResult.getDescription): Override to
924            give a better short description. The description can be used as a
925            parameter to run_tests to run that particular test in isolation.
926    
927    2003-10-21  Frank Koormann   <[email protected]>
928    
929            Popup menu for legend. Scheduled for the 1.2 release this was too
930            simple to implement: The popup menu is bound to the legend tree, while
931            the events are hanlded by its anchestor, the legend panel. This
932            allows reuse of all the event handlers already implemented for the
933            legend toolbar buttons.
934    
935            * Thuban/UI/legend.py (LegendPanel.__init__): EVT_MENU macros
936            to add handlers for the events issued by the popup menu.
937            (LegendPanel._OnToggleVisibility): Handler for toggling layer
938            visibility event
939            (LegendPanel._OnProjection): Handler for layer projection event.
940            (LegendTree.__init__): Added EVT_TREE_ITEM_RIGHT_CLICK
941            (LegendTree._OnRightClick): Event handler for right click, select item
942            and pop up menu.
943            (LegendTree.ToggleVisibility): Toggle layer visibility
944            (LegendTree.LayerProjection): Raise layer projection dialog for
945            current layer.
946    
947    2003-10-21  Bernhard Herzog  <[email protected]>
948    
949            * Resources/Projections/defaults.proj: Use correct DOCTYPE
950            declaration. The top-level element is projectionlist not projfile
951    
952    2003-10-20  Bernhard Herzog  <[email protected]>
953    
954            * Thuban/UI/projdialog.py (ProjFrame.write_proj_file): New. helper
955            method to write a projfile and display a busy cursor and error
956            dialogs.
957            (ProjFrame._OnSave, ProjFrame._OnAddToList, ProjFrame._OnImport)
958            (ProjFrame._OnExport, ProjFrame._OnRemove): Use write_proj_file
959            (ProjFrame.__FillAvailList): Translate "<None>" too and display a
960            busy cursor while loading the user and system prj files.
961    
962    2003-10-16  Bernhard Herzog  <[email protected]>
963    
964            * Thuban/Model/resource.py (projfile_cache): Introduce a cache for
965            ProjFile objects
966            (clear_proj_file_cache): New function to clear the cache. Mainly
967            useful for use by the test suite
968            (read_proj_file): Use the cache.
969    
970            * test/test_proj.py (TestProjFile): Clarify the doc-string
971            (ProjFileReadTests): Update doc-string
972            (ProjFileReadTests.test_get_system_proj_file): Check whether the
973            system proj files is cached.
974            (ProjFileLoadTestCase): New base class for the proj file tests
975            derived from support.FileLoadTestCase to provide some common
976            behavior.
977            (TestLoadingProjFile)
978            (TestLoadingProjFileWithEmptyProjectionlist.file_contents)
979            (TestProjFileWithInvalidParameters.file_contents): Derive from
980            ProjFileLoadTestCase
981            (TestLoadingProjFile.test_caching): New. Test whether the cache
982            works
983    
984    2003-10-16      Silke Reimer    <[email protected]>
985    
986            * debian/*: New directory with configuration files for building a thuban
987              deb-package.
988    
989    2003-10-14  Bernhard Herzog  <[email protected]>
990    
991            * test/test_proj.py: Execute support.run_tests when run as
992            __main__ so that missing unsubscribes are detected
993            (TestProjFile.tearDown): Destroy the proj_file properly
994    
995    2003-10-14  Bernhard Herzog  <[email protected]>
996    
997            * Thuban/Model/messages.py (PROJECTION_ADDED)
998            (PROJECTION_REPLACED, PROJECTION_REMOVED): New message types for
999            the ProjFile objects
1000    
1001            * Thuban/Model/proj.py (ProjFile): Derive from Publisher so we can
1002            easily send messages when the projections change
1003            (ProjFile.Add, ProjFile.Remove, ProjFile.Replace): Issue messages
1004            when the change was successful
1005    
1006            * test/test_proj.py (TestProjFile.setUp): Subscribe to some of the
1007            proj file messages
1008            (TestProjFile.test_add_remove)
1009            (TestProjFile.test_remove_non_existing)
1010            (TestProjFile.test_replace)
1011            (TestProjFile.test_replace_non_existing): Test whether the right
1012            messages are sent
1013    
1014    2003-10-14  Bernhard Herzog  <[email protected]>
1015    
1016            * test/test_proj.py (TestProjFile.test): Refactor into several
1017            tests
1018            (TestProjFile.test_add_remove)
1019            (TestProjFile.test_remove_non_existing)
1020            (TestProjFile.test_replace)
1021            (TestProjFile.test_replace_non_existing): Some of the new
1022            individual test cases
1023            (TestProjFileSimple): New class for the rest of the test cases
1024            that came out of the refactoring
1025            (ProjFileTest): Derive from xmlsupport.ValidationTest so that the
1026            derived classes don't have to
1027    
1028    2003-10-13  Bernhard Herzog  <[email protected]>
1029    
1030            Add an optional EPSG code to the projection objects and extend the
1031            .proj file format accordingly.
1032    
1033            * Resources/XML/projfile.dtd (element projection): Add epsg
1034            attribute
1035    
1036            * Thuban/Model/proj.py (Projection.__init__): New parameter and
1037            instance variable epsg. Update doc-string
1038            (Projection.EPSGCode, Projection.Label): New methods to provide
1039            access to EPSG code and a label for use in dialogs
1040    
1041            * Thuban/Model/resource.py (ProjFileReader.start_projection)
1042            (ProjFileReader.end_projection, ProjFileSaver.write_projfile):
1043            Handle the epsg code attribute when reading or writing proj files
1044    
1045            * Thuban/UI/projdialog.py (ProjFrame._OnSave)
1046            (ProjFrame._OnAddToList, ProjFrame.__DoOnProjAvail)
1047            (ProjFrame.__FillAvailList): Use the projection's Label method to
1048            get the string for the list box
1049    
1050            * test/test_proj.py (TestProjection.test_label)
1051            (TestProjection.test_label_epsg)
1052            (TestProjection.test_epsgcode_for_non_epsg_projection)
1053            (TestProjection.test_epsgcode_for_real_epsg_projection): New tests
1054            for the label and EPSGCode methods
1055            (WriteProjFileTests.doTestWrite, WriteProjFileTests.test_write)
1056            (WriteProjFileTests.test_write_empty_file): Create the ProjFile
1057            objects in the test cases and put the expected contents into the
1058            test case methods too. Update doTestWrite accordingly
1059            (TestLoadingProjFile)
1060            (TestLoadingProjFileWithEmptyProjectionlist): New classes with the
1061            read tests from TestProjFile.
1062            (TestProjFile.doTestRead, TestProjFile.testRead): Removed. These
1063            tests are now in the new classes.
1064            (sample_projfile, sample_projfile_data)
1065            (sample_projfile2, sample_projfile_data2): Removed. Not used
1066            anymore.
1067            (TestProjFile.test_read_unreadable_file): No need to reset the
1068            permissions at the end anymore since we use a unique filename
1069    
1070    2003-10-13  Bernhard Herzog  <[email protected]>
1071    
1072            * test/test_proj.py: Some more refactoring of the test cases
1073            (ProjFileTest): New base class for the proj file tests.
1074            (TestProjFile): Derive from ProjFileTest
1075            (TestProjFile.test_read_unreadable_file)
1076            (TestProjFile.test_read_empty_file, TestProjFile.doTestRead): Use
1077            the new filename method to get a unique filename
1078            (TestProjFile.doTestWrite, TestProjFile.testWrite): Removed.
1079            (WriteProjFileTests): New class for proj file write tests.
1080            Contains the write test that were in TestProjFile originally.
1081    
1082    2003-10-13  Bernhard Herzog  <[email protected]>
1083    
1084            * test/test_proj.py (TestProjFile.testRead)
1085            (TestProjFile.test_read_non_existing_file)
1086            (TestProjFile.test_read_unreadable_file)
1087            (TestProjFile.test_read_empty_file): Split into several methods.
1088    
1089    2003-10-10  Bernhard Herzog  <[email protected]>
1090    
1091            * Thuban/UI/sizers.py: New file with custom sizers.
1092    
1093            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Instantiate
1094            all projection type specific panels and put them into a
1095            NotebookLikeSizer. This way the dialog doesn't change its size
1096            when a different projection is selected
1097            (ProjFrame.__init__): Rename projection_panels
1098            projection_panel_defs and reuse projection_panels for a list of
1099            the instantiated panels.
1100            (ProjFrame._show_proj_panel, ProjFrame.__DoOnProjAvail)
1101            (ProjFrame.__DoOnProjChoice): Changes due to the new handling of
1102            the panels
1103            (UnknownProjPanel._DoLayout): Place the newlines in the message
1104            differently to make the panel narrower.
1105            (TMPanel._DoLayout): Layout the parameters in one column.
1106    
1107    2003-10-10  Bernhard Herzog  <[email protected]>
1108    
1109            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): New method
1110            that contains all the setup for the dialog's widgets, layout and
1111            event handling.
1112            (__): Call build_dialog to build the dialog.
1113            (ProjFrame.__set_properties, ProjFrame.__do_layout): Removed.
1114            Their functionality is now in build_dialog
1115            (ProjFrame.__VerifyButtons, ProjFrame.__VerifyButtons)
1116            (ProjFrame.__DoOnProjAvail, ProjFrame.__DoOnProjAvail)
1117            (ProjFrame.__DoOnProjChoice): Small updates due to slightly
1118            different widget names and hierarchy introduced with build_dialog.
1119    
1120    2003-10-10  Bernhard Herzog  <[email protected]>
1121    
1122            * README: Fix typo.
1123    
1124    2003-10-09  Bernhard Herzog  <[email protected]>
1125    
1126            * Thuban/Model/proj.py (ProjFile.Add): Do not check whether the
1127            projection is already in the list. This is *a lot* faster when
1128            loading files with hundreds of projections since it saves a linear
1129            search. OTOH this will allow adding the same projection to the
1130            user.proj file multiple times in the projection dialog but we'll
1131            deal with that later
1132    
1133    2003-10-09  Jan-Oliver Wagner <[email protected]>
1134    
1135            * devtools: New. Directory for developer tools that are not intended
1136            for the regular user.
1137    
1138            * devtools/create_epsg.py: New. Convert the epsg file of proj into
1139            a python .proj file.
1140    
1141    2003-10-09  Bernhard Herzog  <[email protected]>
1142    
1143            * test/test_proj.py
1144            (TestProjection.test_get_parameter_without_equals_sign): New. Test
1145            whether GetParameter handles parameters without "=" sign correctly
1146    
1147            * Thuban/Model/proj.py (Projection.GetParameter): Handle
1148            parameters that do not contain a "=". Update the doc-string
1149    
1150    2003-10-08  Bernhard Herzog  <[email protected]>
1151    
1152            * Thuban/UI/projdialog.py (ProjFrame.__set_properties): Remove the
1153            length limit on the projname text control
1154    
1155    2003-10-08  Bernhard Herzog  <[email protected]>
1156    
1157            * test/test_proj.py (TestProjection.test_get_projection_units_geo)
1158            (TestProjection.test_get_projection_units_normal): New. Tests for
1159            the Projection.GetProjectedUnits method
1160    
1161    2003-10-08  Jan-Oliver Wagner <[email protected]>
1162    
1163            * Thuban/Model/resource.py (get_user_proj_file): small bug-fix:
1164            Added missing 'val' parameter.
1165    
1166    2003-10-08  Bernhard Herzog  <[email protected]>
1167    
1168            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): When the
1169            projection type of the currently selected projection is not known,
1170            i.e. there's no panel for it, use the UnknownProjPanel
1171            (ProjFrame.__DoOnProjChoice, ProjFrame._show_proj_panel): Split
1172            the actual replacing of the proj panel into the new method
1173            _show_proj_panel.
1174            (UnknownProjPanel): Add doc-string.
1175            (UnknownProjPanel._DoLayout): Insert a newline into the text so
1176            that the panel is not so wide.
1177    
1178    2003-10-08  Bernhard Herzog  <[email protected]>
1179    
1180            * Thuban/Model/resource.py (read_proj_file): Return the warnings
1181            too. Update the doc-string
1182            (get_proj_files): Removed. It wasn't used anywhere
1183            (get_system_proj_files, get_system_proj_file): Rename to
1184            get_system_proj_file and return the ProjFile object and not a list
1185            of ProjFile objects. Update the callers.
1186            (get_user_proj_files, get_user_proj_file): Rename to
1187            get_user_proj_file return the ProjFile object and not a list of
1188            ProjFile objects. Update the callers.
1189            (ProjFileReader.__init__): New instance variable for the warnings.
1190            Rename the __pf ivar to projfile. Update the methods referring to
1191            __pf
1192            (ProjFileReader.end_projection): Catch any errors raised when
1193            instantiating the projection and record that as an error. The
1194            projection will not be in the final ProjFile object.
1195            (ProjFileReader.GetWarnings): New method to return the warnings.
1196    
1197            * Thuban/UI/projdialog.py (ProjFrame.show_warnings): New method to
1198            show the warnings from the projfile reader
1199            (ProjFrame._OnImport): Deal with any warnings returned by
1200            read_proj_file
1201            (ProjFrame.__FillAvailList): Deal with any warnings returned by
1202            get_system_proj_file or get_user_proj_file.
1203    
1204            * test/test_proj.py (TestProjFile.doTestRead): Check the warnings.
1205            (TestProjFileWithInvalidParameters.file_contents): New test cases
1206            to test whether read_proj_file handles invalid projection
1207            parameters correctly
1208            (TestProjFile.test_get_system_proj_file): New. Simple test for
1209            resource.get_system_proj_file
1210    
1211    2003-10-07  Bernhard Herzog  <[email protected]>
1212    
1213            * test/test_derivedshapestore.py
1214            (TestDerivedShapeStoreExceptions.tearDown): Clear the session
1215            properly so that the temporary directories get deleted correctly
1216    
1217    2003-10-06  Bernhard Herzog  <[email protected]>
1218    
1219            Handle the title changes in a proper MVC way.
1220    
1221            * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
1222            canvas' TITLE_CHANGED messages
1223            (MainWindow.update_title): New. Update the main window's title
1224            (MainWindow.__SetTitle): Removed. Use update_title instead.
1225            (MainWindow.SetMap): Use update_title instead of __SetTitle
1226            (MainWindow.RenameMap): Do change the window title explicitly
1227            here. That's handled in a proper MVC way now.
1228            (MainWindow.title_changed): New. Subscriber for the TITLE_CHANGED
1229            messages
1230    
1231            * Thuban/Lib/connector.py (Conduit): New class to help classes
1232            that forward messages
1233    
1234            * Thuban/UI/viewport.py: Forward the map's TITLE_CHANGED messages
1235            (ViewPort): Derive from Conduit instead of Publisher
1236            (ViewPort.Subscribe, ViewPort.Unsubscribe): Use the new base class
1237            when calling the inherited versions
1238            (ViewPort._subscribe_map, ViewPort._unsubscribe_map): New helper
1239            methods to subscribe and unsubscribe map messages
1240            (ViewPort.SetMap, ViewPort.Destroy): Use the new helper methods to
1241            handle the map subscriptions
1242            (ViewPort.Map, ViewPort.map_projection_changed)
1243            (ViewPort.layer_projection_changed): Add or update doc-strings
1244    
1245            * test/test_connector.py (TestPublisher.test_issue_simple): Fix
1246            typo
1247            (MyConduit): Helper class for the Conduit test.
1248            (TestConduit): Test cases for Conduit
1249    
1250            * test/test_connector.py: Use support.run_tests as main.
1251    
1252            * test/test_viewport.py (ViewPortTest.setUp): Also subscribe to
1253            the TITLE_CHANGED messages
1254            (ViewPortTest.test_forwarding_title_changed): New test to check
1255            whether the viewport forwards the map's TITLE_CHANGED messages
1256            (TestViewportWithPostGIS.tearDown): Call the map's Destroy method
1257            after the port's because the latter may require a still functional
1258            map.
1259    
1260    2003-10-06  Bernhard Herzog  <[email protected]>
1261    
1262            * Thuban/UI/application.py (ThubanApplication.maps_changed): Add
1263            doc-string
1264    
1265    2003-10-06  Bernhard Herzog  <[email protected]>
1266    
1267            * test/test_viewport.py (ViewPortTest.setUp)
1268            (SimpleViewPortTest.test_init_with_size): Move the test for the
1269            initial size as a constructor parameter from ViewPortTest.setUp
1270            method to a new separate test in SimpleViewPortTest.
1271    
1272    2003-10-06  Bernhard Herzog  <[email protected]>
1273    
1274            * test/test_viewport.py (MockView): New class derived from
1275            ViewPort with a mock implementation of GetTextExtent to be used in
1276            the test cases
1277            (ViewPortTest.setUp): Use MockView instead of ViewPort
1278    
1279            * Thuban/UI/viewport.py (ViewPort.GetTextExtent): Turn this method
1280            into what would be a "pure virtual function" in C++: always raise
1281            NotImplementedError. Mock implementations for test cases don't
1282            belong into the real code
1283    
1284    2003-10-02  Bernhard Herzog  <[email protected]>
1285    
1286            * test/test_layer.py (TestLayer.test_empty_layer): Explicitly
1287            close the dbf file we create so that it's contents have been
1288            written properly.
1289    
1290            * libraries/shapelib/shptree.c, libraries/shapelib/shpopen.c,
1291            libraries/shapelib/shapefil.h, libraries/shapelib/dbfopen.c:
1292            Update to shapelib 1.2.10
1293    
1294    2003-10-01  Jan-Oliver Wagner <[email protected]>
1295    
1296            * Thuban/UI/tree.py, Thuban/UI/main.py: Remove the #! line as
1297            it annoys lintian which warns about these files not being
1298            executable. The #! isn't necessary here since if you absolutely
1299            must execute them you can always say "python <filename>".
1300    
1301    2003-09-26  Bernhard Herzog  <[email protected]>
1302    
1303            * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's
1304            only used in GREAT-ER but not used in Thuban itself. When GREAT-ER
1305            is ported to a newer the import will fail, so it should be noticed
1306            immediately that this function is gone.
1307            Fixes RT#1919
1308    
1309    2003-09-26  Bernhard Herzog  <[email protected]>
1310    
1311            Add a DTD for the projection files and make thuban write valid
1312            projection files
1313    
1314            * Resources/XML/projfile.dtd: New. DTD for thuban's projection
1315            files
1316    
1317            * Thuban/Model/resource.py (ProjFileSaver.write): Use
1318            'projectionlist' as the name in the document type declaration so
1319            that it matches the element type of the root element.
1320    
1321            * test/test_proj.py (sample_projfile, sample_projfile2): Use
1322            'projectionlist' as the name in the document type declaration just
1323            as it is done now in the files thuban would write
1324            (sample_projfile, sample_projfile_data): Fix spelling of
1325            "Mercator"
1326            (TestProjFile.doTestWrite): Validate the written and the expected
1327            XML data
1328            (TestProjFile): Derive from ValidationTest so that we can run xml
1329            validation tests
1330    
1331    2003-09-24  Bernhard Herzog  <[email protected]>
1332    
1333            * Thuban/UI/renderer.py (ExportRenderer.render_legend): Do not
1334            modify the list returned by map.Layers() in place since it is the
1335            actual list of layers used by the map.
1336    
1337    2003-09-23  Jan-Oliver Wagner <[email protected]>
1338    
1339            * Doc/manual/thuban-manual.xml: Added subsection to chapter
1340            Extensions to describe the extensions coming with the Thuban
1341            standard package (gns2shp and importAPR).
1342    
1343    2003-09-23  Bernhard Herzog  <[email protected]>
1344    
1345            * libraries/thuban/wxproj.cpp (project_point): if there's an
1346            inverse but no forward projection, convert to degrees after
1347            applying the inverse projection. Fixes RT#2096
1348    
1349            * test/test_wxproj.py: New. Test cases for wxproj.so. One test
1350            implicitly tests for the fix to RT#2096
1351    
1352            * test/support.py (FloatComparisonMixin.assertFloatSeqEqual):
1353            Check that the sequences have the same lengths
1354    
1355            * Resources/Projections/defaults.proj (Geographic projection): Use
1356            a much more precise value for the to_meter attribute.
1357    
1358    2003-09-22  Bernhard Herzog  <[email protected]>
1359    
1360            * test/support.py (initthuban): Make sure to unset the LANG env.
1361            var. so that tests that compare translated strings work. Solves RT
1362            #2094
1363    
1364    2003-09-22  Jan-Oliver Wagner <[email protected]>
1365    
1366            Small improvement of APR import.
1367    
1368            * Extensions/importAPR/test/test_apr.py (aprTest.test_LClass):
1369            Added tests for text-ranges.
1370    
1371            * Extensions/importAPR/apr.py (APR_LClass.GetThubanRange): Now
1372            returns a string object if the range is based on text.
1373    
1374            * Extensions/importAPR/importAPR.py (import_apr_dialog): Unified
1375            range retrieval.
1376    
1377    2003-09-22  Jan-Oliver Wagner <[email protected]>
1378    
1379            Initial version of the importAPR extension which is in
1380            experimental state.
1381    
1382            * /Extensions/importAPR/, /Extensions/importAPR/samples/,
1383            /Extensions/importAPR/test/: New directories.
1384    
1385            * /Extensions/importAPR/samples/README: New: Howto load the samples.
1386    
1387            * /Extensions/importAPR/samples/iceland.apr: New: A sample APR
1388            file which refers to the Thuban Iceland demo data.
1389    
1390            * /Extensions/importAPR/test/README: New: Howto execute the tests.
1391    
1392            * /Extensions/importAPR/test/test_apr.py: New: Tests for APR classes.
1393    
1394            * /Extensions/importAPR/apr.py: New: Classes for ArcView Objects
1395            as in '.apr'-files.
1396    
1397            * /Extensions/importAPR/odb.py: New: Classes for generic ArcView
1398            ODB Objects as in '.apr', '.avl' and other files.
1399    
1400            * /Extensions/importAPR/__init__.py: New: Init to make this
1401            directory a package.
1402    
1403            * /Extensions/importAPR/importAPR.py: New: Import a ArcView
1404            project file (.apr) and convert it to Thuban.
1405    
1406    2003-09-22  Jan-Oliver Wagner <[email protected]>
1407    
1408            * Extensions/gns2shp.gns2shp.py: The main module of gns2shp.
1409    
1410    2003-09-19  Jan-Oliver Wagner <[email protected]>
1411    
1412            * Doc/manual/thuban-manual.xml: Extended section 'Installation'
1413            with description on RPM installation and RPM binary package
1414            creation.
1415    
1416    2003-09-18  Bernhard Herzog  <[email protected]>
1417    
1418            * setup.py (data_files): Only add the mo files if the Locales
1419            directory actually exists, so that setup.py works with a fresh CVS
1420            checkout
1421    
1422    2003-09-12  Jan-Oliver Wagner <[email protected]>
1423    
1424            * Examples/simple_extensions/simple_tool.py: bugfix: Tool is now
1425            in viewport, not anymore in view
1426    
1427    2003-09-04  Jan-Oliver Wagner <[email protected]>
1428    
1429            Introducing first Extension (gns2shp).
1430    
1431            * Extensions, Extensions/gns2shp, Extensions/gns2shp/test: New.
1432    
1433            * Extensions/__init__.py: New. init to make this dir a package.
1434    
1435            * Extensions/gns2shp/__init__.py: New. init to make this dir a package.
1436    
1437            * Extensions/gns2shp/test/README: New. some info on this test directory.
1438    
1439            * Extensions/gns2shp/test/ls.txt: New. test data set (Liechtenstein).
1440    
1441            * Extensions/gns2shp/test/test_gns2shp.py: New. Test for correct creation
1442            of Shapefile from GNS text file format
1443    
1444    2003-09-03  Jan-Oliver Wagner <[email protected]>
1445    
1446            Fix/workaround for bug #2019:
1447            https://intevation.de/rt/webrt?serial_num=2019
1448    
1449            * Thuban/UI/identifyview.py (IdentifyView.ID_STOP): New.
1450            (IdentifyView.__init__): Added another button that allows to
1451            stop the identify mode.
1452            (IdentifyView.OnStop): New. Stops the identify mode.
1453    
1454    2003-09-03  Jan-Oliver Wagner <[email protected]>
1455    
1456            Introducing a new exception dialog that allows to exit the
1457            application immediately.
1458            This fixes bug #2060: https://intevation.de/rt/webrt?serial_num=2060
1459    
1460            * Thuban/UI/exceptiondialog.py: New. A special exception dialog.
1461    
1462            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
1463            Made strings available to translations. Exchanged the simple
1464            ScrolledMessageDialog by the new ExceptionDialog.
1465    
1466    2003-09-01  Bernhard Herzog  <[email protected]>
1467    
1468            * NEWS: New. Summary of changes and release notes.
1469    
1470            * MANIFEST.in: Add NEWS
1471    
1472    2003-09-01  Bernhard Herzog  <[email protected]>
1473    
1474            * MANIFEST.in: Correct the include statement for the mo-files and
1475            include the documentation too.
1476    
1477            * setup.py (data_files): Add the .mo files
1478            (setup call): Up to version 0.9.0
1479    
1480    2003-09-01  Bernhard Herzog  <[email protected]>
1481    
1482            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Change the
1483            parameter list to just parent and session
1484            (ChooseDBTableDialog.__set_properties): Removed. Setting the
1485            selection of empty list boxes is not allowed (and produces C++
1486            assertion errors) and the rest of the setup is better done in
1487            __init__ anyway.
1488            (ChooseDBTableDialog.OnCancel, ChooseDBTableDialog.OnOK)
1489            (ChooseDBTableDialog.OnLBDClick, DBDialog.OnOK): Use the Python
1490            builtins True/False for booleans to avoid warnings from wxPython
1491    
1492            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Adapt to new
1493            ChooseDBTableDialog constructor parameters.
1494    
1495    2003-09-01  Bernhard Herzog  <[email protected]>
1496    
1497            * Thuban/Model/postgisdb.py
1498            (PostGISTable): Extend doc-string
1499            (PostGISTable._fetch_table_information): Set the column index
1500            correctly, pretending ignored columns don't exist.
1501    
1502            * test/test_postgis_db.py (TestPostGISIgnoredColumns): New tests
1503            for postgis tables with data types not yet supported by thuban.
1504    
1505    2003-08-29  Bernhard Herzog  <[email protected]>
1506    
1507            * HOWTO-Release: Tweak item about running the tests.
1508    
1509    2003-08-29  Jan-Oliver Wagner <[email protected]>
1510    
1511            * /Doc/manual/thuban-manual.xml: updated to version 1.0pre2.
1512    
1513    2003-08-29  Bernhard Herzog  <[email protected]>
1514    
1515            Add some missing parameters to projections. Proj complains about
1516            them on windows but for some reason not on Linux.
1517    
1518            * test/test_save.py (SaveSessionTest.testLayerProjection): Add
1519            missing required projection parameters
1520    
1521            * test/test_proj.py (TestProjFile.test): Add missing required
1522            projection parameters
1523    
1524            * test/test_load_0_8.py (TestLayerProjection.file_contents)
1525            (TestLayerProjection.test): Add missing required projection
1526            parameters and tests for them
1527    
1528            * test/test_load.py (TestLayerProjection.file_contents)
1529            (TestLayerProjection.test): Add missing required projection
1530            parameters and tests for them
1531    
1532            * test/test_layer.py (TestLayer.test_base_layer): Add missing
1533            required projection parameters
1534    
1535    2003-08-29  Bernhard Herzog  <[email protected]>
1536    
1537            * libraries/pyprojection/Projection.i: Use pj_get_errno_ref to
1538            access the pj_errno because directly accessing pj_errno doesn't
1539            work on windows if the proj library is in a DLL
1540    
1541            * libraries/pyprojection/Projection_wrap.c: Update from Projection.i
1542    
1543    2003-08-28  Bernhard Herzog  <[email protected]>
1544    
1545            * test/test_proj.py: Import things from Thuban after calling
1546            initthuban
1547    
1548            * test/test_load.py (LoadSessionTest.filenames): New class
1549            variable with the filename attributes to normalize
1550            (LoadSessionTest.check_format): Pass self.filenames to
1551            sax_eventlist to normalize the filename attributes
1552    
1553            * test/xmlsupport.py: Add cvs keywords
1554            (SaxEventLister.__init__): New parameter filenames which indicates
1555            attributes that contain filenames
1556            (SaxEventLister.startElementNS): Normalize the filename attributes
1557            with os.path.normpath
1558            (sax_eventlist): New parameter filenames to pass through to
1559            SaxEventLister
1560    
1561            * test/test_derivedshapestore.py: Make this file callable as a
1562            program to execute the tests
1563            (TestDerivedShapeStoreExceptions.test_table_with_wrong_size): Bind
1564            the session to self.session so that it gets destroyed properly
1565    
1566            * test/test_layer.py (TestLayer.tearDown): Call the session's
1567            Destroy method
1568    
1569            * test/test_map.py (TestMapBase.tearDown): Destroy self.session
1570            too if it exists
1571            (TestMapAddLayer.test_add_layer): Bind the session to self.session
1572            so that it gets destroyed properly
1573    
1574            * test/postgissupport.py (reason_for_not_running_tests): Add a
1575            test for the existence of popen2.Popen4.
1576    
1577            * test/test_save.py (SaveSessionTest.tearDown): New. Provide a
1578            reliable way to destroy the sessions created in the test cases
1579            (SaveSessionTest.test_dbf_table): Bind the session to self.session
1580            so that it gets destroyed properly
1581            (SaveSessionTest.testLayerProjection): Bind the session to
1582            self.session so that it gets destroyed properly
1583    
1584            * test/test_session.py (UnreferencedTablesTests.tearDown): Make
1585            sure that the session is destroyed properly
1586    
1587            * test/test_shapefilestore.py: Make this callable as a program to
1588            execute the tests
1589    
1590            * test/test_scalebar.py: Remove unnecessary import of _ from
1591            Thuban
1592    
1593            * test/support.py (print_garbage_information): Call initthuban
1594            here because it may be called indirectly from test cases that test
1595            test support modules which do not use anything from thuban itself
1596            (ThubanTestProgram.runTests): Remove unnecessary debug print
1597    
1598    2003-08-28  Bernhard Herzog  <[email protected]>
1599    
1600            * Thuban/version.py (longversion): Update to 0.9
1601    
1602            * Thuban/UI/mainwindow.py: Remove some unused imports
1603    
1604            * README: Add section about required additional software. Add date
1605            and revision CVS keywords
1606    
1607            * HOWTO-Release: Add item about the translations. Add date and
1608            revision CVs keywords and change formatting to match README a bit
1609            better
1610    
1611            * po/de.po: Update for 0.9
1612    
1613            * test/README: Tweak the wording a little because many tests are
1614            not really unittest.
1615    
1616    2003-08-27  Bernhard Herzog  <[email protected]>
1617    
1618            As preparation for the 0.9 release, switch thuban files to a
1619            non-dev namespace
1620    
1621            * Thuban/Model/save.py (SessionSaver.write_session): Write files
1622            with the http://thuban.intevation.org/dtds/thuban-0.9.dtd
1623            namespace
1624    
1625            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
1626            http://thuban.intevation.org/dtds/thuban-0.9.dtd namespace too
1627    
1628            * test/test_save.py (SaveSessionTest.dtd)
1629            (SaveSessionTest.testEmptySession)
1630            (SaveSessionTest.testSingleLayer)
1631            (SaveSessionTest.testLayerProjection)
1632            (SaveSessionTest.testRasterLayer)
1633            (SaveSessionTest.testClassifiedLayer)
1634            (SaveSessionTest.test_dbf_table)
1635            (SaveSessionTest.test_joined_table)
1636            (SaveSessionTest.test_save_postgis): Update for new namespace
1637    
1638            * test/test_load.py (LoadSessionTest.dtd, TestSingleLayer)
1639            (TestLayerVisibility.file_contents, TestLabels.file_contents)
1640            (TestLayerProjection.file_contents)
1641            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
1642            (TestPostGISLayer.file_contents)
1643            (TestPostGISLayerPassword.file_contents)
1644            (TestLoadError.file_contents, TestLoadError.test): Update for new
1645            namespace
1646    
1647    2003-08-27  Bernhard Herzog  <[email protected]>
1648    
1649            Make the table interface distinguish between row ids (an integer
1650            that uniquely identifies a row) and row ordinals (a simple row
1651            count from 0 to NumRows() - 1)
1652    
1653            * Thuban/Model/postgisdb.py (PostGISTable.RowIdToOrdinal)
1654            (PostGISTable.RowOrdinalToId): New methods to conver between row
1655            ids and row ordinals
1656            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue): New keyword
1657            parameter row_is_ordinal to indicate whether the row parameter is
1658            the row id or the ordinal
1659    
1660            * Thuban/Model/transientdb.py (TransientTableBase.RowIdToOrdinal)
1661            (TransientTableBase.RowOrdinalToId)
1662            (AutoTransientTable.RowIdToOrdinal)
1663            (AutoTransientTable.RowOrdinalToId): Same new methods as in
1664            PostGISTable.
1665            (TransientTableBase.ReadRowAsDict, TransientTableBase.ReadValue)
1666            (AutoTransientTable.ReadRowAsDict, AutoTransientTable.ReadValue):
1667            Same new parameter as in PostGISTable.
1668    
1669            * Thuban/Model/table.py (DBFTable.RowIdToOrdinal)
1670            (DBFTable.RowOrdinalToId, MemoryTable.RowIdToOrdinal)
1671            (MemoryTable.RowOrdinalToId): Same new methods as in PostGISTable.
1672            (DBFTable.ReadValue, DBFTable.ReadRowAsDict)
1673            (MemoryTable.ReadValue, MemoryTable.ReadRowAsDict): Same new
1674            parameter as in PostGISTable.
1675    
1676            * Thuban/UI/tableview.py (DataTable.RowIdToOrdinal)
1677            (DataTable.RowOrdinalToId): New methods to convert between row ids
1678            and row ordinals.
1679            (TableGrid.SelectRowById): New method to select a row based on its
1680            ID as opposed to its ordinal
1681            (DataTable.GetValue, TableGrid.OnRangeSelect)
1682            (TableGrid.OnSelectCell, LayerTableGrid.select_shapes)
1683            (QueryTableFrame.OnQuery, QueryTableFrame.get_selected)
1684            (LayerTableFrame.__init__): Convert between row ids and row
1685            ordinals as appropriate
1686    
1687            * test/postgissupport.py (PostGISDatabase.__init__): Add
1688            doc-string.
1689            (PostGISDatabase.initdb): The optional third item in a tuple in
1690            tables is now a (key, value) list with additional arguments to
1691            pass to upload_shapefile
1692            (upload_shapefile): New parameter gid_offset to allow gids that
1693            are not the same as the shapeids in the shapefile
1694            (PostgreSQLServer.get_default_static_data_db): Use the new
1695            gid_offset to make the gids in landmarks 1000 higher than the
1696            shapeids in the shapefile
1697    
1698            * test/test_viewport.py
1699            (TestViewportWithPostGIS.test_find_shape_at_point): Adapt to the
1700            new shapeids in the landmarks table
1701    
1702            * test/test_transientdb.py
1703            (TestTransientTable.run_iceland_political_tests)
1704            (TestTransientTable.test_transient_joined_table): Add tests for
1705            the new table methods and new keywords arguments.
1706    
1707            * test/test_postgis_db.py
1708            (TestPostGISTable.test_read_row_as_dict_row_count_mode)
1709            (TestPostGISTable.test_read_value_row_count_mode)
1710            (TestPostGISTable.test_row_id_to_ordinal)
1711            (TestPostGISTable.test_row_oridnal_to_id): New test for the new
1712            table methods and the new arguments
1713            (TestPostGISShapestorePoint.test_shapes_in_region)
1714            (TestPostGISShapestorePoint.test_shape_raw_data)
1715            (TestPostGISShapestorePoint.test_shape_points)
1716            (TestPostGISShapestorePoint.test_shape_shapeid)
1717            (TestPostGISShapestorePoint.test_all_shapes)
1718            (TestPostGISTable.test_simple_query)
1719            (TestPostGISTable.test_simple_query)
1720            (TestPostGISTable.test_simple_query)
1721            (TestPostGISTable.test_read_value)
1722            (TestPostGISTable.test_read_row_as_dict): Adapt to the new
1723            shapeids in the landmarks table
1724    
1725            * test/test_memory_table.py
1726            (TestMemoryTable.test_read_row_as_dict_row_count_mode)
1727            (TestMemoryTable.test_read_value_row_count_mode)
1728            (TestMemoryTable.test_row_id_to_ordinal)
1729            (TestMemoryTable.test_row_oridnal_to_id): New test for the new
1730            table methods and the new arguments
1731    
1732            * test/test_dbf_table.py
1733            (TestDBFTable.test_read_row_as_dict_row_count_mode)
1734            (TestDBFTable.test_read_value_row_count_mode)
1735            (TestDBFTable.test_row_id_to_ordinal)
1736            (TestDBFTable.test_row_oridnal_to_id): New test for the new table
1737            methods and the new arguments
1738    
1739    2003-08-26  Bernhard Herzog  <[email protected]>
1740    
1741            * Thuban/Model/postgisdb.py (PostGISShapeStore.BoundingBox): Use a
1742            more postgis specific but much faster method to get the bounding
1743            box
1744    
1745  2003-08-26  Bernhard Herzog  <[email protected]>  2003-08-26  Bernhard Herzog  <[email protected]>
1746    
1747          * Thuban/Model/postgisdb.py (PostGISTable.Title)          * Thuban/Model/postgisdb.py (PostGISTable.Title)
# Line 977  Line 2721 
2721    
2722          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
2723          it annoys lintian which warns about these files not being          it annoys lintian which warns about these files not being
2724          executable. The #1 isn't necessary here since if you absolutely          executable. The #! isn't necessary here since if you absolutely
2725          must execute them you can always say "python <filename>".          must execute them you can always say "python <filename>".
2726    
2727          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove

Legend:
Removed from v.1659  
changed lines
  Added in v.2013

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26