/[thuban]/branches/greater-ms3/thuban/ChangeLog
ViewVC logotype

Diff of /branches/greater-ms3/thuban/ChangeLog

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

revision 848 by frank, Wed May 7 07:20:52 2003 UTC revision 1021 by jan, Fri May 23 13:03:50 2003 UTC
# Line 1  Line 1 
1    2003-05-23  Jan-Oliver Wagner <[email protected]>
2    
3            Give all tables a title via mix-in TitledObject.
4    
5            * Thuban/Model/base.py (TitledObject.SetTitle): Call method 'issue'
6            only if it exists.
7    
8            * Thuban/Model/table.py (DBFTable, MemoryTable): mix-in TitledObject
9            and call its init-method with a default title. Remove Title() method.
10    
11            * Thuban/Model/transientdb.py (TransientTable, TransientJoinedTable,
12            AutoTransientTable): mix-in TitledObject and call its init-method with
13            a default title. Remove Title() method.
14    
15    2003-05-23  Bernhard Herzog  <[email protected]>
16    
17            * Thuban/Model/session.py (Session.AddShapeStore): Define
18            AddShapeStore analogously to AddTable.
19    
20            * test/test_session.py (TestSessionSimple.test_add_shapestore):
21            New. Test for AddShapeStore
22    
23    2003-05-23  Jan-Oliver Wagner <[email protected]>
24    
25            Introducing QueryTableFrame and a very coarse ShowTable implementation.
26    
27            * Thuban/UI/tableview.py (LayerTableFrame, QueryTableFrame): Split the
28            class LayerTableFrame into two classes, LayerTableFrame and QueryTableFrame.
29            The latter implements the selection GUI without dependency on a layer.
30            LayerTableFrame now is derived from QueryTableFrame and connects
31            to a layer.
32    
33            * Thuban/UI/mainwindow.py (MainWindow.TableShow): A very coarse
34            implementation that still needs work.
35    
36            * Thuban/Model/layer.py (Layer.TreeInfo): Added filename.
37    
38    2003-05-22  Frank Koormann  <[email protected]>
39    
40            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
41            Added "outer_join = False" as optional parameter.
42            (TransientJoinedTable.create): If outer join is true, perform a
43            "LEFT OUTER JOIN" instead of "JOIN", which preserves all records of
44            the left table. Records not matching are filled with 0 / None.
45    
46            * Thuban/UI/join.py (JoinDialog.__init__): Checkbox for outer join.
47            (JoinDialog.OnJoin): Consider outer join check box.
48    
49    2003-05-22  Bernhard Herzog  <[email protected]>
50    
51            * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a
52            somewhat safer way. Storing the traceback in a local variable can
53            lead to memory leaks
54    
55    2003-05-22  Bernhard Herzog  <[email protected]>
56    
57            * Thuban/UI/join.py (JoinDialog.OnJoin): Make sure to really call
58            the wxMessageDialog's Destroy() method.
59    
60    2003-05-22  Frank Koormann  <[email protected]>
61    
62            * Thuban/UI/join.py (JoinDialog.__init__): Make use of
63            TransientTable.Title()
64    
65    2003-05-22  Frank Koormann  <[email protected]>
66    
67            Join Dialog, initial version.
68    
69            * Thuban/UI/mainwindow.py (MainWindow.TableJoin): Removed print.
70    
71            * Thuban/UI/join.py (JoinDialog): Functional implementation of
72            former framework. Renamed Table1/Table2 to LeftTable/RightTable
73            in all occurences.
74    
75            * Thuban/Model/transientdb.py (TransientJoinedTable.__doc__):
76            Typo fixed.
77    
78    2003-05-22  Bernhard Herzog  <[email protected]>
79    
80            Give the tables titles so that the GUI can display more meaningful
81            names. For now the titles are fixed but depend on e.g. filenames
82            or the titles of the joined tables.
83    
84            * Thuban/Model/transientdb.py (TransientTable.Title)
85            (TransientJoinedTable.Title, AutoTransientTable.Title): New.
86    
87            * Thuban/Model/table.py (DBFTable.Title, MemoryTable.Title): New.
88    
89            * test/test_transientdb.py
90            (TestTransientTable.test_auto_transient_table_title): New. Test
91            for the Title method
92            (TestTransientTable.test_transient_joined_table)
93            (TestTransientTable.test_transient_table): Add test for the Title
94            methods
95    
96            * test/test_memory_table.py (TestMemoryTable.test_title): New.
97            Test for the Title method
98    
99            * test/test_dbf_table.py (TestDBFTable.test_title): New. Test for
100            the Title method
101    
102    2003-05-22  Bernhard Herzog  <[email protected]>
103    
104            * test/test_layer.py (TestLayer.setUp, TestLayer.tearDown):
105            Provide a better way to destroy the layers
106            (TestLayer.test_base_layer, TestLayer.test_arc_layer)
107            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
108            (TestLayer.test_polygon_layer, TestLayer.test_get_field_type): Use
109            the new way to destroy the layers.
110            (TestLayer.test_derived_store): New. Test for using a layer with a
111            DerivedShapeStore
112    
113            * Thuban/Model/layer.py (Layer.SetShapeStore): Only set the
114            filename if the shape store actually has one.
115    
116    2003-05-22  Bernhard Herzog  <[email protected]>
117    
118            * Thuban/Model/table.py (DBFTable.FileName): New. Accessor method
119            for the filename
120    
121            * test/test_dbf_table.py (TestDBFTable.test_filename): New. Test
122            for the FileName method
123            (TestDBFTableWriting.test_write): Fix spelling of filename
124    
125    2003-05-22  Thomas Koester  <[email protected]>
126    
127            * Thuban/Model/range.py, test/test_range.py: Brought over new Range
128            from SciParam that now really is immutable.
129    
130    2003-05-22  Frank Koormann  <[email protected]>
131    
132            Layer Top/Bottom placement added to legend.
133    
134            * Thuban/UI/legend.py
135            (LegendPanel._OnMoveTop(), LayerPanel._OnMoveBottom): New, methods
136            bound to tool events.
137            (LegendTree.MoveCurrentItemTop(), LegendTree.MoveCurrentItemBottom):
138            New, methods binding the event methods with the map methods.
139    
140            * Thuban/Model/map.py (Map.TopLayer(), Map.BottomLayer()): New, place
141            layer at top/bottom of layer stack.
142    
143            * Resources/Bitmaps/top_layer.xpm: New button icon.
144    
145            * Resources/Bitmaps/bottom_layer.xpm: New button icon.
146    
147    2003-05-22  Bernhard Herzog  <[email protected]>
148    
149            * Thuban/Model/session.py (Session.RemoveTable): New method to
150            remove tables
151    
152            * test/test_session.py (TestSessionSimple.test_remove_table): New.
153            Test for RemoveTable
154    
155    2003-05-22  Thomas Koester  <[email protected]>
156    
157            * Thuban/Model/classgen.py: Added short module doc string and CVS id.
158            (ClassGenerator.GenUniformDistribution): Use new Range __init__, too.
159    
160    2003-05-22  Bernhard Herzog  <[email protected]>
161    
162            Implement a way to discover dependencies between tables and
163            shapestores.
164    
165            * Thuban/Model/transientdb.py (TransientTableBase.Dependencies)
166            (TransientJoinedTable.Dependencies)
167            (AutoTransientTable.SimpleQuery): New. Implement the dependencies
168            interface
169            (TransientJoinedTable.__init__): Keep tack of the original table
170            objects in addition to the corresponding transient tables.
171    
172            * Thuban/Model/table.py (DBFTable.Dependencies)
173            (MemoryTable.Dependencies): New. Implement the dependencies
174            interface
175    
176            * Thuban/Model/data.py (ShapeTable): New. Helper class for
177            ShapefileStore
178            (ShapefileStore.__init__): Use ShapeTable instead of
179            AutoTransientTable
180            (ShapefileStore.Table, ShapefileStore.Shapefile): Add doc-strings
181            (ShapefileStore.FileName, ShapefileStore.FileType): New. Accessor
182            methods for filename and type
183            (ShapefileStore.Dependencies): New. Implement the dependencies
184            interface
185            (DerivedShapeStore): New class to replace SimpleStore. The main
186            difference to SimpleStore is that it depends not on a shapefile
187            but another shapestore which expresses the dependencies a bit
188            better
189            (SimpleStore.__init__): Add deprecation warning.
190    
191            * test/test_dbf_table.py (TestDBFTable.test_dependencies): New.
192            Test for the Dependencies method.
193    
194            * test/test_memory_table.py (TestMemoryTable.test_dependencies):
195            New. Test for the Dependencies method.
196    
197            * test/test_transientdb.py
198            (TestTransientTable.test_auto_transient_table_dependencies): New.
199            Test for the Dependencies method.
200            (TestTransientTable.test_transient_joined_table): Add test for the
201            Dependencies method.
202    
203            * test/test_session.py (TestSessionSimple.setUp)
204            (TestSessionSimple.tearDown): New. Implement a better way to
205            destroy the sessions.
206            (TestSessionSimple.test_initial_state)
207            (TestSessionSimple.test_add_table): Bind session to self.session
208            so that it's destroyed by tearDown
209            (TestSessionSimple.test_open_shapefile): New. Test for
210            OpenShapefile and the object it returns
211    
212    2003-05-22  Bernhard Herzog  <[email protected]>
213    
214            * Thuban/Model/session.py (Session.AddTable): New method to
215            register tables with the session.
216            (Session.Tables): Return the tables registered with AddTable too.
217    
218            * test/test_session.py (TestSessionSimple.test_add_table): New.
219            Test case for the AddTable method
220    
221    2003-05-22  Frank Koormann  <[email protected]>
222    
223            UI polishing updates: Place main buttons (OK, Cancel, etc) in the
224            lower right corner, center labels for selections, initialize controls
225            in reasonable order for keyboard navigation.
226    
227            * Thuban/UI/projdialog.py (ProjFrame.__init__, ProjFrame.__doLayout)
228            (ProjFrame.__DoOnProjAvail): Determine position of current projection
229            using the wxListBox.FindString() method. Still a problem (#1886)
230    
231            * Thuban/UI/classifier.py
232            (Classifier.__init__, SelectPropertiesDialog.__init__)
233    
234            * Thuban/UI/classgen.py (ClassGenDialog.__init__,
235            (ClassGenDialog.__DoOnGenTypeSelect): Moved initialization of the
236            different classification types from here to __init__.
237            (GenUniquePanel.__init__): Set the column width of the first field
238            in the Field ListCtrl to the full width.
239    
240            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Rename 'Save As'
241            Button to 'Export'. Center Buttons in Selection Box, set Focus to
242            Grid.
243            (LayerTableFrame.OnKeyDown()): New, bound to the grid with EVT_KEY_DOWN,
244            changes focus to the Selection when pressing "Alt-S".
245    
246            * Thuban/UI/legend.py (LegendTree.__SetVisibilityStyle): Only gray out
247            the text if not visible. The italic font sometimes exceeds the
248            rendering area.
249    
250    2003-05-21  Jonathan Coles   <[email protected]>
251    
252            * Thuban/UI/dock.py (DockFrame): Rename references to _OnClose
253            to OnClose so that Thuban closes correctly.
254    
255            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Call
256            DockFrame.OnClose, not DockFrame._OnClose.
257    
258    2003-05-21  Jonathan Coles   <[email protected]>
259    
260            * Thuban/Model/classgen.py (ClassGenerator.GenQuantiles): Remove
261            references to 'inf' and use new Range __init__ to pass floats
262            directly rather than converting them to strings first.
263            Fixes RTBug #1876.
264    
265            * Thuban/Model/classification.py (ClassGroupRange.SetRange):
266            Use new Range ___init__ to pass floats.
267    
268            * Thuban/Model/layer.py (RasterLayer.__init__): Test if the
269            filename is a valid image file. Throw IOError otherwise.
270    
271            * Thuban/Model/range.py: Brought over new Range from SciParam that
272            is immutable and has an __init__ which can accept floats.
273    
274            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Move OpenShapefile
275            into try block. AddLayer doesn't throw any exceptions anymore.
276            (MainWindow.AddRasterLayer): Move constructor of RasterLayer into
277            try block.
278    
279            * Thuban/UI/projdialog.py (GeoPanel.__init__): Put Degrees as
280            the first item in choices. Fixes RTBug #1882.
281    
282            * Thuban/UI/renderer.py (MapRenderer.render_map): Check if scale
283            has gone to 0 which is a serious problem. abort.
284            (MapRenderer.draw_raster_layer): Catch IOError seperately and
285            print the error from GDAL.
286    
287            * Thuban/UI/tableview.py (TableGrid.__init__): Call
288            ToggleEventListeners to turn on listening.
289            (TableGrid.ToggleEventListeners): New. Turns event listening on
290            and off so as to prevent excessive messages.
291            (LayerTableFrame.OnQuery): Use TableGrid.ToggleEventListeners
292            to suppress excessive messages when selecting many rows.
293            Fixes RTBug #1880.
294    
295            * Thuban/UI/view.py: Added checks against if scale == 0. This
296            is a serious problem that can occur when an image without
297            geo data is loading and causes the map projection bounds to
298            go to infinity. Right now, the solution is to simply try
299            to recover.
300    
301            * extensions/thuban/cpl_mfile.cpp (MFILEClose): Make sure
302            to set the MFILEReceiver attributes even if the data is NULL.
303    
304            * extensions/thuban/gdalwarp.cpp: Improved the error handling
305            and passed GDAL messages back up to the Python layer. Also
306            tried to fix some memory leaks that were present in the original
307            utility but didn't matter because the program aborted.
308    
309            * test/test_range.py: Copied over tests from SciParam. Removed
310            tests against importing. Fixes RTBug #1867.
311    
312    2003-05-21  Bernhard Herzog  <[email protected]>
313    
314            * test/test_load.py: Remove unused imports and restructure the
315            test code
316            (LoadSessionTest): Split into one class for each test and turn
317            LoadSessionTest itself into the base class for all such session
318            tests.
319            (ClassificationTest): New base class for load tests that test
320            classifications
321            (TestSingleLayer, TestLayerVisibility, TestClassification)
322            (TestLabels, TestLayerProjection, TestRasterLayer): New classes
323            for the individual tests
324    
325            * test/support.py (FileLoadTestCase.filename): New base class for
326            file loading tests
327    
328    2003-05-21  Jan-Oliver Wagner <[email protected]>
329    
330            * Resources/Projections/defaults.proj: Renamed 'Universal Transverse
331            Mercator' to 'UTM Zone 32' as a more convenient example.
332            Added 'Gauss Krueger Zone 6'.
333    
334            * Data/iceland_sample_raster.thuban: political polygon now
335            filled transparent to have the raster image visible at once.
336    
337    2003-05-21  Frank Koormann  <[email protected]>
338    
339            * Thuban/UI/mainwindow.py (MainWindow): Renamed _OnClose() back to
340            OnClose() to keep in sync with extensions. Internally Thuban
341            still uses "underscored" names.
342    
343    2003-05-20  Jonathan Coles   <[email protected]>
344    
345            This puts back Raster layer support. These layers support projections
346            through the GDAL library. Currently, the CVS version is being used.
347            There are no Debian packages available although this may change soon.
348            A GDAL driver was extended to support writing to memory rather to
349            files.
350    
351            There is still some work that needs to be done, such as some error
352            handling when loading invalid images or when there is a problem
353            projecting the image. This putback simply checks in the majority
354            of the work.
355    
356            * setup.py: Add gdalwarp library extension.
357    
358            * Thuban/Model/layer.py (BaseLayer.HasClassification): New.
359            Defaults to False, but can be overridden by subclasses if they
360            support classification.
361            (RasterLayer): New. Defines a new layer that represents an
362            image.
363    
364            * Thuban/Model/load.py (SessionLoader.__init__): Add rasterlayer
365            tag handler.
366            (SessionLoader.start_layer): Encode the filename.
367            (SessionLoader.start_rasterlayer, SessionLoader.end_rasterlayer):
368            New. Supports reading a rasterlayer tag.
369    
370            * Thuban/Model/map.py (Map.BoundingBox): Fix typo in comment.
371    
372            * Thuban/Model/save.py (XMLWriter.encode): Don't assume that we
373            get a string in Latin1. If we get such as string convert it to
374            unicode first, otherwise leave if alone before encoding.
375            (SessionSaver.write_layer): Add support for writing both Layers
376            and RasterLayers.
377    
378            * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):
379            The right argument may not be a string, it could also be a Column.
380    
381            * Thuban/UI/application.py (ThubanApplication.CreateMainWindow):
382            Make initial window size 600x400. Fixes RTBug #1872.
383    
384            * Thuban/UI/classifier.py (Classifier.__init__): Rearrange how
385            the dialog is constructed so that we can support layers that
386            do not have classifications.
387            (Classifier._OnTry): Only build a classification if the layer
388            supports one.
389    
390            * Thuban/UI/legend.py: Change all checks that a layer is an
391            instance of Layer into checks against BaseLayer.
392            (LegendTree.__FillTreeLayer): Only add children to a branch if
393            the layer supports classification.
394    
395            * Thuban/UI/mainwindow.py (MainWindow.NewSession,
396            MainWindow.OpenSession): Don't proceed with an action if the
397            user chooses Cancel when they are asked to save changes.
398            (MainWindow.AddRasterLayer): New. Open a dialog to allow the
399            user to select an image file. Create a new RasterLayer and add
400            it to the map.
401    
402            * Thuban/UI/renderer.py (MapRenderer.render_map): Add support
403            for rendering RasterLayer layers.
404            (MapRenderer.draw_raster_layer): Actually method that calls
405            the GDALWarp python wrapper and constructs an image from the
406            data returned.
407    
408            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Change the
409            Choices symbols to match those used in the table query method.
410            Replace deprecated method calls on table with new method names.
411    
412            * Thuban/UI/view.py (MapCanvas.set_view_transform): Try to limit
413            how small the scale can get. This still needs more testing.
414    
415            * extensions/thuban/bmpdataset.cpp: New, but copied from GDAL.
416            Provides a driver to output in .bmp format.
417    
418            * extensions/thuban/cpl_mfile.cpp, extensions/thuban/cpl_mfile.h:
419            New. Provides IO routines which write to memory, rather than a file.
420    
421            * extensions/thuban/gdalwarp.cpp: New, but basically a direct copy
422            of the gdalwarp utility provided in GDAL. Added function calls
423            that can be accessed from python.
424    
425            * Data/iceland_sample_raster.thuban: New. Sample file that uses
426            a raster layer.
427    
428            * Data/iceland/island.tfw, Data/iceland/island.tif: New. Raster
429            layer image data.
430    
431            * Doc/thuban.dtd: Added rasterlayer attribute definition.
432    
433            * test/test_layer.py, test/test_load.py, test/test_save.py: Added
434            tests associated with the raster layer code.
435    
436            * test/test_transientdb.py
437            (TestTransientTable.test_auto_transient_table_query): Added a test
438            for using a Column object as the "right" parameter to a query.
439    
440    2003-05-19  Frank Koormann  <[email protected]>
441    
442            * Thuban/version.py (get_changelog_date):
443            Catch exceptions if ChangeLog does not exist.
444    
445            * Thuban/UI/view.py (MapCanvas.Export): Bugfix
446    
447    2003-05-19  Frank Koormann  <[email protected]>
448    
449            Extended version information for Thuban
450    
451            * Thuban/version.py: New, version information for Thuban: Last
452            modification date and last ChangeLog entry date.
453    
454            * Thuban/UI/mainwindow.py (MainWindow.About()): Extended version
455            information: Display Thuban, wxPython and Python version.
456    
457    2003-05-16  Bernhard Herzog  <[email protected]>
458    
459            * Thuban/Model/save.py: Remove some unused imports including the
460            __future__ import for nested_scopes as Thuban relies on Python 2.2
461            now.
462            (XMLWriter.encode): Remove the special case for a None argument.
463            In the saver encode is always called with a string argument.
464    
465    2003-05-16  Bernhard Herzog  <[email protected]>
466    
467            * Thuban/UI/__init__.py: Remove the work-around for the locale bug
468            in wxPython (at least when usinvg wxGTK) prior to 2.4. The symptom
469            of the bug was that e.g. float("1.2") would fail. Thuban now
470            requires 2.4.x.
471            
472    2003-05-16  Frank Koormann   <[email protected]>
473    
474            Printing enhancement and WMF export (under Win32)
475    
476            * Thuban/UI/renderer.py (ExportRenderer): New, derived from
477            ScreenRenderer. Renders Map, Legend and Scalebar for export.
478            (PrinterRenderer): New, derived from ExportRenderer. Replaces the old
479            PrintRender.
480    
481            * Thuban/UI/view.py (MapPrintout.__init__): Enhanced parameter set
482            to fullfil information needed for PrinterRenderer.
483            (MapCanvas.Export): New. Export Map (currently only to WMF on Win32).
484            (MapCanvas.Print): Adapted to new MapPrintout.
485            (OutputTransform): General calculations to transform from canvas
486            coordinates to export/printing devices.
487    
488            * Thuban/UI/mainwindow.py (MainWindow.ExportMap()): New. Added also
489            new method_command to call ExportMap, with platform dependency (only
490            __WXMSW__)
491      
492            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Position and Size
493            of scalebar drawing area as new parameters.
494            
495            * Thuban/Model/scalebar.py (roundInterval): round long instead of int
496    
497            * Thuban/UI/legend.py (ScalebarBitmap.__SetScale):
498            Update to extended scalebar.DrawScalebar header.
499    
500            * test/test_export.py: New, test Thuban.UI.view.OutputTransform()
501    
502            * test/test_scalebar.py: Made test executable as standalone.
503    
504    2003-05-16  Bernhard Herzog  <[email protected]>
505    
506            * Thuban/Model/table.py (Table): Remove this compatibility alias
507            for DBFTable.
508    
509            * test/test_table.py: Import DBFTable as Table because that alias
510            doesn't exist anymore.
511    
512            * Thuban/UI/classgen.py: Remove some unused imports
513    
514    2003-05-14  Jonathan Coles   <[email protected]>
515    
516            * Thuban/Model/classgen.py (ClassGenerator.GenSingletonsFromList):
517            Fix docstring.
518            (ClassGenerator.GenUniformDistribution): Fix spelling of method name.
519            (ClassGenerator.GenQuantiles): Use the left/right brackets and min/max
520            values of the supplied range to determine the beginning and end
521            bounds of the generated classes.
522    
523            * Thuban/Model/range.py (Range.number_re): Now accepts floats that
524            do not have a leading 0 (.5 is now accepted as well as 0.5).
525    
526            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Fix name of method
527            call to ClassGenerator.GenUniformDistribution.
528    
529            * Thuban/UI/projdialog.py (ProjFrame.__do_layout): Fix Windows
530            layout bug with the 'Projection' label.
531    
532            * test/support.py (FloatTestCase): New. Needed for the Range tests.
533    
534            * test/test_range.py: New. Imported from SciParam.
535    
536    2003-05-12  Jonathan Coles   <[email protected]>
537    
538            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Replace call
539            to table.UniqueValues() with calls that retrieve all the values
540            from the table. This will need to be replaced by a method on table
541            which can simply return the list (perhaps more efficiently).
542    
543    2003-05-12  Jonathan Coles   <[email protected]>
544    
545            The return value of ClassGenerator.CalculateQuantiles has changed.
546            Refer to the documentation for details.
547    
548            * test/test_classgen.py: Modified Quantile tests to use the
549            new return values.
550    
551            * Thuban/Model/classgen.py
552            (ClassGenerator.GenQuantiles): Add comments describing the parameters,
553            use new return values from CalculateQuantiles to produce the correct
554            range bounds in the Classification.
555            (ClassGenerator.CalculateQuantiles): Add more comments describing
556            the return values and parameters. Make minor adjustments to improve
557            the legibility of the code. Fix problem with adjusted not being set
558            in most cases.
559    
560    2003-05-12  Frank Koormann <[email protected]>
561            
562            * Thuban/Model/save.py (XMLWriter.encode()): Explicite call to unicode
563            and latin1. Fixes #1851 finally.
564    
565    2003-05-09  Jonathan Coles   <[email protected]>
566    
567            * test/test_classgen.py: New. Tests the Quantile algorithm.
568    
569            * Thuban/Model/classgen.py (ClassGenerator.CalculateQuantiles):
570            Clean up debugging statement, add comments, fix a small bug in the
571            returned adjusted percentiles.
572            
573    2003-05-09  Jonathan Coles   <[email protected]>
574    
575            Introduces Range class from SciParam into the ClassGroupRange class,
576            and such ranges can now be saved and loaded from disk.
577    
578            Quantiles are now available in the Classification Generator.
579    
580            Initial support for building Queries on a table. Doesn't do anything
581            but run some tests.
582    
583            * Thuban/Model/classification.py: Explicit imports.
584            (ClassGroupRange): Use the Range class to store the underlying
585            range information. The interface remains the same, except for
586            GetRange(), and you can also supply a Range object as the min
587            parameter to SetRange or __init__.
588    
589            * Thuban/Model/load.py (XMLReader.encode): New. Encodes the given
590            string appropriately for use in Thuban. Fixes RTbug #1851.
591            (SessionLoader.end_projection): Handle the context of the
592            projection tag a bit better by looking at what objects are not
593            None. There was an assumption that a projection tag for a map
594            could occur before any layers.
595            (SessionLoader.start_clrange): Provide backward compatibility for
596            reading min/max values as well as the new range parameter.
597    
598            * Thuban/Model/map.py: Explicit imports.
599    
600            * Thuban/Model/resource.py: Import _.
601            (ProjFileSaver.write): write header using projfile.dtd.
602    
603            * Thuban/Model/save.py: Explicit imports.
604            (XMLWriter.encode): New. Encode the given string from a format
605            used by Thuban into UTF-8. Fixes RTbug #1851.
606    
607            * Thuban/UI/classgen.py: Explicit imports.
608            (ClassGenDialog.__init__): Clean up the code and add support
609            for Quantiles.
610            (ClassGenDialog.OnOK): Add support for Quantiles.
611            (GenQuantilesPanel): New. Input panel for Quantiles.
612            (ClassGenerator, CustomRamp, MonochromaticRamp, GreyRamp, RedRamp,
613            GreenRamp, BlueRamp, HotToColdRamp): Move to Thuban/Model/classgen.py
614    
615            * Thuban/Model/classgen.py: New. Contains all the classes named above.
616    
617            * Thuban/UI/classifier.py: Explicit imports.
618            (ClassTable.GetValueAsCust, ClassTable.__ParseInput,
619            ClassTable.SetValueAsCustom): Reworked to use new Range class.
620    
621            * Thuban/UI/legend.py: Explicit imports.
622    
623            * Thuban/UI/mainwindow.py: Add support for the Join Dialog. Added
624            a Table menu and associated method calls.
625            (MainWindow.choose_color): Removed. No longer needed.
626    
627            * Thuban/UI/projdialog.py (ProjFrame.__VerifyButtons): Save button
628            should be disabled if no projection is selected in the available
629            list.
630    
631            * Thuban/UI/renderer.py: Explicit imports.
632    
633            * Thuban/UI/tableview.py (TableGrid.OnRangeSelect): Fix some issues
634            with correctly selecting the rows and issuing the right events.
635            Be sure to call Skip() to allow the grid to do some of its own
636            handling which allows the rows to actually be selected.
637            (LayerTableGrid.select_shapes): Rename from select_shape. Supports
638            selecting multiple shapes.
639            (LayerTableFrame): Support for building Queries.
640            (LayerTableFrame.select_shapes): Allow multiple shapes to be selected.
641    
642            * Thuban/UI/tree.py: Explicit imports.
643    
644            * Thuban/UI/view.py (MapCanvas): Delegate "SelectedShapes" so the
645            table view can call it.
646    
647            * test/test_classification.py: Explicit imports.
648            (TestClassification.test_ClassGroupRange): Fix test for new
649            Range class.
650    
651            * Doc/thuban.dtd: Add range parameter for clrange.
652    
653            * Thuban/Model/range.py: Taken from SciParam. Used as the underlying
654            object in ClassGroupRange, and also uesd for inputting ranges in
655            the classifer table and elsewhere.
656    
657            * Thuban/UI/join.py: New. Initial Join dialog. No real functionality
658            yet.
659    
660    2003-05-09  Frank Koormann <[email protected]>
661    
662            * Thuban/UI/scalebar.py (DrawScaleBar): Draw only if interval > 0.0.
663    
664    2003-05-08  Frank Koormann <[email protected]>
665    
666            Coding style updates
667    
668            * test/test_scalebar.py: Replaced tab indentation by spaces.
669    
670            * Thuban/UI/scalebar.py: Explicit imports.
671    
672    2003-05-08  Frank Koormann <[email protected]>
673    
674            * Thuban/UI/scalebar.py
675            (ScaleBar.DrawScalebar): Format string bug fixed.
676    
677    2003-05-08  Frank Koormann <[email protected]>
678    
679            Reorganization of scalebar component (no wx in Thuban/Model)
680    
681            * Thuban/Model/scalebar.py: Rendering moved to Thuban/UI/scalebar.py
682            (deriveInterval):
683            Calculate scalebar interval and unit which fits in width for scale.
684            (roundInterval): Round float.
685    
686            * Thuban/UI/scalebar.py (ScaleBar): Scalebar rendering
687    
688            * test/test_scalebar.py: Test for Thuban/Model/scalebar.py methods.
689    
690            * Thuban/UI/legend.py: Import Thuban.UI.scalebar
691    
692    2003-05-08  Frank Koormann <[email protected]>
693    
694            * Thuban/UI/legend.py (ScalebarBitmap.SetCanvas):
695            Initialize ScaleBar with canvas.map
696    
697            * Thuban/Model/scalebar.py (ScaleBar.roundInterval()): New,
698            round intervals to display smarter lengths
699            (ScaleBar.DrawScalebar): Draw Scalebar only if the map contains a
700            layer. If the maps has no projection applied grey the scalebar.
701    
702    2003-05-07  Frank Koormann <[email protected]>
703            
704            Basic Scalebar features added.
705    
706            * Thuban/Model/scalebar.py (ScaleBar): New, scalebar rendering.
707    
708            * Thuban/UI/legend.py (LegendPanel): Added scalebar bitmap
709            (ScaleBarBitmap): New, links the scalebar bitmap with view messages
710            and the renderer.
711    
712            * Thuban/UI/view.py (MapCanvas.set_view_transform): Issue SCALE_CHANGED.
713    
714            * Thuban/UI/messages.py: SCALE_CHANGED added.
715    
716    2003-05-07  Bernhard Herzog  <[email protected]>
717    
718            * Thuban/Model/session.py (Session.__init__): New instance
719            variable shapestores to hold a list of all open shapestore objects
720            (Session.ShapeStores): New. Accessor method for the shapestores
721            list.
722            (Session._add_shapestore, Session._clean_weak_store_refs): New.
723            Internal methods to maintain the shapestores list.
724            (Session.Tables): New. Return all tables open in the session.
725            (Session.OpenShapefile): Insert the new ShapeStore into the
726            shapestores list.
727    
728            * test/test_session.py (TestSessionSimple.test_initial_state): Add
729            tests for ShapeStores and Tables
730            (TestSessionWithContent.test_shape_stores)
731            (TestSessionWithContent.test_tables): New. Test cases for
732            ShapeStores and Tables
733    
734    2003-05-07  Bernhard Herzog  <[email protected]>
735    
736            * Thuban/Model/transientdb.py (TransientTableBase.ReadRowAsDict):
737            Add comments about the optimizations used.
738            (AutoTransientTable.ReadValue, TransientTableBase.ReadValue): New.
739            Implement the ReadValue table interface method.
740    
741            * test/test_transientdb.py
742            (TestTransientTable.run_iceland_political_tests)
743            (TestTransientTable.test_transient_joined_table): Add tests for
744            ReadValue
745    
746  2003-05-07  Frank Koormann <[email protected]>  2003-05-07  Frank Koormann <[email protected]>
747    
748          * Resources/Bitmaps/fulllayerextent.xpm,          * Resources/Bitmaps/fulllayerextent.xpm,

Legend:
Removed from v.848  
changed lines
  Added in v.1021

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26