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

Legend:
Removed from v.1258  
changed lines
  Added in v.1470

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26