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

Legend:
Removed from v.1902  
changed lines
  Added in v.1969

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26