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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26