/[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 1239 by jonathan, Wed Jun 18 15:41:11 2003 UTC revision 1479 by frank, Thu Jul 24 17:01:43 2003 UTC
# Line 1  Line 1 
1    2003-07-24  Frank Koormann   <[email protected]>
2    
3            * Doc/manual/thuban-manual.xml: Added section on table management.
4    
5    2003-07-24  Bernhard Herzog  <[email protected]>
6    
7            * test/runtests.py (main): Recognize the long "verbose" option
8            correctly.
9    
10    2003-07-22  Jonathan Coles   <[email protected]>
11    
12            * Doc/manual/thuban-manual.xml: Continue to write first revision
13            of the manual.
14    
15            * Thuban/UI/renderer.py (MapRenderer.render_map): Wrap method
16            with Begin/EndDrawing() calls to ensure we aren't doing to
17            many updates to the dc during rendering.
18            (ScreenRenderer.draw_shape_layer): self.draw_point_shape takes
19            a pen and brush argument so they need to be passed to the function.
20    
21            * Thuban/UI/viewport.py (ViewPort.calc_min_max_scales): New.
22            Calculates the minimum and maximum scale values. Factored out
23            of set_view_transform so that it could be used to zoom all the
24            way into a single point.
25            (ViewPort.set_view_transform): Call calc_min_max_scales().
26            (ViewPort.FitSelectedToWindow): Zoom to the maximum scale
27            if only a single point is selected.
28    
29            * Doc/manual/images/1_2_legend_close.png,
30            Doc/manual/images/1_2_legend_dock.png,
31            Doc/manual/images/1_2_mainwindow.png,
32            Doc/manual/images/1_2_mainwindow.ps,
33            Doc/manual/images/1_2_mainwindow.sk,
34            Doc/manual/images/3_2_fullextent.png,
35            Doc/manual/images/3_2_fulllayerextent.png,
36            Doc/manual/images/3_2_fullshapeextent.png,
37            Doc/manual/images/3_2_pan.png,
38            Doc/manual/images/3_2_zoomin.png,
39            Doc/manual/images/3_2_zoomout.png,
40            Doc/manual/images/3_3_identify.png,
41            Doc/manual/images/3_3_label.png,
42            Doc/manual/images/3_5_invisible.png,
43            Doc/manual/images/3_5_movedown.png,
44            Doc/manual/images/3_5_moveup.png,
45            Doc/manual/images/3_5_props.png,
46            Doc/manual/images/3_5_tobottom.png,
47            Doc/manual/images/3_5_totop.png,
48            Doc/manual/images/3_5_visible.png: New. Images for the documentation.
49    
50    2003-07-18  Bernhard Herzog  <[email protected]>
51    
52            * Thuban/UI/messages.py (MAP_REPLACED): New message.
53    
54            * Thuban/UI/viewport.py (ViewPort.SetMap): Issue MAP_REPLACED
55            after the new map has been assigned
56    
57            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages):
58            Delegate MAP_REPLACED to the canvas too
59            (MainWindow.prepare_new_session): Removed. Thanks to the new
60            MAP_REPLACED message it's no longer needed
61            (MainWindow.OpenSession, MainWindow.NewSession):
62            prepare_new_session has been removed.
63    
64            * Thuban/UI/classifier.py (Classifier.__init__): Subscribe to
65            MAP_REPLACED so that we can close the dialog if a new map is set.
66            (Classifier.unsubscribe_messages): Unsubscribe from MAP_REPLACED
67            (Classifier.map_replaced): Handle MAP_REPLACED by closing the
68            dialog
69    
70            * test/test_viewport.py (SimpleViewPortTest)
71            (SimpleViewPortTest.test_default_size): Add doc-strings
72            (ViewPortTest.setUp): Bind map to self.map so we can use it in
73            tests. Subscribe to MAP_REPLACED messages too.
74            (ViewPortTest.tearDown): No need to explicitly unsubscribe
75            (ViewPortTest.test_set_map): New test for the SetMap method.
76    
77    2003-07-18  Bernhard Herzog  <[email protected]>
78    
79            * test/test_viewport.py (SimpleViewPortTest.test_default_size):
80            Move this test from ViewPortTest.setUp to this new separate test
81            case. setUp is not the place for the actual tests.
82            (ViewPortTest.test_inital_settings, ViewPortTest.setUp): Move some
83            more of the test from setUp to the new test test_inital_settings.
84            (ViewPortTest.test_win_to_proj, ViewPortTest.test_proj_to_win)
85            (ViewPortTest.test_proj_conv): Split test_proj_conv into
86            test_win_to_proj and test_proj_to_win and make the tests easier to
87            understand
88            (ViewPortTest.testFitRectToWindow, ViewPortTest.testZoomFactor)
89            (ViewPortTest.testZoomOutToRect, ViewPortTest.testTranslate)
90            (ViewPortTest.test_unprojected_rect_around_point)
91            (ViewPortTest.test_find_shape_at, ViewPortTest.testTools):
92            Reformat to increase readability.
93    
94    2003-07-18  Bernhard Herzog  <[email protected]>
95    
96            * Thuban/UI/view.py (MapCanvas.OnLeftDown): Capture the mouse.
97    
98    2003-07-18  Bernhard Herzog  <[email protected]>
99    
100            * test/runtests.py: The test suite can now be run without an X
101            connection. To make sure this remains true, remove the DISPLAY
102            environment variable so that an error occurs if the wxGTK is
103            imported accidentally
104    
105    2003-07-18  Bernhard Herzog  <[email protected]>
106    
107            * Thuban/UI/viewport.py: Remove unused imports
108    
109            * Thuban/UI/view.py: Remove unused imports
110    
111    2003-07-18  Bernhard Herzog  <[email protected]>
112    
113            * test/test_export.py Remove unused imports. The OutputTransform
114            function is now in viewport.py and is called output_transform
115            (TestScalebar.test_output_transform)
116            (TestScalebar.test_OutputTransform): Renamed to
117            test_output_transform and updated to use output_transform instead
118            of OutputTransform
119    
120            * Thuban/UI/view.py (OutputTransform): Moved to viewport.py and
121            renamed.
122            (MapCanvas.Export, MapPrintout.draw_on_dc): OutputTransform was
123            renamed to output_transform
124    
125            * Thuban/UI/viewport.py (OutputTransform, output_transform):
126            Rename to output_transform
127    
128    2003-07-18  Bernhard Herzog  <[email protected]>
129    
130            * Thuban/Model/layer.py (Layer.__init__): Rename
131            classificationField to classificatin_column and init it here so
132            that it can be used in SetClassificationColumn
133            (Layer.GetClassificationColumn, Layer.GetClassificationField):
134            Rename to GetClassificationColumn.
135            (Layer.SetClassificationColumn, Layer.SetClassificationField):
136            Rename to SetClassificationColumn and issue a LAYER_CHANGED
137            message if the column changes.
138            (Layer._classification_changed, Layer.ClassChanged): Rename to
139            _classification_changed. Update the callers.
140            (Layer.SetShapeStore): Further field->column renames.
141    
142            * Thuban/Model/load.py (SessionLoader.start_classification)
143            (SessionLoader.start_clpoint): Updates because of
144            field->column method name changes in the Layer class
145    
146            * Thuban/Model/save.py (SessionSaver.write_classification): Updates
147            because of field->column method name changes in the Layer class
148    
149            * Thuban/UI/classifier.py (Classifier.__init__)
150            (Classifier._OnTry, Classifier._OnRevert): Updates because of
151            field->column method name changes in the Layer class
152    
153            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Updates
154            because of field->column method name changes in the Layer class
155    
156            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Updates because
157            of field->column method name changes in the Layer class
158    
159            * test/test_save.py (SaveSessionTest.testClassifiedLayer)
160            (SaveSessionTest.testClassifiedLayer): Update because of
161            field->column method name changes in the Layer class
162    
163            * test/test_layer.py (SetShapeStoreTests.setUp)
164            (SetShapeStoreTests.test_sanity): Update because of field->column
165            method name changes in the Layer class
166            (TestLayerModification.setUp): Subscribe to LAYER_CHANGED as well
167            (TestLayerModification.test_sanity)
168            (TestLayerModification.test_initial_settings): remove unsued code
169            and rename to test_sanity.
170            (TestLayerModification.test_set_classification): New test for
171            SetClassification and SetClassificationField.
172    
173    2003-07-18  Bernhard Herzog  <[email protected]>
174    
175            * test/test_classgen.py (TestFixedRamp.test): Extend test to check
176            the non-fixed values as well. The old test would have accepted a
177            fixed ramp that only returnes the fixed properties
178    
179    2003-07-17  Jonathan Coles   <[email protected]>
180    
181            * Doc/manual/mainwindow.png, Doc/manual/mainwindow.xcf: Screen
182            shots for the manual. The XCF file is the source image and
183            has additional layers to support changes.
184    
185            * Doc/manual/thuban-manual.xml: Wrote an initial Introduction.
186    
187            * Thuban/UI/classifier.py (Classifier.__BuildClassification):
188            Return both the new class and the field name.
189    
190            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Don't
191            fit the map to the window as this changes any zoom level that
192            the user may have set.
193    
194    2003-07-16  Jonathan Coles   <[email protected]>
195    
196            * Thuban/Model/classgen.py (generate_singletons,
197            generate_uniform_distribution, generate_quantiles): Remove
198            fixes parameter, but maintain the same functionality by having
199            the calling function pass a FixedRamp object for the ramp.
200            (FixedRamp): New. Adapts a ramp to have fixed property values.
201    
202            * Thuban/Model/classification.py: Use new CLASS_CHANGED message.
203            (Classification): Inherit from Publisher.
204            (Classification.__init__): Remove the layer parameter.
205            Classifications no longer need to have a parent layer.
206            (Classification.GetField, Classification.GetFieldType,
207            Classification.SetFieldInfo): Removed. The field name is stored
208            in the layer, and the type can be retreived by calling
209            Layer.GetFieldType().
210            (Classification._set_layer, Classification.GetLayer): Removed.
211            Classifications no longer have a parent layer.
212    
213            * Thuban/Model/layer.py (Layer.Destroy): Unsubscribe from the
214            classification.
215            (Layer.SetShapeStore): Reset the classification first while
216            we still have the old shape store to work with.
217            (Layer.GetClassificationField, Layer.SetClassificationField):
218            New. Method for getting/setting the field to classify on.
219            (Layer.SetClassification): Simplified now that the layer
220            simply has to hold a reference to the classification and not
221            tell the classification who owns it.
222            Fixes RTbug #2023.
223    
224            * Thuban/Model/load.py (SessionLoader.start_classification):
225            Set the field name on the layer, not the classification.
226    
227            * Thuban/Model/messages.py: Add CLASS_CHANGED for when a
228            classification is modified.
229    
230            * Thuban/Model/save.py (SessionSaver.write_classification):
231            Get the field name and type from the layer.
232    
233            * Thuban/Model/table.py (table_to_dbf, table_to_csv): Renamed
234            parameter records to rows and add docstring. Fixes RTbug #1997.
235    
236            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Use a fixed
237            ramp when we need to fix certain values of a ramp rather than
238            using the old fixes parameter. Fixes RTbug #2024.
239    
240            * Thuban/UI/classifier.py (ClassGrid.CreateTable): Add fieldType
241            parameter.
242            (ClassTable.Reset): Add fieldType parameter and use it, rather
243            than asking the classification.
244            (Classifier.__init__): Remember the original class's field
245            and ask the layer for the field type, rather than the classification.
246            (Classifier.__SetGridTable): Retrieve the field and field type
247            for the table because they are not in the classification.
248            (Classifier._OnTry, Classifier._OnRevert): Set the classification
249            field on the layer in addition to the classification itself.
250    
251            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Get the
252            classification field from layer.
253    
254            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Get the
255            classification field from layer. Split up tests and remove
256            *-imports. Fixes RTbug #1992.
257    
258            * test/test_classgen.py (TestFixedRamp): Test for the FixedRamp class.
259    
260            * test/test_classification.py
261            (TestClassification.test_classification): Remove tests for methods
262            that no longer exist.
263    
264            * test/test_layer.py (SetShapeStoreTests.setUp): Classification
265            __init__ no longer has a field parameter, use SetClassificationField.
266            (SetShapeStoreTests.test_sanity): Use layer object to get class
267            field info.
268    
269            * test/test_save.py (SaveSessionTest.testClassifiedLayer): Use
270            SetClassificationField on layer to set class field info.
271    
272            * test/test_viewport.py: Renamed from test/test_view.py.
273    
274    2003-07-16  Jan-Oliver Wagner <[email protected]>
275    
276            * Doc/manual/thuban-manual.xml: Added authors and an initial
277            coarse structure.
278    
279    2003-07-15  Bernhard Herzog  <[email protected]>
280    
281            * test/support.py (FloatComparisonMixin): This is a mix-in class
282            and therefore should not be derived from any other class.
283    
284            * test/test_range.py (RangeTest): FloatComparisonMixin is a
285            mix-in, so derive from TestCase as well.
286    
287    2003-07-15  Bernhard Herzog  <[email protected]>
288    
289            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Rework the
290            draw_func handling a bit to remove one layer of indirection. This
291            makes the renderer about 10% faster in the non-classifying case
292            and the code a bit cleaner
293            (MapRenderer.draw_point_shape): Add the pen and brush parameters
294            and set them in the dc. Now the draw_point_shape method and
295            wxproj's draw_polygon_shape function have basically the same
296            signature so that both can be directly used as draw_func
297    
298    2003-07-15  Bernhard Herzog  <[email protected]>
299    
300            * Thuban/Model/save.py (SessionSaver.write_classification): Encode
301            string values (in addition to the labels) as UTF 8
302    
303            * Thuban/Model/load.py (SessionLoader.start_clpoint): Decode the
304            values if the field type is string
305    
306            * test/test_save.py (SaveSessionTest.testClassifiedLayer): Test
307            saving a session with non-ascii string classification values.
308    
309            * test/test_load.py (TestClassification.file_contents)
310            (TestClassification.test): Check for non-ascii values in string
311            classifications
312    
313    2003-07-14  Jonathan Coles   <[email protected]>
314    
315            * test/test_view.py: New. Tests for ViewPort.
316    
317    2003-07-14  Frank Koormann   <[email protected]>
318    
319            * Thuban/Model/load.py (SessionLoader.start_map): Encode map
320            title to latin1.  Fixes https://intevation.de/rt/webrt?serial_num=2013
321    
322            * test/test_load_0_8.py (TestUnicodeStrings): New, test load of
323            unicode strings from session file: session title, map title and
324            projection name.
325            
326    2003-07-10  Jonathan Coles   <[email protected]>
327    
328            * Thuban/UI/viewport.py (Tool.MouseUp): Should have called
329            drag_stop, not drag_move when the mouse is released.
330    
331    2003-07-10  Jonathan Coles   <[email protected]>
332    
333            The most important part of this is the seperation of view.py into
334            two pieces. viewport.py now has a class called ViewPort which
335            contains all the non-wx parts of view.py and can therefore be
336            tested. view.py contains only the wx-specific parts and is fairly
337            simple.
338    
339            * Thuban/UI/view.py: Stripped out all non-wx functionality. Fixes
340            RTTbug #1992.
341            * Thuban/UI/viewport.py: New. Contains non-wx view functionality.
342            RTTbug #1992.
343    
344            * Thuban/Model/classgen.py (generate_singletons,
345            generate_uniform_distribution, generate_quantiles):
346            Added 'fixes' parameter so that property attributes can
347            be held constant over the generated classification groups.
348            (CustomRamp.GetProperties): Remove unused variables.
349    
350            * Thuban/Model/map.py (Map.SetProjection): Send the old
351            projection as an argument to listeners of the MAP_PROJECTION_CHANGED
352            event.
353    
354            * Thuban/Model/table.py (table_to_dbf, table_to_csv): Added 'records'
355            parameter which is a list of records that restricts which
356            records are saved. Fixes RTbug #1997.
357    
358            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
359            Port exception dialog from GREAT-ER. Fixes RTbug #1993.
360    
361            * Thuban/UI/classgen.py (ClassGenDialog.__init__): Add controls
362            to allow the user to fix line color/width on generated groups.
363            (ClassGenDialog.OnOK): Use new 'fixes' parameter of the generate_*
364            functions to optionally fix group properties.
365    
366            * Thuban/UI/main.py (main): Set exception hook to the
367            ShowExceptionDialog. Fixes RTbug #1993.
368    
369            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): Raise
370            the table window when it is selectd to be shown.
371    
372            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Add an
373            Export Selection button and move the export buttons underneath
374            the table.
375            (QueryTableFrame.UpdateStatusText): Added event argument so
376            that it can respond to grid selection events. The status text
377            is now updated even when the table is not associated with a
378            layer as was previously assumed.
379            (QueryTableFrame.OnGridSelectRange, OnGridSelectCell): Removed.
380            UpdateStatusText responds to these events.
381            (QueryTableFrame.OnSaveAs): Renamed to doExport.
382            (QueryTableFrame.doExport): Helper function that saves the
383            entire table, or selected rows, to a file.
384            (QueryTableFrame.OnExport, QueryTableFrame.OnExportSel): New.
385            Respond to export button events and call doExport.
386    
387            * extensions/thuban/gdalwarp.cpp (ProjectRasterFile): Make sure
388            the function doesn't return NULL without first setting a Python
389            Error.
390    
391            * test/runtests.py (main): Only print "Unknown option" for
392            unsupported options.
393    
394            * test/support.py (FloatComparisonMixin.assertFloatEqual): Take
395            optional epsilon argument to specify floating point accuracy.
396            (FloatComparisonMixin.assertFloatSeqEqual): Call assertFloatEqual
397            for each item test.
398    
399            * test/test_csv_table.py (TestCSVTable.test_table_to_cvs): Add
400            tests for saving selected records.
401    
402            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): Add
403            tests for saving selected records.
404    
405            * test/test_map.py (TestMapWithContents.test_set_projection):
406            MAP_PROJECTION_CHANGED events send the old projection.
407    
408            * test/test_session.py
409            (TestSessionWithContent.test_forward_map_projection):
410            MAP_PROJECTION_CHANGED events send the old projection.
411    
412            * test/test_table.py (TableTest): Update tests to use non-deprecated
413            functions.
414    
415    2003-07-08  Bernhard Herzog  <[email protected]>
416    
417            * Thuban/Model/transientdb.py (TransientTableBase.Width): The type
418            constants in the column objects are the standard ones defined in
419            the table module.
420    
421            * test/test_transientdb.py
422            (TestTransientTable.test_transienttable_to_dbf): New. Test whether
423            exporting transient tables as DBF works. This should catch the bug
424            just fixed in TransientTableBase.Width.
425    
426    2003-07-08  Bernhard Herzog  <[email protected]>
427    
428            * Thuban/Model/classgen.py (CustomRamp.GetProperties): Compute the
429            interpolated colors correctly.
430    
431            * test/test_classgen.py (TestCustomRamp.test_color_interpolation):
432            New. Test case for the fix in classgen.py
433    
434    2003-07-08  Bernhard Herzog  <[email protected]>
435    
436            * test/runtests.py (main): Make the default output less verbose
437            and add a verbosity option (-v) to get the old output
438    
439    2003-07-08  Bernhard Herzog  <[email protected]>
440    
441            * Resources/XML/thuban-0.9.dtd: New. This will become the DTD for
442            0.9.
443    
444            * Thuban/Model/transientdb.py (TransientJoinedTable.JoinType):
445            New. Return the join type
446    
447            * Thuban/Model/save.py (SessionSaver.write_session): Use new 0.9
448            DTD
449            (SessionSaver.write_data_containers): Save the join type for
450            joined tables
451    
452            * Thuban/Model/load.py (SessionLoader.__init__): Add the new 0.9
453            namespace
454            (SessionLoader.start_jointable): Handle the jointype attribute
455    
456            * test/test_load_0_8.py: New. Effectively a copy of test_load.py
457            as of Thuban 0.8. These are now tests to determine whether Thuban
458            can still read files generated by Thuban 0.8
459    
460            * test/test_load.py (LoadSessionTest.dtd)
461            (TestSingleLayer.file_contents)
462            (TestLayerVisibility.file_contents, TestLabels.file_contents)
463            (TestLayerProjection.file_contents)
464            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
465            (TestJoinedTable.file_contents)
466            (TestLoadError.file_contents): Update for new DTD
467            (TestJoinedTable.file_contents, TestJoinedTable.setUp): Add test
468            for new join type attribute
469    
470            * test/test_save.py (SaveSessionTest.dtd)
471            (SaveSessionTest.testEmptySession)
472            (SaveSessionTest.testSingleLayer)
473            (SaveSessionTest.testLayerProjection)
474            (SaveSessionTest.testRasterLayer)
475            (SaveSessionTest.testClassifiedLayer)
476            (SaveSessionTest.test_dbf_table)
477            (SaveSessionTest.test_joined_table): Update for new DTD
478            (SaveSessionTest.test_joined_table): Add test for new join type
479            attribute
480    
481    2003-07-04  Bernhard Herzog  <[email protected]>
482    
483            * Thuban/Model/table.py (_find_dbf_column_names): New. Helper
484            function for table_to_dbf
485            (table_to_dbf): Deal with names longer than the 10 character limit
486    
487            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): Add
488            doc-string
489            (TestTableToDBF.test_table_to_dbf_long_col_names): New test for
490            long column names
491    
492    2003-07-03  Bernhard Herzog  <[email protected]>
493    
494            * Doc/manual/thuban-manual.xml: Fix the CVS Revision Tag syntax
495    
496    2003-07-03  Bernhard Herzog  <[email protected]>
497    
498            * Doc/manual/thuban-manual.xml, Doc/manual/README: New. Skeleton
499            for the Thuban manual and README with some basic information about
500            the manual
501    
502    2003-07-03  Bernhard Herzog  <[email protected]>
503    
504            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
505            Update doc-string
506            (TransientJoinedTable.create): Do not modify the column objects of
507            the input tables in place and copy all columns of the input tables
508            into the joined table after all.
509    
510            * test/test_transientdb.py
511            (TestTransientTable.test_transient_joined_table_same_column_name):
512            Update to reflect the new behavior
513            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
514            Update to reflect the new behavior
515            (TestTransientTable.test_transient_joined_table_name_collisions_dont_modify_in_place):
516            New test case for a bug which modified the column objects in place
517    
518    2003-07-02  Jonathan Coles   <[email protected]>
519    
520            * Thuban/Model/classgen.py (generate_singletons,
521            generate_uniform_distribution, generate_quantiles,
522            GenQuantiles0): Make sure maxValue isn't less than
523            one, otherwise we could divide by zero.
524    
525            * test/test_classgen.py (ClassGenTest.doClassRangeTest,
526            ClassGenTest.doClassSingleTest): Call doBoundsTest to
527            check the end classification groups against the
528            proper property values.
529            (ClassGenTest.doBoundsTest): New. Checks the first and
530            last classification groups to make sure their properties
531            are the correct upper and lower bounds for a color ramp.
532    
533    2003-07-02  Jonathan Coles   <[email protected]>
534    
535            * Thuban/Model/classgen.py (generate_singletons,
536            generate_uniform_distribution, generate_quantiles,
537            GenQuantiles0): The denominator was one to high when
538            calculating the index for the ramp causing the index
539            to never to reach one.
540    
541    2003-07-02  Jonathan Coles   <[email protected]>
542    
543            Changed the singature of ClassGroupRange.__init__ and
544            ClassGroupRange.SetRange() so that the min/max values are
545            passed as a tuple. This makes a better calling scheme for
546            when a Range object is passed instead.
547    
548            * Thuban/Model/classgen.py: Fixed parameters to
549            ClassGroupRange constructor.
550    
551            * Thuban/Model/classification.py (ClassGroupRange.__init__):
552            Consolidate the min/max parameters into a single _range which
553            can either be a tuple or a Range object.
554            (ClassGroupRange.SetRange): Consolidate the min/max parameters
555            into a single _range which can either be a tuple or a Range object.
556    
557            * Thuban/Model/load.py (SessionLoader.start_clrange): Fix
558            call to ClassGroupRange constructor to use a tuple.
559    
560            * Thuban/Model/layer.py (Layer.SetClassification): Switch
561            the classification instance variable to the new class
562            before calling _set_layer otherwise subscribers to a
563            LAYER_CHANGED event will not see any difference.
564    
565            * test/test_classification.py: Fix tests of ClassGroupRange
566            so that they use the new signature.
567    
568            * test/test_load.py: Fix use of ClassGroupRange so that it
569            uses the new signature.
570    
571            * test/test_load_0_2.py: Fix use of ClassGroupRange so that it
572            uses the new signature.
573    
574            * test/test_save.py: Fix use of ClassGroupRange so that it
575            uses the new signature.
576    
577    
578    2003-07-01  Jonathan Coles   <[email protected]>
579    
580            * Thuban/Model/classgen.py: Fixes RTbug #1972, 1971.
581            Import used objects/class from color.
582            (generate_singletons): We don't
583            need the numGroups parameter anymore because we are using
584            the new ramps with GetProperties().
585            (generate_uniform_distribution): Use new ramp method
586            GetProperties().
587            (generate_quantiles, GenQuantiles0): Use new ramp method
588            GetProperties().
589            (CustomRamp.SetNumGroups): Removed. The ramps now map
590            a value from 0 to 1 to class properties so the number
591            of groups is not needed ahead of time.
592            (CustomRamp.next): Removed. CustomRamp does not support
593            interation anymore.
594            (CustomRamp.GetProperties): Returns a ClassGroupProperties
595            object based on the index value from 0 to 1 that is
596            passed to it.
597            (GreyRamp, RedRamp, GreenRamp, BlueRamp, GreenToRedRamp):
598            Made into instances of Monochromatic class instread of
599            deriving from it.
600            (HotToCold.SetNumGroups): Removed. See CustomRamp.
601            (HotToCold.next): Removed. See CustomRamp.
602    
603            * Thuban/Model/classification.py: Fixes RTbug #1973, 1971.
604            (Classification.SetField, Classification.SetFieldType):
605            Replaced with SetFieldInfo.
606            (Classification.SetFieldInfo): New. Does a better job of
607            what SetField and SetFieldType used to do by combining
608            their function since they should really always be done
609            at the same time.
610            (Classification.SetLayer): Renamed to _set_layer.
611            (Classification._set_layer): Should only be called from
612            Layer's SetClassification. This does not cause a recursive
613            call as SetLayer did because we know that Layer knows about
614            the classification.
615    
616            * Thuban/Model/color.py: Fixes RTbug #1971.
617            (_Transparent): Renamed from Transparent so it doesn't
618            conflict with the module variable.
619            (Transparent, Black): Renamed from Color.Transparent,
620            Color.Black so they are not class variables.
621    
622            * Thuban/Model/layer.py: Fixes RTbug #1971, 1973.
623            (Layer.Destroy): We don't need to call SetClassification
624            anymore to clear out the back reference in the classifcation
625            to the layer. It's better to set it to None using _set_layer,
626            and we won't be creating another clas object too.
627            (Layer.SetClassification): Classification._set_layer is not
628            recursive so remove all the locking variables. Also clean
629            up the code so that it remains unchanged if something fails.
630    
631            * Thuban/Model/load.py: Fixes RTbug #1971.
632            (SessionLoader.start_classification): Call
633            Classification.SetFieldInfo().
634    
635            * Thuban/Model/save.py: Removed import of Color which wasn't
636            being used.
637    
638            * Thuban/UI/classgen.py: Fixes RTbug #1972.
639            (ClassGenDialog.__init__): Color ramps are now instances
640            already so we don't need to create any new objects.
641            (ClassGenDialog.OnOK): Check for numGroups is no longer
642            necessary because we never use it.
643    
644            * Thuban/UI/classifier.py: Fixes RTbug #1971.
645            (Classifier.__BuildClassification, Classifier.__SetGridTable):
646            Call Classification.SetFieldInfo() instead of SetFieldType.
647    
648            * Thuban/UI/renderer.py: Fixes RTbug #1971.
649    
650            * Thuban/UI/view.py: Fixes RTbug #1974, 1971.
651            (MapCanvas.__init__): Subscribe to the idle time event. Set
652            background color to white.
653            (MapCanvas.OnPaint): Set a flag indicating that we should
654            render the map during idle time. If we already have a bitmap
655            just draw it now.
656            (MapCanvas.OnIdle): New. Render the map only during idle time.
657            This also fixes a problem with the busy cursor under gtk.
658    
659            * test/test_classgen.py (ClassGenTest.test_generate_singletons):
660            Fix calls to generate_singletons because the signature changed.
661    
662            * test/test_classification.py: Fix color references and
663            change calls to Classification.[SetField|SetFieldType] to
664            SetFieldInfo.
665    
666            * test/test_load.py: Fix color references.
667    
668            * test/test_load_0_2.py: Fix color references.
669    
670            * test/test_save.py (SaveSessionTest.testClassifiedLayer):
671            Change calls to Classification.[SetField|SetFieldType] to
672            SetFieldInfo.
673    
674    2003-07-01  Frank Koormann   <[email protected]>
675    
676            MERGE from the greater-ms3 branch.
677    
678            * test/test_transientdb.py
679            (TestTransientTable.test_transient_joined_table_with_equal_column_names):
680            New. Test join of two tables with partly equal column names.
681    
682            * Thuban/Model/transientdb.py (TransientJoinedTable.create):
683            If duplicates in left and right tables column names are found,
684            append '_' (underscores) to the name until it is unique.
685            Create always new internal names for the resulting table and reference
686            columns in the join statement with <table>.<column>
687    
688    2003-07-01  Bernhard Herzog  <[email protected]>
689    
690            * test/test_transientdb.py
691            (TestTransientTable.test_transient_joined_table_same_column_name):
692            New. Test whether joining on columns with the same names in both
693            tables works.
694            
695            * Thuban/Model/transientdb.py (TransientJoinedTable.create): Make
696            sure to use the right internal names even when joining on field
697            with the same names in both tables. Also, detect duplicate names
698            in the joined table correctly.
699    
700    2003-07-01  Frank Koormann   <[email protected]>
701    
702            * Thuban/UI/renderer.py (ExportRenderer.render_legend):
703            Reverse List of layers to render in same order as in desktop legend.
704    
705    2003-06-30  Jonathan Coles   <[email protected]>
706    
707            * Thuban/version.py (make_tuple): Takes a version string
708            and splits it into a tuple of at most three integers.
709            Used make_tuple() to make tuple versions of the version
710            numbers.
711    
712            * Thuban/UI/about.py: Add Thuban email addresses.
713    
714    2003-06-30  Jonathan Coles   <[email protected]>
715    
716            * Thuban/version.py: SQLite/PySQLite version dependencies
717            were too high.
718    
719    2003-06-30  Jonathan Coles   <[email protected]>
720    
721            * Thuban/version.py: Update version to 0.8.1
722            
723            * MANIFEST.in: Added Projections so that default.proj is
724            included.
725    
726    2003-06-26  Jonathan Coles   <[email protected]>
727    
728            New About box with lots more information including library
729            versions and credits. More/better version checking before
730            Thuban starts.
731    
732            * Thuban/UI/about.py: New. New About box that displays
733            library version information and credits.
734    
735            * Thuban/version.py: Added new 'versions' dictionary which
736            contains the verions of various libraries which are checked
737            when the module loads.
738            (verify_versions): Check all version numbers and returns
739            a list of errors.
740    
741            * Thuban/UI/classifier.py (Classifier.__EnableButtons):
742            Reset the status of the buttons as the situation warrants,
743            but in a better more reliable way by not relying on the
744            current status to determine what needs to change.
745    
746            * Thuban/UI/main.py (wxCHECK_VERSION): Removed. Not needed.
747            (verify_versions): Remove most of the code since it is
748            now in Thuban.version.verify_versions.o
749    
750            * Thuban/UI/mainwindow.py (MainWindow.About): Call new
751            About box in Thuban.UI.about.
752    
753            * extensions/thuban/gdalwarp.cpp (get_gdal_version): New.
754            Returns the version of gdal library being used as a string.
755    
756            * extensions/thuban/wxproj.cpp (check_version, check_version_gtk):
757            Removed.
758            (get_proj_version): Return the version of PROJ that the file
759            was compiled with.
760            (get_gtk_version): Return th version of GTK that the file
761            was compiled with.
762    
763    2003-06-25  Jonathan Coles   <[email protected]>
764    
765            * Thuban/UI/classifier.py (Classifier.EditSymbol): The parent
766            of the SelectPropertiesDialog should be self so the window
767            appears on top.
768            (ClassGroupPropertiesCtrl.DoEdit): The parent
769            of the SelectPropertiesDialog should be self so the window
770            appears on top.
771    
772            * Thuban/UI/resource.py: Cleaned up how we determine file
773            extensions.
774            (GetImageResource): Return an wxImage from our Resources.
775    
776    2003-06-24  Jonathan Coles   <[email protected]>
777    
778            * Thuban/UI/renderer.py (ExportRenderer.render_legend):
779            Check that a layer has a classification before trying
780            to get it. Raster layers don't have classifications.
781    
782    2003-06-23  Jonathan Coles   <[email protected]>
783            
784            * setup.py: Add Resources/XML to resource list.
785        
786    2003-06-23  Jonathan Coles   <[email protected]>
787    
788            * setup.cfg: Fix copyright dates
789        
790    2003-06-23  Jonathan Coles   <[email protected]>
791    
792            * MANIFEST.in: Update with Resources/XML
793    
794            * setup.py: Don't include Locale resources yet as we don't
795            have any and it causes problems building the distribution
796            for Windows. Update version to 0.8.0.
797    
798            * Doc/thuban.dtd: Removed since it is now in Resources/XML.
799    
800            * Thuban/UI/mainwindow.py: Add blank line at the end because
801            file was not being read correctly building the Windows
802            distribution.
803    
804    2003-06-23  Jonathan Coles   <[email protected]>
805    
806            * Thuban/UI/mainwindow.py (MainWindow.About): Fix text.
807    
808            * Thuban/version.py: Temporarily update longversion for
809            the 0.8 release so that it doesn't have the cvs revision.
810    
811    2003-06-23  Jonathan Coles   <[email protected]>
812    
813            * Thuban/UI/common.py (ThubanBeginBusyCursor): Call wxSafeYield
814            to make sure that we don't create reentrant possibilities with
815            wxYield.
816    
817            * Thuban/UI/view.py (MapCanvas.OnPaint): Call wxBeginBusyCursor()
818            directly to avoid the wxSafeYield() call which generates an
819            OnPaint event causing infinite recursion. Don't try to catch
820            exception anymore. This was for before there were limits on map
821            scaling.
822    
823    2003-06-23  Bernhard Herzog  <[email protected]>
824    
825            Bug fix for RT #1961:
826    
827            * Thuban/Model/load.py (SessionLoader.start_derivedshapesource):
828            Register DerivedShapestores with the session
829    
830            * Thuban/Model/session.py (Session.Tables): Make sure each table
831            is only listed once.
832    
833            * test/test_load.py (TestJoinedTable.test): Add check_format call.
834            Update file contents to match the one written out.
835    
836    2003-06-20  Bernhard Herzog  <[email protected]>
837    
838            * test/xmlsupport.py (SaxEventLister.startElementNS)
839            (SaxEventLister.endElementNS): Do not include the qname. Python
840            2.2.1 and 2.2.2 and 2.2.3 differ in this regard. In 2.2.1 qname it
841            is (presumably incorrectly) None, whereas it's a string with the
842            element name in the later versions.
843    
844            * test/test_xmlsupport.py (TestEventList.test_even_list_simple)
845            (TestEventList.test_even_list_namespace): Update tests to reflect
846            the new behaviour
847            (TestEventList.test_even_list_id_normalization): Fix doc-string
848    
849    2003-06-20  Jonathan Coles   <[email protected]>
850    
851            * Thuban/Model/layer.py (BaseLayer.HasShapes): New. Overridden
852            by deriving classes to determine if that layer supports shapes.
853            (Layer): Override HasShapes and return true.
854    
855            * Thuban/UI/classgen.py: Use Thuban[Begin|End]BusyCursor()
856            instead of a direct call to wx[Begin|End]CusyCursor().
857            (GenUniquePanel._OnRetrieve): Set busy cursor while retrieving
858            table data.
859    
860            * Thuban/UI/common.py (ThubanBeginBusyCursor, ThubanEndBusyCursor):
861            New. Wrappers around the wxWindows functions that allow us to
862            make additional calls such as wxYield which gives the native
863            system a chance to update the cursor correctly.
864    
865            * Thuban/UI/tableview.py: Use Thuban[Begin|End]BusyCursor()
866            instead of a direct call to wx[Begin|End]CusyCursor().
867    
868            * Thuban/UI/view.py: Use Thuban[Begin|End]BusyCursor()
869            instead of a direct call to wx[Begin|End]CusyCursor().
870            (MapCanvas.find_shape_at): Check if the current search layer
871            support shapes, otherwise go on to the next layer.
872    
873            * test/test_layer.py: Add tests in each type of layer for
874            HasClassification() and HasShapes()
875    
876    2003-06-20  Jonathan Coles   <[email protected]>
877    
878            * Thuban/UI/view.py (MapCanvas.OnPaint): Call wxYield after
879            turning on the busy cursor to allow the system to change the
880            cursor before we begin painting. This fixes a problem that
881            was occuring only under GTK. Fixes RTbug #1840.
882    
883    2003-06-20  Bernhard Herzog  <[email protected]>
884    
885            * Resources/XML/thuban-0.8.dtd: New DTD for the new file format
886            version.
887    
888            * Thuban/Model/save.py (sort_data_stores): New. Make topological
889            sort of the data sources so they can be written with sources that
890            data sources that depend on other data sources come after the
891            sources they depend on.
892            (SessionSaver.__init__): Add idmap instance variable to map from
893            objects to the ids used in the file.
894            (SessionSaver.get_id, SessionSaver.define_id)
895            (SessionSaver.has_id): New. Methods to manage the idmap
896            (SessionSaver.write): Use thuban-0.8.dtd
897            (SessionSaver.write_session): Add a namespace on the session and
898            write out the data sources before the maps.
899            (SessionSaver.write_data_containers): New. Write the data
900            containers.
901            (SessionSaver.write_layer): Layer elements now refer to a
902            shapestore and don't contain filenames anymore.
903    
904            * Thuban/Model/load.py (LoadError): Exception class to raise when
905            errors in the files are discovered
906            (SessionLoader.__init__): Define dispatchers for elements with a
907            thuban-0.8 namespace too.
908            (SessionLoader.check_attrs): New helper method to check and
909            convert attributes
910            (AttrDesc): New. Helper class for SessionLoader.check_attrs
911            (SessionLoader.start_fileshapesource)
912            (SessionLoader.start_derivedshapesource)
913            (SessionLoader.start_filetable, SessionLoader.start_jointable):
914            Handlers for the new elements in the new fileformat
915            (SessionLoader.start_layer): Handle the shapestore attribute in
916            addition to filename.
917            (SessionLoader.start_table, SessionLoader.end_table): Removed.
918            They were never used in the old formats and aren't needed for the
919            new.
920    
921            * Thuban/Model/session.py (Session.DataContainers): New method to
922            return all "data containers", i.e. shapestores and tables
923    
924            * test/xmlsupport.py (SaxEventLister.__init__)
925            (SaxEventLister.startElementNS, sax_eventlist): Add support to
926            normalize IDs.
927    
928            * test/test_xmlsupport.py
929            (TestEventList.test_even_list_id_normalization): New test case for
930            id normalization
931    
932            * test/test_load.py (LoadSessionTest.check_format): Use ID
933            normalization
934            (LoadSessionTest.thubanids, LoadSessionTest.thubanidrefs): New
935            class atrributes used for ID normalization
936            (TestSingleLayer, TestLayerVisibility, TestLabels.test)
937            (TestLayerProjection.test, TestRasterLayer.test): Adapt to new
938            file format
939            (TestJoinedTable): New test for loading sessions with joined
940            tables.
941            (TestLoadError): New. Test whether missing required attributes
942            cause a LoadError.
943    
944            * test/test_save.py (SaveSessionTest.thubanids)
945            (SaveSessionTest.thubanidrefs): New class attributes for ID
946            normalization in .thuban files.
947            (SaveSessionTest.compare_xml): Use id-normalization.
948            (SaveSessionTest.testEmptySession)
949            (SaveSessionTest.testLayerProjection)
950            (SaveSessionTest.testRasterLayer)
951            (SaveSessionTest.testClassifiedLayer): Adapt to new file format.
952            (SaveSessionTest.testLayerProjection): The filename used was the
953            same as for testSingleLayer. Use a different one.
954            (SaveSessionTest.test_dbf_table)
955            (SaveSessionTest.test_joined_table): New test cases for saving the
956            new data sources structures.
957            (TestStoreSort, MockDataStore): Classes to test the sorting of the
958            data stores for writing.
959    
960            * test/runtests.py: Add CVS keywords
961    
962    2003-06-20  Jonathan Coles   <[email protected]>
963    
964            * test/test_session.py
965            (UnreferencedTablesTests.test_unreferenced_tables_with_joins):
966            Use the cultural_landmark-point.dbf file for the store so that
967            the table rows and shape count match.
968    
969    2003-06-20  Jonathan Coles   <[email protected]>
970    
971            * Thuban/Model/data.py (DerivedShapeStore.__init__): Raise
972            an exception if the number of shapes is different from the
973            number of rows in the table. Address RTbug #1933.
974    
975            * test/test_layer.py (TestLayer.test_derived_store): Add
976            a test for the new exception in DerivedShapeStore.__init__.
977    
978            * test/support.py (FloatTestCase): Removed since there is
979            already FloatComparisonMixin. Fixes RTbug #1954.
980            (FloatComparisonMixin.assertFloatEqual): Include test for
981            infinity that was part of FloatTestCase.
982    
983            * test/test_range.py (RangeTest): Inherit from
984            support.FloatComparisonMixin now that we don't have
985            support.FloatTestCase.
986    
987    2003-06-20  Bernhard Herzog  <[email protected]>
988    
989            * test/test_save.py (SaxEventLister, sax_eventlist): Removed. Use
990            the implementation in xmlsupport instead.
991            (SaveSessionTest.compare_xml): sax_eventlist is now in xmlsupport
992    
993            * test/test_proj.py: Import sax_eventlist from xmlsupport instead
994            of test_save
995    
996    2003-06-20  Bernhard Herzog  <[email protected]>
997    
998            * test/test_load.py (LoadSessionTest.check_format): New helper
999            method to make sure the test files we load might have been written
1000            by the current thuban version.
1001            (ClassificationTest.TestLayers, TestSingleLayer.test)
1002            (TestLayerVisibility.test, TestClassification.test)
1003            (TestLabels.test, TestLayerProjection.test, TestRasterLayer.test):
1004            Add check_format() calls and fix the thuban data to match the data
1005            that would be written by saving the session loaded from it.
1006    
1007            * test/xmlsupport.py (SaxEventLister, sax_eventlist): Copies of
1008            the same class and function in test_save.
1009    
1010            * test/test_xmlsupport.py (TestEventList): New. test cases for
1011            sax_eventlist
1012    
1013    2003-06-20  Bernhard Herzog  <[email protected]>
1014    
1015            * Resources/XML/thuban.dtd: Add comment about which versions of
1016            Thuban are covered by this DTD
1017            (map): Fix content model for layers and raster layers. There can
1018            be any number or layers and raster layers in any order.
1019    
1020    2003-06-20  Jonathan Coles   <[email protected]>
1021    
1022            This is mainly about fixing RTbug #1949.
1023    
1024            * Thuban/Model/classification.py: Remove "from __future__"
1025            import statement since python 2.2 is the earliest supported
1026            version.
1027    
1028            * Thuban/Model/proj.py (Projection.GetProjectedUnits): New.
1029            Currently returns PROJ_UNITS_METERS or PROJ_UNITS_DEGREES
1030            depending on the units this projection *forwards* into.
1031    
1032            * Thuban/Model/save.py (SessionSaver.write_classification):
1033            Remove unnecessary use of lambdas and nested functions.
1034    
1035            * Thuban/UI/legend.py (ScaleBarBitmap.__SetScale): Do scale
1036            adjustment here if the map projection uses degrees.
1037    
1038            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Remove
1039            scale adjust code since it is now done before calling
1040            this method. Don't do anything if the map projection
1041            is None.
1042    
1043    2003-06-19  Bernhard Herzog  <[email protected]>
1044    
1045            Move version specific load tests to their own file.
1046    
1047            * test/test_load.py: Expand the doc-string to explain a bit how to
1048            handle file format changes.
1049            (TestClassification.test): Update the docstring as this test is
1050            not about Thuban 0.2 anymore.
1051    
1052            * test/test_load_0_2.py: New file with the load tests for thuban
1053            files created with Thuban 0.2 and earlier.
1054    
1055    2003-06-19  Bernhard Herzog  <[email protected]>
1056    
1057            Add XML validation to some of the tests. Validation will only be
1058            done if pyRXP is installed (http://reportlab.com/xml/pyrxp.html).
1059            To make the DTD available to the test cases it's moved into
1060            Resources/XML
1061    
1062            * Resources/XML/thuban.dtd: New. This is now the real Thuban DTD
1063            for versions up to and including 0.2. Two slight changes: added an
1064            encoding specification and fixed the comment which refered to
1065            GRASS, not Thuban
1066    
1067            * test/xmlsupport.py: New support module for tests involving XML.
1068            Currently there's a mix-in class for XML validation.
1069    
1070            * test/test_xmlsupport.py: New. Tests for the xmlsupport module
1071    
1072            * test/test_save.py (SaveSessionTest): Derive from ValidationTest
1073            so that we can validate the
1074            (SaveSessionTest.testEmptySession)
1075            (SaveSessionTest.testSingleLayer)
1076            (SaveSessionTest.testSingleLayer)
1077            (SaveSessionTest.testLayerProjection)
1078            (SaveSessionTest.testRasterLayer)
1079            (SaveSessionTest.testClassifiedLayer): Validate the generated XML
1080    
1081            * test/runtests.py (main): Call print_additional_summary instead
1082            of print_garbage_information
1083    
1084            * test/support.py (resource_dir): New function to return the
1085            "Resource" subdirectory
1086            (print_additional_summary): New function to combine several
1087            summary functions
1088            (run_tests): Use print_additional_summary instead of calling
1089            print_garbage_information directly
1090    
1091    2003-06-19  Bernhard Herzog  <[email protected]>
1092    
1093            * Doc/thuban.dtd (classification): Correct the content model of
1094            the classification element.
1095            (projection): Add the "name" attribute
1096    
1097    2003-06-19  Frank Koormann   <[email protected]>
1098    
1099            MERGE from the greater-ms3 branch.
1100    
1101            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Apply conversion to
1102            scale if projection is latlong to get better estimate.
1103    
1104            Fix problem of hidden properties dialog under windows after double
1105            click on layer tree:
1106            The tree control always gets an Expanded / Collapsed event after
1107            the ItemActivated  on double click, which raises the main window again.         We add a second ItemActivated event to the queue, which simply
1108            raises the already displayed window.
1109    
1110            * Thuban/UI/legend.py (LegendTree.__init__): Instance variable
1111            raiseProperties initialized to prevent endless loops
1112            (LegendTree._OnItemActivated): Depending on self.raiseProperties
1113            simply raise the properties or open the dialog and issue a second
1114            event.
1115    
1116  2003-06-18  Jonathan Coles   <[email protected]>  2003-06-18  Jonathan Coles   <[email protected]>
1117    
1118          * setup.py: Fix a few problems that occured under Windows.          * setup.py: Fix a few problems that occured under Windows.

Legend:
Removed from v.1239  
changed lines
  Added in v.1479

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26