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

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

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

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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26