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

Legend:
Removed from v.1889  
changed lines
  Added in v.1951

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26