/[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 1847 by bh, Tue Oct 21 10:50:07 2003 UTC revision 1929 by bh, Mon Nov 10 16:57:54 2003 UTC
# Line 1  Line 1 
1    2003-11-10  Bernhard Herzog  <bh@intevation.de>
2    
3            * Thuban/UI/baserenderer.py: Add a way to specify how layers in
4            extensions are to be rendered.
5            (_renderer_extensions): New. List with renderer for layers in
6            extensions
7            (add_renderer_extension): New. Add a renderer extension
8            (init_renderer_extensions): New. Init the renderer extensions
9            (BaseRenderer.render_map_incrementally): Search
10            _renderer_extensions for how to draw unknown layer types
11            (BaseRenderer.draw_raster_data): Add format parameter so that
12            formats other than BMP can be drawn
13            (BaseRenderer.draw_raster_layer): Pass an explicit format to
14            draw_raster_data
15    
16            * Thuban/UI/renderer.py (raster_format_map): New. Mapping form the
17            strings of the format parameter of draw_raster_data method to wx
18            constants
19            (MapRenderer.draw_raster_data): Add the format parameter and use
20            raster_format_map to map it to the right wxwindows constant for
21            wxImageFromStream
22    
23            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Add
24            the format parameter and record it
25            (TestBaseRenderer.test_raster_no_projection): check the format
26            paramter of the draw_raster_data method
27            (TestBaseRenderer.test_renderer_extension): New. Test the renderer
28            extension facility
29    
30    2003-11-07  Bernhard Herzog  <bh@intevation.de>
31    
32            Tweak the usage of the sqlite database to make common use cases
33            more responsive. In most cases copying the data to the sqlite
34            database takes so long that using sqlite doesn't have enough
35            advantages.
36    
37            * Thuban/Model/transientdb.py (TransientTableBase.ValueRange): Add
38            comments about performance and query the min and max in separate
39            statements because only that way will indexes be used.
40            (TransientTableBase.UniqueValues): Add some comments about
41            performance.
42            (AutoTransientTable.ValueRange, AutoTransientTable.UniqueValues):
43            Do not copy the data to the transient DB but use the transient
44            copy if it exists. See the new comments for the performance trade
45            offs
46    
47            * test/test_transientdb.py
48            (TestTransientTable.test_auto_transient_table): Make sure that the
49            data is copied to the transient database at some point.
50    
51    2003-11-03  Bernhard Herzog  <bh@intevation.de>
52    
53            * Thuban/Model/data.py (ShapefileStore.ShapesInRegion): Bind some
54            globals to locals so that it's a bit faster
55    
56    2003-11-03  Bernhard Herzog  <bh@intevation.de>
57    
58            * Thuban/UI/baserenderer.py
59            (BaseRenderer.draw_shape_layer_incrementally): Use the ReadValue
60            method. ReadValue is faster than ReadRowAsDict since it only reads
61            one cell especially now that the dbf file objects actually
62            implement it.
63    
64            * Thuban/Model/table.py (DBFTable.ReadValue): Use the new
65            read_attribute method of the dbf objects
66    
67    2003-11-03  Bernhard Herzog  <bh@intevation.de>
68    
69            * Extensions/profiling/profiling.py (popup_dialog_box): New config
70            variable to indicate whether the result should be shown in a
71            dialog box
72            (profile_screen_renderer, time_screen_renderer): Only show a
73            dialog box if popup_dialog_box is true.
74            (profile_screen_renderer): Flush stdout after the printing the
75            first part of the "profiling..." message
76    
77            * Thuban/UI/baserenderer.py
78            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
79            brushes for the groups so that they're not created over and over
80            again
81    
82            * Thuban/Model/classification.py (Classification.__getattr__)
83            (Classification._compile_classification)
84            (Classification._clear_compiled_classification): New. Methods to
85            manage a 'compiled' representation of the classification groups
86            which is created on demand
87            (Classification.InsertGroup, Classification.RemoveGroup)
88            (Classification.ReplaceGroup): reset the compiled representation
89            (Classification.FindGroup): Use the compiled representation to
90            find the matching group
91            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
92    
93    2003-10-31  Bernhard Herzog  <bh@intevation.de>
94    
95            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
96            Send a CLASS_CHANGED message
97            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
98            not return the removed group since it wasn't used.
99    
100            * test/test_classification.py
101            (TestClassification.test_set_default_group): New. Test the
102            SetDefaultGroup method
103            (TestClassification.test_insert_group): New. Test the InsertGroup
104            method
105            (TestClassification.test_remove_group): New. Test the RemoveGroup
106            method
107            (TestClassification.test_replace_group): New. Test the
108            ReplaceGroup method
109    
110    2003-10-31  Bernhard Herzog  <bh@intevation.de>
111    
112            * test/test_classification.py (TestClassification.setUp):
113            Subscribe to the CLASS_CHANGED messages
114            (TestClassification.tearDown): New. Destroy the classification
115            properly
116            (TestClassification.test_defaults): Add tests for the default line
117            width and whether no messages were sent yet
118            (TestClassification.test_set_default_properties): Add tests for
119            messages and setting the default line width
120            (TestClassification.test_add_singleton)
121            (TestClassification.test_add_range)
122            (TestClassification.test_multiple_groups): Add tests for messages
123    
124    2003-10-31  Bernhard Herzog  <bh@intevation.de>
125    
126            Some more refactoring in preparation for new tests:
127    
128            * test/test_classification.py (TestClassification.setUp): New.
129            Instantiate the classification here. Update the test methods
130            accordingly.
131            (TestClassification.test_multiple_groups): Make sure that the two
132            singletons matching 1 are considered different.
133    
134    2003-10-31  Bernhard Herzog  <bh@intevation.de>
135    
136            * test/test_classification.py (red, green, blue): New. These
137            constants were used in several cases. Update the relevant methods.
138            (TestClassification.test_defaults)
139            (TestClassification.test_set_default_properties)
140            (TestClassification.test_add_singleton)
141            (TestClassification.test_add_range)
142            (TestClassification.test_multiple_groups)
143            (TestClassification.test_deepcopy): New. These were formerly all
144            part of the single method test.
145            (TestClassification.test_deepcopy): Removed.
146            (TestClassIterator): Removed. The test case is now a method of
147            TestClassification since it tests part of the public interface of
148            Classification
149            (TestClassification.test_iterator): New. Used to be
150            TestClassIterator effectively
151    
152    2003-10-31  Jan-Oliver Wagner <jan@intevation.de>
153    
154            GUIfied the functions of the profiling extension.
155    
156            * /Extensions/profiling/__init__.py: New: Init to make this
157            directory a package.
158    
159            * Extensions/profiling/profiling.py: Moved menu entries to
160            the Extensions menu. Applied _() for strings.
161            (profile_screen_renderer): Catch the detailed printout and present
162            it in a dialog.
163            (time_screen_renderer): Raise a dialog to present the result instead
164            of printing it to stdout.
165    
166    2003-10-31  Bernhard Herzog  <bh@intevation.de>
167    
168            * test/test_classification.py (TestClassGroupProperties)
169            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
170            (TestClassGroupSingleton, TestClassIterator, TestClassification):
171            Split TestClassification into several classes, one for each class
172            being tested. TestClassification itself now only tests
173            Classification. This split makes changes to the tests a bit easier
174    
175    2003-10-31  Bernhard Herzog  <bh@intevation.de>
176    
177            * Extensions/profiling/profiling.py: New. Extension to measure
178            Thuban performance
179    
180    2003-10-31  Frank Koormann <frank@intevation.de>
181    
182            Added two items to legend popup menu: Remove Layer and Show Layer Table
183    
184            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
185            LegendPanel._OnShowTable): New event handlers, call the corresponding
186            mainwindow methods.
187            (LegendTree._OnRightClick): Added items to popup menu.
188    
189    2003-10-30  Bernhard Herzog  <bh@intevation.de>
190    
191            * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle
192            EVT_WINDOW_DESTROY
193            (ThubanFrame.OnDestroy): New. Handler for EVT_WINDOW_DESTROY. Does
194            nothing but is convenient for the derived classes.
195    
196            * Thuban/UI/tableview.py
197            (TableFrame.OnDestroy, LayerTableFrame.OnDestroy): New.
198            Unsubscribe the messages here not in OnClose because that might
199            get called multiple times. Fixes RT #2196
200            (TableFrame.OnClose, LayerTableFrame.OnClose): Removed. Not needed
201            anymore.
202    
203            * README: Update the minimum requirement for wxPython. Since we
204            now use the EVT_WINDOW_DESTROY event, we need at least 2.4.0.4,
205            the version in which that was introduced for all platforms
206    
207    2003-10-30  Frank Koormann <frank@intevation.de>
208    
209            * Thuban/UI/join.py (JoinDialog.OnJoin): Wrapped the major parts of
210            the join process in a ThubanBeginBusyCursor, ThubanEndBusyCursor
211            frame.
212    
213    2003-10-30  Jan-Oliver Wagner <jan@intevation.de>
214    
215            Improved APR import extension, added further EPSG definitions
216            and some cleanup regarding string class.
217    
218            * test/test_proj.py (TestProjection.test_get_projection_units_geo):
219            Added test for alias 'longlat'.
220    
221            * Resources/Projections/epsg-deprecated.proj: New. Contains
222            deprecated EPSG definitions.
223    
224            * Extensions/importAPR/odb.py (ODBBaseObject.TreeInfo): Added
225            the variable names for objects.
226    
227            * Extensions/importAPR/apr.py (APR_BLnSym, APR_BMkSym, APR_BShSym): New.
228            Copied from importAPR and provided with documentation.
229    
230            * Extensions/importAPR/importAPR.py (APR_BLnSym, APR_BMkSym, APR_BShSym):
231            Moved to apr.py.
232            (APR_View): Added object ref 'ITheme'.
233    
234            * Thuban/Lib/fileutil.py, Thuban/UI/proj4dialog.py: Replaced string
235            split function by corresponding use of the string class method.
236    
237            * Thuban/Model/xmlwriter.py: Replaced string replace function by
238            corresponding string method.
239    
240    2003-10-29  Bernhard Herzog  <bh@intevation.de>
241    
242            * Thuban/UI/baserenderer.py
243            (BaseRenderer.draw_shape_layer_incrementally): Speed up the
244            special case of a classification that only has the default group
245    
246    2003-10-27  Bernhard Herzog  <bh@intevation.de>
247    
248            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
249    
250            * po/de.po: Update.
251    
252            * Thuban/UI/application.py
253            (ThubanApplication.ShowExceptionDialog): Handle translation of the
254            dialog message properly
255    
256    2003-10-27  Bernhard Herzog  <bh@intevation.de>
257    
258            Rework how localization works so that we use wx's translation
259            functions when running Thuban as a normal application but not when
260            we don't need any UI, such as in the test suite. See the comment
261            in Thuban/__init__.py for details
262    
263            * Thuban/__init__.py (_): Add one level of indirection to make the
264            translation handling more flexible and to make it possible to use
265            either wx's translation services or not.
266            (gettext_identity, translation_function_installed)
267            (install_translation_function): New function to help with this
268    
269            * Thuban/UI/__init__.py: Install the wx specific translation
270            function if it's OK to do that
271    
272            * test/support.py (initthuban): Install a dummy translation
273            function so that importing Thuban.UI doesn't install a wx specific
274            one for which would need to import wxPython
275    
276    2003-10-27  Bernhard Herzog  <bh@intevation.de>
277    
278            * HOWTO-Release: Source archives should be created first and the
279            binary packages should be created from the source archives.
280            There's an official debian package now so there's no need to test
281            the rpm on debian anymore
282    
283    2003-10-27  Bernhard Herzog  <bh@intevation.de>
284    
285            Several rendering changes:
286    
287             - Render the selection into a separate bitmap so that only that
288               bitmap needs to be redrawn when the selection changes
289    
290             - Render incrementally showing previews and allowing interaction
291               before rendering is complete
292    
293             - Update the renderer interface a bit. Most parameters of
294               RenderMap are now parameters of the constructor
295    
296            * Thuban/UI/baserenderer.py (BaseRenderer.__init__): Add the map
297            and the update region as parameters. Update the doc-string
298            (BaseRenderer.render_map_incrementally): New. Generator function
299            to renders the map incrementally
300            (BaseRenderer.render_map): Remove the map argument (it's now in
301            the constructor) and simply iterate over the
302            render_map_incrementally generator to draw the map.
303            (BaseRenderer.draw_shape_layer_incrementally)
304            (BaseRenderer.draw_shape_layer): Renamed to
305            draw_shape_layer_incrementally and changed into a generator that
306            yields True every 500 shapes. Used by render_map_incrementally to
307            render shape layers incrementally
308    
309            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Removed the
310            map and region parameters which are now in the constructor
311            (ScreenRenderer.RenderMapIncrementally): New. Public frontend for
312            the inherited render_map_incrementally.
313            (BaseRenderer.draw_shape_layer): Removed.
314            (ScreenRenderer.draw_selection_incrementally): New. The selection
315            drawing part of the removed draw_shape_layer as a generator
316            (ScreenRenderer.layer_shapes): Update because of the region
317            parameter change
318            (ExportRenderer.__init__): New. Extend the inherited constructor
319            with the destination region for the drawing
320            (ExportRenderer.RenderMap): Removed the map and region parameters
321            which are now in the constructor
322    
323            * Thuban/UI/view.py (MapCanvas.PreviewBitmap): New. Return a
324            bitmap suitable for a preview in a tool
325            (CanvasPanTool.MouseMove): Use the PreviewBitmap method to get the
326            bitmap
327            (MapPrintout.draw_on_dc): Adapt to new renderer interface
328            (MapCanvas.OnPaint): Handle drawing the selection bitmap if it
329            exists
330            (MapCanvas.OnIdle): Update the logic to deal with incremental
331            rendering and the selection bitmap
332            (MapCanvas._do_redraw): Handle the instantiation of the render
333            iterator and the redraws during rendering
334            (MapCanvas._render_iterator): New. Generator to incrementally
335            redraw both bitmaps
336            (MapCanvas.Export): Adapt to new renderer interface.
337            (MapCanvas.full_redraw): Reset the selection bitmap and the
338            renderer iterator too
339            (MapCanvas.redraw_selection): New. Force a redraw of the selection
340            bitmap
341            (MapCanvas.shape_selected): Only redraw the selection bitmap
342    
343            * test/test_baserenderer.py
344            (TestBaseRenderer.test_polygon_no_projection)
345            (TestBaseRenderer.test_raster_no_projection)
346            (TestBaseRenderer.test_point_map_projection)
347            (TestBaseRenderer.test_point_layer_and_map_projection)
348            (TestBaseRenderer.test_point_layer_projection)
349            (TestBaseRenderer.test_point_with_classification): Adapt to new
350            renderer interface
351    
352    2003-10-24  Bernhard Herzog  <bh@intevation.de>
353    
354            * libraries/thuban/wxproj.cpp (draw_polygon_shape)
355            (point_in_polygon_shape, shape_centroid): Raise an exception if
356            the shape can't be read. Previously invalid shape ids would lead
357            to a segfault.
358    
359            * test/test_wxproj.py (TestShapeCentroid.test_invalid_shape_id):
360            New. test whether an exception is raised for invalid shape ids
361    
362    2003-10-24  Jan-Oliver Wagner <jan@intevation.de>
363    
364            * Thuban/Model/proj.py (Projection.GetProjectedUnits): Added 'longlat'
365            as alias for 'latlong'.
366    
367            * Thuban/UI/projdialog.py (ProjFrame.__init__): Added 'longlat'
368            as alias for 'latlong'.
369    
370    2003-10-24  Jan-Oliver Wagner <jan@intevation.de>
371    
372            * Thuban/UI/projdialog.py (ProjFrame.proj_selection_changed): Set
373            the projection even for the UnknownPanel.
374            (UnknownProjPanel.__init__): Define the text and create the textctrl
375            widget.
376            (UnknownProjPanel._DoLayout): Replaced static text widget by the
377            textctrl created in __init__.
378            (UnknownProjPanel.SetProjection): Set the text for the text ctrl
379            including the parameters of the projection.
380            
381    2003-10-24  Jan-Oliver Wagner <jan@intevation.de>
382    
383            * Resources/Projections/epsg.proj: New. This is a list of
384            EPSG codes with parameters for proj. The list has been
385            generated using devtools/create_epsg.py based on the
386            file nad/epsg of the proj 4.4.7 package. Four projection
387            definitions have been deleted as they are not accepted by proj:
388            "CH1903+ / LV95", "Bern 1898 (Bern) / LV03C", "CH1903 / LV03"
389            and "HD72 / EOV".
390    
391    2003-10-22  Bernhard Herzog  <bh@intevation.de>
392    
393            Some more tweaks to the projection dialog which should fix RT
394            #1886.
395    
396            * Thuban/UI/projlist.py (ProjectionList.Destroy): Unsubscribe from
397            the ProjFile's messages and call the base class methods correctly
398            (ProjectionList.SelectProjection): Set the wxLIST_STATE_FOCUSED
399            flag on the newly selected item too. Otherwise some other item is
400            focused and the first time the focus is moved with the keyboard
401            the selection moves in unexpected ways.
402    
403            * Thuban/UI/projdialog.py (ProjFrame.__init__): Do not set the
404            focus on the OK button, only on the projection list. That way the
405            list really has the focus initially
406            (ProjFrame.OnClose): Call the projection list's Destroy method to
407            make it unsubscribe all messages
408    
409    2003-10-21  Bernhard Herzog  <bh@intevation.de>
410    
411            Rework the projection dialog to fix a few bugs, including RT 2166
412            and most of 2168
413    
414            * Thuban/UI/projlist.py: New. The class ProjectionList is a
415            special wxListCtrl to show a list of projections in a more MVC
416            fashion
417    
418            * Thuban/UI/projdialog.py (ProjFrame): Substantial changes
419            throughout the class. The main change is to use the ProjectionList
420            class instead of a normal wxListBox. Also, add an explicit
421            "Unknown" projection to the projection choice control.
422            (ProjPanel.__init__): Add an "unknown" ellipsoid
423            (TMPanel.__init__, LCCPanel.__init__): Tweak the order of
424            instantiation of the panel's controls to make the tab-order more
425            natural
426    
427    2003-10-21  Bernhard Herzog  <bh@intevation.de>
428    
429            * test/test_load.py (TestSingleLayer.file_contents)
430            (TestSingleLayer.test): Add non-ascii characters to the titles of
431            session, map and layer. This is effectively a port of the
432            TestUnicodeStrings test in test_load_0_8.py which for some reason
433            was only added there.
434    
435            * test/test_load_0_9.py (TestSingleLayer.file_contents)
436            (TestSingleLayer.test): Same as in test_load.py: add non-ascii
437            characters to the titles of session, map and layer,.
438    
439  2003-10-21  Bernhard Herzog  <bh@intevation.de>  2003-10-21  Bernhard Herzog  <bh@intevation.de>
440    
441          Add EPSG projection handling to .thuban files          Add EPSG projection handling to .thuban files

Legend:
Removed from v.1847  
changed lines
  Added in v.1929

root@scm.wald.intevation.org
ViewVC Help
Powered by ViewVC 1.1.26