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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26