/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26