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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26