/[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 1820 by bh, Mon Oct 13 15:55:56 2003 UTC revision 2013 by silke, Wed Dec 3 10:37:05 2003 UTC
# Line 1  Line 1 
1    2003-12-03  Silke Reimer <silkeintevation.de>
2    
3            * debian/control, debian/changelog: Added gdal-support to
4                    debian package, updated to new thuban version
5    
6    
7    2003-12-03  Bernhard Herzog  <[email protected]>
8    
9            * Thuban/Lib/version.py: New. Module for version number
10            manipulations. The version of make_tuple here also deals better
11            with more unusual version number strings, such as e.g.
12            "1.2+cvs20031111"
13    
14            * Thuban/version.py (make_tuple): Removed. It's now in
15            Thuban.Lib.version. Use that implementation instead.
16    
17            * test/test_lib_version.py: New. Tests for Thuban/Lib/version.py
18    
19    2003-12-02  Bernhard Herzog  <[email protected]>
20    
21            * MANIFEST.in: Add debian files
22    
23            * setup.py (setup call): Add packages for the Extensions so that
24            they're installed too
25            (data_files): Add READMEs and sample data from some Extensions
26    
27            * NEWS: Add note about the extensions in binary packages
28    
29    2003-12-02  Bernhard Herzog  <[email protected]>
30    
31            * Thuban/Model/save.py (SessionSaver.write_session): Save files
32            with the thuban-1.0rc1
33    
34            * Thuban/Model/load.py (SessionLoader.__init__): Recognize the
35            thuban-1.0rc1 namespace too
36    
37            * test/test_save.py (SaveSessionTest.dtd)
38            (SaveSessionTest.testEmptySession)
39            (SaveSessionTest.testSingleLayer)
40            (SaveSessionTest.testLayerProjection)
41            (SaveSessionTest.testRasterLayer)
42            (SaveSessionTest.testClassifiedLayer)
43            (SaveSessionTest.test_dbf_table)
44            (SaveSessionTest.test_joined_table)
45            (SaveSessionTest.test_save_postgis): Update to thuban-1.0rc1
46            namespace
47    
48            * test/test_load.py (LoadSessionTest.dtd): Update to thuban-1.0rc1
49            namespace
50            (TestSingleLayer.file_contents)
51            (TestNonAsciiColumnName.file_contents)
52            (TestLayerVisibility.file_contents)
53            (TestClassification.file_contents, TestLabels.file_contents)
54            (TestLayerProjection.file_contents)
55            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
56            (TestPostGISLayer.file_contents)
57            (TestPostGISLayerPassword.file_contents)
58            (TestLoadError.file_contents, TestLoadError.test): Update to
59            thuban-1.0rc1 namespace
60    
61    2003-12-01  Bernhard Herzog  <[email protected]>
62    
63            * setup.py (proj4_prefix, wx_prefix, gdal_prefix): Fix these for
64            nt to better match Intevation's current w32 setup
65    
66            * HOWTO-Release: Add note about updating MANIFEST.in
67    
68            * MANIFEST.in: Add the Extensions
69    
70            * NEWS: Update for 1.0rc1
71    
72    2003-12-01  Bernhard Herzog  <[email protected]>
73    
74            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Change the wild
75            cards for the dialog so that shapefiles ending in all uppercase
76            SHP are listed too
77    
78    2003-11-28  Bernhard Herzog  <[email protected]>
79    
80            * Thuban/version.py (longversion): Update to 1.0rc1
81    
82            * setup.py (setup call): Update version to 1.0rc1. Use the
83            [email protected] email address as author email instead of my
84            personal one.
85    
86    2003-11-28  Bernhard Herzog  <[email protected]>
87    
88            * po/de.po: Update german translation.
89    
90    2003-11-28  Bernhard Herzog  <[email protected]>
91    
92            Unify the filenames stored in .thuban files so that the .thuban
93            files are more platform independend
94    
95            * Thuban/Model/save.py (unify_filename): New. Unify filenames so
96            that they can be used on both windows and unix
97            (SessionSaver.prepare_filename): New. Handle all filename
98            transformations for filenames stored in the thuban file
99            (SessionSaver.write_data_containers, SessionSaver.write_layer):
100            Use prepare_filename
101    
102            * test/test_save.py (SaveSessionTest.testSingleLayer)
103            (SaveSessionTest.testLayerProjection)
104            (SaveSessionTest.testRasterLayer)
105            (SaveSessionTest.testClassifiedLayer)
106            (SaveSessionTest.test_dbf_table)
107            (SaveSessionTest.test_joined_table): Filenames are always stored
108            with slashes on all currently supported platforms so adapt all
109            tests to this
110    
111            * test/test_load.py (LoadSessionTest.filenames): With the new
112            filename scheme the filenames in the tests should be
113            understandable on all currently supported platforms so we turn
114            this into an empty list because we don't have to normalize them
115            anymore
116    
117    2003-11-28  Bernhard Herzog  <[email protected]>
118    
119            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
120            Add the ellipsoid to the projection since some Proj versions
121            complain if it's missing.
122    
123    2003-11-27  Bernhard Herzog  <[email protected]>
124    
125            Corect some bounding box projection problems
126    
127            * Thuban/Model/proj.py (Projection.InverseBBox): New. Inverse
128            version of ForwardBBox
129            (Projection._transform_bbox): New. common implementation of
130            ForwardBBox and InverseBBox
131            (Projection.ForwardBBox): Use _transform_bbox.
132    
133            * test/test_proj.py (TestProjection.test): Add test for
134            InverseBBox
135    
136            * Thuban/Model/layer.py (Layer.LatLongBoundingBox)
137            (Layer.ShapesBoundingBox, RasterLayer.LatLongBoundingBox): Use the
138            new InverseBBox method to determine the unprojected bounding box
139            (Layer.ShapesInRegion): Use the ForwardBBox method to project the
140            bbox.
141    
142            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
143            Removed.
144            (TestLayer.test_arc_layer_with_projection): New. This test is
145            better able to test whether bounding boxes are projected correctly
146            than test_point_layer_with_projection
147    
148            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Use
149            InverseBBox to unproject bboxes
150    
151    2003-11-25  Bernhard Herzog  <[email protected]>
152    
153            * Thuban/UI/about.py (About.__init__): Make sure we have ASCII
154            source code.
155    
156    2003-11-25  Bernhard Herzog  <[email protected]>
157    
158            * Thuban/Model/layer.py (Layer.__getattr__): Removed. It was only
159            there for backwards compatibility and all code relying on that
160            should have been updated by now.
161    
162    2003-11-25  Bernhard Herzog  <[email protected]>
163    
164            * test/test_load.py (TestClassification.test): Add the missing
165            round trip test.
166            (TestClassification.file_contents): Update to the newest file
167            format
168    
169    2003-11-25  Bernhard Herzog  <[email protected]>
170    
171            Add very experimental (and possibly dangerous) extension to draw
172            polygons:
173    
174            * Extensions/drawshape/README: New. Brief installation
175            instructions
176    
177            * Extensions/drawshape/drawshape.py: New. Implementation of the
178            drawshape extensions
179    
180            * Extensions/drawshape/patch.diff: Patch to apply before the
181            extension can be used.
182    
183    2003-11-24  Bernhard Herzog  <[email protected]>
184    
185            * Thuban/Model/data.py (ShapefileStore._open_shapefile)
186            (ShapefileStore.__init__): Factor opening the shapefile into a
187            separate method (the new _open_shapefile). This makes the code a
188            bit more readable but the real reason is that it makes some evil
189            hacks easier. :-)
190    
191    2003-11-24  Bernhard Herzog  <[email protected]>
192    
193            * Thuban/Model/load.py (SessionLoader.check_attrs): If no
194            converter is specified for an attribute assume it's a string
195            containing only Latin1 characters. Update doc-string accordingly.
196            This change should fix many places where unicode objects might
197            accidentally enter Thuban.
198    
199            * test/test_load.py (TestNonAsciiColumnName): New test to check
200            what happens with column names in DBF files that contain non-ascii
201            characters
202    
203    2003-11-21  Bernhard Herzog  <[email protected]>
204    
205            Enable the experimental attribute editing again and introduce a
206            command line switch to actually activate it
207    
208            * Thuban/UI/main.py (options): New. Container for options set on
209            the commmand line
210            (main): Add the --enable-attribute-editing flag.
211    
212            * Thuban/UI/identifyview.py (IdentifyView.__init__): If attribute
213            editing is enabled use the grid ctrl which allows editing of the
214            values
215    
216            * Thuban/Model/transientdb.py (AutoTransientTable.write_record):
217            New. Just delegate this to the underlying table.
218    
219    2003-11-20  Bernhard Herzog  <[email protected]>
220    
221            * test/test_proj.py (ProjFileReadTests.test_read_unreadable_file):
222            Skip this test if run under non-posix systems since it only works
223            there
224    
225    2003-11-19  Bernhard Herzog  <[email protected]>
226    
227            * Thuban/Model/resource.py: Rework the way gdal support is
228            determined so that we can give a reason in the about why gdal is
229            not supported.
230            (gdal_support_status): New. Variable holding a string with the
231            reason for no gdal support
232    
233            * Thuban/UI/about.py (About.__init__): Add the reason why gdal is
234            not supported to the message
235    
236    2003-11-19  Bernhard Herzog  <[email protected]>
237    
238            Remove the old table interface and its test cases
239    
240            * Thuban/Model/table.py (OldTableInterfaceMixin): Removed.
241            (DBFTable, MemoryTable): Do not derive from OldTableInterfaceMixin
242            anymore
243    
244            * Thuban/Model/transientdb.py (TransientTableBase)
245            (AutoTransientTable): Do not derive from OldTableInterfaceMixin
246            anymore
247    
248            * test/test_table.py: Removed since the old interface it tests is
249            gone.
250    
251            * test/runtests.py (main): The old table interface is gone and
252            with it the deprecation warnings so remove the code that turns
253            these warnings into errors
254    
255    2003-11-19  Bernhard Herzog  <[email protected]>
256    
257            * test/test_table.py: Revert to revision 1.5 again. Changing the
258            tests to use the new table interface is completely wrong since the
259            whole purpose of the tests in this module is to test the old
260            interface.
261    
262    2003-11-18  Bernhard Herzog  <[email protected]>
263    
264            * Thuban/Model/postgisdb.py (PostGISConnection.MatchesParameters):
265            New. Test whether the connection matches a set of connection
266            parameters
267    
268            * Thuban/UI/dbdialog.py (DBFrame.conns_changed): Fix doc-string
269            (DBFrame.OnAdd): Use the new MatchesParameters method when looking
270            for existing connections with the same parameters and break out of
271            the loop correctly.
272    
273            * test/test_postgis_db.py (TestBriefDescription)
274            (TestPostGISSimple.test_brief_description): Rename
275            TestBriefDescription to TestPostGISSimple and the test method to
276            test_brief_description so that we can add more test methods.
277            (TestPostGISSimple.test_matches_parameters): New. Test the new
278            MatchesParameters method
279    
280    2003-11-18  Bernhard Herzog  <[email protected]>
281    
282            * Thuban/Lib/connector.py (Publisher): Introduce a new flag,
283            _was_destroyed, to indicate whether an publisher instance has
284            already been destroyed.
285            (Publisher.Unsubscribe): Only disconnect if the publisher has not
286            been destroyed yet.
287            (Publisher.Destroy): Set the _was_destroyed flag to true.
288    
289            * test/test_connector.py
290            (TestPublisher.test_unsubscribe_after_destroy): New. Test that
291            calling Unsubscribe after Destroy doesn't raise an exception
292    
293    2003-11-14  Bernhard Herzog  <[email protected]>
294    
295            * Thuban/UI/identifyview.py (IdentifyView.selected_shape): Fix
296            typo in doc-string
297    
298    2003-11-13  Bernhard Herzog  <[email protected]>
299    
300            Quote table and column names properly for postgis.
301    
302            * Thuban/Model/postgisdb.py (quote_identifier): New. Function to
303            quote an identifier for use in an sql statement
304            (PostGISColumn.__init__): Add the quoted_name attribute
305            (PostGISTable.__init__): New instance variable quoted_tablename
306            (PostGISTable._fetch_table_information): Use the quoted table
307            name. New isntance variable quoted_geo_col with a quoted version
308            of geometry_column
309            (PostGISTable.NumRows, PostGISTable.RowIdToOrdinal)
310            (PostGISTable.RowOrdinalToId): Use the quoted table name
311            (PostGISTable.ReadValue, PostGISTable.ValueRange)
312            (PostGISTable.UniqueValues, PostGISTable.SimpleQuery)
313            (PostGISShapeStore.BoundingBox, PostGISShapeStore.Shape)
314            (PostGISShapeStore.AllShapes, PostGISShapeStore.ShapesInRegion):
315            Use quoted table and column names
316    
317            * test/test_postgis_db.py (TestPostGISSpecialCases)
318            (TestPostGISIgnoredColumns): Rename the class to
319            TestPostGISSpecialCases because that better describes the new
320            cases
321            (TestPostGISSpecialCases.test_unsupported_types)
322            (TestPostGISSpecialCases.test): Rename the method to
323            test_unsupported_types because we need a more descriptive name now
324            that there are more methods
325            (TestPostGISSpecialCases.test_table_name_quoting)
326            (TestPostGISSpecialCases.test_column_name_quoting)
327            (TestPostGISSpecialCases.test_shapestore_name_quoting): New test
328            cases to test quoting of table and column names in PostGISTable
329            and PostGISShapeStore
330    
331            * test/postgissupport.py
332            (skip_if_addgeometrycolumn_does_not_use_quote_ident): New. Skip if
333            AddGeometryColumn desn't support table or column names with sapces
334            or double quotes
335    
336    2003-11-12  Jan-Oliver Wagner <[email protected]>
337    
338            * Extensions/wms/__init__.py: New: Init to make this
339            directory a package.
340    
341            * Extensions/wms/wms.py: New: Provide layers via OGC WMS.
342    
343    2003-11-11  Bernhard Herzog  <[email protected]>
344    
345            * Thuban/Model/resource.py (EPSG_DEPRECATED_PROJ_FILE): New.
346            Constant for the file woth deprecated epsg projections
347            (get_system_proj_file): Update doc-string
348    
349            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Add a space
350            above the EPS widgets, introduce a check box for the deprecated
351            eps projections and a label for the epsg widgets
352            (ProjFrame._OnShowEPSG): Handle the deprecated EPSG projections
353            too
354    
355    2003-11-11  Bernhard Herzog  <[email protected]>
356    
357            Avoid warnings when run under Python 2.3
358    
359            * Thuban/UI/baserenderer.py (BaseRenderer.draw_point_shape)
360            (BaseRenderer.draw_label_layer): Coordinates must be ints.
361    
362            * Thuban/UI/renderer.py (MapRenderer.make_point): Turn this into a
363            real method so that we can convert to int.
364            (MapRenderer.label_font): The font size mist be an int.
365    
366            * Thuban/UI/common.py (Color2wxColour): The color values must be
367            ints. Also, remove the unnecessary asserts.
368    
369            * test/test_load_0_8.py (TestUnicodeStrings.file_contents)
370            (TestUnicodeStrings.test): Python source code should not contain
371            non-ascii characters unless an encoding is specified in the file.
372            Therefore use \x escapes in the string literals for non-ascii
373            characters.
374    
375    2003-11-11  Bernhard Herzog  <[email protected]>
376    
377            * Thuban/Model/resource.py (get_system_proj_file): Add a filename
378            parameter so that this function can be used for all proj files in
379            Resource/Projections
380            (DEFAULT_PROJ_FILE, EPSG_PROJ_FILE): New. Predefined filenames for
381            get_system_proj_file
382    
383            * Thuban/UI/projdialog.py (ProjFrame.__init__): Instead of one
384            ProjFile self.__sysProjFile use a dictionary of system ProjFile
385            objects self._sys_proj_files
386            (ProjFrame.build_dialog): Adapt to the new changes in the
387            ProjectionList constructor. Add a check button to toggle whether
388            EPSG projections are shown
389            (ProjFrame._OnShowEPSG): New. Handler for the epsg check button
390            events.
391            (ProjFrame.load_user_proj, ProjFrame.load_system_proj): Only show
392            the busy cursor if the files have not yet been loaded by the
393            dialog.
394            (ProjFrame.load_system_proj): Add a parameter for the name of the
395            proj file. Maintain the dictionary of system projections
396            self._sys_proj_files
397    
398            * Thuban/UI/projlist.py (ProjectionList): Merge the system_projs,
399            user_projs parameters into one parameter proj_files which is a
400            list of proj files.
401            (ProjectionList._subscribe_proj_files)
402            (ProjectionList._unsubscribe_proj_files): New. Move
403            subscription/unsubscription of projfile messages to separate
404            methods
405            (ProjectionList.Destroy): The unsubscribe is now done in
406            _unsubscribe_proj_files
407            (ProjectionList.update_projections): We now have a list of proj
408            file objects
409            (ProjectionList.SetProjFiles): New method to set a new list of
410            proj file objects
411    
412            * test/test_proj.py (ProjFileReadTests.test_get_system_proj_file):
413            Specify explicitly which system proj file to load.
414    
415    2003-11-11  Bernhard Herzog  <[email protected]>
416    
417            * Thuban/Model/load.py (SessionLoader.Destroy): New. Clear all
418            instance variables to cut cyclic references. The GC would have
419            collected the loader eventually but it can happen that it doesn't
420            run at all until thuban is closed (2.3 but not 2.2 tries a bit
421            harder and forces a collection when the interpreter terminates)
422            (load_session): Call the handler's Destroy method to make sure
423            that it gets garbage collected early. Otherwise it will be
424            collected very late if at all and it holds some references to e.g.
425            shapestores and the session which can lead to leaks (of e.g. the
426            temporary files)
427    
428            * test/test_load.py (TestSingleLayer.test_leak): New. test for the
429            resource leak in load_session
430    
431    2003-11-10  Bernhard Herzog  <[email protected]>
432    
433            * Thuban/UI/baserenderer.py: Add a way to specify how layers in
434            extensions are to be rendered.
435            (_renderer_extensions): New. List with renderer for layers in
436            extensions
437            (add_renderer_extension): New. Add a renderer extension
438            (init_renderer_extensions): New. Init the renderer extensions
439            (BaseRenderer.render_map_incrementally): Search
440            _renderer_extensions for how to draw unknown layer types
441            (BaseRenderer.draw_raster_data): Add format parameter so that
442            formats other than BMP can be drawn
443            (BaseRenderer.draw_raster_layer): Pass an explicit format to
444            draw_raster_data
445    
446            * Thuban/UI/renderer.py (raster_format_map): New. Mapping form the
447            strings of the format parameter of draw_raster_data method to wx
448            constants
449            (MapRenderer.draw_raster_data): Add the format parameter and use
450            raster_format_map to map it to the right wxwindows constant for
451            wxImageFromStream
452    
453            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Add
454            the format parameter and record it
455            (TestBaseRenderer.test_raster_no_projection): check the format
456            paramter of the draw_raster_data method
457            (TestBaseRenderer.test_renderer_extension): New. Test the renderer
458            extension facility
459    
460    2003-11-07  Bernhard Herzog  <[email protected]>
461    
462            Tweak the usage of the sqlite database to make common use cases
463            more responsive. In most cases copying the data to the sqlite
464            database takes so long that using sqlite doesn't have enough
465            advantages.
466    
467            * Thuban/Model/transientdb.py (TransientTableBase.ValueRange): Add
468            comments about performance and query the min and max in separate
469            statements because only that way will indexes be used.
470            (TransientTableBase.UniqueValues): Add some comments about
471            performance.
472            (AutoTransientTable.ValueRange, AutoTransientTable.UniqueValues):
473            Do not copy the data to the transient DB but use the transient
474            copy if it exists. See the new comments for the performance trade
475            offs
476    
477            * test/test_transientdb.py
478            (TestTransientTable.test_auto_transient_table): Make sure that the
479            data is copied to the transient database at some point.
480    
481    2003-11-03  Bernhard Herzog  <[email protected]>
482    
483            * Thuban/Model/data.py (ShapefileStore.ShapesInRegion): Bind some
484            globals to locals so that it's a bit faster
485    
486    2003-11-03  Bernhard Herzog  <[email protected]>
487    
488            * Thuban/UI/baserenderer.py
489            (BaseRenderer.draw_shape_layer_incrementally): Use the ReadValue
490            method. ReadValue is faster than ReadRowAsDict since it only reads
491            one cell especially now that the dbf file objects actually
492            implement it.
493    
494            * Thuban/Model/table.py (DBFTable.ReadValue): Use the new
495            read_attribute method of the dbf objects
496    
497    2003-11-03  Bernhard Herzog  <[email protected]>
498    
499            * Extensions/profiling/profiling.py (popup_dialog_box): New config
500            variable to indicate whether the result should be shown in a
501            dialog box
502            (profile_screen_renderer, time_screen_renderer): Only show a
503            dialog box if popup_dialog_box is true.
504            (profile_screen_renderer): Flush stdout after the printing the
505            first part of the "profiling..." message
506    
507            * Thuban/UI/baserenderer.py
508            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
509            brushes for the groups so that they're not created over and over
510            again
511    
512            * Thuban/Model/classification.py (Classification.__getattr__)
513            (Classification._compile_classification)
514            (Classification._clear_compiled_classification): New. Methods to
515            manage a 'compiled' representation of the classification groups
516            which is created on demand
517            (Classification.InsertGroup, Classification.RemoveGroup)
518            (Classification.ReplaceGroup): reset the compiled representation
519            (Classification.FindGroup): Use the compiled representation to
520            find the matching group
521            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
522    
523    2003-10-31  Bernhard Herzog  <[email protected]>
524    
525            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
526            Send a CLASS_CHANGED message
527            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
528            not return the removed group since it wasn't used.
529    
530            * test/test_classification.py
531            (TestClassification.test_set_default_group): New. Test the
532            SetDefaultGroup method
533            (TestClassification.test_insert_group): New. Test the InsertGroup
534            method
535            (TestClassification.test_remove_group): New. Test the RemoveGroup
536            method
537            (TestClassification.test_replace_group): New. Test the
538            ReplaceGroup method
539    
540    2003-10-31  Bernhard Herzog  <[email protected]>
541    
542            * test/test_classification.py (TestClassification.setUp):
543            Subscribe to the CLASS_CHANGED messages
544            (TestClassification.tearDown): New. Destroy the classification
545            properly
546            (TestClassification.test_defaults): Add tests for the default line
547            width and whether no messages were sent yet
548            (TestClassification.test_set_default_properties): Add tests for
549            messages and setting the default line width
550            (TestClassification.test_add_singleton)
551            (TestClassification.test_add_range)
552            (TestClassification.test_multiple_groups): Add tests for messages
553    
554    2003-10-31  Bernhard Herzog  <[email protected]>
555    
556            Some more refactoring in preparation for new tests:
557    
558            * test/test_classification.py (TestClassification.setUp): New.
559            Instantiate the classification here. Update the test methods
560            accordingly.
561            (TestClassification.test_multiple_groups): Make sure that the two
562            singletons matching 1 are considered different.
563    
564    2003-10-31  Bernhard Herzog  <[email protected]>
565    
566            * test/test_classification.py (red, green, blue): New. These
567            constants were used in several cases. Update the relevant methods.
568            (TestClassification.test_defaults)
569            (TestClassification.test_set_default_properties)
570            (TestClassification.test_add_singleton)
571            (TestClassification.test_add_range)
572            (TestClassification.test_multiple_groups)
573            (TestClassification.test_deepcopy): New. These were formerly all
574            part of the single method test.
575            (TestClassification.test_deepcopy): Removed.
576            (TestClassIterator): Removed. The test case is now a method of
577            TestClassification since it tests part of the public interface of
578            Classification
579            (TestClassification.test_iterator): New. Used to be
580            TestClassIterator effectively
581    
582    2003-10-31  Jan-Oliver Wagner <[email protected]>
583    
584            GUIfied the functions of the profiling extension.
585    
586            * /Extensions/profiling/__init__.py: New: Init to make this
587            directory a package.
588    
589            * Extensions/profiling/profiling.py: Moved menu entries to
590            the Extensions menu. Applied _() for strings.
591            (profile_screen_renderer): Catch the detailed printout and present
592            it in a dialog.
593            (time_screen_renderer): Raise a dialog to present the result instead
594            of printing it to stdout.
595    
596    2003-10-31  Bernhard Herzog  <[email protected]>
597    
598            * test/test_classification.py (TestClassGroupProperties)
599            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
600            (TestClassGroupSingleton, TestClassIterator, TestClassification):
601            Split TestClassification into several classes, one for each class
602            being tested. TestClassification itself now only tests
603            Classification. This split makes changes to the tests a bit easier
604    
605    2003-10-31  Bernhard Herzog  <[email protected]>
606    
607            * Extensions/profiling/profiling.py: New. Extension to measure
608            Thuban performance
609    
610    2003-10-31  Frank Koormann <[email protected]>
611    
612            Added two items to legend popup menu: Remove Layer and Show Layer Table
613    
614            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
615            LegendPanel._OnShowTable): New event handlers, call the corresponding
616            mainwindow methods.
617            (LegendTree._OnRightClick): Added items to popup menu.
618    
619    2003-10-30  Bernhard Herzog  <[email protected]>
620    
621            * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle
622            EVT_WINDOW_DESTROY
623            (ThubanFrame.OnDestroy): New. Handler for EVT_WINDOW_DESTROY. Does
624            nothing but is convenient for the derived classes.
625    
626            * Thuban/UI/tableview.py
627            (TableFrame.OnDestroy, LayerTableFrame.OnDestroy): New.
628            Unsubscribe the messages here not in OnClose because that might
629            get called multiple times. Fixes RT #2196
630            (TableFrame.OnClose, LayerTableFrame.OnClose): Removed. Not needed
631            anymore.
632    
633            * README: Update the minimum requirement for wxPython. Since we
634            now use the EVT_WINDOW_DESTROY event, we need at least 2.4.0.4,
635            the version in which that was introduced for all platforms
636    
637    2003-10-30  Frank Koormann <[email protected]>
638    
639            * Thuban/UI/join.py (JoinDialog.OnJoin): Wrapped the major parts of
640            the join process in a ThubanBeginBusyCursor, ThubanEndBusyCursor
641            frame.
642    
643    2003-10-30  Jan-Oliver Wagner <[email protected]>
644    
645            Improved APR import extension, added further EPSG definitions
646            and some cleanup regarding string class.
647    
648            * test/test_proj.py (TestProjection.test_get_projection_units_geo):
649            Added test for alias 'longlat'.
650    
651            * Resources/Projections/epsg-deprecated.proj: New. Contains
652            deprecated EPSG definitions.
653    
654            * Extensions/importAPR/odb.py (ODBBaseObject.TreeInfo): Added
655            the variable names for objects.
656    
657            * Extensions/importAPR/apr.py (APR_BLnSym, APR_BMkSym, APR_BShSym): New.
658            Copied from importAPR and provided with documentation.
659    
660            * Extensions/importAPR/importAPR.py (APR_BLnSym, APR_BMkSym, APR_BShSym):
661            Moved to apr.py.
662            (APR_View): Added object ref 'ITheme'.
663    
664            * Thuban/Lib/fileutil.py, Thuban/UI/proj4dialog.py: Replaced string
665            split function by corresponding use of the string class method.
666    
667            * Thuban/Model/xmlwriter.py: Replaced string replace function by
668            corresponding string method.
669    
670    2003-10-29  Bernhard Herzog  <[email protected]>
671    
672            * Thuban/UI/baserenderer.py
673            (BaseRenderer.draw_shape_layer_incrementally): Speed up the
674            special case of a classification that only has the default group
675    
676    2003-10-27  Bernhard Herzog  <[email protected]>
677    
678            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
679    
680            * po/de.po: Update.
681    
682            * Thuban/UI/application.py
683            (ThubanApplication.ShowExceptionDialog): Handle translation of the
684            dialog message properly
685    
686    2003-10-27  Bernhard Herzog  <[email protected]>
687    
688            Rework how localization works so that we use wx's translation
689            functions when running Thuban as a normal application but not when
690            we don't need any UI, such as in the test suite. See the comment
691            in Thuban/__init__.py for details
692    
693            * Thuban/__init__.py (_): Add one level of indirection to make the
694            translation handling more flexible and to make it possible to use
695            either wx's translation services or not.
696            (gettext_identity, translation_function_installed)
697            (install_translation_function): New function to help with this
698    
699            * Thuban/UI/__init__.py: Install the wx specific translation
700            function if it's OK to do that
701    
702            * test/support.py (initthuban): Install a dummy translation
703            function so that importing Thuban.UI doesn't install a wx specific
704            one for which would need to import wxPython
705    
706    2003-10-27  Bernhard Herzog  <[email protected]>
707    
708            * HOWTO-Release: Source archives should be created first and the
709            binary packages should be created from the source archives.
710            There's an official debian package now so there's no need to test
711            the rpm on debian anymore
712    
713    2003-10-27  Bernhard Herzog  <[email protected]>
714    
715            Several rendering changes:
716    
717             - Render the selection into a separate bitmap so that only that
718               bitmap needs to be redrawn when the selection changes
719    
720             - Render incrementally showing previews and allowing interaction
721               before rendering is complete
722    
723             - Update the renderer interface a bit. Most parameters of
724               RenderMap are now parameters of the constructor
725    
726            * Thuban/UI/baserenderer.py (BaseRenderer.__init__): Add the map
727            and the update region as parameters. Update the doc-string
728            (BaseRenderer.render_map_incrementally): New. Generator function
729            to renders the map incrementally
730            (BaseRenderer.render_map): Remove the map argument (it's now in
731            the constructor) and simply iterate over the
732            render_map_incrementally generator to draw the map.
733            (BaseRenderer.draw_shape_layer_incrementally)
734            (BaseRenderer.draw_shape_layer): Renamed to
735            draw_shape_layer_incrementally and changed into a generator that
736            yields True every 500 shapes. Used by render_map_incrementally to
737            render shape layers incrementally
738    
739            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Removed the
740            map and region parameters which are now in the constructor
741            (ScreenRenderer.RenderMapIncrementally): New. Public frontend for
742            the inherited render_map_incrementally.
743            (BaseRenderer.draw_shape_layer): Removed.
744            (ScreenRenderer.draw_selection_incrementally): New. The selection
745            drawing part of the removed draw_shape_layer as a generator
746            (ScreenRenderer.layer_shapes): Update because of the region
747            parameter change
748            (ExportRenderer.__init__): New. Extend the inherited constructor
749            with the destination region for the drawing
750            (ExportRenderer.RenderMap): Removed the map and region parameters
751            which are now in the constructor
752    
753            * Thuban/UI/view.py (MapCanvas.PreviewBitmap): New. Return a
754            bitmap suitable for a preview in a tool
755            (CanvasPanTool.MouseMove): Use the PreviewBitmap method to get the
756            bitmap
757            (MapPrintout.draw_on_dc): Adapt to new renderer interface
758            (MapCanvas.OnPaint): Handle drawing the selection bitmap if it
759            exists
760            (MapCanvas.OnIdle): Update the logic to deal with incremental
761            rendering and the selection bitmap
762            (MapCanvas._do_redraw): Handle the instantiation of the render
763            iterator and the redraws during rendering
764            (MapCanvas._render_iterator): New. Generator to incrementally
765            redraw both bitmaps
766            (MapCanvas.Export): Adapt to new renderer interface.
767            (MapCanvas.full_redraw): Reset the selection bitmap and the
768            renderer iterator too
769            (MapCanvas.redraw_selection): New. Force a redraw of the selection
770            bitmap
771            (MapCanvas.shape_selected): Only redraw the selection bitmap
772    
773            * test/test_baserenderer.py
774            (TestBaseRenderer.test_polygon_no_projection)
775            (TestBaseRenderer.test_raster_no_projection)
776            (TestBaseRenderer.test_point_map_projection)
777            (TestBaseRenderer.test_point_layer_and_map_projection)
778            (TestBaseRenderer.test_point_layer_projection)
779            (TestBaseRenderer.test_point_with_classification): Adapt to new
780            renderer interface
781    
782    2003-10-24  Bernhard Herzog  <[email protected]>
783    
784            * libraries/thuban/wxproj.cpp (draw_polygon_shape)
785            (point_in_polygon_shape, shape_centroid): Raise an exception if
786            the shape can't be read. Previously invalid shape ids would lead
787            to a segfault.
788    
789            * test/test_wxproj.py (TestShapeCentroid.test_invalid_shape_id):
790            New. test whether an exception is raised for invalid shape ids
791    
792    2003-10-24  Jan-Oliver Wagner <[email protected]>
793    
794            * Thuban/Model/proj.py (Projection.GetProjectedUnits): Added 'longlat'
795            as alias for 'latlong'.
796    
797            * Thuban/UI/projdialog.py (ProjFrame.__init__): Added 'longlat'
798            as alias for 'latlong'.
799    
800    2003-10-24  Jan-Oliver Wagner <[email protected]>
801    
802            * Thuban/UI/projdialog.py (ProjFrame.proj_selection_changed): Set
803            the projection even for the UnknownPanel.
804            (UnknownProjPanel.__init__): Define the text and create the textctrl
805            widget.
806            (UnknownProjPanel._DoLayout): Replaced static text widget by the
807            textctrl created in __init__.
808            (UnknownProjPanel.SetProjection): Set the text for the text ctrl
809            including the parameters of the projection.
810            
811    2003-10-24  Jan-Oliver Wagner <[email protected]>
812    
813            * Resources/Projections/epsg.proj: New. This is a list of
814            EPSG codes with parameters for proj. The list has been
815            generated using devtools/create_epsg.py based on the
816            file nad/epsg of the proj 4.4.7 package. Four projection
817            definitions have been deleted as they are not accepted by proj:
818            "CH1903+ / LV95", "Bern 1898 (Bern) / LV03C", "CH1903 / LV03"
819            and "HD72 / EOV".
820    
821    2003-10-22  Bernhard Herzog  <[email protected]>
822    
823            Some more tweaks to the projection dialog which should fix RT
824            #1886.
825    
826            * Thuban/UI/projlist.py (ProjectionList.Destroy): Unsubscribe from
827            the ProjFile's messages and call the base class methods correctly
828            (ProjectionList.SelectProjection): Set the wxLIST_STATE_FOCUSED
829            flag on the newly selected item too. Otherwise some other item is
830            focused and the first time the focus is moved with the keyboard
831            the selection moves in unexpected ways.
832    
833            * Thuban/UI/projdialog.py (ProjFrame.__init__): Do not set the
834            focus on the OK button, only on the projection list. That way the
835            list really has the focus initially
836            (ProjFrame.OnClose): Call the projection list's Destroy method to
837            make it unsubscribe all messages
838    
839    2003-10-21  Bernhard Herzog  <[email protected]>
840    
841            Rework the projection dialog to fix a few bugs, including RT 2166
842            and most of 2168
843    
844            * Thuban/UI/projlist.py: New. The class ProjectionList is a
845            special wxListCtrl to show a list of projections in a more MVC
846            fashion
847    
848            * Thuban/UI/projdialog.py (ProjFrame): Substantial changes
849            throughout the class. The main change is to use the ProjectionList
850            class instead of a normal wxListBox. Also, add an explicit
851            "Unknown" projection to the projection choice control.
852            (ProjPanel.__init__): Add an "unknown" ellipsoid
853            (TMPanel.__init__, LCCPanel.__init__): Tweak the order of
854            instantiation of the panel's controls to make the tab-order more
855            natural
856    
857    2003-10-21  Bernhard Herzog  <[email protected]>
858    
859            * test/test_load.py (TestSingleLayer.file_contents)
860            (TestSingleLayer.test): Add non-ascii characters to the titles of
861            session, map and layer. This is effectively a port of the
862            TestUnicodeStrings test in test_load_0_8.py which for some reason
863            was only added there.
864    
865            * test/test_load_0_9.py (TestSingleLayer.file_contents)
866            (TestSingleLayer.test): Same as in test_load.py: add non-ascii
867            characters to the titles of session, map and layer,.
868    
869    2003-10-21  Bernhard Herzog  <[email protected]>
870    
871            Add EPSG projection handling to .thuban files
872    
873            * test/test_save.py (SaveSessionTest.dtd)
874            (SaveSessionTest.testEmptySession)
875            (SaveSessionTest.testLayerProjection)
876            (SaveSessionTest.testRasterLayer)
877            (SaveSessionTest.testClassifiedLayer)
878            (SaveSessionTest.test_dbf_table)
879            (SaveSessionTest.test_joined_table)
880            (SaveSessionTest.test_save_postgis): Update to 1.0-dev namespace
881            (SaveSessionTest.testSingleLayer): Update to 1.0-dev namespace and
882            use a and epsg projection to test saving them
883    
884            * test/test_load.py (LoadSessionTest.dtd): Update to 1.0-dev
885            namespace
886            (TestLayerVisibility.file_contents, TestLabels.file_contents)
887            (TestLayerProjection.file_contents)
888            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
889            (TestPostGISLayer.file_contents)
890            (TestPostGISLayerPassword.file_contents)
891            (TestLoadError.file_contents, TestLoadError.test): Update to use
892            1.0-dev namespace
893            (TestSingleLayer.file_contents, TestSingleLayer.test): Update to
894            use 1.0-dev namespace and use an EPSG projection to test whether
895            loading it works
896    
897            * test/test_load_0_9.py: New. Effectively a copy of test_load.py
898            as of Thuban 0.9. These are now tests to determine whether Thuban
899            can still read files generated by Thuban 0.9
900    
901            * Thuban/Model/save.py (SessionSaver.write)
902            (SessionSaver.write_session): Use the 1.0 dtd and 1.0-dev
903            namespace
904            (SessionSaver.write_projection): Write the projection's epsg
905            attribute
906    
907            * Thuban/Model/load.py (SessionLoader.__init__): Also accept the
908            thuban-1.0-dev.dtd namespace
909            (SessionLoader.check_attrs): Allow a callable object as conversion
910            too
911            (SessionLoader.start_projection, SessionLoader.end_projection)
912            (SessionLoader.start_parameter): Handle the epsg attribute and
913            rename a few instance variables to lower case
914    
915            * Resources/XML/thuban-1.0.dtd: New. Only difference to
916            thuban-0.9.dtd is the epsg attribute for projections.
917    
918    2003-10-21  Bernhard Herzog  <[email protected]>
919    
920            * test/runtests.py (main): Let the user specify which tests to run
921            on the command line
922    
923            * test/support.py (ThubanTestResult.getDescription): Override to
924            give a better short description. The description can be used as a
925            parameter to run_tests to run that particular test in isolation.
926    
927    2003-10-21  Frank Koormann   <[email protected]>
928    
929            Popup menu for legend. Scheduled for the 1.2 release this was too
930            simple to implement: The popup menu is bound to the legend tree, while
931            the events are hanlded by its anchestor, the legend panel. This
932            allows reuse of all the event handlers already implemented for the
933            legend toolbar buttons.
934    
935            * Thuban/UI/legend.py (LegendPanel.__init__): EVT_MENU macros
936            to add handlers for the events issued by the popup menu.
937            (LegendPanel._OnToggleVisibility): Handler for toggling layer
938            visibility event
939            (LegendPanel._OnProjection): Handler for layer projection event.
940            (LegendTree.__init__): Added EVT_TREE_ITEM_RIGHT_CLICK
941            (LegendTree._OnRightClick): Event handler for right click, select item
942            and pop up menu.
943            (LegendTree.ToggleVisibility): Toggle layer visibility
944            (LegendTree.LayerProjection): Raise layer projection dialog for
945            current layer.
946    
947    2003-10-21  Bernhard Herzog  <[email protected]>
948    
949            * Resources/Projections/defaults.proj: Use correct DOCTYPE
950            declaration. The top-level element is projectionlist not projfile
951    
952    2003-10-20  Bernhard Herzog  <[email protected]>
953    
954            * Thuban/UI/projdialog.py (ProjFrame.write_proj_file): New. helper
955            method to write a projfile and display a busy cursor and error
956            dialogs.
957            (ProjFrame._OnSave, ProjFrame._OnAddToList, ProjFrame._OnImport)
958            (ProjFrame._OnExport, ProjFrame._OnRemove): Use write_proj_file
959            (ProjFrame.__FillAvailList): Translate "<None>" too and display a
960            busy cursor while loading the user and system prj files.
961    
962    2003-10-16  Bernhard Herzog  <[email protected]>
963    
964            * Thuban/Model/resource.py (projfile_cache): Introduce a cache for
965            ProjFile objects
966            (clear_proj_file_cache): New function to clear the cache. Mainly
967            useful for use by the test suite
968            (read_proj_file): Use the cache.
969    
970            * test/test_proj.py (TestProjFile): Clarify the doc-string
971            (ProjFileReadTests): Update doc-string
972            (ProjFileReadTests.test_get_system_proj_file): Check whether the
973            system proj files is cached.
974            (ProjFileLoadTestCase): New base class for the proj file tests
975            derived from support.FileLoadTestCase to provide some common
976            behavior.
977            (TestLoadingProjFile)
978            (TestLoadingProjFileWithEmptyProjectionlist.file_contents)
979            (TestProjFileWithInvalidParameters.file_contents): Derive from
980            ProjFileLoadTestCase
981            (TestLoadingProjFile.test_caching): New. Test whether the cache
982            works
983    
984    2003-10-16      Silke Reimer    <[email protected]>
985    
986            * debian/*: New directory with configuration files for building a thuban
987              deb-package.
988    
989    2003-10-14  Bernhard Herzog  <[email protected]>
990    
991            * test/test_proj.py: Execute support.run_tests when run as
992            __main__ so that missing unsubscribes are detected
993            (TestProjFile.tearDown): Destroy the proj_file properly
994    
995    2003-10-14  Bernhard Herzog  <[email protected]>
996    
997            * Thuban/Model/messages.py (PROJECTION_ADDED)
998            (PROJECTION_REPLACED, PROJECTION_REMOVED): New message types for
999            the ProjFile objects
1000    
1001            * Thuban/Model/proj.py (ProjFile): Derive from Publisher so we can
1002            easily send messages when the projections change
1003            (ProjFile.Add, ProjFile.Remove, ProjFile.Replace): Issue messages
1004            when the change was successful
1005    
1006            * test/test_proj.py (TestProjFile.setUp): Subscribe to some of the
1007            proj file messages
1008            (TestProjFile.test_add_remove)
1009            (TestProjFile.test_remove_non_existing)
1010            (TestProjFile.test_replace)
1011            (TestProjFile.test_replace_non_existing): Test whether the right
1012            messages are sent
1013    
1014    2003-10-14  Bernhard Herzog  <[email protected]>
1015    
1016            * test/test_proj.py (TestProjFile.test): Refactor into several
1017            tests
1018            (TestProjFile.test_add_remove)
1019            (TestProjFile.test_remove_non_existing)
1020            (TestProjFile.test_replace)
1021            (TestProjFile.test_replace_non_existing): Some of the new
1022            individual test cases
1023            (TestProjFileSimple): New class for the rest of the test cases
1024            that came out of the refactoring
1025            (ProjFileTest): Derive from xmlsupport.ValidationTest so that the
1026            derived classes don't have to
1027    
1028  2003-10-13  Bernhard Herzog  <[email protected]>  2003-10-13  Bernhard Herzog  <[email protected]>
1029    
1030          Add an optional EPSG code to the projection objects and extend the          Add an optional EPSG code to the projection objects and extend the

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26