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

Legend:
Removed from v.1312  
changed lines
  Added in v.1602

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26