/[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 1272 by jonathan, Fri Jun 20 16:43:13 2003 UTC revision 1560 by bh, Thu Aug 7 17:32:20 2003 UTC
# Line 1  Line 1 
1    2003-08-07  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/Model/layer.py: Remove the unused import of Shape from
4            data. It was only there for interface compatibility but it's not
5            used inside of Thuban and the generic Shape class will go away
6            soon anyway.
7    
8            * test/test_baserenderer.py (SimpleShape): Shape class for the
9            tests.
10            (SimpleShapeStore.Shape): Use SimpleShape instead of
11            Thuban.Model.data.Shape to make the tests independed of the coming
12            changes.
13    
14    2003-08-07  Bernhard Herzog  <[email protected]>
15    
16            * test/support.py (SkipTest, ThubanTestResult, ThubanTestRunner)
17            (ThubanTestProgram): New classes that extend the respective
18            classes from unittest. These new version support skipping tests
19            under certain expected conditions. In the Thuban test suite we
20            uses this for tests that require the optional gdal support.
21            (run_tests): Use ThubanTestProgram instead of the unittest.main()
22    
23            * test/runtests.py (main): Use the new ThubanTestRunner instead of
24            the normal one from unittest
25    
26            * test/test_layer.py (TestLayer.test_raster_layer): If this test
27            is not run because gdal support isn't available report this to the
28            runner.
29    
30            * test/test_baserenderer.py
31            (TestBaseRenderer.test_raster_no_projection): Do not run this test
32            if gdal support isn't available and report this to the runner.
33    
34    2003-08-06  Bernhard Herzog  <[email protected]>
35    
36            Rearrange the renderers a bit, partly in preparation for changes
37            required for the postgis merge, partly to make it more testable.
38            Also make the representation of coordinates in Shapes more
39            consistent.
40    
41            * Thuban/UI/renderer.py (MapRenderer): Most of the code/methods in
42            this class is now in BaseRenderer. This class is now practically
43            only a specialization of BaseRenderer for rendering to an actual
44            wx DC.
45            (ScreenRenderer.draw_shape_layer): Use self.low_level_renderer()
46            to get the shapetype specific rendering functions.
47    
48            * Thuban/UI/baserenderer.py: New file with the basic rendering
49            logic. The code in this file is completely independend of wx.
50            (BaseRenderer): Class with the basic rendering logic
51    
52            * test/test_baserenderer.py: New. Test cases for BaseRenderer
53    
54            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
55            error_on_redraw to guard agains endless loops and stack overflows
56            when there's a bug in the rendering code that raises exceptions.
57            (MapCanvas.OnIdle, MapCanvas._do_redraw): Split the actual
58            rendering into a separate method _do_redraw so that error handling
59            is a bit easier. When an exception occurs, set error_on_redraw to
60            true. When it's true on entry to OnIdle do nothing and return
61            immediately.
62    
63            * Thuban/Model/data.py (ShapefileStore.Shape): For consistency, a
64            Shape object will always have the coordinates as a list of list of
65            coordinate pairs (tuples).
66            (Shape.compute_bbox): Adapt to new representation.
67    
68            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
69            (ViewPort.LabelShapeAt): Adapt to new coordinate representation in
70            Shape objects.
71    
72            * test/test_shapefilestore.py
73            (ShapefileStoreTests.assertFloatTuplesEqual)
74            (ShapefileStoreTests.assertPointListEquals): Rename to
75            assertPointListEquals and change purpose to checking equality of
76            the lists returned by Shape.Points().
77            (TestShapefileStoreArc.test_shape)
78            (TestShapefileStorePolygon.test_shape)
79            (TestShapefileStorePoint.test_shape): Use the new
80            assertPointListEquals instead of assertFloatTuplesEqual
81    
82            * test/test_layer.py (TestLayer.assertFloatTuplesEqual)
83            (TestLayer.assertPointListEquals): Rename to assertPointListEquals
84            and change purpose to checking equality of the lists returned by
85            Shape.Points().
86            (TestLayer.test_arc_layer, TestLayer.test_arc_layer)
87            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
88            (TestLayer.test_derived_store): Use the new assertPointListEquals
89            instead of assertFloatTuplesEqual
90    
91            * test/test_derivedshapestore.py
92            (TestDerivedShapeStore.assertFloatTuplesEqual)
93            (TestDerivedShapeStore.assertPointListEquals): Rename to
94            assertPointListEquals and change purpose to checking equality of
95            the lists returned by Shape.Points().
96            (TestDerivedShapeStore.test_shape): Use the new
97            assertPointListEquals instead of assertFloatTuplesEqual
98    
99    2003-08-06  Jan-Oliver Wagner <[email protected]>
100    
101            * Thuban/UI/projdialog.py (UTMPanel._OnPropose): Added test for
102            a bounding box. A dialog is raised in case, no bounding box
103            is found. This fixes bug #2043:
104            https://intevation.de/rt/webrt?serial_num=2043
105    
106    2003-08-05  Bernhard Herzog  <[email protected]>
107    
108            * Thuban/Model/color.py (Color.__repr__): Make the repr of a color
109            object look like a Color instantiation. Formerly it looked like a
110            tuple.
111    
112            * test/test_color.py (TestColor.test_repr)
113            (TestColor.test_equality, TestColor.test_inequality): New. test
114            some more apects of the Color class
115            (TestTransparent.test_repr, TestTransparent.test_hex)
116            (TestTransparent.test_equality): New. Test cases for the
117            Transparent object.
118    
119    2003-08-04  Jan-Oliver Wagner <[email protected]>
120    
121            * Doc/manual/thuban-manual.xml: a number of small improvements.
122            The resulting file is the version submitted for GREAT-ER II.
123    
124    2003-08-01  Bernhard Herzog  <[email protected]>
125    
126            * Thuban/UI/resource.py, Thuban/UI/projdialog.py,
127            Thuban/UI/join.py, Thuban/UI/classgen.py, Thuban/UI/about.py,
128            Thuban/Model/resource.py: Insert cvs keywords and doc-strings.
129    
130            * Thuban/UI/common.py: Insert cvs keywords and doc-strings.
131            (Color2wxColour, wxColour2Color, ThubanBeginBusyCursor)
132            (ThubanEndBusyCursor): Add doc-strings
133    
134    2003-08-01  Bernhard Herzog  <[email protected]>
135    
136            First step towards PostGIS integration. More abstraction by movin
137            more code from the layer to the shapestore. More methods of the
138            layer are now simply delegated to the equivalent method of the
139            shapestore. The SHAPETYPE_* constants are now in data not in
140            layer.
141    
142            * Thuban/Model/data.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
143            (SHAPETYPE_POINT, Shape): Move these constants and classes from
144            layer.py to data.py
145            (ShapefileStore.__init__): More Initialization for the new methods
146            and functionality.
147            (ShapefileStore.ShapeType, ShapefileStore.NumShapes)
148            (ShapefileStore.BoundingBox, ShapefileStore.ShapesInRegion)
149            (ShapefileStore.Shape): New methods that were formerly implemented
150            in the layer.
151            (DerivedShapeStore.Shape, DerivedShapeStore.ShapesInRegion)
152            (DerivedShapeStore.ShapeType, DerivedShapeStore.NumShapes)
153            (DerivedShapeStore.BoundingBox): New. DerivedShapeStore
154            equivalents of the new shape methods. These versions are simply
155            delegated to the original shapstore.
156    
157            * Thuban/Model/layer.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
158            (SHAPETYPE_POINT, Shape): Removed. They're now in data.py
159            (Layer.SetShapeStore): Removed the initializatin of instance
160            variables that were needed for the stuff that's now in
161            ShapefileStore
162            (Layer.BoundingBox, Layer.NumShapes, Layer.ShapeType)
163            (Layer.Shape, Layer.ShapesInRegion): Simply delegate to the
164            shapestore.
165    
166            * Thuban/UI/classifier.py, Thuban/UI/renderer.py,
167            Thuban/UI/viewport.py: Import the SHAPETYPE_* constants from data
168            instead of layer.
169    
170            * test/test_shapefilestore.py: New. Tests for ShapefileStore.
171    
172            * test/test_derivedshapestore.py: New. Tests for DerivedShapeStore.
173    
174            * test/test_layer.py: Import the SHAPETYPE_* constants from data
175            instead of layer.
176            (TestLayer.test_derived_store): Remove the test for the exception
177            when instantiating the DerivedShapeStore with an incompatible
178            table which is now in test_derivedshapestore.py. Add some more
179            tests of the layer methods to determine whether they work for a
180            DerivedShapeStore as well.
181    
182    2003-07-31  Jonathan Coles   <[email protected]>
183    
184            * Doc/manual/thuban-manual.xml: Fix the list of required packages
185            by just listing the name and where they can be found.
186    
187    2003-07-31  Frank Koormann   <[email protected]>
188    
189            * Doc/manual/thuban-manual.xml:
190            Changed the screenshot elements to figure.
191            Changed some variablelist elements to itemizedlist.
192            Added section on GDAL formats.
193    
194    2003-07-31  Jonathan Coles   <[email protected]>
195    
196            * Doc/manual/thuban-manual.xml: Added a few sentences about
197            the Fix Border Color option when generating classes.
198    
199    2003-07-30  Jonathan Coles   <[email protected]>
200    
201            * Thuban/Model/classgen.py: Add docstrings. Rename specific
202            Ramp instances to use lower_case_style.
203    
204            * Thuban/UI/classgen.py: Use renamed Ramp instances.
205            
206            * Thuban/UI/classifier.py: Add docstrings.
207    
208            * Thuban/UI/dock.py: Add docstrings.
209    
210            * test/test_classgen.py: Use renamed Ramp instances.
211    
212    2003-07-30  Bernhard Herzog  <[email protected]>
213    
214            * Thuban/Lib/connector.py (QueueingPublisher): Removed. This class
215            was never used in Thuban.
216    
217    2003-07-30  Bernhard Herzog  <[email protected]>
218    
219            * Thuban/UI/join.py (JoinDialog.__init__): Use the table's Title()
220            method directly instead of going through the transient_table
221            method. This faster because transient_table may force the copy of
222            a DBF file into the transient database and setting a table's title
223            doesnm't affect the title of the associated transient table, so
224            this fixes RT #2042
225    
226            * Thuban/UI/main.py (__version__): Don't import the already
227            removed show_exception_dialog.
228    
229    2003-07-29  Jonathan Coles   <[email protected]>
230    
231            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
232            Put back this method and remove the equivalent function since we
233            are setting the exception hook from within this class (OnInit).
234    
235    2003-07-29  Jonathan Coles   <[email protected]>
236    
237            * Doc/manual/images/5_2_custom_ramp.png,
238            Doc/manual/images/5_2_quantiles.png,
239            Doc/manual/images/5_2_uniform_dist.png,
240            Doc/manual/images/5_2_unique_values.png,
241            Doc/manual/images/8_int_error.png: New screen shots.
242    
243            * Doc/manual/thuban-manual.xml: Fixed typos and wording, clarified
244            some points, and added more screen shots.
245    
246    2003-07-29  Bernhard Herzog  <[email protected]>
247    
248            * Thuban/Model/data.py: Remove the now unused import of warnings
249    
250    2003-07-29  Bernhard Herzog  <[email protected]>
251    
252            * Thuban/Model/data.py (SimpleStore): Removed. This class has been
253            deprecated since before the 0.8 release and isn't used in Thuban
254            itself anymore.
255    
256            * Thuban/Model/transientdb.py: Remove some unnecessary imports
257    
258    2003-07-29  Jonathan Coles   <[email protected]>
259    
260            * Thuban/UI/application.py (ThubanApplication.OnInit): set the
261            python exception hook here so that we are sure to catch any
262            Thuban exception that happen during initialization.
263    
264            * Thuban/UI/main.py (main): Don't set the exception hook here,
265            it will get set in ThubanApplication.OnInit.
266    
267    2003-07-29  Jonathan Coles   <[email protected]>
268                                                                                
269            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
270            Removed and called it show_exception_dialog() so that the exception
271            handler can be set before the class is created.
272                                                                                
273            * Thuban/UI/main.py (main): Install the exception handler before
274            a ThubanApplication is created.
275                                                                                    
276    2003-07-29  Bernhard Herzog  <[email protected]>
277    
278            * po/it.po: New. Italian translation by Maurizio Napolitano
279    
280            * po/ru.po: New. Russian translation by Alex Shevlakov
281    
282    2003-07-29  Frank Koormann   <[email protected]>
283    
284            * Doc/manual/thuban-manual.xml: Extended section on supported
285            projections.
286            
287    2003-07-29  Frank Koormann   <[email protected]>
288    
289            * Doc/manual/thuban-manual.xml: gaspell-checked.
290    
291    2003-07-29  Jonathan Coles   <[email protected]>
292    
293            * Doc/manual/images/3_5_legend.png: Added border to improve look
294            on white background.
295    
296    2003-07-29  Jonathan Coles   <[email protected]>
297    
298            * Doc/manual/thuban-manual.xml: Fixed grammar and typos. Added
299            descriptions for the legend toolbar.
300    
301            * Doc/manual/images/4_2_raster_layer_properties.png: Removed
302            cursor from dialog box.
303    
304    2003-07-28  Jonathan Coles   <[email protected]>
305    
306            * Doc/manual/thuban-manual.xml: More screenshots and more chapters.
307    
308            * Doc/manual/images/2_4_session_tree.png,
309            Doc/manual/images/3_5_legend.png, Doc/manual/images/3_rename_map.png,
310            Doc/manual/images/4_2_layer_properties.png,
311            Doc/manual/images/4_2_raster_layer_properties.png,
312            Doc/manual/images/5_3_genclass.png,
313            Doc/manual/images/5_classification.png,
314            Doc/manual/images/6_projection.png,
315            Doc/manual/images/7_1_table_view.png,
316            Doc/manual/images/7_2_5_join.png: New screenshots.
317    
318    2003-07-24  Jonathan Coles   <[email protected]>
319    
320            * Doc/manual/thuban-manual.xml: Chapter on Projection Management.
321    
322    2003-07-24  Jonathan Coles   <[email protected]>
323    
324            * Doc/manual/thuban-manual.xml: Added EPS images and wrote
325            chapter on Layer Management.
326    
327            * Doc/manual/Makefile: New. Makefile to generate all formats for the
328            manual and images.
329    
330    2003-07-24  Bernhard Herzog  <[email protected]>
331    
332            * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
333            it annoys lintian which warns about these files not being
334            executable. The #1 isn't necessary here since if you absolutely
335            must execute them you can always say "python <filename>".
336    
337            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove
338            superfluous code to set brush and pen for point shapes
339    
340            * Thuban/UI/viewport.py: Remove commented out code that wouldn't
341            belong in viewport anyway
342    
343    2003-07-24  Frank Koormann   <[email protected]>
344    
345            * Doc/manual/thuban-manual.xml: Added section on table management.
346    
347    2003-07-24  Bernhard Herzog  <[email protected]>
348    
349            * test/runtests.py (main): Recognize the long "verbose" option
350            correctly.
351    
352    2003-07-22  Jonathan Coles   <[email protected]>
353    
354            * Doc/manual/thuban-manual.xml: Continue to write first revision
355            of the manual.
356    
357            * Thuban/UI/renderer.py (MapRenderer.render_map): Wrap method
358            with Begin/EndDrawing() calls to ensure we aren't doing to
359            many updates to the dc during rendering.
360            (ScreenRenderer.draw_shape_layer): self.draw_point_shape takes
361            a pen and brush argument so they need to be passed to the function.
362    
363            * Thuban/UI/viewport.py (ViewPort.calc_min_max_scales): New.
364            Calculates the minimum and maximum scale values. Factored out
365            of set_view_transform so that it could be used to zoom all the
366            way into a single point.
367            (ViewPort.set_view_transform): Call calc_min_max_scales().
368            (ViewPort.FitSelectedToWindow): Zoom to the maximum scale
369            if only a single point is selected.
370    
371            * Doc/manual/images/1_2_legend_close.png,
372            Doc/manual/images/1_2_legend_dock.png,
373            Doc/manual/images/1_2_mainwindow.png,
374            Doc/manual/images/1_2_mainwindow.ps,
375            Doc/manual/images/1_2_mainwindow.sk,
376            Doc/manual/images/3_2_fullextent.png,
377            Doc/manual/images/3_2_fulllayerextent.png,
378            Doc/manual/images/3_2_fullshapeextent.png,
379            Doc/manual/images/3_2_pan.png,
380            Doc/manual/images/3_2_zoomin.png,
381            Doc/manual/images/3_2_zoomout.png,
382            Doc/manual/images/3_3_identify.png,
383            Doc/manual/images/3_3_label.png,
384            Doc/manual/images/3_5_invisible.png,
385            Doc/manual/images/3_5_movedown.png,
386            Doc/manual/images/3_5_moveup.png,
387            Doc/manual/images/3_5_props.png,
388            Doc/manual/images/3_5_tobottom.png,
389            Doc/manual/images/3_5_totop.png,
390            Doc/manual/images/3_5_visible.png: New. Images for the documentation.
391    
392    2003-07-18  Bernhard Herzog  <[email protected]>
393    
394            * Thuban/UI/messages.py (MAP_REPLACED): New message.
395    
396            * Thuban/UI/viewport.py (ViewPort.SetMap): Issue MAP_REPLACED
397            after the new map has been assigned
398    
399            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages):
400            Delegate MAP_REPLACED to the canvas too
401            (MainWindow.prepare_new_session): Removed. Thanks to the new
402            MAP_REPLACED message it's no longer needed
403            (MainWindow.OpenSession, MainWindow.NewSession):
404            prepare_new_session has been removed.
405    
406            * Thuban/UI/classifier.py (Classifier.__init__): Subscribe to
407            MAP_REPLACED so that we can close the dialog if a new map is set.
408            (Classifier.unsubscribe_messages): Unsubscribe from MAP_REPLACED
409            (Classifier.map_replaced): Handle MAP_REPLACED by closing the
410            dialog
411    
412            * test/test_viewport.py (SimpleViewPortTest)
413            (SimpleViewPortTest.test_default_size): Add doc-strings
414            (ViewPortTest.setUp): Bind map to self.map so we can use it in
415            tests. Subscribe to MAP_REPLACED messages too.
416            (ViewPortTest.tearDown): No need to explicitly unsubscribe
417            (ViewPortTest.test_set_map): New test for the SetMap method.
418    
419    2003-07-18  Bernhard Herzog  <[email protected]>
420    
421            * test/test_viewport.py (SimpleViewPortTest.test_default_size):
422            Move this test from ViewPortTest.setUp to this new separate test
423            case. setUp is not the place for the actual tests.
424            (ViewPortTest.test_inital_settings, ViewPortTest.setUp): Move some
425            more of the test from setUp to the new test test_inital_settings.
426            (ViewPortTest.test_win_to_proj, ViewPortTest.test_proj_to_win)
427            (ViewPortTest.test_proj_conv): Split test_proj_conv into
428            test_win_to_proj and test_proj_to_win and make the tests easier to
429            understand
430            (ViewPortTest.testFitRectToWindow, ViewPortTest.testZoomFactor)
431            (ViewPortTest.testZoomOutToRect, ViewPortTest.testTranslate)
432            (ViewPortTest.test_unprojected_rect_around_point)
433            (ViewPortTest.test_find_shape_at, ViewPortTest.testTools):
434            Reformat to increase readability.
435    
436    2003-07-18  Bernhard Herzog  <[email protected]>
437    
438            * Thuban/UI/view.py (MapCanvas.OnLeftDown): Capture the mouse.
439    
440    2003-07-18  Bernhard Herzog  <[email protected]>
441    
442            * test/runtests.py: The test suite can now be run without an X
443            connection. To make sure this remains true, remove the DISPLAY
444            environment variable so that an error occurs if the wxGTK is
445            imported accidentally
446    
447    2003-07-18  Bernhard Herzog  <[email protected]>
448    
449            * Thuban/UI/viewport.py: Remove unused imports
450    
451            * Thuban/UI/view.py: Remove unused imports
452    
453    2003-07-18  Bernhard Herzog  <[email protected]>
454    
455            * test/test_export.py Remove unused imports. The OutputTransform
456            function is now in viewport.py and is called output_transform
457            (TestScalebar.test_output_transform)
458            (TestScalebar.test_OutputTransform): Renamed to
459            test_output_transform and updated to use output_transform instead
460            of OutputTransform
461    
462            * Thuban/UI/view.py (OutputTransform): Moved to viewport.py and
463            renamed.
464            (MapCanvas.Export, MapPrintout.draw_on_dc): OutputTransform was
465            renamed to output_transform
466    
467            * Thuban/UI/viewport.py (OutputTransform, output_transform):
468            Rename to output_transform
469    
470    2003-07-18  Bernhard Herzog  <[email protected]>
471    
472            * Thuban/Model/layer.py (Layer.__init__): Rename
473            classificationField to classificatin_column and init it here so
474            that it can be used in SetClassificationColumn
475            (Layer.GetClassificationColumn, Layer.GetClassificationField):
476            Rename to GetClassificationColumn.
477            (Layer.SetClassificationColumn, Layer.SetClassificationField):
478            Rename to SetClassificationColumn and issue a LAYER_CHANGED
479            message if the column changes.
480            (Layer._classification_changed, Layer.ClassChanged): Rename to
481            _classification_changed. Update the callers.
482            (Layer.SetShapeStore): Further field->column renames.
483    
484            * Thuban/Model/load.py (SessionLoader.start_classification)
485            (SessionLoader.start_clpoint): Updates because of
486            field->column method name changes in the Layer class
487    
488            * Thuban/Model/save.py (SessionSaver.write_classification): Updates
489            because of field->column method name changes in the Layer class
490    
491            * Thuban/UI/classifier.py (Classifier.__init__)
492            (Classifier._OnTry, Classifier._OnRevert): Updates because of
493            field->column method name changes in the Layer class
494    
495            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Updates
496            because of field->column method name changes in the Layer class
497    
498            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Updates because
499            of field->column method name changes in the Layer class
500    
501            * test/test_save.py (SaveSessionTest.testClassifiedLayer)
502            (SaveSessionTest.testClassifiedLayer): Update because of
503            field->column method name changes in the Layer class
504    
505            * test/test_layer.py (SetShapeStoreTests.setUp)
506            (SetShapeStoreTests.test_sanity): Update because of field->column
507            method name changes in the Layer class
508            (TestLayerModification.setUp): Subscribe to LAYER_CHANGED as well
509            (TestLayerModification.test_sanity)
510            (TestLayerModification.test_initial_settings): remove unsued code
511            and rename to test_sanity.
512            (TestLayerModification.test_set_classification): New test for
513            SetClassification and SetClassificationField.
514    
515    2003-07-18  Bernhard Herzog  <[email protected]>
516    
517            * test/test_classgen.py (TestFixedRamp.test): Extend test to check
518            the non-fixed values as well. The old test would have accepted a
519            fixed ramp that only returnes the fixed properties
520    
521    2003-07-17  Jonathan Coles   <[email protected]>
522    
523            * Doc/manual/mainwindow.png, Doc/manual/mainwindow.xcf: Screen
524            shots for the manual. The XCF file is the source image and
525            has additional layers to support changes.
526    
527            * Doc/manual/thuban-manual.xml: Wrote an initial Introduction.
528    
529            * Thuban/UI/classifier.py (Classifier.__BuildClassification):
530            Return both the new class and the field name.
531    
532            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Don't
533            fit the map to the window as this changes any zoom level that
534            the user may have set.
535    
536    2003-07-16  Jonathan Coles   <[email protected]>
537    
538            * Thuban/Model/classgen.py (generate_singletons,
539            generate_uniform_distribution, generate_quantiles): Remove
540            fixes parameter, but maintain the same functionality by having
541            the calling function pass a FixedRamp object for the ramp.
542            (FixedRamp): New. Adapts a ramp to have fixed property values.
543    
544            * Thuban/Model/classification.py: Use new CLASS_CHANGED message.
545            (Classification): Inherit from Publisher.
546            (Classification.__init__): Remove the layer parameter.
547            Classifications no longer need to have a parent layer.
548            (Classification.GetField, Classification.GetFieldType,
549            Classification.SetFieldInfo): Removed. The field name is stored
550            in the layer, and the type can be retreived by calling
551            Layer.GetFieldType().
552            (Classification._set_layer, Classification.GetLayer): Removed.
553            Classifications no longer have a parent layer.
554    
555            * Thuban/Model/layer.py (Layer.Destroy): Unsubscribe from the
556            classification.
557            (Layer.SetShapeStore): Reset the classification first while
558            we still have the old shape store to work with.
559            (Layer.GetClassificationField, Layer.SetClassificationField):
560            New. Method for getting/setting the field to classify on.
561            (Layer.SetClassification): Simplified now that the layer
562            simply has to hold a reference to the classification and not
563            tell the classification who owns it.
564            Fixes RTbug #2023.
565    
566            * Thuban/Model/load.py (SessionLoader.start_classification):
567            Set the field name on the layer, not the classification.
568    
569            * Thuban/Model/messages.py: Add CLASS_CHANGED for when a
570            classification is modified.
571    
572            * Thuban/Model/save.py (SessionSaver.write_classification):
573            Get the field name and type from the layer.
574    
575            * Thuban/Model/table.py (table_to_dbf, table_to_csv): Renamed
576            parameter records to rows and add docstring. Fixes RTbug #1997.
577    
578            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Use a fixed
579            ramp when we need to fix certain values of a ramp rather than
580            using the old fixes parameter. Fixes RTbug #2024.
581    
582            * Thuban/UI/classifier.py (ClassGrid.CreateTable): Add fieldType
583            parameter.
584            (ClassTable.Reset): Add fieldType parameter and use it, rather
585            than asking the classification.
586            (Classifier.__init__): Remember the original class's field
587            and ask the layer for the field type, rather than the classification.
588            (Classifier.__SetGridTable): Retrieve the field and field type
589            for the table because they are not in the classification.
590            (Classifier._OnTry, Classifier._OnRevert): Set the classification
591            field on the layer in addition to the classification itself.
592    
593            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Get the
594            classification field from layer.
595    
596            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Get the
597            classification field from layer. Split up tests and remove
598            *-imports. Fixes RTbug #1992.
599    
600            * test/test_classgen.py (TestFixedRamp): Test for the FixedRamp class.
601    
602            * test/test_classification.py
603            (TestClassification.test_classification): Remove tests for methods
604            that no longer exist.
605    
606            * test/test_layer.py (SetShapeStoreTests.setUp): Classification
607            __init__ no longer has a field parameter, use SetClassificationField.
608            (SetShapeStoreTests.test_sanity): Use layer object to get class
609            field info.
610    
611            * test/test_save.py (SaveSessionTest.testClassifiedLayer): Use
612            SetClassificationField on layer to set class field info.
613    
614            * test/test_viewport.py: Renamed from test/test_view.py.
615    
616    2003-07-16  Jan-Oliver Wagner <[email protected]>
617    
618            * Doc/manual/thuban-manual.xml: Added authors and an initial
619            coarse structure.
620    
621    2003-07-15  Bernhard Herzog  <[email protected]>
622    
623            * test/support.py (FloatComparisonMixin): This is a mix-in class
624            and therefore should not be derived from any other class.
625    
626            * test/test_range.py (RangeTest): FloatComparisonMixin is a
627            mix-in, so derive from TestCase as well.
628    
629    2003-07-15  Bernhard Herzog  <[email protected]>
630    
631            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Rework the
632            draw_func handling a bit to remove one layer of indirection. This
633            makes the renderer about 10% faster in the non-classifying case
634            and the code a bit cleaner
635            (MapRenderer.draw_point_shape): Add the pen and brush parameters
636            and set them in the dc. Now the draw_point_shape method and
637            wxproj's draw_polygon_shape function have basically the same
638            signature so that both can be directly used as draw_func
639    
640    2003-07-15  Bernhard Herzog  <[email protected]>
641    
642            * Thuban/Model/save.py (SessionSaver.write_classification): Encode
643            string values (in addition to the labels) as UTF 8
644    
645            * Thuban/Model/load.py (SessionLoader.start_clpoint): Decode the
646            values if the field type is string
647    
648            * test/test_save.py (SaveSessionTest.testClassifiedLayer): Test
649            saving a session with non-ascii string classification values.
650    
651            * test/test_load.py (TestClassification.file_contents)
652            (TestClassification.test): Check for non-ascii values in string
653            classifications
654    
655    2003-07-14  Jonathan Coles   <[email protected]>
656    
657            * test/test_view.py: New. Tests for ViewPort.
658    
659    2003-07-14  Frank Koormann   <[email protected]>
660    
661            * Thuban/Model/load.py (SessionLoader.start_map): Encode map
662            title to latin1.  Fixes https://intevation.de/rt/webrt?serial_num=2013
663    
664            * test/test_load_0_8.py (TestUnicodeStrings): New, test load of
665            unicode strings from session file: session title, map title and
666            projection name.
667            
668    2003-07-10  Jonathan Coles   <[email protected]>
669    
670            * Thuban/UI/viewport.py (Tool.MouseUp): Should have called
671            drag_stop, not drag_move when the mouse is released.
672    
673    2003-07-10  Jonathan Coles   <[email protected]>
674    
675            The most important part of this is the seperation of view.py into
676            two pieces. viewport.py now has a class called ViewPort which
677            contains all the non-wx parts of view.py and can therefore be
678            tested. view.py contains only the wx-specific parts and is fairly
679            simple.
680    
681            * Thuban/UI/view.py: Stripped out all non-wx functionality. Fixes
682            RTTbug #1992.
683            * Thuban/UI/viewport.py: New. Contains non-wx view functionality.
684            RTTbug #1992.
685    
686            * Thuban/Model/classgen.py (generate_singletons,
687            generate_uniform_distribution, generate_quantiles):
688            Added 'fixes' parameter so that property attributes can
689            be held constant over the generated classification groups.
690            (CustomRamp.GetProperties): Remove unused variables.
691    
692            * Thuban/Model/map.py (Map.SetProjection): Send the old
693            projection as an argument to listeners of the MAP_PROJECTION_CHANGED
694            event.
695    
696            * Thuban/Model/table.py (table_to_dbf, table_to_csv): Added 'records'
697            parameter which is a list of records that restricts which
698            records are saved. Fixes RTbug #1997.
699    
700            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
701            Port exception dialog from GREAT-ER. Fixes RTbug #1993.
702    
703            * Thuban/UI/classgen.py (ClassGenDialog.__init__): Add controls
704            to allow the user to fix line color/width on generated groups.
705            (ClassGenDialog.OnOK): Use new 'fixes' parameter of the generate_*
706            functions to optionally fix group properties.
707    
708            * Thuban/UI/main.py (main): Set exception hook to the
709            ShowExceptionDialog. Fixes RTbug #1993.
710    
711            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): Raise
712            the table window when it is selectd to be shown.
713    
714            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Add an
715            Export Selection button and move the export buttons underneath
716            the table.
717            (QueryTableFrame.UpdateStatusText): Added event argument so
718            that it can respond to grid selection events. The status text
719            is now updated even when the table is not associated with a
720            layer as was previously assumed.
721            (QueryTableFrame.OnGridSelectRange, OnGridSelectCell): Removed.
722            UpdateStatusText responds to these events.
723            (QueryTableFrame.OnSaveAs): Renamed to doExport.
724            (QueryTableFrame.doExport): Helper function that saves the
725            entire table, or selected rows, to a file.
726            (QueryTableFrame.OnExport, QueryTableFrame.OnExportSel): New.
727            Respond to export button events and call doExport.
728    
729            * extensions/thuban/gdalwarp.cpp (ProjectRasterFile): Make sure
730            the function doesn't return NULL without first setting a Python
731            Error.
732    
733            * test/runtests.py (main): Only print "Unknown option" for
734            unsupported options.
735    
736            * test/support.py (FloatComparisonMixin.assertFloatEqual): Take
737            optional epsilon argument to specify floating point accuracy.
738            (FloatComparisonMixin.assertFloatSeqEqual): Call assertFloatEqual
739            for each item test.
740    
741            * test/test_csv_table.py (TestCSVTable.test_table_to_cvs): Add
742            tests for saving selected records.
743    
744            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): Add
745            tests for saving selected records.
746    
747            * test/test_map.py (TestMapWithContents.test_set_projection):
748            MAP_PROJECTION_CHANGED events send the old projection.
749    
750            * test/test_session.py
751            (TestSessionWithContent.test_forward_map_projection):
752            MAP_PROJECTION_CHANGED events send the old projection.
753    
754            * test/test_table.py (TableTest): Update tests to use non-deprecated
755            functions.
756    
757    2003-07-08  Bernhard Herzog  <[email protected]>
758    
759            * Thuban/Model/transientdb.py (TransientTableBase.Width): The type
760            constants in the column objects are the standard ones defined in
761            the table module.
762    
763            * test/test_transientdb.py
764            (TestTransientTable.test_transienttable_to_dbf): New. Test whether
765            exporting transient tables as DBF works. This should catch the bug
766            just fixed in TransientTableBase.Width.
767    
768    2003-07-08  Bernhard Herzog  <[email protected]>
769    
770            * Thuban/Model/classgen.py (CustomRamp.GetProperties): Compute the
771            interpolated colors correctly.
772    
773            * test/test_classgen.py (TestCustomRamp.test_color_interpolation):
774            New. Test case for the fix in classgen.py
775    
776    2003-07-08  Bernhard Herzog  <[email protected]>
777    
778            * test/runtests.py (main): Make the default output less verbose
779            and add a verbosity option (-v) to get the old output
780    
781    2003-07-08  Bernhard Herzog  <[email protected]>
782    
783            * Resources/XML/thuban-0.9.dtd: New. This will become the DTD for
784            0.9.
785    
786            * Thuban/Model/transientdb.py (TransientJoinedTable.JoinType):
787            New. Return the join type
788    
789            * Thuban/Model/save.py (SessionSaver.write_session): Use new 0.9
790            DTD
791            (SessionSaver.write_data_containers): Save the join type for
792            joined tables
793    
794            * Thuban/Model/load.py (SessionLoader.__init__): Add the new 0.9
795            namespace
796            (SessionLoader.start_jointable): Handle the jointype attribute
797    
798            * test/test_load_0_8.py: New. Effectively a copy of test_load.py
799            as of Thuban 0.8. These are now tests to determine whether Thuban
800            can still read files generated by Thuban 0.8
801    
802            * test/test_load.py (LoadSessionTest.dtd)
803            (TestSingleLayer.file_contents)
804            (TestLayerVisibility.file_contents, TestLabels.file_contents)
805            (TestLayerProjection.file_contents)
806            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
807            (TestJoinedTable.file_contents)
808            (TestLoadError.file_contents): Update for new DTD
809            (TestJoinedTable.file_contents, TestJoinedTable.setUp): Add test
810            for new join type attribute
811    
812            * test/test_save.py (SaveSessionTest.dtd)
813            (SaveSessionTest.testEmptySession)
814            (SaveSessionTest.testSingleLayer)
815            (SaveSessionTest.testLayerProjection)
816            (SaveSessionTest.testRasterLayer)
817            (SaveSessionTest.testClassifiedLayer)
818            (SaveSessionTest.test_dbf_table)
819            (SaveSessionTest.test_joined_table): Update for new DTD
820            (SaveSessionTest.test_joined_table): Add test for new join type
821            attribute
822    
823    2003-07-04  Bernhard Herzog  <[email protected]>
824    
825            * Thuban/Model/table.py (_find_dbf_column_names): New. Helper
826            function for table_to_dbf
827            (table_to_dbf): Deal with names longer than the 10 character limit
828    
829            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): Add
830            doc-string
831            (TestTableToDBF.test_table_to_dbf_long_col_names): New test for
832            long column names
833    
834    2003-07-03  Bernhard Herzog  <[email protected]>
835    
836            * Doc/manual/thuban-manual.xml: Fix the CVS Revision Tag syntax
837    
838    2003-07-03  Bernhard Herzog  <[email protected]>
839    
840            * Doc/manual/thuban-manual.xml, Doc/manual/README: New. Skeleton
841            for the Thuban manual and README with some basic information about
842            the manual
843    
844    2003-07-03  Bernhard Herzog  <[email protected]>
845    
846            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
847            Update doc-string
848            (TransientJoinedTable.create): Do not modify the column objects of
849            the input tables in place and copy all columns of the input tables
850            into the joined table after all.
851    
852            * test/test_transientdb.py
853            (TestTransientTable.test_transient_joined_table_same_column_name):
854            Update to reflect the new behavior
855            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
856            Update to reflect the new behavior
857            (TestTransientTable.test_transient_joined_table_name_collisions_dont_modify_in_place):
858            New test case for a bug which modified the column objects in place
859    
860    2003-07-02  Jonathan Coles   <[email protected]>
861    
862            * Thuban/Model/classgen.py (generate_singletons,
863            generate_uniform_distribution, generate_quantiles,
864            GenQuantiles0): Make sure maxValue isn't less than
865            one, otherwise we could divide by zero.
866    
867            * test/test_classgen.py (ClassGenTest.doClassRangeTest,
868            ClassGenTest.doClassSingleTest): Call doBoundsTest to
869            check the end classification groups against the
870            proper property values.
871            (ClassGenTest.doBoundsTest): New. Checks the first and
872            last classification groups to make sure their properties
873            are the correct upper and lower bounds for a color ramp.
874    
875    2003-07-02  Jonathan Coles   <[email protected]>
876    
877            * Thuban/Model/classgen.py (generate_singletons,
878            generate_uniform_distribution, generate_quantiles,
879            GenQuantiles0): The denominator was one to high when
880            calculating the index for the ramp causing the index
881            to never to reach one.
882    
883    2003-07-02  Jonathan Coles   <[email protected]>
884    
885            Changed the singature of ClassGroupRange.__init__ and
886            ClassGroupRange.SetRange() so that the min/max values are
887            passed as a tuple. This makes a better calling scheme for
888            when a Range object is passed instead.
889    
890            * Thuban/Model/classgen.py: Fixed parameters to
891            ClassGroupRange constructor.
892    
893            * Thuban/Model/classification.py (ClassGroupRange.__init__):
894            Consolidate the min/max parameters into a single _range which
895            can either be a tuple or a Range object.
896            (ClassGroupRange.SetRange): Consolidate the min/max parameters
897            into a single _range which can either be a tuple or a Range object.
898    
899            * Thuban/Model/load.py (SessionLoader.start_clrange): Fix
900            call to ClassGroupRange constructor to use a tuple.
901    
902            * Thuban/Model/layer.py (Layer.SetClassification): Switch
903            the classification instance variable to the new class
904            before calling _set_layer otherwise subscribers to a
905            LAYER_CHANGED event will not see any difference.
906    
907            * test/test_classification.py: Fix tests of ClassGroupRange
908            so that they use the new signature.
909    
910            * test/test_load.py: Fix use of ClassGroupRange so that it
911            uses the new signature.
912    
913            * test/test_load_0_2.py: Fix use of ClassGroupRange so that it
914            uses the new signature.
915    
916            * test/test_save.py: Fix use of ClassGroupRange so that it
917            uses the new signature.
918    
919    
920    2003-07-01  Jonathan Coles   <[email protected]>
921    
922            * Thuban/Model/classgen.py: Fixes RTbug #1972, 1971.
923            Import used objects/class from color.
924            (generate_singletons): We don't
925            need the numGroups parameter anymore because we are using
926            the new ramps with GetProperties().
927            (generate_uniform_distribution): Use new ramp method
928            GetProperties().
929            (generate_quantiles, GenQuantiles0): Use new ramp method
930            GetProperties().
931            (CustomRamp.SetNumGroups): Removed. The ramps now map
932            a value from 0 to 1 to class properties so the number
933            of groups is not needed ahead of time.
934            (CustomRamp.next): Removed. CustomRamp does not support
935            interation anymore.
936            (CustomRamp.GetProperties): Returns a ClassGroupProperties
937            object based on the index value from 0 to 1 that is
938            passed to it.
939            (GreyRamp, RedRamp, GreenRamp, BlueRamp, GreenToRedRamp):
940            Made into instances of Monochromatic class instread of
941            deriving from it.
942            (HotToCold.SetNumGroups): Removed. See CustomRamp.
943            (HotToCold.next): Removed. See CustomRamp.
944    
945            * Thuban/Model/classification.py: Fixes RTbug #1973, 1971.
946            (Classification.SetField, Classification.SetFieldType):
947            Replaced with SetFieldInfo.
948            (Classification.SetFieldInfo): New. Does a better job of
949            what SetField and SetFieldType used to do by combining
950            their function since they should really always be done
951            at the same time.
952            (Classification.SetLayer): Renamed to _set_layer.
953            (Classification._set_layer): Should only be called from
954            Layer's SetClassification. This does not cause a recursive
955            call as SetLayer did because we know that Layer knows about
956            the classification.
957    
958            * Thuban/Model/color.py: Fixes RTbug #1971.
959            (_Transparent): Renamed from Transparent so it doesn't
960            conflict with the module variable.
961            (Transparent, Black): Renamed from Color.Transparent,
962            Color.Black so they are not class variables.
963    
964            * Thuban/Model/layer.py: Fixes RTbug #1971, 1973.
965            (Layer.Destroy): We don't need to call SetClassification
966            anymore to clear out the back reference in the classifcation
967            to the layer. It's better to set it to None using _set_layer,
968            and we won't be creating another clas object too.
969            (Layer.SetClassification): Classification._set_layer is not
970            recursive so remove all the locking variables. Also clean
971            up the code so that it remains unchanged if something fails.
972    
973            * Thuban/Model/load.py: Fixes RTbug #1971.
974            (SessionLoader.start_classification): Call
975            Classification.SetFieldInfo().
976    
977            * Thuban/Model/save.py: Removed import of Color which wasn't
978            being used.
979    
980            * Thuban/UI/classgen.py: Fixes RTbug #1972.
981            (ClassGenDialog.__init__): Color ramps are now instances
982            already so we don't need to create any new objects.
983            (ClassGenDialog.OnOK): Check for numGroups is no longer
984            necessary because we never use it.
985    
986            * Thuban/UI/classifier.py: Fixes RTbug #1971.
987            (Classifier.__BuildClassification, Classifier.__SetGridTable):
988            Call Classification.SetFieldInfo() instead of SetFieldType.
989    
990            * Thuban/UI/renderer.py: Fixes RTbug #1971.
991    
992            * Thuban/UI/view.py: Fixes RTbug #1974, 1971.
993            (MapCanvas.__init__): Subscribe to the idle time event. Set
994            background color to white.
995            (MapCanvas.OnPaint): Set a flag indicating that we should
996            render the map during idle time. If we already have a bitmap
997            just draw it now.
998            (MapCanvas.OnIdle): New. Render the map only during idle time.
999            This also fixes a problem with the busy cursor under gtk.
1000    
1001            * test/test_classgen.py (ClassGenTest.test_generate_singletons):
1002            Fix calls to generate_singletons because the signature changed.
1003    
1004            * test/test_classification.py: Fix color references and
1005            change calls to Classification.[SetField|SetFieldType] to
1006            SetFieldInfo.
1007    
1008            * test/test_load.py: Fix color references.
1009    
1010            * test/test_load_0_2.py: Fix color references.
1011    
1012            * test/test_save.py (SaveSessionTest.testClassifiedLayer):
1013            Change calls to Classification.[SetField|SetFieldType] to
1014            SetFieldInfo.
1015    
1016    2003-07-01  Frank Koormann   <[email protected]>
1017    
1018            MERGE from the greater-ms3 branch.
1019    
1020            * test/test_transientdb.py
1021            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
1022            New. Test join of two tables with partly equal column names.
1023    
1024            * Thuban/Model/transientdb.py (TransientJoinedTable.create):
1025            If duplicates in left and right tables column names are found,
1026            append '_' (underscores) to the name until it is unique.
1027            Create always new internal names for the resulting table and reference
1028            columns in the join statement with <table>.<column>
1029    
1030    2003-07-01  Bernhard Herzog  <[email protected]>
1031    
1032            * test/test_transientdb.py
1033            (TestTransientTable.test_transient_joined_table_same_column_name):
1034            New. Test whether joining on columns with the same names in both
1035            tables works.
1036            
1037            * Thuban/Model/transientdb.py (TransientJoinedTable.create): Make
1038            sure to use the right internal names even when joining on field
1039            with the same names in both tables. Also, detect duplicate names
1040            in the joined table correctly.
1041    
1042    2003-07-01  Frank Koormann   <[email protected]>
1043    
1044            * Thuban/UI/renderer.py (ExportRenderer.render_legend):
1045            Reverse List of layers to render in same order as in desktop legend.
1046    
1047    2003-06-30  Jonathan Coles   <[email protected]>
1048    
1049            * Thuban/version.py (make_tuple): Takes a version string
1050            and splits it into a tuple of at most three integers.
1051            Used make_tuple() to make tuple versions of the version
1052            numbers.
1053    
1054            * Thuban/UI/about.py: Add Thuban email addresses.
1055    
1056    2003-06-30  Jonathan Coles   <[email protected]>
1057    
1058            * Thuban/version.py: SQLite/PySQLite version dependencies
1059            were too high.
1060    
1061    2003-06-30  Jonathan Coles   <[email protected]>
1062    
1063            * Thuban/version.py: Update version to 0.8.1
1064            
1065            * MANIFEST.in: Added Projections so that default.proj is
1066            included.
1067    
1068    2003-06-26  Jonathan Coles   <[email protected]>
1069    
1070            New About box with lots more information including library
1071            versions and credits. More/better version checking before
1072            Thuban starts.
1073    
1074            * Thuban/UI/about.py: New. New About box that displays
1075            library version information and credits.
1076    
1077            * Thuban/version.py: Added new 'versions' dictionary which
1078            contains the verions of various libraries which are checked
1079            when the module loads.
1080            (verify_versions): Check all version numbers and returns
1081            a list of errors.
1082    
1083            * Thuban/UI/classifier.py (Classifier.__EnableButtons):
1084            Reset the status of the buttons as the situation warrants,
1085            but in a better more reliable way by not relying on the
1086            current status to determine what needs to change.
1087    
1088            * Thuban/UI/main.py (wxCHECK_VERSION): Removed. Not needed.
1089            (verify_versions): Remove most of the code since it is
1090            now in Thuban.version.verify_versions.o
1091    
1092            * Thuban/UI/mainwindow.py (MainWindow.About): Call new
1093            About box in Thuban.UI.about.
1094    
1095            * extensions/thuban/gdalwarp.cpp (get_gdal_version): New.
1096            Returns the version of gdal library being used as a string.
1097    
1098            * extensions/thuban/wxproj.cpp (check_version, check_version_gtk):
1099            Removed.
1100            (get_proj_version): Return the version of PROJ that the file
1101            was compiled with.
1102            (get_gtk_version): Return th version of GTK that the file
1103            was compiled with.
1104    
1105    2003-06-25  Jonathan Coles   <[email protected]>
1106    
1107            * Thuban/UI/classifier.py (Classifier.EditSymbol): The parent
1108            of the SelectPropertiesDialog should be self so the window
1109            appears on top.
1110            (ClassGroupPropertiesCtrl.DoEdit): The parent
1111            of the SelectPropertiesDialog should be self so the window
1112            appears on top.
1113    
1114            * Thuban/UI/resource.py: Cleaned up how we determine file
1115            extensions.
1116            (GetImageResource): Return an wxImage from our Resources.
1117    
1118    2003-06-24  Jonathan Coles   <[email protected]>
1119    
1120            * Thuban/UI/renderer.py (ExportRenderer.render_legend):
1121            Check that a layer has a classification before trying
1122            to get it. Raster layers don't have classifications.
1123    
1124    2003-06-23  Jonathan Coles   <[email protected]>
1125            
1126            * setup.py: Add Resources/XML to resource list.
1127        
1128    2003-06-23  Jonathan Coles   <[email protected]>
1129    
1130            * setup.cfg: Fix copyright dates
1131        
1132    2003-06-23  Jonathan Coles   <[email protected]>
1133    
1134            * MANIFEST.in: Update with Resources/XML
1135    
1136            * setup.py: Don't include Locale resources yet as we don't
1137            have any and it causes problems building the distribution
1138            for Windows. Update version to 0.8.0.
1139    
1140            * Doc/thuban.dtd: Removed since it is now in Resources/XML.
1141    
1142            * Thuban/UI/mainwindow.py: Add blank line at the end because
1143            file was not being read correctly building the Windows
1144            distribution.
1145    
1146    2003-06-23  Jonathan Coles   <[email protected]>
1147    
1148            * Thuban/UI/mainwindow.py (MainWindow.About): Fix text.
1149    
1150            * Thuban/version.py: Temporarily update longversion for
1151            the 0.8 release so that it doesn't have the cvs revision.
1152    
1153    2003-06-23  Jonathan Coles   <[email protected]>
1154    
1155            * Thuban/UI/common.py (ThubanBeginBusyCursor): Call wxSafeYield
1156            to make sure that we don't create reentrant possibilities with
1157            wxYield.
1158    
1159            * Thuban/UI/view.py (MapCanvas.OnPaint): Call wxBeginBusyCursor()
1160            directly to avoid the wxSafeYield() call which generates an
1161            OnPaint event causing infinite recursion. Don't try to catch
1162            exception anymore. This was for before there were limits on map
1163            scaling.
1164    
1165    2003-06-23  Bernhard Herzog  <[email protected]>
1166    
1167            Bug fix for RT #1961:
1168    
1169            * Thuban/Model/load.py (SessionLoader.start_derivedshapesource):
1170            Register DerivedShapestores with the session
1171    
1172            * Thuban/Model/session.py (Session.Tables): Make sure each table
1173            is only listed once.
1174    
1175            * test/test_load.py (TestJoinedTable.test): Add check_format call.
1176            Update file contents to match the one written out.
1177    
1178    2003-06-20  Bernhard Herzog  <[email protected]>
1179    
1180            * test/xmlsupport.py (SaxEventLister.startElementNS)
1181            (SaxEventLister.endElementNS): Do not include the qname. Python
1182            2.2.1 and 2.2.2 and 2.2.3 differ in this regard. In 2.2.1 qname it
1183            is (presumably incorrectly) None, whereas it's a string with the
1184            element name in the later versions.
1185    
1186            * test/test_xmlsupport.py (TestEventList.test_even_list_simple)
1187            (TestEventList.test_even_list_namespace): Update tests to reflect
1188            the new behaviour
1189            (TestEventList.test_even_list_id_normalization): Fix doc-string
1190    
1191    2003-06-20  Jonathan Coles   <[email protected]>
1192    
1193            * Thuban/Model/layer.py (BaseLayer.HasShapes): New. Overridden
1194            by deriving classes to determine if that layer supports shapes.
1195            (Layer): Override HasShapes and return true.
1196    
1197            * Thuban/UI/classgen.py: Use Thuban[Begin|End]BusyCursor()
1198            instead of a direct call to wx[Begin|End]CusyCursor().
1199            (GenUniquePanel._OnRetrieve): Set busy cursor while retrieving
1200            table data.
1201    
1202            * Thuban/UI/common.py (ThubanBeginBusyCursor, ThubanEndBusyCursor):
1203            New. Wrappers around the wxWindows functions that allow us to
1204            make additional calls such as wxYield which gives the native
1205            system a chance to update the cursor correctly.
1206    
1207            * Thuban/UI/tableview.py: Use Thuban[Begin|End]BusyCursor()
1208            instead of a direct call to wx[Begin|End]CusyCursor().
1209    
1210            * Thuban/UI/view.py: Use Thuban[Begin|End]BusyCursor()
1211            instead of a direct call to wx[Begin|End]CusyCursor().
1212            (MapCanvas.find_shape_at): Check if the current search layer
1213            support shapes, otherwise go on to the next layer.
1214    
1215            * test/test_layer.py: Add tests in each type of layer for
1216            HasClassification() and HasShapes()
1217    
1218  2003-06-20  Jonathan Coles   <[email protected]>  2003-06-20  Jonathan Coles   <[email protected]>
1219    
1220          * Thuban/UI/view.py (MapCanvas.OnPaint): Call wxYield after          * Thuban/UI/view.py (MapCanvas.OnPaint): Call wxYield after

Legend:
Removed from v.1272  
changed lines
  Added in v.1560

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26