/[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 1894 by bh, Thu Oct 30 18:17:17 2003 UTC revision 1992 by bh, Fri Nov 28 15:34:59 2003 UTC
# Line 1  Line 1 
1    2003-11-28  Bernhard Herzog  <[email protected]>
2    
3            * po/de.po: Update german translation.
4    
5    2003-11-28  Bernhard Herzog  <[email protected]>
6    
7            Unify the filenames stored in .thuban files so that the .thuban
8            files are more platform independend
9    
10            * Thuban/Model/save.py (unify_filename): New. Unify filenames so
11            that they can be used on both windows and unix
12            (SessionSaver.prepare_filename): New. Handle all filename
13            transformations for filenames stored in the thuban file
14            (SessionSaver.write_data_containers, SessionSaver.write_layer):
15            Use prepare_filename
16    
17            * test/test_save.py (SaveSessionTest.testSingleLayer)
18            (SaveSessionTest.testLayerProjection)
19            (SaveSessionTest.testRasterLayer)
20            (SaveSessionTest.testClassifiedLayer)
21            (SaveSessionTest.test_dbf_table)
22            (SaveSessionTest.test_joined_table): Filenames are always stored
23            with slashes on all currently supported platforms so adapt all
24            tests to this
25    
26            * test/test_load.py (LoadSessionTest.filenames): With the new
27            filename scheme the filenames in the tests should be
28            understandable on all currently supported platforms so we turn
29            this into an empty list because we don't have to normalize them
30            anymore
31    
32    2003-11-28  Bernhard Herzog  <[email protected]>
33    
34            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
35            Add the ellipsoid to the projection since some Proj versions
36            complain if it's missing.
37    
38    2003-11-27  Bernhard Herzog  <[email protected]>
39    
40            Corect some bounding box projection problems
41    
42            * Thuban/Model/proj.py (Projection.InverseBBox): New. Inverse
43            version of ForwardBBox
44            (Projection._transform_bbox): New. common implementation of
45            ForwardBBox and InverseBBox
46            (Projection.ForwardBBox): Use _transform_bbox.
47    
48            * test/test_proj.py (TestProjection.test): Add test for
49            InverseBBox
50    
51            * Thuban/Model/layer.py (Layer.LatLongBoundingBox)
52            (Layer.ShapesBoundingBox, RasterLayer.LatLongBoundingBox): Use the
53            new InverseBBox method to determine the unprojected bounding box
54            (Layer.ShapesInRegion): Use the ForwardBBox method to project the
55            bbox.
56    
57            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
58            Removed.
59            (TestLayer.test_arc_layer_with_projection): New. This test is
60            better able to test whether bounding boxes are projected correctly
61            than test_point_layer_with_projection
62    
63            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Use
64            InverseBBox to unproject bboxes
65    
66    2003-11-25  Bernhard Herzog  <[email protected]>
67    
68            * Thuban/UI/about.py (About.__init__): Make sure we have ASCII
69            source code.
70    
71    2003-11-25  Bernhard Herzog  <[email protected]>
72    
73            * Thuban/Model/layer.py (Layer.__getattr__): Removed. It was only
74            there for backwards compatibility and all code relying on that
75            should have been updated by now.
76    
77    2003-11-25  Bernhard Herzog  <[email protected]>
78    
79            * test/test_load.py (TestClassification.test): Add the missing
80            round trip test.
81            (TestClassification.file_contents): Update to the newest file
82            format
83    
84    2003-11-25  Bernhard Herzog  <[email protected]>
85    
86            Add very experimental (and possibly dangerous) extension to draw
87            polygons:
88    
89            * Extensions/drawshape/README: New. Brief installation
90            instructions
91    
92            * Extensions/drawshape/drawshape.py: New. Implementation of the
93            drawshape extensions
94    
95            * Extensions/drawshape/patch.diff: Patch to apply before the
96            extension can be used.
97    
98    2003-11-24  Bernhard Herzog  <[email protected]>
99    
100            * Thuban/Model/data.py (ShapefileStore._open_shapefile)
101            (ShapefileStore.__init__): Factor opening the shapefile into a
102            separate method (the new _open_shapefile). This makes the code a
103            bit more readable but the real reason is that it makes some evil
104            hacks easier. :-)
105    
106    2003-11-24  Bernhard Herzog  <[email protected]>
107    
108            * Thuban/Model/load.py (SessionLoader.check_attrs): If no
109            converter is specified for an attribute assume it's a string
110            containing only Latin1 characters. Update doc-string accordingly.
111            This change should fix many places where unicode objects might
112            accidentally enter Thuban.
113    
114            * test/test_load.py (TestNonAsciiColumnName): New test to check
115            what happens with column names in DBF files that contain non-ascii
116            characters
117    
118    2003-11-21  Bernhard Herzog  <[email protected]>
119    
120            Enable the experimental attribute editing again and introduce a
121            command line switch to actually activate it
122    
123            * Thuban/UI/main.py (options): New. Container for options set on
124            the commmand line
125            (main): Add the --enable-attribute-editing flag.
126    
127            * Thuban/UI/identifyview.py (IdentifyView.__init__): If attribute
128            editing is enabled use the grid ctrl which allows editing of the
129            values
130    
131            * Thuban/Model/transientdb.py (AutoTransientTable.write_record):
132            New. Just delegate this to the underlying table.
133    
134    2003-11-20  Bernhard Herzog  <[email protected]>
135    
136            * test/test_proj.py (ProjFileReadTests.test_read_unreadable_file):
137            Skip this test if run under non-posix systems since it only works
138            there
139    
140    2003-11-19  Bernhard Herzog  <[email protected]>
141    
142            * Thuban/Model/resource.py: Rework the way gdal support is
143            determined so that we can give a reason in the about why gdal is
144            not supported.
145            (gdal_support_status): New. Variable holding a string with the
146            reason for no gdal support
147    
148            * Thuban/UI/about.py (About.__init__): Add the reason why gdal is
149            not supported to the message
150    
151    2003-11-19  Bernhard Herzog  <[email protected]>
152    
153            Remove the old table interface and its test cases
154    
155            * Thuban/Model/table.py (OldTableInterfaceMixin): Removed.
156            (DBFTable, MemoryTable): Do not derive from OldTableInterfaceMixin
157            anymore
158    
159            * Thuban/Model/transientdb.py (TransientTableBase)
160            (AutoTransientTable): Do not derive from OldTableInterfaceMixin
161            anymore
162    
163            * test/test_table.py: Removed since the old interface it tests is
164            gone.
165    
166            * test/runtests.py (main): The old table interface is gone and
167            with it the deprecation warnings so remove the code that turns
168            these warnings into errors
169    
170    2003-11-19  Bernhard Herzog  <[email protected]>
171    
172            * test/test_table.py: Revert to revision 1.5 again. Changing the
173            tests to use the new table interface is completely wrong since the
174            whole purpose of the tests in this module is to test the old
175            interface.
176    
177    2003-11-18  Bernhard Herzog  <[email protected]>
178    
179            * Thuban/Model/postgisdb.py (PostGISConnection.MatchesParameters):
180            New. Test whether the connection matches a set of connection
181            parameters
182    
183            * Thuban/UI/dbdialog.py (DBFrame.conns_changed): Fix doc-string
184            (DBFrame.OnAdd): Use the new MatchesParameters method when looking
185            for existing connections with the same parameters and break out of
186            the loop correctly.
187    
188            * test/test_postgis_db.py (TestBriefDescription)
189            (TestPostGISSimple.test_brief_description): Rename
190            TestBriefDescription to TestPostGISSimple and the test method to
191            test_brief_description so that we can add more test methods.
192            (TestPostGISSimple.test_matches_parameters): New. Test the new
193            MatchesParameters method
194    
195    2003-11-18  Bernhard Herzog  <[email protected]>
196    
197            * Thuban/Lib/connector.py (Publisher): Introduce a new flag,
198            _was_destroyed, to indicate whether an publisher instance has
199            already been destroyed.
200            (Publisher.Unsubscribe): Only disconnect if the publisher has not
201            been destroyed yet.
202            (Publisher.Destroy): Set the _was_destroyed flag to true.
203    
204            * test/test_connector.py
205            (TestPublisher.test_unsubscribe_after_destroy): New. Test that
206            calling Unsubscribe after Destroy doesn't raise an exception
207    
208    2003-11-14  Bernhard Herzog  <[email protected]>
209    
210            * Thuban/UI/identifyview.py (IdentifyView.selected_shape): Fix
211            typo in doc-string
212    
213    2003-11-13  Bernhard Herzog  <[email protected]>
214    
215            Quote table and column names properly for postgis.
216    
217            * Thuban/Model/postgisdb.py (quote_identifier): New. Function to
218            quote an identifier for use in an sql statement
219            (PostGISColumn.__init__): Add the quoted_name attribute
220            (PostGISTable.__init__): New instance variable quoted_tablename
221            (PostGISTable._fetch_table_information): Use the quoted table
222            name. New isntance variable quoted_geo_col with a quoted version
223            of geometry_column
224            (PostGISTable.NumRows, PostGISTable.RowIdToOrdinal)
225            (PostGISTable.RowOrdinalToId): Use the quoted table name
226            (PostGISTable.ReadValue, PostGISTable.ValueRange)
227            (PostGISTable.UniqueValues, PostGISTable.SimpleQuery)
228            (PostGISShapeStore.BoundingBox, PostGISShapeStore.Shape)
229            (PostGISShapeStore.AllShapes, PostGISShapeStore.ShapesInRegion):
230            Use quoted table and column names
231    
232            * test/test_postgis_db.py (TestPostGISSpecialCases)
233            (TestPostGISIgnoredColumns): Rename the class to
234            TestPostGISSpecialCases because that better describes the new
235            cases
236            (TestPostGISSpecialCases.test_unsupported_types)
237            (TestPostGISSpecialCases.test): Rename the method to
238            test_unsupported_types because we need a more descriptive name now
239            that there are more methods
240            (TestPostGISSpecialCases.test_table_name_quoting)
241            (TestPostGISSpecialCases.test_column_name_quoting)
242            (TestPostGISSpecialCases.test_shapestore_name_quoting): New test
243            cases to test quoting of table and column names in PostGISTable
244            and PostGISShapeStore
245    
246            * test/postgissupport.py
247            (skip_if_addgeometrycolumn_does_not_use_quote_ident): New. Skip if
248            AddGeometryColumn desn't support table or column names with sapces
249            or double quotes
250    
251    2003-11-12  Jan-Oliver Wagner <[email protected]>
252    
253            * Extensions/wms/__init__.py: New: Init to make this
254            directory a package.
255    
256            * Extensions/wms/wms.py: New: Provide layers via OGC WMS.
257    
258    2003-11-11  Bernhard Herzog  <[email protected]>
259    
260            * Thuban/Model/resource.py (EPSG_DEPRECATED_PROJ_FILE): New.
261            Constant for the file woth deprecated epsg projections
262            (get_system_proj_file): Update doc-string
263    
264            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Add a space
265            above the EPS widgets, introduce a check box for the deprecated
266            eps projections and a label for the epsg widgets
267            (ProjFrame._OnShowEPSG): Handle the deprecated EPSG projections
268            too
269    
270    2003-11-11  Bernhard Herzog  <[email protected]>
271    
272            Avoid warnings when run under Python 2.3
273    
274            * Thuban/UI/baserenderer.py (BaseRenderer.draw_point_shape)
275            (BaseRenderer.draw_label_layer): Coordinates must be ints.
276    
277            * Thuban/UI/renderer.py (MapRenderer.make_point): Turn this into a
278            real method so that we can convert to int.
279            (MapRenderer.label_font): The font size mist be an int.
280    
281            * Thuban/UI/common.py (Color2wxColour): The color values must be
282            ints. Also, remove the unnecessary asserts.
283    
284            * test/test_load_0_8.py (TestUnicodeStrings.file_contents)
285            (TestUnicodeStrings.test): Python source code should not contain
286            non-ascii characters unless an encoding is specified in the file.
287            Therefore use \x escapes in the string literals for non-ascii
288            characters.
289    
290    2003-11-11  Bernhard Herzog  <[email protected]>
291    
292            * Thuban/Model/resource.py (get_system_proj_file): Add a filename
293            parameter so that this function can be used for all proj files in
294            Resource/Projections
295            (DEFAULT_PROJ_FILE, EPSG_PROJ_FILE): New. Predefined filenames for
296            get_system_proj_file
297    
298            * Thuban/UI/projdialog.py (ProjFrame.__init__): Instead of one
299            ProjFile self.__sysProjFile use a dictionary of system ProjFile
300            objects self._sys_proj_files
301            (ProjFrame.build_dialog): Adapt to the new changes in the
302            ProjectionList constructor. Add a check button to toggle whether
303            EPSG projections are shown
304            (ProjFrame._OnShowEPSG): New. Handler for the epsg check button
305            events.
306            (ProjFrame.load_user_proj, ProjFrame.load_system_proj): Only show
307            the busy cursor if the files have not yet been loaded by the
308            dialog.
309            (ProjFrame.load_system_proj): Add a parameter for the name of the
310            proj file. Maintain the dictionary of system projections
311            self._sys_proj_files
312    
313            * Thuban/UI/projlist.py (ProjectionList): Merge the system_projs,
314            user_projs parameters into one parameter proj_files which is a
315            list of proj files.
316            (ProjectionList._subscribe_proj_files)
317            (ProjectionList._unsubscribe_proj_files): New. Move
318            subscription/unsubscription of projfile messages to separate
319            methods
320            (ProjectionList.Destroy): The unsubscribe is now done in
321            _unsubscribe_proj_files
322            (ProjectionList.update_projections): We now have a list of proj
323            file objects
324            (ProjectionList.SetProjFiles): New method to set a new list of
325            proj file objects
326    
327            * test/test_proj.py (ProjFileReadTests.test_get_system_proj_file):
328            Specify explicitly which system proj file to load.
329    
330    2003-11-11  Bernhard Herzog  <[email protected]>
331    
332            * Thuban/Model/load.py (SessionLoader.Destroy): New. Clear all
333            instance variables to cut cyclic references. The GC would have
334            collected the loader eventually but it can happen that it doesn't
335            run at all until thuban is closed (2.3 but not 2.2 tries a bit
336            harder and forces a collection when the interpreter terminates)
337            (load_session): Call the handler's Destroy method to make sure
338            that it gets garbage collected early. Otherwise it will be
339            collected very late if at all and it holds some references to e.g.
340            shapestores and the session which can lead to leaks (of e.g. the
341            temporary files)
342    
343            * test/test_load.py (TestSingleLayer.test_leak): New. test for the
344            resource leak in load_session
345    
346    2003-11-10  Bernhard Herzog  <[email protected]>
347    
348            * Thuban/UI/baserenderer.py: Add a way to specify how layers in
349            extensions are to be rendered.
350            (_renderer_extensions): New. List with renderer for layers in
351            extensions
352            (add_renderer_extension): New. Add a renderer extension
353            (init_renderer_extensions): New. Init the renderer extensions
354            (BaseRenderer.render_map_incrementally): Search
355            _renderer_extensions for how to draw unknown layer types
356            (BaseRenderer.draw_raster_data): Add format parameter so that
357            formats other than BMP can be drawn
358            (BaseRenderer.draw_raster_layer): Pass an explicit format to
359            draw_raster_data
360    
361            * Thuban/UI/renderer.py (raster_format_map): New. Mapping form the
362            strings of the format parameter of draw_raster_data method to wx
363            constants
364            (MapRenderer.draw_raster_data): Add the format parameter and use
365            raster_format_map to map it to the right wxwindows constant for
366            wxImageFromStream
367    
368            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Add
369            the format parameter and record it
370            (TestBaseRenderer.test_raster_no_projection): check the format
371            paramter of the draw_raster_data method
372            (TestBaseRenderer.test_renderer_extension): New. Test the renderer
373            extension facility
374    
375    2003-11-07  Bernhard Herzog  <[email protected]>
376    
377            Tweak the usage of the sqlite database to make common use cases
378            more responsive. In most cases copying the data to the sqlite
379            database takes so long that using sqlite doesn't have enough
380            advantages.
381    
382            * Thuban/Model/transientdb.py (TransientTableBase.ValueRange): Add
383            comments about performance and query the min and max in separate
384            statements because only that way will indexes be used.
385            (TransientTableBase.UniqueValues): Add some comments about
386            performance.
387            (AutoTransientTable.ValueRange, AutoTransientTable.UniqueValues):
388            Do not copy the data to the transient DB but use the transient
389            copy if it exists. See the new comments for the performance trade
390            offs
391    
392            * test/test_transientdb.py
393            (TestTransientTable.test_auto_transient_table): Make sure that the
394            data is copied to the transient database at some point.
395    
396    2003-11-03  Bernhard Herzog  <[email protected]>
397    
398            * Thuban/Model/data.py (ShapefileStore.ShapesInRegion): Bind some
399            globals to locals so that it's a bit faster
400    
401    2003-11-03  Bernhard Herzog  <[email protected]>
402    
403            * Thuban/UI/baserenderer.py
404            (BaseRenderer.draw_shape_layer_incrementally): Use the ReadValue
405            method. ReadValue is faster than ReadRowAsDict since it only reads
406            one cell especially now that the dbf file objects actually
407            implement it.
408    
409            * Thuban/Model/table.py (DBFTable.ReadValue): Use the new
410            read_attribute method of the dbf objects
411    
412    2003-11-03  Bernhard Herzog  <[email protected]>
413    
414            * Extensions/profiling/profiling.py (popup_dialog_box): New config
415            variable to indicate whether the result should be shown in a
416            dialog box
417            (profile_screen_renderer, time_screen_renderer): Only show a
418            dialog box if popup_dialog_box is true.
419            (profile_screen_renderer): Flush stdout after the printing the
420            first part of the "profiling..." message
421    
422            * Thuban/UI/baserenderer.py
423            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
424            brushes for the groups so that they're not created over and over
425            again
426    
427            * Thuban/Model/classification.py (Classification.__getattr__)
428            (Classification._compile_classification)
429            (Classification._clear_compiled_classification): New. Methods to
430            manage a 'compiled' representation of the classification groups
431            which is created on demand
432            (Classification.InsertGroup, Classification.RemoveGroup)
433            (Classification.ReplaceGroup): reset the compiled representation
434            (Classification.FindGroup): Use the compiled representation to
435            find the matching group
436            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
437    
438    2003-10-31  Bernhard Herzog  <[email protected]>
439    
440            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
441            Send a CLASS_CHANGED message
442            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
443            not return the removed group since it wasn't used.
444    
445            * test/test_classification.py
446            (TestClassification.test_set_default_group): New. Test the
447            SetDefaultGroup method
448            (TestClassification.test_insert_group): New. Test the InsertGroup
449            method
450            (TestClassification.test_remove_group): New. Test the RemoveGroup
451            method
452            (TestClassification.test_replace_group): New. Test the
453            ReplaceGroup method
454    
455    2003-10-31  Bernhard Herzog  <[email protected]>
456    
457            * test/test_classification.py (TestClassification.setUp):
458            Subscribe to the CLASS_CHANGED messages
459            (TestClassification.tearDown): New. Destroy the classification
460            properly
461            (TestClassification.test_defaults): Add tests for the default line
462            width and whether no messages were sent yet
463            (TestClassification.test_set_default_properties): Add tests for
464            messages and setting the default line width
465            (TestClassification.test_add_singleton)
466            (TestClassification.test_add_range)
467            (TestClassification.test_multiple_groups): Add tests for messages
468    
469    2003-10-31  Bernhard Herzog  <[email protected]>
470    
471            Some more refactoring in preparation for new tests:
472    
473            * test/test_classification.py (TestClassification.setUp): New.
474            Instantiate the classification here. Update the test methods
475            accordingly.
476            (TestClassification.test_multiple_groups): Make sure that the two
477            singletons matching 1 are considered different.
478    
479    2003-10-31  Bernhard Herzog  <[email protected]>
480    
481            * test/test_classification.py (red, green, blue): New. These
482            constants were used in several cases. Update the relevant methods.
483            (TestClassification.test_defaults)
484            (TestClassification.test_set_default_properties)
485            (TestClassification.test_add_singleton)
486            (TestClassification.test_add_range)
487            (TestClassification.test_multiple_groups)
488            (TestClassification.test_deepcopy): New. These were formerly all
489            part of the single method test.
490            (TestClassification.test_deepcopy): Removed.
491            (TestClassIterator): Removed. The test case is now a method of
492            TestClassification since it tests part of the public interface of
493            Classification
494            (TestClassification.test_iterator): New. Used to be
495            TestClassIterator effectively
496    
497    2003-10-31  Jan-Oliver Wagner <[email protected]>
498    
499            GUIfied the functions of the profiling extension.
500    
501            * /Extensions/profiling/__init__.py: New: Init to make this
502            directory a package.
503    
504            * Extensions/profiling/profiling.py: Moved menu entries to
505            the Extensions menu. Applied _() for strings.
506            (profile_screen_renderer): Catch the detailed printout and present
507            it in a dialog.
508            (time_screen_renderer): Raise a dialog to present the result instead
509            of printing it to stdout.
510    
511    2003-10-31  Bernhard Herzog  <[email protected]>
512    
513            * test/test_classification.py (TestClassGroupProperties)
514            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
515            (TestClassGroupSingleton, TestClassIterator, TestClassification):
516            Split TestClassification into several classes, one for each class
517            being tested. TestClassification itself now only tests
518            Classification. This split makes changes to the tests a bit easier
519    
520    2003-10-31  Bernhard Herzog  <[email protected]>
521    
522            * Extensions/profiling/profiling.py: New. Extension to measure
523            Thuban performance
524    
525    2003-10-31  Frank Koormann <[email protected]>
526    
527            Added two items to legend popup menu: Remove Layer and Show Layer Table
528    
529            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
530            LegendPanel._OnShowTable): New event handlers, call the corresponding
531            mainwindow methods.
532            (LegendTree._OnRightClick): Added items to popup menu.
533    
534  2003-10-30  Bernhard Herzog  <[email protected]>  2003-10-30  Bernhard Herzog  <[email protected]>
535    
536          * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle          * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle

Legend:
Removed from v.1894  
changed lines
  Added in v.1992

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26