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

Legend:
Removed from v.1237  
changed lines
  Added in v.1418

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26