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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26