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

Legend:
Removed from v.1895  
changed lines
  Added in v.1965

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26