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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26