/[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 1349 by jonathan, Tue Jul 1 16:12:38 2003 UTC revision 1559 by bh, Thu Aug 7 17:32:20 2003 UTC
# Line 1  Line 1 
1    2003-08-07  Bernhard Herzog  <[email protected]>
2    
3            * test/test_baserenderer.py (SimpleShape): Shape class for the
4            tests.
5            (SimpleShapeStore.Shape): Use SimpleShape instead of
6            Thuban.Model.data.Shape to make the tests independed of the coming
7            changes.
8    
9    2003-08-07  Bernhard Herzog  <[email protected]>
10    
11            * test/support.py (SkipTest, ThubanTestResult, ThubanTestRunner)
12            (ThubanTestProgram): New classes that extend the respective
13            classes from unittest. These new version support skipping tests
14            under certain expected conditions. In the Thuban test suite we
15            uses this for tests that require the optional gdal support.
16            (run_tests): Use ThubanTestProgram instead of the unittest.main()
17    
18            * test/runtests.py (main): Use the new ThubanTestRunner instead of
19            the normal one from unittest
20    
21            * test/test_layer.py (TestLayer.test_raster_layer): If this test
22            is not run because gdal support isn't available report this to the
23            runner.
24    
25            * test/test_baserenderer.py
26            (TestBaseRenderer.test_raster_no_projection): Do not run this test
27            if gdal support isn't available and report this to the runner.
28    
29    2003-08-06  Bernhard Herzog  <[email protected]>
30    
31            Rearrange the renderers a bit, partly in preparation for changes
32            required for the postgis merge, partly to make it more testable.
33            Also make the representation of coordinates in Shapes more
34            consistent.
35    
36            * Thuban/UI/renderer.py (MapRenderer): Most of the code/methods in
37            this class is now in BaseRenderer. This class is now practically
38            only a specialization of BaseRenderer for rendering to an actual
39            wx DC.
40            (ScreenRenderer.draw_shape_layer): Use self.low_level_renderer()
41            to get the shapetype specific rendering functions.
42    
43            * Thuban/UI/baserenderer.py: New file with the basic rendering
44            logic. The code in this file is completely independend of wx.
45            (BaseRenderer): Class with the basic rendering logic
46    
47            * test/test_baserenderer.py: New. Test cases for BaseRenderer
48    
49            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
50            error_on_redraw to guard agains endless loops and stack overflows
51            when there's a bug in the rendering code that raises exceptions.
52            (MapCanvas.OnIdle, MapCanvas._do_redraw): Split the actual
53            rendering into a separate method _do_redraw so that error handling
54            is a bit easier. When an exception occurs, set error_on_redraw to
55            true. When it's true on entry to OnIdle do nothing and return
56            immediately.
57    
58            * Thuban/Model/data.py (ShapefileStore.Shape): For consistency, a
59            Shape object will always have the coordinates as a list of list of
60            coordinate pairs (tuples).
61            (Shape.compute_bbox): Adapt to new representation.
62    
63            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
64            (ViewPort.LabelShapeAt): Adapt to new coordinate representation in
65            Shape objects.
66    
67            * test/test_shapefilestore.py
68            (ShapefileStoreTests.assertFloatTuplesEqual)
69            (ShapefileStoreTests.assertPointListEquals): Rename to
70            assertPointListEquals and change purpose to checking equality of
71            the lists returned by Shape.Points().
72            (TestShapefileStoreArc.test_shape)
73            (TestShapefileStorePolygon.test_shape)
74            (TestShapefileStorePoint.test_shape): Use the new
75            assertPointListEquals instead of assertFloatTuplesEqual
76    
77            * test/test_layer.py (TestLayer.assertFloatTuplesEqual)
78            (TestLayer.assertPointListEquals): Rename to assertPointListEquals
79            and change purpose to checking equality of the lists returned by
80            Shape.Points().
81            (TestLayer.test_arc_layer, TestLayer.test_arc_layer)
82            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
83            (TestLayer.test_derived_store): Use the new assertPointListEquals
84            instead of assertFloatTuplesEqual
85    
86            * test/test_derivedshapestore.py
87            (TestDerivedShapeStore.assertFloatTuplesEqual)
88            (TestDerivedShapeStore.assertPointListEquals): Rename to
89            assertPointListEquals and change purpose to checking equality of
90            the lists returned by Shape.Points().
91            (TestDerivedShapeStore.test_shape): Use the new
92            assertPointListEquals instead of assertFloatTuplesEqual
93    
94    2003-08-06  Jan-Oliver Wagner <[email protected]>
95    
96            * Thuban/UI/projdialog.py (UTMPanel._OnPropose): Added test for
97            a bounding box. A dialog is raised in case, no bounding box
98            is found. This fixes bug #2043:
99            https://intevation.de/rt/webrt?serial_num=2043
100    
101    2003-08-05  Bernhard Herzog  <[email protected]>
102    
103            * Thuban/Model/color.py (Color.__repr__): Make the repr of a color
104            object look like a Color instantiation. Formerly it looked like a
105            tuple.
106    
107            * test/test_color.py (TestColor.test_repr)
108            (TestColor.test_equality, TestColor.test_inequality): New. test
109            some more apects of the Color class
110            (TestTransparent.test_repr, TestTransparent.test_hex)
111            (TestTransparent.test_equality): New. Test cases for the
112            Transparent object.
113    
114    2003-08-04  Jan-Oliver Wagner <[email protected]>
115    
116            * Doc/manual/thuban-manual.xml: a number of small improvements.
117            The resulting file is the version submitted for GREAT-ER II.
118    
119    2003-08-01  Bernhard Herzog  <[email protected]>
120    
121            * Thuban/UI/resource.py, Thuban/UI/projdialog.py,
122            Thuban/UI/join.py, Thuban/UI/classgen.py, Thuban/UI/about.py,
123            Thuban/Model/resource.py: Insert cvs keywords and doc-strings.
124    
125            * Thuban/UI/common.py: Insert cvs keywords and doc-strings.
126            (Color2wxColour, wxColour2Color, ThubanBeginBusyCursor)
127            (ThubanEndBusyCursor): Add doc-strings
128    
129    2003-08-01  Bernhard Herzog  <[email protected]>
130    
131            First step towards PostGIS integration. More abstraction by movin
132            more code from the layer to the shapestore. More methods of the
133            layer are now simply delegated to the equivalent method of the
134            shapestore. The SHAPETYPE_* constants are now in data not in
135            layer.
136    
137            * Thuban/Model/data.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
138            (SHAPETYPE_POINT, Shape): Move these constants and classes from
139            layer.py to data.py
140            (ShapefileStore.__init__): More Initialization for the new methods
141            and functionality.
142            (ShapefileStore.ShapeType, ShapefileStore.NumShapes)
143            (ShapefileStore.BoundingBox, ShapefileStore.ShapesInRegion)
144            (ShapefileStore.Shape): New methods that were formerly implemented
145            in the layer.
146            (DerivedShapeStore.Shape, DerivedShapeStore.ShapesInRegion)
147            (DerivedShapeStore.ShapeType, DerivedShapeStore.NumShapes)
148            (DerivedShapeStore.BoundingBox): New. DerivedShapeStore
149            equivalents of the new shape methods. These versions are simply
150            delegated to the original shapstore.
151    
152            * Thuban/Model/layer.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
153            (SHAPETYPE_POINT, Shape): Removed. They're now in data.py
154            (Layer.SetShapeStore): Removed the initializatin of instance
155            variables that were needed for the stuff that's now in
156            ShapefileStore
157            (Layer.BoundingBox, Layer.NumShapes, Layer.ShapeType)
158            (Layer.Shape, Layer.ShapesInRegion): Simply delegate to the
159            shapestore.
160    
161            * Thuban/UI/classifier.py, Thuban/UI/renderer.py,
162            Thuban/UI/viewport.py: Import the SHAPETYPE_* constants from data
163            instead of layer.
164    
165            * test/test_shapefilestore.py: New. Tests for ShapefileStore.
166    
167            * test/test_derivedshapestore.py: New. Tests for DerivedShapeStore.
168    
169            * test/test_layer.py: Import the SHAPETYPE_* constants from data
170            instead of layer.
171            (TestLayer.test_derived_store): Remove the test for the exception
172            when instantiating the DerivedShapeStore with an incompatible
173            table which is now in test_derivedshapestore.py. Add some more
174            tests of the layer methods to determine whether they work for a
175            DerivedShapeStore as well.
176    
177    2003-07-31  Jonathan Coles   <[email protected]>
178    
179            * Doc/manual/thuban-manual.xml: Fix the list of required packages
180            by just listing the name and where they can be found.
181    
182    2003-07-31  Frank Koormann   <[email protected]>
183    
184            * Doc/manual/thuban-manual.xml:
185            Changed the screenshot elements to figure.
186            Changed some variablelist elements to itemizedlist.
187            Added section on GDAL formats.
188    
189    2003-07-31  Jonathan Coles   <[email protected]>
190    
191            * Doc/manual/thuban-manual.xml: Added a few sentences about
192            the Fix Border Color option when generating classes.
193    
194    2003-07-30  Jonathan Coles   <[email protected]>
195    
196            * Thuban/Model/classgen.py: Add docstrings. Rename specific
197            Ramp instances to use lower_case_style.
198    
199            * Thuban/UI/classgen.py: Use renamed Ramp instances.
200            
201            * Thuban/UI/classifier.py: Add docstrings.
202    
203            * Thuban/UI/dock.py: Add docstrings.
204    
205            * test/test_classgen.py: Use renamed Ramp instances.
206    
207    2003-07-30  Bernhard Herzog  <[email protected]>
208    
209            * Thuban/Lib/connector.py (QueueingPublisher): Removed. This class
210            was never used in Thuban.
211    
212    2003-07-30  Bernhard Herzog  <[email protected]>
213    
214            * Thuban/UI/join.py (JoinDialog.__init__): Use the table's Title()
215            method directly instead of going through the transient_table
216            method. This faster because transient_table may force the copy of
217            a DBF file into the transient database and setting a table's title
218            doesnm't affect the title of the associated transient table, so
219            this fixes RT #2042
220    
221            * Thuban/UI/main.py (__version__): Don't import the already
222            removed show_exception_dialog.
223    
224    2003-07-29  Jonathan Coles   <[email protected]>
225    
226            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
227            Put back this method and remove the equivalent function since we
228            are setting the exception hook from within this class (OnInit).
229    
230    2003-07-29  Jonathan Coles   <[email protected]>
231    
232            * Doc/manual/images/5_2_custom_ramp.png,
233            Doc/manual/images/5_2_quantiles.png,
234            Doc/manual/images/5_2_uniform_dist.png,
235            Doc/manual/images/5_2_unique_values.png,
236            Doc/manual/images/8_int_error.png: New screen shots.
237    
238            * Doc/manual/thuban-manual.xml: Fixed typos and wording, clarified
239            some points, and added more screen shots.
240    
241    2003-07-29  Bernhard Herzog  <[email protected]>
242    
243            * Thuban/Model/data.py: Remove the now unused import of warnings
244    
245    2003-07-29  Bernhard Herzog  <[email protected]>
246    
247            * Thuban/Model/data.py (SimpleStore): Removed. This class has been
248            deprecated since before the 0.8 release and isn't used in Thuban
249            itself anymore.
250    
251            * Thuban/Model/transientdb.py: Remove some unnecessary imports
252    
253    2003-07-29  Jonathan Coles   <[email protected]>
254    
255            * Thuban/UI/application.py (ThubanApplication.OnInit): set the
256            python exception hook here so that we are sure to catch any
257            Thuban exception that happen during initialization.
258    
259            * Thuban/UI/main.py (main): Don't set the exception hook here,
260            it will get set in ThubanApplication.OnInit.
261    
262    2003-07-29  Jonathan Coles   <[email protected]>
263                                                                                
264            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
265            Removed and called it show_exception_dialog() so that the exception
266            handler can be set before the class is created.
267                                                                                
268            * Thuban/UI/main.py (main): Install the exception handler before
269            a ThubanApplication is created.
270                                                                                    
271    2003-07-29  Bernhard Herzog  <[email protected]>
272    
273            * po/it.po: New. Italian translation by Maurizio Napolitano
274    
275            * po/ru.po: New. Russian translation by Alex Shevlakov
276    
277    2003-07-29  Frank Koormann   <[email protected]>
278    
279            * Doc/manual/thuban-manual.xml: Extended section on supported
280            projections.
281            
282    2003-07-29  Frank Koormann   <[email protected]>
283    
284            * Doc/manual/thuban-manual.xml: gaspell-checked.
285    
286    2003-07-29  Jonathan Coles   <[email protected]>
287    
288            * Doc/manual/images/3_5_legend.png: Added border to improve look
289            on white background.
290    
291    2003-07-29  Jonathan Coles   <[email protected]>
292    
293            * Doc/manual/thuban-manual.xml: Fixed grammar and typos. Added
294            descriptions for the legend toolbar.
295    
296            * Doc/manual/images/4_2_raster_layer_properties.png: Removed
297            cursor from dialog box.
298    
299    2003-07-28  Jonathan Coles   <[email protected]>
300    
301            * Doc/manual/thuban-manual.xml: More screenshots and more chapters.
302    
303            * Doc/manual/images/2_4_session_tree.png,
304            Doc/manual/images/3_5_legend.png, Doc/manual/images/3_rename_map.png,
305            Doc/manual/images/4_2_layer_properties.png,
306            Doc/manual/images/4_2_raster_layer_properties.png,
307            Doc/manual/images/5_3_genclass.png,
308            Doc/manual/images/5_classification.png,
309            Doc/manual/images/6_projection.png,
310            Doc/manual/images/7_1_table_view.png,
311            Doc/manual/images/7_2_5_join.png: New screenshots.
312    
313    2003-07-24  Jonathan Coles   <[email protected]>
314    
315            * Doc/manual/thuban-manual.xml: Chapter on Projection Management.
316    
317    2003-07-24  Jonathan Coles   <[email protected]>
318    
319            * Doc/manual/thuban-manual.xml: Added EPS images and wrote
320            chapter on Layer Management.
321    
322            * Doc/manual/Makefile: New. Makefile to generate all formats for the
323            manual and images.
324    
325    2003-07-24  Bernhard Herzog  <[email protected]>
326    
327            * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
328            it annoys lintian which warns about these files not being
329            executable. The #1 isn't necessary here since if you absolutely
330            must execute them you can always say "python <filename>".
331    
332            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove
333            superfluous code to set brush and pen for point shapes
334    
335            * Thuban/UI/viewport.py: Remove commented out code that wouldn't
336            belong in viewport anyway
337    
338    2003-07-24  Frank Koormann   <[email protected]>
339    
340            * Doc/manual/thuban-manual.xml: Added section on table management.
341    
342    2003-07-24  Bernhard Herzog  <[email protected]>
343    
344            * test/runtests.py (main): Recognize the long "verbose" option
345            correctly.
346    
347    2003-07-22  Jonathan Coles   <[email protected]>
348    
349            * Doc/manual/thuban-manual.xml: Continue to write first revision
350            of the manual.
351    
352            * Thuban/UI/renderer.py (MapRenderer.render_map): Wrap method
353            with Begin/EndDrawing() calls to ensure we aren't doing to
354            many updates to the dc during rendering.
355            (ScreenRenderer.draw_shape_layer): self.draw_point_shape takes
356            a pen and brush argument so they need to be passed to the function.
357    
358            * Thuban/UI/viewport.py (ViewPort.calc_min_max_scales): New.
359            Calculates the minimum and maximum scale values. Factored out
360            of set_view_transform so that it could be used to zoom all the
361            way into a single point.
362            (ViewPort.set_view_transform): Call calc_min_max_scales().
363            (ViewPort.FitSelectedToWindow): Zoom to the maximum scale
364            if only a single point is selected.
365    
366            * Doc/manual/images/1_2_legend_close.png,
367            Doc/manual/images/1_2_legend_dock.png,
368            Doc/manual/images/1_2_mainwindow.png,
369            Doc/manual/images/1_2_mainwindow.ps,
370            Doc/manual/images/1_2_mainwindow.sk,
371            Doc/manual/images/3_2_fullextent.png,
372            Doc/manual/images/3_2_fulllayerextent.png,
373            Doc/manual/images/3_2_fullshapeextent.png,
374            Doc/manual/images/3_2_pan.png,
375            Doc/manual/images/3_2_zoomin.png,
376            Doc/manual/images/3_2_zoomout.png,
377            Doc/manual/images/3_3_identify.png,
378            Doc/manual/images/3_3_label.png,
379            Doc/manual/images/3_5_invisible.png,
380            Doc/manual/images/3_5_movedown.png,
381            Doc/manual/images/3_5_moveup.png,
382            Doc/manual/images/3_5_props.png,
383            Doc/manual/images/3_5_tobottom.png,
384            Doc/manual/images/3_5_totop.png,
385            Doc/manual/images/3_5_visible.png: New. Images for the documentation.
386    
387    2003-07-18  Bernhard Herzog  <[email protected]>
388    
389            * Thuban/UI/messages.py (MAP_REPLACED): New message.
390    
391            * Thuban/UI/viewport.py (ViewPort.SetMap): Issue MAP_REPLACED
392            after the new map has been assigned
393    
394            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages):
395            Delegate MAP_REPLACED to the canvas too
396            (MainWindow.prepare_new_session): Removed. Thanks to the new
397            MAP_REPLACED message it's no longer needed
398            (MainWindow.OpenSession, MainWindow.NewSession):
399            prepare_new_session has been removed.
400    
401            * Thuban/UI/classifier.py (Classifier.__init__): Subscribe to
402            MAP_REPLACED so that we can close the dialog if a new map is set.
403            (Classifier.unsubscribe_messages): Unsubscribe from MAP_REPLACED
404            (Classifier.map_replaced): Handle MAP_REPLACED by closing the
405            dialog
406    
407            * test/test_viewport.py (SimpleViewPortTest)
408            (SimpleViewPortTest.test_default_size): Add doc-strings
409            (ViewPortTest.setUp): Bind map to self.map so we can use it in
410            tests. Subscribe to MAP_REPLACED messages too.
411            (ViewPortTest.tearDown): No need to explicitly unsubscribe
412            (ViewPortTest.test_set_map): New test for the SetMap method.
413    
414    2003-07-18  Bernhard Herzog  <[email protected]>
415    
416            * test/test_viewport.py (SimpleViewPortTest.test_default_size):
417            Move this test from ViewPortTest.setUp to this new separate test
418            case. setUp is not the place for the actual tests.
419            (ViewPortTest.test_inital_settings, ViewPortTest.setUp): Move some
420            more of the test from setUp to the new test test_inital_settings.
421            (ViewPortTest.test_win_to_proj, ViewPortTest.test_proj_to_win)
422            (ViewPortTest.test_proj_conv): Split test_proj_conv into
423            test_win_to_proj and test_proj_to_win and make the tests easier to
424            understand
425            (ViewPortTest.testFitRectToWindow, ViewPortTest.testZoomFactor)
426            (ViewPortTest.testZoomOutToRect, ViewPortTest.testTranslate)
427            (ViewPortTest.test_unprojected_rect_around_point)
428            (ViewPortTest.test_find_shape_at, ViewPortTest.testTools):
429            Reformat to increase readability.
430    
431    2003-07-18  Bernhard Herzog  <[email protected]>
432    
433            * Thuban/UI/view.py (MapCanvas.OnLeftDown): Capture the mouse.
434    
435    2003-07-18  Bernhard Herzog  <[email protected]>
436    
437            * test/runtests.py: The test suite can now be run without an X
438            connection. To make sure this remains true, remove the DISPLAY
439            environment variable so that an error occurs if the wxGTK is
440            imported accidentally
441    
442    2003-07-18  Bernhard Herzog  <[email protected]>
443    
444            * Thuban/UI/viewport.py: Remove unused imports
445    
446            * Thuban/UI/view.py: Remove unused imports
447    
448    2003-07-18  Bernhard Herzog  <[email protected]>
449    
450            * test/test_export.py Remove unused imports. The OutputTransform
451            function is now in viewport.py and is called output_transform
452            (TestScalebar.test_output_transform)
453            (TestScalebar.test_OutputTransform): Renamed to
454            test_output_transform and updated to use output_transform instead
455            of OutputTransform
456    
457            * Thuban/UI/view.py (OutputTransform): Moved to viewport.py and
458            renamed.
459            (MapCanvas.Export, MapPrintout.draw_on_dc): OutputTransform was
460            renamed to output_transform
461    
462            * Thuban/UI/viewport.py (OutputTransform, output_transform):
463            Rename to output_transform
464    
465    2003-07-18  Bernhard Herzog  <[email protected]>
466    
467            * Thuban/Model/layer.py (Layer.__init__): Rename
468            classificationField to classificatin_column and init it here so
469            that it can be used in SetClassificationColumn
470            (Layer.GetClassificationColumn, Layer.GetClassificationField):
471            Rename to GetClassificationColumn.
472            (Layer.SetClassificationColumn, Layer.SetClassificationField):
473            Rename to SetClassificationColumn and issue a LAYER_CHANGED
474            message if the column changes.
475            (Layer._classification_changed, Layer.ClassChanged): Rename to
476            _classification_changed. Update the callers.
477            (Layer.SetShapeStore): Further field->column renames.
478    
479            * Thuban/Model/load.py (SessionLoader.start_classification)
480            (SessionLoader.start_clpoint): Updates because of
481            field->column method name changes in the Layer class
482    
483            * Thuban/Model/save.py (SessionSaver.write_classification): Updates
484            because of field->column method name changes in the Layer class
485    
486            * Thuban/UI/classifier.py (Classifier.__init__)
487            (Classifier._OnTry, Classifier._OnRevert): Updates because of
488            field->column method name changes in the Layer class
489    
490            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Updates
491            because of field->column method name changes in the Layer class
492    
493            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Updates because
494            of field->column method name changes in the Layer class
495    
496            * test/test_save.py (SaveSessionTest.testClassifiedLayer)
497            (SaveSessionTest.testClassifiedLayer): Update because of
498            field->column method name changes in the Layer class
499    
500            * test/test_layer.py (SetShapeStoreTests.setUp)
501            (SetShapeStoreTests.test_sanity): Update because of field->column
502            method name changes in the Layer class
503            (TestLayerModification.setUp): Subscribe to LAYER_CHANGED as well
504            (TestLayerModification.test_sanity)
505            (TestLayerModification.test_initial_settings): remove unsued code
506            and rename to test_sanity.
507            (TestLayerModification.test_set_classification): New test for
508            SetClassification and SetClassificationField.
509    
510    2003-07-18  Bernhard Herzog  <[email protected]>
511    
512            * test/test_classgen.py (TestFixedRamp.test): Extend test to check
513            the non-fixed values as well. The old test would have accepted a
514            fixed ramp that only returnes the fixed properties
515    
516    2003-07-17  Jonathan Coles   <[email protected]>
517    
518            * Doc/manual/mainwindow.png, Doc/manual/mainwindow.xcf: Screen
519            shots for the manual. The XCF file is the source image and
520            has additional layers to support changes.
521    
522            * Doc/manual/thuban-manual.xml: Wrote an initial Introduction.
523    
524            * Thuban/UI/classifier.py (Classifier.__BuildClassification):
525            Return both the new class and the field name.
526    
527            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Don't
528            fit the map to the window as this changes any zoom level that
529            the user may have set.
530    
531    2003-07-16  Jonathan Coles   <[email protected]>
532    
533            * Thuban/Model/classgen.py (generate_singletons,
534            generate_uniform_distribution, generate_quantiles): Remove
535            fixes parameter, but maintain the same functionality by having
536            the calling function pass a FixedRamp object for the ramp.
537            (FixedRamp): New. Adapts a ramp to have fixed property values.
538    
539            * Thuban/Model/classification.py: Use new CLASS_CHANGED message.
540            (Classification): Inherit from Publisher.
541            (Classification.__init__): Remove the layer parameter.
542            Classifications no longer need to have a parent layer.
543            (Classification.GetField, Classification.GetFieldType,
544            Classification.SetFieldInfo): Removed. The field name is stored
545            in the layer, and the type can be retreived by calling
546            Layer.GetFieldType().
547            (Classification._set_layer, Classification.GetLayer): Removed.
548            Classifications no longer have a parent layer.
549    
550            * Thuban/Model/layer.py (Layer.Destroy): Unsubscribe from the
551            classification.
552            (Layer.SetShapeStore): Reset the classification first while
553            we still have the old shape store to work with.
554            (Layer.GetClassificationField, Layer.SetClassificationField):
555            New. Method for getting/setting the field to classify on.
556            (Layer.SetClassification): Simplified now that the layer
557            simply has to hold a reference to the classification and not
558            tell the classification who owns it.
559            Fixes RTbug #2023.
560    
561            * Thuban/Model/load.py (SessionLoader.start_classification):
562            Set the field name on the layer, not the classification.
563    
564            * Thuban/Model/messages.py: Add CLASS_CHANGED for when a
565            classification is modified.
566    
567            * Thuban/Model/save.py (SessionSaver.write_classification):
568            Get the field name and type from the layer.
569    
570            * Thuban/Model/table.py (table_to_dbf, table_to_csv): Renamed
571            parameter records to rows and add docstring. Fixes RTbug #1997.
572    
573            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Use a fixed
574            ramp when we need to fix certain values of a ramp rather than
575            using the old fixes parameter. Fixes RTbug #2024.
576    
577            * Thuban/UI/classifier.py (ClassGrid.CreateTable): Add fieldType
578            parameter.
579            (ClassTable.Reset): Add fieldType parameter and use it, rather
580            than asking the classification.
581            (Classifier.__init__): Remember the original class's field
582            and ask the layer for the field type, rather than the classification.
583            (Classifier.__SetGridTable): Retrieve the field and field type
584            for the table because they are not in the classification.
585            (Classifier._OnTry, Classifier._OnRevert): Set the classification
586            field on the layer in addition to the classification itself.
587    
588            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Get the
589            classification field from layer.
590    
591            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Get the
592            classification field from layer. Split up tests and remove
593            *-imports. Fixes RTbug #1992.
594    
595            * test/test_classgen.py (TestFixedRamp): Test for the FixedRamp class.
596    
597            * test/test_classification.py
598            (TestClassification.test_classification): Remove tests for methods
599            that no longer exist.
600    
601            * test/test_layer.py (SetShapeStoreTests.setUp): Classification
602            __init__ no longer has a field parameter, use SetClassificationField.
603            (SetShapeStoreTests.test_sanity): Use layer object to get class
604            field info.
605    
606            * test/test_save.py (SaveSessionTest.testClassifiedLayer): Use
607            SetClassificationField on layer to set class field info.
608    
609            * test/test_viewport.py: Renamed from test/test_view.py.
610    
611    2003-07-16  Jan-Oliver Wagner <[email protected]>
612    
613            * Doc/manual/thuban-manual.xml: Added authors and an initial
614            coarse structure.
615    
616    2003-07-15  Bernhard Herzog  <[email protected]>
617    
618            * test/support.py (FloatComparisonMixin): This is a mix-in class
619            and therefore should not be derived from any other class.
620    
621            * test/test_range.py (RangeTest): FloatComparisonMixin is a
622            mix-in, so derive from TestCase as well.
623    
624    2003-07-15  Bernhard Herzog  <[email protected]>
625    
626            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Rework the
627            draw_func handling a bit to remove one layer of indirection. This
628            makes the renderer about 10% faster in the non-classifying case
629            and the code a bit cleaner
630            (MapRenderer.draw_point_shape): Add the pen and brush parameters
631            and set them in the dc. Now the draw_point_shape method and
632            wxproj's draw_polygon_shape function have basically the same
633            signature so that both can be directly used as draw_func
634    
635    2003-07-15  Bernhard Herzog  <[email protected]>
636    
637            * Thuban/Model/save.py (SessionSaver.write_classification): Encode
638            string values (in addition to the labels) as UTF 8
639    
640            * Thuban/Model/load.py (SessionLoader.start_clpoint): Decode the
641            values if the field type is string
642    
643            * test/test_save.py (SaveSessionTest.testClassifiedLayer): Test
644            saving a session with non-ascii string classification values.
645    
646            * test/test_load.py (TestClassification.file_contents)
647            (TestClassification.test): Check for non-ascii values in string
648            classifications
649    
650    2003-07-14  Jonathan Coles   <[email protected]>
651    
652            * test/test_view.py: New. Tests for ViewPort.
653    
654    2003-07-14  Frank Koormann   <[email protected]>
655    
656            * Thuban/Model/load.py (SessionLoader.start_map): Encode map
657            title to latin1.  Fixes https://intevation.de/rt/webrt?serial_num=2013
658    
659            * test/test_load_0_8.py (TestUnicodeStrings): New, test load of
660            unicode strings from session file: session title, map title and
661            projection name.
662            
663    2003-07-10  Jonathan Coles   <[email protected]>
664    
665            * Thuban/UI/viewport.py (Tool.MouseUp): Should have called
666            drag_stop, not drag_move when the mouse is released.
667    
668    2003-07-10  Jonathan Coles   <[email protected]>
669    
670            The most important part of this is the seperation of view.py into
671            two pieces. viewport.py now has a class called ViewPort which
672            contains all the non-wx parts of view.py and can therefore be
673            tested. view.py contains only the wx-specific parts and is fairly
674            simple.
675    
676            * Thuban/UI/view.py: Stripped out all non-wx functionality. Fixes
677            RTTbug #1992.
678            * Thuban/UI/viewport.py: New. Contains non-wx view functionality.
679            RTTbug #1992.
680    
681            * Thuban/Model/classgen.py (generate_singletons,
682            generate_uniform_distribution, generate_quantiles):
683            Added 'fixes' parameter so that property attributes can
684            be held constant over the generated classification groups.
685            (CustomRamp.GetProperties): Remove unused variables.
686    
687            * Thuban/Model/map.py (Map.SetProjection): Send the old
688            projection as an argument to listeners of the MAP_PROJECTION_CHANGED
689            event.
690    
691            * Thuban/Model/table.py (table_to_dbf, table_to_csv): Added 'records'
692            parameter which is a list of records that restricts which
693            records are saved. Fixes RTbug #1997.
694    
695            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
696            Port exception dialog from GREAT-ER. Fixes RTbug #1993.
697    
698            * Thuban/UI/classgen.py (ClassGenDialog.__init__): Add controls
699            to allow the user to fix line color/width on generated groups.
700            (ClassGenDialog.OnOK): Use new 'fixes' parameter of the generate_*
701            functions to optionally fix group properties.
702    
703            * Thuban/UI/main.py (main): Set exception hook to the
704            ShowExceptionDialog. Fixes RTbug #1993.
705    
706            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): Raise
707            the table window when it is selectd to be shown.
708    
709            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Add an
710            Export Selection button and move the export buttons underneath
711            the table.
712            (QueryTableFrame.UpdateStatusText): Added event argument so
713            that it can respond to grid selection events. The status text
714            is now updated even when the table is not associated with a
715            layer as was previously assumed.
716            (QueryTableFrame.OnGridSelectRange, OnGridSelectCell): Removed.
717            UpdateStatusText responds to these events.
718            (QueryTableFrame.OnSaveAs): Renamed to doExport.
719            (QueryTableFrame.doExport): Helper function that saves the
720            entire table, or selected rows, to a file.
721            (QueryTableFrame.OnExport, QueryTableFrame.OnExportSel): New.
722            Respond to export button events and call doExport.
723    
724            * extensions/thuban/gdalwarp.cpp (ProjectRasterFile): Make sure
725            the function doesn't return NULL without first setting a Python
726            Error.
727    
728            * test/runtests.py (main): Only print "Unknown option" for
729            unsupported options.
730    
731            * test/support.py (FloatComparisonMixin.assertFloatEqual): Take
732            optional epsilon argument to specify floating point accuracy.
733            (FloatComparisonMixin.assertFloatSeqEqual): Call assertFloatEqual
734            for each item test.
735    
736            * test/test_csv_table.py (TestCSVTable.test_table_to_cvs): Add
737            tests for saving selected records.
738    
739            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): Add
740            tests for saving selected records.
741    
742            * test/test_map.py (TestMapWithContents.test_set_projection):
743            MAP_PROJECTION_CHANGED events send the old projection.
744    
745            * test/test_session.py
746            (TestSessionWithContent.test_forward_map_projection):
747            MAP_PROJECTION_CHANGED events send the old projection.
748    
749            * test/test_table.py (TableTest): Update tests to use non-deprecated
750            functions.
751    
752    2003-07-08  Bernhard Herzog  <[email protected]>
753    
754            * Thuban/Model/transientdb.py (TransientTableBase.Width): The type
755            constants in the column objects are the standard ones defined in
756            the table module.
757    
758            * test/test_transientdb.py
759            (TestTransientTable.test_transienttable_to_dbf): New. Test whether
760            exporting transient tables as DBF works. This should catch the bug
761            just fixed in TransientTableBase.Width.
762    
763    2003-07-08  Bernhard Herzog  <[email protected]>
764    
765            * Thuban/Model/classgen.py (CustomRamp.GetProperties): Compute the
766            interpolated colors correctly.
767    
768            * test/test_classgen.py (TestCustomRamp.test_color_interpolation):
769            New. Test case for the fix in classgen.py
770    
771    2003-07-08  Bernhard Herzog  <[email protected]>
772    
773            * test/runtests.py (main): Make the default output less verbose
774            and add a verbosity option (-v) to get the old output
775    
776    2003-07-08  Bernhard Herzog  <[email protected]>
777    
778            * Resources/XML/thuban-0.9.dtd: New. This will become the DTD for
779            0.9.
780    
781            * Thuban/Model/transientdb.py (TransientJoinedTable.JoinType):
782            New. Return the join type
783    
784            * Thuban/Model/save.py (SessionSaver.write_session): Use new 0.9
785            DTD
786            (SessionSaver.write_data_containers): Save the join type for
787            joined tables
788    
789            * Thuban/Model/load.py (SessionLoader.__init__): Add the new 0.9
790            namespace
791            (SessionLoader.start_jointable): Handle the jointype attribute
792    
793            * test/test_load_0_8.py: New. Effectively a copy of test_load.py
794            as of Thuban 0.8. These are now tests to determine whether Thuban
795            can still read files generated by Thuban 0.8
796    
797            * test/test_load.py (LoadSessionTest.dtd)
798            (TestSingleLayer.file_contents)
799            (TestLayerVisibility.file_contents, TestLabels.file_contents)
800            (TestLayerProjection.file_contents)
801            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
802            (TestJoinedTable.file_contents)
803            (TestLoadError.file_contents): Update for new DTD
804            (TestJoinedTable.file_contents, TestJoinedTable.setUp): Add test
805            for new join type attribute
806    
807            * test/test_save.py (SaveSessionTest.dtd)
808            (SaveSessionTest.testEmptySession)
809            (SaveSessionTest.testSingleLayer)
810            (SaveSessionTest.testLayerProjection)
811            (SaveSessionTest.testRasterLayer)
812            (SaveSessionTest.testClassifiedLayer)
813            (SaveSessionTest.test_dbf_table)
814            (SaveSessionTest.test_joined_table): Update for new DTD
815            (SaveSessionTest.test_joined_table): Add test for new join type
816            attribute
817    
818    2003-07-04  Bernhard Herzog  <[email protected]>
819    
820            * Thuban/Model/table.py (_find_dbf_column_names): New. Helper
821            function for table_to_dbf
822            (table_to_dbf): Deal with names longer than the 10 character limit
823    
824            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): Add
825            doc-string
826            (TestTableToDBF.test_table_to_dbf_long_col_names): New test for
827            long column names
828    
829    2003-07-03  Bernhard Herzog  <[email protected]>
830    
831            * Doc/manual/thuban-manual.xml: Fix the CVS Revision Tag syntax
832    
833    2003-07-03  Bernhard Herzog  <[email protected]>
834    
835            * Doc/manual/thuban-manual.xml, Doc/manual/README: New. Skeleton
836            for the Thuban manual and README with some basic information about
837            the manual
838    
839    2003-07-03  Bernhard Herzog  <[email protected]>
840    
841            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
842            Update doc-string
843            (TransientJoinedTable.create): Do not modify the column objects of
844            the input tables in place and copy all columns of the input tables
845            into the joined table after all.
846    
847            * test/test_transientdb.py
848            (TestTransientTable.test_transient_joined_table_same_column_name):
849            Update to reflect the new behavior
850            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
851            Update to reflect the new behavior
852            (TestTransientTable.test_transient_joined_table_name_collisions_dont_modify_in_place):
853            New test case for a bug which modified the column objects in place
854    
855    2003-07-02  Jonathan Coles   <[email protected]>
856    
857            * Thuban/Model/classgen.py (generate_singletons,
858            generate_uniform_distribution, generate_quantiles,
859            GenQuantiles0): Make sure maxValue isn't less than
860            one, otherwise we could divide by zero.
861    
862            * test/test_classgen.py (ClassGenTest.doClassRangeTest,
863            ClassGenTest.doClassSingleTest): Call doBoundsTest to
864            check the end classification groups against the
865            proper property values.
866            (ClassGenTest.doBoundsTest): New. Checks the first and
867            last classification groups to make sure their properties
868            are the correct upper and lower bounds for a color ramp.
869    
870    2003-07-02  Jonathan Coles   <[email protected]>
871    
872            * Thuban/Model/classgen.py (generate_singletons,
873            generate_uniform_distribution, generate_quantiles,
874            GenQuantiles0): The denominator was one to high when
875            calculating the index for the ramp causing the index
876            to never to reach one.
877    
878    2003-07-02  Jonathan Coles   <[email protected]>
879    
880            Changed the singature of ClassGroupRange.__init__ and
881            ClassGroupRange.SetRange() so that the min/max values are
882            passed as a tuple. This makes a better calling scheme for
883            when a Range object is passed instead.
884    
885            * Thuban/Model/classgen.py: Fixed parameters to
886            ClassGroupRange constructor.
887    
888            * Thuban/Model/classification.py (ClassGroupRange.__init__):
889            Consolidate the min/max parameters into a single _range which
890            can either be a tuple or a Range object.
891            (ClassGroupRange.SetRange): Consolidate the min/max parameters
892            into a single _range which can either be a tuple or a Range object.
893    
894            * Thuban/Model/load.py (SessionLoader.start_clrange): Fix
895            call to ClassGroupRange constructor to use a tuple.
896    
897            * Thuban/Model/layer.py (Layer.SetClassification): Switch
898            the classification instance variable to the new class
899            before calling _set_layer otherwise subscribers to a
900            LAYER_CHANGED event will not see any difference.
901    
902            * test/test_classification.py: Fix tests of ClassGroupRange
903            so that they use the new signature.
904    
905            * test/test_load.py: Fix use of ClassGroupRange so that it
906            uses the new signature.
907    
908            * test/test_load_0_2.py: Fix use of ClassGroupRange so that it
909            uses the new signature.
910    
911            * test/test_save.py: Fix use of ClassGroupRange so that it
912            uses the new signature.
913    
914    
915  2003-07-01  Jonathan Coles   <[email protected]>  2003-07-01  Jonathan Coles   <[email protected]>
916    
917          * Thuban/Model/classgen.py: Fixes RTbug #1972, 1971.          * Thuban/Model/classgen.py: Fixes RTbug #1972, 1971.

Legend:
Removed from v.1349  
changed lines
  Added in v.1559

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26