/[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 1822 by bh, Tue Oct 14 13:54:19 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]>  2003-10-14  Bernhard Herzog  <[email protected]>
997    
998          * test/test_proj.py (TestProjFile.test): Refactor into several          * test/test_proj.py (TestProjFile.test): Refactor into several

Legend:
Removed from v.1822  
changed lines
  Added in v.2010

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26