/[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 1208 by bh, Fri Jun 13 18:16:15 2003 UTC revision 1294 by jonathan, Mon Jun 23 13:06:13 2003 UTC
# Line 1  Line 1 
1    2003-06-23  Jonathan Coles   <[email protected]>
2    
3            * MANIFEST.in: Update with Resources/XML
4    
5            * setup.py: Don't include Locale resources yet as we don't
6            have any and it causes problems building the distribution
7            for Windows. Update version to 0.8.0.
8    
9            * Doc/thuban.dtd: Removed since it is now in Resources/XML.
10    
11            * Thuban/UI/mainwindow.py: Add blank line at the end because
12            file was not being read correctly building the Windows
13            distribution.
14    
15    2003-06-23  Jonathan Coles   <[email protected]>
16    
17            * Thuban/UI/mainwindow.py (MainWindow.About): Fix text.
18    
19            * Thuban/version.py: Temporarily update longversion for
20            the 0.8 release so that it doesn't have the cvs revision.
21    
22    2003-06-23  Jonathan Coles   <[email protected]>
23    
24            * Thuban/UI/common.py (ThubanBeginBusyCursor): Call wxSafeYield
25            to make sure that we don't create reentrant possibilities with
26            wxYield.
27    
28            * Thuban/UI/view.py (MapCanvas.OnPaint): Call wxBeginBusyCursor()
29            directly to avoid the wxSafeYield() call which generates an
30            OnPaint event causing infinite recursion. Don't try to catch
31            exception anymore. This was for before there were limits on map
32            scaling.
33    
34    2003-06-23  Bernhard Herzog  <[email protected]>
35    
36            Bug fix for RT #1961:
37    
38            * Thuban/Model/load.py (SessionLoader.start_derivedshapesource):
39            Register DerivedShapestores with the session
40    
41            * Thuban/Model/session.py (Session.Tables): Make sure each table
42            is only listed once.
43    
44            * test/test_load.py (TestJoinedTable.test): Add check_format call.
45            Update file contents to match the one written out.
46    
47    2003-06-20  Bernhard Herzog  <[email protected]>
48    
49            * test/xmlsupport.py (SaxEventLister.startElementNS)
50            (SaxEventLister.endElementNS): Do not include the qname. Python
51            2.2.1 and 2.2.2 and 2.2.3 differ in this regard. In 2.2.1 qname it
52            is (presumably incorrectly) None, whereas it's a string with the
53            element name in the later versions.
54    
55            * test/test_xmlsupport.py (TestEventList.test_even_list_simple)
56            (TestEventList.test_even_list_namespace): Update tests to reflect
57            the new behaviour
58            (TestEventList.test_even_list_id_normalization): Fix doc-string
59    
60    2003-06-20  Jonathan Coles   <[email protected]>
61    
62            * Thuban/Model/layer.py (BaseLayer.HasShapes): New. Overridden
63            by deriving classes to determine if that layer supports shapes.
64            (Layer): Override HasShapes and return true.
65    
66            * Thuban/UI/classgen.py: Use Thuban[Begin|End]BusyCursor()
67            instead of a direct call to wx[Begin|End]CusyCursor().
68            (GenUniquePanel._OnRetrieve): Set busy cursor while retrieving
69            table data.
70    
71            * Thuban/UI/common.py (ThubanBeginBusyCursor, ThubanEndBusyCursor):
72            New. Wrappers around the wxWindows functions that allow us to
73            make additional calls such as wxYield which gives the native
74            system a chance to update the cursor correctly.
75    
76            * Thuban/UI/tableview.py: Use Thuban[Begin|End]BusyCursor()
77            instead of a direct call to wx[Begin|End]CusyCursor().
78    
79            * Thuban/UI/view.py: Use Thuban[Begin|End]BusyCursor()
80            instead of a direct call to wx[Begin|End]CusyCursor().
81            (MapCanvas.find_shape_at): Check if the current search layer
82            support shapes, otherwise go on to the next layer.
83    
84            * test/test_layer.py: Add tests in each type of layer for
85            HasClassification() and HasShapes()
86    
87    2003-06-20  Jonathan Coles   <[email protected]>
88    
89            * Thuban/UI/view.py (MapCanvas.OnPaint): Call wxYield after
90            turning on the busy cursor to allow the system to change the
91            cursor before we begin painting. This fixes a problem that
92            was occuring only under GTK. Fixes RTbug #1840.
93    
94    2003-06-20  Bernhard Herzog  <[email protected]>
95    
96            * Resources/XML/thuban-0.8.dtd: New DTD for the new file format
97            version.
98    
99            * Thuban/Model/save.py (sort_data_stores): New. Make topological
100            sort of the data sources so they can be written with sources that
101            data sources that depend on other data sources come after the
102            sources they depend on.
103            (SessionSaver.__init__): Add idmap instance variable to map from
104            objects to the ids used in the file.
105            (SessionSaver.get_id, SessionSaver.define_id)
106            (SessionSaver.has_id): New. Methods to manage the idmap
107            (SessionSaver.write): Use thuban-0.8.dtd
108            (SessionSaver.write_session): Add a namespace on the session and
109            write out the data sources before the maps.
110            (SessionSaver.write_data_containers): New. Write the data
111            containers.
112            (SessionSaver.write_layer): Layer elements now refer to a
113            shapestore and don't contain filenames anymore.
114    
115            * Thuban/Model/load.py (LoadError): Exception class to raise when
116            errors in the files are discovered
117            (SessionLoader.__init__): Define dispatchers for elements with a
118            thuban-0.8 namespace too.
119            (SessionLoader.check_attrs): New helper method to check and
120            convert attributes
121            (AttrDesc): New. Helper class for SessionLoader.check_attrs
122            (SessionLoader.start_fileshapesource)
123            (SessionLoader.start_derivedshapesource)
124            (SessionLoader.start_filetable, SessionLoader.start_jointable):
125            Handlers for the new elements in the new fileformat
126            (SessionLoader.start_layer): Handle the shapestore attribute in
127            addition to filename.
128            (SessionLoader.start_table, SessionLoader.end_table): Removed.
129            They were never used in the old formats and aren't needed for the
130            new.
131    
132            * Thuban/Model/session.py (Session.DataContainers): New method to
133            return all "data containers", i.e. shapestores and tables
134    
135            * test/xmlsupport.py (SaxEventLister.__init__)
136            (SaxEventLister.startElementNS, sax_eventlist): Add support to
137            normalize IDs.
138    
139            * test/test_xmlsupport.py
140            (TestEventList.test_even_list_id_normalization): New test case for
141            id normalization
142    
143            * test/test_load.py (LoadSessionTest.check_format): Use ID
144            normalization
145            (LoadSessionTest.thubanids, LoadSessionTest.thubanidrefs): New
146            class atrributes used for ID normalization
147            (TestSingleLayer, TestLayerVisibility, TestLabels.test)
148            (TestLayerProjection.test, TestRasterLayer.test): Adapt to new
149            file format
150            (TestJoinedTable): New test for loading sessions with joined
151            tables.
152            (TestLoadError): New. Test whether missing required attributes
153            cause a LoadError.
154    
155            * test/test_save.py (SaveSessionTest.thubanids)
156            (SaveSessionTest.thubanidrefs): New class attributes for ID
157            normalization in .thuban files.
158            (SaveSessionTest.compare_xml): Use id-normalization.
159            (SaveSessionTest.testEmptySession)
160            (SaveSessionTest.testLayerProjection)
161            (SaveSessionTest.testRasterLayer)
162            (SaveSessionTest.testClassifiedLayer): Adapt to new file format.
163            (SaveSessionTest.testLayerProjection): The filename used was the
164            same as for testSingleLayer. Use a different one.
165            (SaveSessionTest.test_dbf_table)
166            (SaveSessionTest.test_joined_table): New test cases for saving the
167            new data sources structures.
168            (TestStoreSort, MockDataStore): Classes to test the sorting of the
169            data stores for writing.
170    
171            * test/runtests.py: Add CVS keywords
172    
173    2003-06-20  Jonathan Coles   <[email protected]>
174    
175            * test/test_session.py
176            (UnreferencedTablesTests.test_unreferenced_tables_with_joins):
177            Use the cultural_landmark-point.dbf file for the store so that
178            the table rows and shape count match.
179    
180    2003-06-20  Jonathan Coles   <[email protected]>
181    
182            * Thuban/Model/data.py (DerivedShapeStore.__init__): Raise
183            an exception if the number of shapes is different from the
184            number of rows in the table. Address RTbug #1933.
185    
186            * test/test_layer.py (TestLayer.test_derived_store): Add
187            a test for the new exception in DerivedShapeStore.__init__.
188    
189            * test/support.py (FloatTestCase): Removed since there is
190            already FloatComparisonMixin. Fixes RTbug #1954.
191            (FloatComparisonMixin.assertFloatEqual): Include test for
192            infinity that was part of FloatTestCase.
193    
194            * test/test_range.py (RangeTest): Inherit from
195            support.FloatComparisonMixin now that we don't have
196            support.FloatTestCase.
197    
198    2003-06-20  Bernhard Herzog  <[email protected]>
199    
200            * test/test_save.py (SaxEventLister, sax_eventlist): Removed. Use
201            the implementation in xmlsupport instead.
202            (SaveSessionTest.compare_xml): sax_eventlist is now in xmlsupport
203    
204            * test/test_proj.py: Import sax_eventlist from xmlsupport instead
205            of test_save
206    
207    2003-06-20  Bernhard Herzog  <[email protected]>
208    
209            * test/test_load.py (LoadSessionTest.check_format): New helper
210            method to make sure the test files we load might have been written
211            by the current thuban version.
212            (ClassificationTest.TestLayers, TestSingleLayer.test)
213            (TestLayerVisibility.test, TestClassification.test)
214            (TestLabels.test, TestLayerProjection.test, TestRasterLayer.test):
215            Add check_format() calls and fix the thuban data to match the data
216            that would be written by saving the session loaded from it.
217    
218            * test/xmlsupport.py (SaxEventLister, sax_eventlist): Copies of
219            the same class and function in test_save.
220    
221            * test/test_xmlsupport.py (TestEventList): New. test cases for
222            sax_eventlist
223    
224    2003-06-20  Bernhard Herzog  <[email protected]>
225    
226            * Resources/XML/thuban.dtd: Add comment about which versions of
227            Thuban are covered by this DTD
228            (map): Fix content model for layers and raster layers. There can
229            be any number or layers and raster layers in any order.
230    
231    2003-06-20  Jonathan Coles   <[email protected]>
232    
233            This is mainly about fixing RTbug #1949.
234    
235            * Thuban/Model/classification.py: Remove "from __future__"
236            import statement since python 2.2 is the earliest supported
237            version.
238    
239            * Thuban/Model/proj.py (Projection.GetProjectedUnits): New.
240            Currently returns PROJ_UNITS_METERS or PROJ_UNITS_DEGREES
241            depending on the units this projection *forwards* into.
242    
243            * Thuban/Model/save.py (SessionSaver.write_classification):
244            Remove unnecessary use of lambdas and nested functions.
245    
246            * Thuban/UI/legend.py (ScaleBarBitmap.__SetScale): Do scale
247            adjustment here if the map projection uses degrees.
248    
249            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Remove
250            scale adjust code since it is now done before calling
251            this method. Don't do anything if the map projection
252            is None.
253    
254    2003-06-19  Bernhard Herzog  <[email protected]>
255    
256            Move version specific load tests to their own file.
257    
258            * test/test_load.py: Expand the doc-string to explain a bit how to
259            handle file format changes.
260            (TestClassification.test): Update the docstring as this test is
261            not about Thuban 0.2 anymore.
262    
263            * test/test_load_0_2.py: New file with the load tests for thuban
264            files created with Thuban 0.2 and earlier.
265    
266    2003-06-19  Bernhard Herzog  <[email protected]>
267    
268            Add XML validation to some of the tests. Validation will only be
269            done if pyRXP is installed (http://reportlab.com/xml/pyrxp.html).
270            To make the DTD available to the test cases it's moved into
271            Resources/XML
272    
273            * Resources/XML/thuban.dtd: New. This is now the real Thuban DTD
274            for versions up to and including 0.2. Two slight changes: added an
275            encoding specification and fixed the comment which refered to
276            GRASS, not Thuban
277    
278            * test/xmlsupport.py: New support module for tests involving XML.
279            Currently there's a mix-in class for XML validation.
280    
281            * test/test_xmlsupport.py: New. Tests for the xmlsupport module
282    
283            * test/test_save.py (SaveSessionTest): Derive from ValidationTest
284            so that we can validate the
285            (SaveSessionTest.testEmptySession)
286            (SaveSessionTest.testSingleLayer)
287            (SaveSessionTest.testSingleLayer)
288            (SaveSessionTest.testLayerProjection)
289            (SaveSessionTest.testRasterLayer)
290            (SaveSessionTest.testClassifiedLayer): Validate the generated XML
291    
292            * test/runtests.py (main): Call print_additional_summary instead
293            of print_garbage_information
294    
295            * test/support.py (resource_dir): New function to return the
296            "Resource" subdirectory
297            (print_additional_summary): New function to combine several
298            summary functions
299            (run_tests): Use print_additional_summary instead of calling
300            print_garbage_information directly
301    
302    2003-06-19  Bernhard Herzog  <[email protected]>
303    
304            * Doc/thuban.dtd (classification): Correct the content model of
305            the classification element.
306            (projection): Add the "name" attribute
307    
308    2003-06-19  Frank Koormann   <[email protected]>
309    
310            MERGE from the greater-ms3 branch.
311    
312            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Apply conversion to
313            scale if projection is latlong to get better estimate.
314    
315            Fix problem of hidden properties dialog under windows after double
316            click on layer tree:
317            The tree control always gets an Expanded / Collapsed event after
318            the ItemActivated  on double click, which raises the main window again.         We add a second ItemActivated event to the queue, which simply
319            raises the already displayed window.
320    
321            * Thuban/UI/legend.py (LegendTree.__init__): Instance variable
322            raiseProperties initialized to prevent endless loops
323            (LegendTree._OnItemActivated): Depending on self.raiseProperties
324            simply raise the properties or open the dialog and issue a second
325            event.
326    
327    2003-06-18  Jonathan Coles   <[email protected]>
328    
329            * setup.py: Fix a few problems that occured under Windows.
330    
331    2003-06-18  Jonathan Coles   <[email protected]>
332    
333            When Thuban loaded the map was redrawn twice because the
334            legend was being opened after the mainwindow was created
335            and not during its creation. This meant the map was drawn
336            initially and then had to be redrawn when the legend
337            caused the display to change. Now the legend is opened
338            in the mainwindow constructor which resolves this issue.
339    
340            Also, although we were checking for the existence of
341            gdal and gdalwarp modules, the gdalwarp extension was
342            still being compiled (which may fail if the system doesn't
343            have gdal installed). the build_ext command to setup.py
344            now accepts the flags --with-gdal and --without-gdal.
345            If --without-gdal is specified setup.py will try to
346            use the gdal parameters specified by gdal-config. Under
347            windows, those parameters have to be set in setup.py
348            as with proj4 an wxWindows.
349    
350            * setup.py: Use a list instead of seperate variables for
351            extension parameters so we can create a generic function
352            that runs an appropriate *-config script.
353            (run_cs_script): Renamed from run_wx_script and modified
354            to accept a second argument which is a list of lists to
355            be filled in by the values returned from running the command.
356            (thuban_build_ext): New. Extends the build_ext command and
357            provides the options --with-gdal/--without-gdal which then
358            optionally includes the gdalwarp extension.
359    
360            * Thuban/Model/resource.py: First check if we can import
361            the gdalwarp Thuban extension before checking for gdal.
362            Also added some comments.
363            
364            * Thuban/UI/legend.py (ScaleBarBitmap.__SetScale): Check if
365            the map is None which may be the case if none has been loaded
366            yet.
367    
368            * Thuban/UI/main.py (main): Remove call to ShowLegend.
369    
370            * Thuban/UI/mainwindow.py (MainWindow.__init__): Call ShowLegend().
371    
372            * Thuban/UI/renderer.py: Check for gdal support before importing
373            gdalwarp.
374            (MapRenderer.render_map): Only try to optimize if we have gdal
375            support otherwise nothing will get drawn.
376    
377            * Thuban/UI/view.py (MapCanvas.FitMapToWindow): This may be called
378            during startup before a map has been created. Check if map is None
379            before using it and do nothing if it is.
380    
381    2003-06-17  Jonathan Coles   <[email protected]>
382    
383            Fix the problem with raster layers under Windows that caused
384            Thuban to crash. The view should respond to layer projection
385            changed events to update the display. Changes to a projection
386            should not cause the map to be set to full extent.
387            
388            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
389            current_map_proj to remember the current map projection so that
390            when the projection changes we know what the previous projection
391            was.
392            (MapCanvas.SetMap): Unsubscribe and subscribe to
393            LAYER_PROJECTION_CHANGED events.
394            (MapCanvas.projection_changed): Split into two methods that respond
395            to map and layer projection changes.
396            (MapCanvas.map_projection_changed): New. Takes the current view and
397            projects it using the new projection. This does not cause the
398            map to be redrawn at full extent.
399            (MapCanvas.layer_projection_changed): New. Cause a redraw which
400            will draw each layer in its new projection.
401            
402            * extensions/thuban/bmpdataset.cpp (BMPDataset::Open): Call
403            VSIFClose() not VSIFCloseL() to close the file. Fixes a crash
404            under Windows.
405            
406            * extensions/thuban/gdalwarp.cpp (MFILENAME): Padding should be
407            to twice sizeof(void*) because there are two digits for each
408            hex byte.
409    
410    2003-06-16  Bernhard Herzog  <[email protected]>
411    
412            Update to the layer interface: Direct access to the table,
413            shapetable, shapefile and filename attributes is now actively
414            deprecated by issuing deprecation warnings for all places where
415            this happens.
416    
417            * Thuban/Model/layer.py (Layer.__getattr__): New. Implement access
418            to the instance variables table, shapetable, shapefile and
419            filename via __getattr__ so that we can issue a deprecation
420            warning.
421            (Layer.SetShapeStore): Don't set the deprecated instance variables
422            any more
423            (Layer.SetShapeStore): Don't use deprecated layer instance
424            variables
425            (Layer.Destroy): No need to explicitly remove the instance
426            variables any more
427            (Layer.GetFieldType, Layer.Shape): Don't use deprecated layer
428            instance variables
429    
430            * Thuban/UI/classgen.py (ClassGenDialog.__init__)
431            (GenUniformPanel._OnRetrieve, GenUniquePanel._OnRetrieve)
432            (GenQuantilesPanel.GetList, GenQuantilesPanel.OnRetrieve): Don't
433            use deprecated layer instance variables
434    
435            * Thuban/UI/classifier.py (Classifier.__init__): Don't use
436            deprecated layer instance variables
437    
438            * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape)
439            (IdentifyGridCtrl.selected_shape): Don't set the deprecated layer
440            instance variables
441    
442            * Thuban/UI/tableview.py (LayerTableGrid.select_shapes): Don't use
443            deprecated layer instance variables
444    
445            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Don't use
446            deprecated layer instance variables
447    
448            * Thuban/Model/save.py (SessionSaver.write_layer): Don't use
449            deprecated layer instance variables
450    
451            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer)
452            (MapRenderer.polygon_render_param): Don't use deprecated layer instance
453            variables
454    
455            * test/runtests.py (main): Turn Thuban's deprecation warnings into
456            errors so that they're cought by the tests
457    
458            * test/test_load.py (TestSingleLayer.test): Don't use deprecated
459            layer instance variables
460    
461    2003-06-16  Jonathan Coles   <[email protected]>
462    
463            Fix a problem under Windows whereby if the user double-clicks on a
464            layer in the legend that tree item will expand or collapse as well
465            as open the layer properties dialog. The state of the tree item
466            should not be affected.
467    
468            * Thuban/UI/legend.py (LegendTree.__init__): Add instance variable
469            preventExpandCollapse and subscribe to expanding and collapsing
470            events.
471            (LegendTree.OnItemExpandCollapse): New. Responds to expanding and
472            collapsing events and will veto the event if it has been triggered
473            by the user double clicking on a layer.
474            (LegendTree._OnItemActivated): Set preventExpandCollapse to indicate
475            that an expanding/collapsing event should be vetoed.
476    
477  2003-06-13  Bernhard Herzog  <[email protected]>  2003-06-13  Bernhard Herzog  <[email protected]>
478    
479          * Thuban/UI/classifier.py (Classifier.OnClose)          * Thuban/UI/classifier.py (Classifier.OnClose)

Legend:
Removed from v.1208  
changed lines
  Added in v.1294

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26