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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26