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

Legend:
Removed from v.1297  
changed lines
  Added in v.1594

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26