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

Legend:
Removed from v.1878  
changed lines
  Added in v.1971

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26