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

Legend:
Removed from v.1248  
changed lines
  Added in v.1424

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26