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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26