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

Legend:
Removed from v.1246  
changed lines
  Added in v.1442

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26