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

Legend:
Removed from v.1655  
changed lines
  Added in v.2005

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26