/[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 1370 by bh, Thu Jul 3 16:27:31 2003 UTC
# Line 1  Line 1 
1    2003-07-03  Bernhard Herzog  <[email protected]>
2    
3            * Doc/manual/thuban-manual.xml: Fix the CVS Revision Tag syntax
4    
5    2003-07-03  Bernhard Herzog  <[email protected]>
6    
7            * Doc/manual/thuban-manual.xml, Doc/manual/README: New. Skeleton
8            for the Thuban manual and README with some basic information about
9            the manual
10    
11    2003-07-03  Bernhard Herzog  <[email protected]>
12    
13            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
14            Update doc-string
15            (TransientJoinedTable.create): Do not modify the column objects of
16            the input tables in place and copy all columns of the input tables
17            into the joined table after all.
18    
19            * test/test_transientdb.py
20            (TestTransientTable.test_transient_joined_table_same_column_name):
21            Update to reflect the new behavior
22            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
23            Update to reflect the new behavior
24            (TestTransientTable.test_transient_joined_table_name_collisions_dont_modify_in_place):
25            New test case for a bug which modified the column objects in place
26    
27    2003-07-02  Jonathan Coles   <[email protected]>
28    
29            * Thuban/Model/classgen.py (generate_singletons,
30            generate_uniform_distribution, generate_quantiles,
31            GenQuantiles0): Make sure maxValue isn't less than
32            one, otherwise we could divide by zero.
33    
34            * test/test_classgen.py (ClassGenTest.doClassRangeTest,
35            ClassGenTest.doClassSingleTest): Call doBoundsTest to
36            check the end classification groups against the
37            proper property values.
38            (ClassGenTest.doBoundsTest): New. Checks the first and
39            last classification groups to make sure their properties
40            are the correct upper and lower bounds for a color ramp.
41    
42    2003-07-02  Jonathan Coles   <[email protected]>
43    
44            * Thuban/Model/classgen.py (generate_singletons,
45            generate_uniform_distribution, generate_quantiles,
46            GenQuantiles0): The denominator was one to high when
47            calculating the index for the ramp causing the index
48            to never to reach one.
49    
50    2003-07-02  Jonathan Coles   <[email protected]>
51    
52            Changed the singature of ClassGroupRange.__init__ and
53            ClassGroupRange.SetRange() so that the min/max values are
54            passed as a tuple. This makes a better calling scheme for
55            when a Range object is passed instead.
56    
57            * Thuban/Model/classgen.py: Fixed parameters to
58            ClassGroupRange constructor.
59    
60            * Thuban/Model/classification.py (ClassGroupRange.__init__):
61            Consolidate the min/max parameters into a single _range which
62            can either be a tuple or a Range object.
63            (ClassGroupRange.SetRange): Consolidate the min/max parameters
64            into a single _range which can either be a tuple or a Range object.
65    
66            * Thuban/Model/load.py (SessionLoader.start_clrange): Fix
67            call to ClassGroupRange constructor to use a tuple.
68    
69            * Thuban/Model/layer.py (Layer.SetClassification): Switch
70            the classification instance variable to the new class
71            before calling _set_layer otherwise subscribers to a
72            LAYER_CHANGED event will not see any difference.
73    
74            * test/test_classification.py: Fix tests of ClassGroupRange
75            so that they use the new signature.
76    
77            * test/test_load.py: Fix use of ClassGroupRange so that it
78            uses the new signature.
79    
80            * test/test_load_0_2.py: Fix use of ClassGroupRange so that it
81            uses the new signature.
82    
83            * test/test_save.py: Fix use of ClassGroupRange so that it
84            uses the new signature.
85    
86    
87    2003-07-01  Jonathan Coles   <[email protected]>
88    
89            * Thuban/Model/classgen.py: Fixes RTbug #1972, 1971.
90            Import used objects/class from color.
91            (generate_singletons): We don't
92            need the numGroups parameter anymore because we are using
93            the new ramps with GetProperties().
94            (generate_uniform_distribution): Use new ramp method
95            GetProperties().
96            (generate_quantiles, GenQuantiles0): Use new ramp method
97            GetProperties().
98            (CustomRamp.SetNumGroups): Removed. The ramps now map
99            a value from 0 to 1 to class properties so the number
100            of groups is not needed ahead of time.
101            (CustomRamp.next): Removed. CustomRamp does not support
102            interation anymore.
103            (CustomRamp.GetProperties): Returns a ClassGroupProperties
104            object based on the index value from 0 to 1 that is
105            passed to it.
106            (GreyRamp, RedRamp, GreenRamp, BlueRamp, GreenToRedRamp):
107            Made into instances of Monochromatic class instread of
108            deriving from it.
109            (HotToCold.SetNumGroups): Removed. See CustomRamp.
110            (HotToCold.next): Removed. See CustomRamp.
111    
112            * Thuban/Model/classification.py: Fixes RTbug #1973, 1971.
113            (Classification.SetField, Classification.SetFieldType):
114            Replaced with SetFieldInfo.
115            (Classification.SetFieldInfo): New. Does a better job of
116            what SetField and SetFieldType used to do by combining
117            their function since they should really always be done
118            at the same time.
119            (Classification.SetLayer): Renamed to _set_layer.
120            (Classification._set_layer): Should only be called from
121            Layer's SetClassification. This does not cause a recursive
122            call as SetLayer did because we know that Layer knows about
123            the classification.
124    
125            * Thuban/Model/color.py: Fixes RTbug #1971.
126            (_Transparent): Renamed from Transparent so it doesn't
127            conflict with the module variable.
128            (Transparent, Black): Renamed from Color.Transparent,
129            Color.Black so they are not class variables.
130    
131            * Thuban/Model/layer.py: Fixes RTbug #1971, 1973.
132            (Layer.Destroy): We don't need to call SetClassification
133            anymore to clear out the back reference in the classifcation
134            to the layer. It's better to set it to None using _set_layer,
135            and we won't be creating another clas object too.
136            (Layer.SetClassification): Classification._set_layer is not
137            recursive so remove all the locking variables. Also clean
138            up the code so that it remains unchanged if something fails.
139    
140            * Thuban/Model/load.py: Fixes RTbug #1971.
141            (SessionLoader.start_classification): Call
142            Classification.SetFieldInfo().
143    
144            * Thuban/Model/save.py: Removed import of Color which wasn't
145            being used.
146    
147            * Thuban/UI/classgen.py: Fixes RTbug #1972.
148            (ClassGenDialog.__init__): Color ramps are now instances
149            already so we don't need to create any new objects.
150            (ClassGenDialog.OnOK): Check for numGroups is no longer
151            necessary because we never use it.
152    
153            * Thuban/UI/classifier.py: Fixes RTbug #1971.
154            (Classifier.__BuildClassification, Classifier.__SetGridTable):
155            Call Classification.SetFieldInfo() instead of SetFieldType.
156    
157            * Thuban/UI/renderer.py: Fixes RTbug #1971.
158    
159            * Thuban/UI/view.py: Fixes RTbug #1974, 1971.
160            (MapCanvas.__init__): Subscribe to the idle time event. Set
161            background color to white.
162            (MapCanvas.OnPaint): Set a flag indicating that we should
163            render the map during idle time. If we already have a bitmap
164            just draw it now.
165            (MapCanvas.OnIdle): New. Render the map only during idle time.
166            This also fixes a problem with the busy cursor under gtk.
167    
168            * test/test_classgen.py (ClassGenTest.test_generate_singletons):
169            Fix calls to generate_singletons because the signature changed.
170    
171            * test/test_classification.py: Fix color references and
172            change calls to Classification.[SetField|SetFieldType] to
173            SetFieldInfo.
174    
175            * test/test_load.py: Fix color references.
176    
177            * test/test_load_0_2.py: Fix color references.
178    
179            * test/test_save.py (SaveSessionTest.testClassifiedLayer):
180            Change calls to Classification.[SetField|SetFieldType] to
181            SetFieldInfo.
182    
183    2003-07-01  Frank Koormann   <[email protected]>
184    
185            MERGE from the greater-ms3 branch.
186    
187            * test/test_transientdb.py
188            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
189            New. Test join of two tables with partly equal column names.
190    
191            * Thuban/Model/transientdb.py (TransientJoinedTable.create):
192            If duplicates in left and right tables column names are found,
193            append '_' (underscores) to the name until it is unique.
194            Create always new internal names for the resulting table and reference
195            columns in the join statement with <table>.<column>
196    
197    2003-07-01  Bernhard Herzog  <[email protected]>
198    
199            * test/test_transientdb.py
200            (TestTransientTable.test_transient_joined_table_same_column_name):
201            New. Test whether joining on columns with the same names in both
202            tables works.
203            
204            * Thuban/Model/transientdb.py (TransientJoinedTable.create): Make
205            sure to use the right internal names even when joining on field
206            with the same names in both tables. Also, detect duplicate names
207            in the joined table correctly.
208    
209    2003-07-01  Frank Koormann   <[email protected]>
210    
211            * Thuban/UI/renderer.py (ExportRenderer.render_legend):
212            Reverse List of layers to render in same order as in desktop legend.
213    
214    2003-06-30  Jonathan Coles   <[email protected]>
215    
216            * Thuban/version.py (make_tuple): Takes a version string
217            and splits it into a tuple of at most three integers.
218            Used make_tuple() to make tuple versions of the version
219            numbers.
220    
221            * Thuban/UI/about.py: Add Thuban email addresses.
222    
223    2003-06-30  Jonathan Coles   <[email protected]>
224    
225            * Thuban/version.py: SQLite/PySQLite version dependencies
226            were too high.
227    
228    2003-06-30  Jonathan Coles   <[email protected]>
229    
230            * Thuban/version.py: Update version to 0.8.1
231            
232            * MANIFEST.in: Added Projections so that default.proj is
233            included.
234    
235    2003-06-26  Jonathan Coles   <[email protected]>
236    
237            New About box with lots more information including library
238            versions and credits. More/better version checking before
239            Thuban starts.
240    
241            * Thuban/UI/about.py: New. New About box that displays
242            library version information and credits.
243    
244            * Thuban/version.py: Added new 'versions' dictionary which
245            contains the verions of various libraries which are checked
246            when the module loads.
247            (verify_versions): Check all version numbers and returns
248            a list of errors.
249    
250            * Thuban/UI/classifier.py (Classifier.__EnableButtons):
251            Reset the status of the buttons as the situation warrants,
252            but in a better more reliable way by not relying on the
253            current status to determine what needs to change.
254    
255            * Thuban/UI/main.py (wxCHECK_VERSION): Removed. Not needed.
256            (verify_versions): Remove most of the code since it is
257            now in Thuban.version.verify_versions.o
258    
259            * Thuban/UI/mainwindow.py (MainWindow.About): Call new
260            About box in Thuban.UI.about.
261    
262            * extensions/thuban/gdalwarp.cpp (get_gdal_version): New.
263            Returns the version of gdal library being used as a string.
264    
265            * extensions/thuban/wxproj.cpp (check_version, check_version_gtk):
266            Removed.
267            (get_proj_version): Return the version of PROJ that the file
268            was compiled with.
269            (get_gtk_version): Return th version of GTK that the file
270            was compiled with.
271    
272    2003-06-25  Jonathan Coles   <[email protected]>
273    
274            * Thuban/UI/classifier.py (Classifier.EditSymbol): The parent
275            of the SelectPropertiesDialog should be self so the window
276            appears on top.
277            (ClassGroupPropertiesCtrl.DoEdit): The parent
278            of the SelectPropertiesDialog should be self so the window
279            appears on top.
280    
281            * Thuban/UI/resource.py: Cleaned up how we determine file
282            extensions.
283            (GetImageResource): Return an wxImage from our Resources.
284    
285    2003-06-24  Jonathan Coles   <[email protected]>
286    
287            * Thuban/UI/renderer.py (ExportRenderer.render_legend):
288            Check that a layer has a classification before trying
289            to get it. Raster layers don't have classifications.
290    
291    2003-06-23  Jonathan Coles   <[email protected]>
292            
293            * setup.py: Add Resources/XML to resource list.
294        
295    2003-06-23  Jonathan Coles   <[email protected]>
296    
297            * setup.cfg: Fix copyright dates
298        
299    2003-06-23  Jonathan Coles   <[email protected]>
300    
301            * MANIFEST.in: Update with Resources/XML
302    
303            * setup.py: Don't include Locale resources yet as we don't
304            have any and it causes problems building the distribution
305            for Windows. Update version to 0.8.0.
306    
307            * Doc/thuban.dtd: Removed since it is now in Resources/XML.
308    
309            * Thuban/UI/mainwindow.py: Add blank line at the end because
310            file was not being read correctly building the Windows
311            distribution.
312    
313    2003-06-23  Jonathan Coles   <[email protected]>
314    
315            * Thuban/UI/mainwindow.py (MainWindow.About): Fix text.
316    
317            * Thuban/version.py: Temporarily update longversion for
318            the 0.8 release so that it doesn't have the cvs revision.
319    
320    2003-06-23  Jonathan Coles   <[email protected]>
321    
322            * Thuban/UI/common.py (ThubanBeginBusyCursor): Call wxSafeYield
323            to make sure that we don't create reentrant possibilities with
324            wxYield.
325    
326            * Thuban/UI/view.py (MapCanvas.OnPaint): Call wxBeginBusyCursor()
327            directly to avoid the wxSafeYield() call which generates an
328            OnPaint event causing infinite recursion. Don't try to catch
329            exception anymore. This was for before there were limits on map
330            scaling.
331    
332    2003-06-23  Bernhard Herzog  <[email protected]>
333    
334            Bug fix for RT #1961:
335    
336            * Thuban/Model/load.py (SessionLoader.start_derivedshapesource):
337            Register DerivedShapestores with the session
338    
339            * Thuban/Model/session.py (Session.Tables): Make sure each table
340            is only listed once.
341    
342            * test/test_load.py (TestJoinedTable.test): Add check_format call.
343            Update file contents to match the one written out.
344    
345    2003-06-20  Bernhard Herzog  <[email protected]>
346    
347            * test/xmlsupport.py (SaxEventLister.startElementNS)
348            (SaxEventLister.endElementNS): Do not include the qname. Python
349            2.2.1 and 2.2.2 and 2.2.3 differ in this regard. In 2.2.1 qname it
350            is (presumably incorrectly) None, whereas it's a string with the
351            element name in the later versions.
352    
353            * test/test_xmlsupport.py (TestEventList.test_even_list_simple)
354            (TestEventList.test_even_list_namespace): Update tests to reflect
355            the new behaviour
356            (TestEventList.test_even_list_id_normalization): Fix doc-string
357    
358    2003-06-20  Jonathan Coles   <[email protected]>
359    
360            * Thuban/Model/layer.py (BaseLayer.HasShapes): New. Overridden
361            by deriving classes to determine if that layer supports shapes.
362            (Layer): Override HasShapes and return true.
363    
364            * Thuban/UI/classgen.py: Use Thuban[Begin|End]BusyCursor()
365            instead of a direct call to wx[Begin|End]CusyCursor().
366            (GenUniquePanel._OnRetrieve): Set busy cursor while retrieving
367            table data.
368    
369            * Thuban/UI/common.py (ThubanBeginBusyCursor, ThubanEndBusyCursor):
370            New. Wrappers around the wxWindows functions that allow us to
371            make additional calls such as wxYield which gives the native
372            system a chance to update the cursor correctly.
373    
374            * Thuban/UI/tableview.py: Use Thuban[Begin|End]BusyCursor()
375            instead of a direct call to wx[Begin|End]CusyCursor().
376    
377            * Thuban/UI/view.py: Use Thuban[Begin|End]BusyCursor()
378            instead of a direct call to wx[Begin|End]CusyCursor().
379            (MapCanvas.find_shape_at): Check if the current search layer
380            support shapes, otherwise go on to the next layer.
381    
382            * test/test_layer.py: Add tests in each type of layer for
383            HasClassification() and HasShapes()
384    
385    2003-06-20  Jonathan Coles   <[email protected]>
386    
387            * Thuban/UI/view.py (MapCanvas.OnPaint): Call wxYield after
388            turning on the busy cursor to allow the system to change the
389            cursor before we begin painting. This fixes a problem that
390            was occuring only under GTK. Fixes RTbug #1840.
391    
392    2003-06-20  Bernhard Herzog  <[email protected]>
393    
394            * Resources/XML/thuban-0.8.dtd: New DTD for the new file format
395            version.
396    
397            * Thuban/Model/save.py (sort_data_stores): New. Make topological
398            sort of the data sources so they can be written with sources that
399            data sources that depend on other data sources come after the
400            sources they depend on.
401            (SessionSaver.__init__): Add idmap instance variable to map from
402            objects to the ids used in the file.
403            (SessionSaver.get_id, SessionSaver.define_id)
404            (SessionSaver.has_id): New. Methods to manage the idmap
405            (SessionSaver.write): Use thuban-0.8.dtd
406            (SessionSaver.write_session): Add a namespace on the session and
407            write out the data sources before the maps.
408            (SessionSaver.write_data_containers): New. Write the data
409            containers.
410            (SessionSaver.write_layer): Layer elements now refer to a
411            shapestore and don't contain filenames anymore.
412    
413            * Thuban/Model/load.py (LoadError): Exception class to raise when
414            errors in the files are discovered
415            (SessionLoader.__init__): Define dispatchers for elements with a
416            thuban-0.8 namespace too.
417            (SessionLoader.check_attrs): New helper method to check and
418            convert attributes
419            (AttrDesc): New. Helper class for SessionLoader.check_attrs
420            (SessionLoader.start_fileshapesource)
421            (SessionLoader.start_derivedshapesource)
422            (SessionLoader.start_filetable, SessionLoader.start_jointable):
423            Handlers for the new elements in the new fileformat
424            (SessionLoader.start_layer): Handle the shapestore attribute in
425            addition to filename.
426            (SessionLoader.start_table, SessionLoader.end_table): Removed.
427            They were never used in the old formats and aren't needed for the
428            new.
429    
430            * Thuban/Model/session.py (Session.DataContainers): New method to
431            return all "data containers", i.e. shapestores and tables
432    
433            * test/xmlsupport.py (SaxEventLister.__init__)
434            (SaxEventLister.startElementNS, sax_eventlist): Add support to
435            normalize IDs.
436    
437            * test/test_xmlsupport.py
438            (TestEventList.test_even_list_id_normalization): New test case for
439            id normalization
440    
441            * test/test_load.py (LoadSessionTest.check_format): Use ID
442            normalization
443            (LoadSessionTest.thubanids, LoadSessionTest.thubanidrefs): New
444            class atrributes used for ID normalization
445            (TestSingleLayer, TestLayerVisibility, TestLabels.test)
446            (TestLayerProjection.test, TestRasterLayer.test): Adapt to new
447            file format
448            (TestJoinedTable): New test for loading sessions with joined
449            tables.
450            (TestLoadError): New. Test whether missing required attributes
451            cause a LoadError.
452    
453            * test/test_save.py (SaveSessionTest.thubanids)
454            (SaveSessionTest.thubanidrefs): New class attributes for ID
455            normalization in .thuban files.
456            (SaveSessionTest.compare_xml): Use id-normalization.
457            (SaveSessionTest.testEmptySession)
458            (SaveSessionTest.testLayerProjection)
459            (SaveSessionTest.testRasterLayer)
460            (SaveSessionTest.testClassifiedLayer): Adapt to new file format.
461            (SaveSessionTest.testLayerProjection): The filename used was the
462            same as for testSingleLayer. Use a different one.
463            (SaveSessionTest.test_dbf_table)
464            (SaveSessionTest.test_joined_table): New test cases for saving the
465            new data sources structures.
466            (TestStoreSort, MockDataStore): Classes to test the sorting of the
467            data stores for writing.
468    
469            * test/runtests.py: Add CVS keywords
470    
471    2003-06-20  Jonathan Coles   <[email protected]>
472    
473            * test/test_session.py
474            (UnreferencedTablesTests.test_unreferenced_tables_with_joins):
475            Use the cultural_landmark-point.dbf file for the store so that
476            the table rows and shape count match.
477    
478    2003-06-20  Jonathan Coles   <[email protected]>
479    
480            * Thuban/Model/data.py (DerivedShapeStore.__init__): Raise
481            an exception if the number of shapes is different from the
482            number of rows in the table. Address RTbug #1933.
483    
484            * test/test_layer.py (TestLayer.test_derived_store): Add
485            a test for the new exception in DerivedShapeStore.__init__.
486    
487            * test/support.py (FloatTestCase): Removed since there is
488            already FloatComparisonMixin. Fixes RTbug #1954.
489            (FloatComparisonMixin.assertFloatEqual): Include test for
490            infinity that was part of FloatTestCase.
491    
492            * test/test_range.py (RangeTest): Inherit from
493            support.FloatComparisonMixin now that we don't have
494            support.FloatTestCase.
495    
496    2003-06-20  Bernhard Herzog  <[email protected]>
497    
498            * test/test_save.py (SaxEventLister, sax_eventlist): Removed. Use
499            the implementation in xmlsupport instead.
500            (SaveSessionTest.compare_xml): sax_eventlist is now in xmlsupport
501    
502            * test/test_proj.py: Import sax_eventlist from xmlsupport instead
503            of test_save
504    
505    2003-06-20  Bernhard Herzog  <[email protected]>
506    
507            * test/test_load.py (LoadSessionTest.check_format): New helper
508            method to make sure the test files we load might have been written
509            by the current thuban version.
510            (ClassificationTest.TestLayers, TestSingleLayer.test)
511            (TestLayerVisibility.test, TestClassification.test)
512            (TestLabels.test, TestLayerProjection.test, TestRasterLayer.test):
513            Add check_format() calls and fix the thuban data to match the data
514            that would be written by saving the session loaded from it.
515    
516            * test/xmlsupport.py (SaxEventLister, sax_eventlist): Copies of
517            the same class and function in test_save.
518    
519            * test/test_xmlsupport.py (TestEventList): New. test cases for
520            sax_eventlist
521    
522    2003-06-20  Bernhard Herzog  <[email protected]>
523    
524            * Resources/XML/thuban.dtd: Add comment about which versions of
525            Thuban are covered by this DTD
526            (map): Fix content model for layers and raster layers. There can
527            be any number or layers and raster layers in any order.
528    
529    2003-06-20  Jonathan Coles   <[email protected]>
530    
531            This is mainly about fixing RTbug #1949.
532    
533            * Thuban/Model/classification.py: Remove "from __future__"
534            import statement since python 2.2 is the earliest supported
535            version.
536    
537            * Thuban/Model/proj.py (Projection.GetProjectedUnits): New.
538            Currently returns PROJ_UNITS_METERS or PROJ_UNITS_DEGREES
539            depending on the units this projection *forwards* into.
540    
541            * Thuban/Model/save.py (SessionSaver.write_classification):
542            Remove unnecessary use of lambdas and nested functions.
543    
544            * Thuban/UI/legend.py (ScaleBarBitmap.__SetScale): Do scale
545            adjustment here if the map projection uses degrees.
546    
547            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Remove
548            scale adjust code since it is now done before calling
549            this method. Don't do anything if the map projection
550            is None.
551    
552    2003-06-19  Bernhard Herzog  <[email protected]>
553    
554            Move version specific load tests to their own file.
555    
556            * test/test_load.py: Expand the doc-string to explain a bit how to
557            handle file format changes.
558            (TestClassification.test): Update the docstring as this test is
559            not about Thuban 0.2 anymore.
560    
561            * test/test_load_0_2.py: New file with the load tests for thuban
562            files created with Thuban 0.2 and earlier.
563    
564    2003-06-19  Bernhard Herzog  <[email protected]>
565    
566            Add XML validation to some of the tests. Validation will only be
567            done if pyRXP is installed (http://reportlab.com/xml/pyrxp.html).
568            To make the DTD available to the test cases it's moved into
569            Resources/XML
570    
571            * Resources/XML/thuban.dtd: New. This is now the real Thuban DTD
572            for versions up to and including 0.2. Two slight changes: added an
573            encoding specification and fixed the comment which refered to
574            GRASS, not Thuban
575    
576            * test/xmlsupport.py: New support module for tests involving XML.
577            Currently there's a mix-in class for XML validation.
578    
579            * test/test_xmlsupport.py: New. Tests for the xmlsupport module
580    
581            * test/test_save.py (SaveSessionTest): Derive from ValidationTest
582            so that we can validate the
583            (SaveSessionTest.testEmptySession)
584            (SaveSessionTest.testSingleLayer)
585            (SaveSessionTest.testSingleLayer)
586            (SaveSessionTest.testLayerProjection)
587            (SaveSessionTest.testRasterLayer)
588            (SaveSessionTest.testClassifiedLayer): Validate the generated XML
589    
590            * test/runtests.py (main): Call print_additional_summary instead
591            of print_garbage_information
592    
593            * test/support.py (resource_dir): New function to return the
594            "Resource" subdirectory
595            (print_additional_summary): New function to combine several
596            summary functions
597            (run_tests): Use print_additional_summary instead of calling
598            print_garbage_information directly
599    
600    2003-06-19  Bernhard Herzog  <[email protected]>
601    
602            * Doc/thuban.dtd (classification): Correct the content model of
603            the classification element.
604            (projection): Add the "name" attribute
605    
606    2003-06-19  Frank Koormann   <[email protected]>
607    
608            MERGE from the greater-ms3 branch.
609    
610            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Apply conversion to
611            scale if projection is latlong to get better estimate.
612    
613            Fix problem of hidden properties dialog under windows after double
614            click on layer tree:
615            The tree control always gets an Expanded / Collapsed event after
616            the ItemActivated  on double click, which raises the main window again.         We add a second ItemActivated event to the queue, which simply
617            raises the already displayed window.
618    
619            * Thuban/UI/legend.py (LegendTree.__init__): Instance variable
620            raiseProperties initialized to prevent endless loops
621            (LegendTree._OnItemActivated): Depending on self.raiseProperties
622            simply raise the properties or open the dialog and issue a second
623            event.
624    
625    2003-06-18  Jonathan Coles   <[email protected]>
626    
627            * setup.py: Fix a few problems that occured under Windows.
628    
629    2003-06-18  Jonathan Coles   <[email protected]>
630    
631            When Thuban loaded the map was redrawn twice because the
632            legend was being opened after the mainwindow was created
633            and not during its creation. This meant the map was drawn
634            initially and then had to be redrawn when the legend
635            caused the display to change. Now the legend is opened
636            in the mainwindow constructor which resolves this issue.
637    
638            Also, although we were checking for the existence of
639            gdal and gdalwarp modules, the gdalwarp extension was
640            still being compiled (which may fail if the system doesn't
641            have gdal installed). the build_ext command to setup.py
642            now accepts the flags --with-gdal and --without-gdal.
643            If --without-gdal is specified setup.py will try to
644            use the gdal parameters specified by gdal-config. Under
645            windows, those parameters have to be set in setup.py
646            as with proj4 an wxWindows.
647    
648            * setup.py: Use a list instead of seperate variables for
649            extension parameters so we can create a generic function
650            that runs an appropriate *-config script.
651            (run_cs_script): Renamed from run_wx_script and modified
652            to accept a second argument which is a list of lists to
653            be filled in by the values returned from running the command.
654            (thuban_build_ext): New. Extends the build_ext command and
655            provides the options --with-gdal/--without-gdal which then
656            optionally includes the gdalwarp extension.
657    
658            * Thuban/Model/resource.py: First check if we can import
659            the gdalwarp Thuban extension before checking for gdal.
660            Also added some comments.
661            
662            * Thuban/UI/legend.py (ScaleBarBitmap.__SetScale): Check if
663            the map is None which may be the case if none has been loaded
664            yet.
665    
666            * Thuban/UI/main.py (main): Remove call to ShowLegend.
667    
668            * Thuban/UI/mainwindow.py (MainWindow.__init__): Call ShowLegend().
669    
670            * Thuban/UI/renderer.py: Check for gdal support before importing
671            gdalwarp.
672            (MapRenderer.render_map): Only try to optimize if we have gdal
673            support otherwise nothing will get drawn.
674    
675            * Thuban/UI/view.py (MapCanvas.FitMapToWindow): This may be called
676            during startup before a map has been created. Check if map is None
677            before using it and do nothing if it is.
678    
679    2003-06-17  Jonathan Coles   <[email protected]>
680    
681            Fix the problem with raster layers under Windows that caused
682            Thuban to crash. The view should respond to layer projection
683            changed events to update the display. Changes to a projection
684            should not cause the map to be set to full extent.
685            
686            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
687            current_map_proj to remember the current map projection so that
688            when the projection changes we know what the previous projection
689            was.
690            (MapCanvas.SetMap): Unsubscribe and subscribe to
691            LAYER_PROJECTION_CHANGED events.
692            (MapCanvas.projection_changed): Split into two methods that respond
693            to map and layer projection changes.
694            (MapCanvas.map_projection_changed): New. Takes the current view and
695            projects it using the new projection. This does not cause the
696            map to be redrawn at full extent.
697            (MapCanvas.layer_projection_changed): New. Cause a redraw which
698            will draw each layer in its new projection.
699            
700            * extensions/thuban/bmpdataset.cpp (BMPDataset::Open): Call
701            VSIFClose() not VSIFCloseL() to close the file. Fixes a crash
702            under Windows.
703            
704            * extensions/thuban/gdalwarp.cpp (MFILENAME): Padding should be
705            to twice sizeof(void*) because there are two digits for each
706            hex byte.
707    
708    2003-06-16  Bernhard Herzog  <[email protected]>
709    
710            Update to the layer interface: Direct access to the table,
711            shapetable, shapefile and filename attributes is now actively
712            deprecated by issuing deprecation warnings for all places where
713            this happens.
714    
715            * Thuban/Model/layer.py (Layer.__getattr__): New. Implement access
716            to the instance variables table, shapetable, shapefile and
717            filename via __getattr__ so that we can issue a deprecation
718            warning.
719            (Layer.SetShapeStore): Don't set the deprecated instance variables
720            any more
721            (Layer.SetShapeStore): Don't use deprecated layer instance
722            variables
723            (Layer.Destroy): No need to explicitly remove the instance
724            variables any more
725            (Layer.GetFieldType, Layer.Shape): Don't use deprecated layer
726            instance variables
727    
728            * Thuban/UI/classgen.py (ClassGenDialog.__init__)
729            (GenUniformPanel._OnRetrieve, GenUniquePanel._OnRetrieve)
730            (GenQuantilesPanel.GetList, GenQuantilesPanel.OnRetrieve): Don't
731            use deprecated layer instance variables
732    
733            * Thuban/UI/classifier.py (Classifier.__init__): Don't use
734            deprecated layer instance variables
735    
736            * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape)
737            (IdentifyGridCtrl.selected_shape): Don't set the deprecated layer
738            instance variables
739    
740            * Thuban/UI/tableview.py (LayerTableGrid.select_shapes): Don't use
741            deprecated layer instance variables
742    
743            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Don't use
744            deprecated layer instance variables
745    
746            * Thuban/Model/save.py (SessionSaver.write_layer): Don't use
747            deprecated layer instance variables
748    
749            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer)
750            (MapRenderer.polygon_render_param): Don't use deprecated layer instance
751            variables
752    
753            * test/runtests.py (main): Turn Thuban's deprecation warnings into
754            errors so that they're cought by the tests
755    
756            * test/test_load.py (TestSingleLayer.test): Don't use deprecated
757            layer instance variables
758    
759    2003-06-16  Jonathan Coles   <[email protected]>
760    
761            Fix a problem under Windows whereby if the user double-clicks on a
762            layer in the legend that tree item will expand or collapse as well
763            as open the layer properties dialog. The state of the tree item
764            should not be affected.
765    
766            * Thuban/UI/legend.py (LegendTree.__init__): Add instance variable
767            preventExpandCollapse and subscribe to expanding and collapsing
768            events.
769            (LegendTree.OnItemExpandCollapse): New. Responds to expanding and
770            collapsing events and will veto the event if it has been triggered
771            by the user double clicking on a layer.
772            (LegendTree._OnItemActivated): Set preventExpandCollapse to indicate
773            that an expanding/collapsing event should be vetoed.
774    
775  2003-06-13  Bernhard Herzog  <[email protected]>  2003-06-13  Bernhard Herzog  <[email protected]>
776    
777          * Thuban/UI/classifier.py (Classifier.OnClose)          * Thuban/UI/classifier.py (Classifier.OnClose)

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26