/[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 919 by bh, Fri May 16 17:29:48 2003 UTC revision 1024 by jan, Fri May 23 14:20:52 2003 UTC
# Line 1  Line 1 
1    2003-05-23  Jan-Oliver Wagner <[email protected]>
2    
3            * Thuban/UI/join.py (JoinDialog.OnJoin): Use _() for strings.
4            Use QueryTableFrame instead of TableFrame.
5    
6            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Prefix the
7            table window with 'Layer Table:' instead of 'Table:'.
8    
9    2003-05-23  Jan-Oliver Wagner <[email protected]>
10    
11            Give all tables a title via mix-in TitledObject.LayerShowTable
12    
13            * Thuban/Model/base.py (TitledObject.SetTitle): Call method 'issue'
14            only if it exists.
15    
16            * Thuban/Model/table.py (DBFTable, MemoryTable): mix-in TitledObject
17            and call its init-method with a default title. Remove Title() method.
18    
19            * Thuban/Model/transientdb.py (TransientTable, TransientJoinedTable,
20            AutoTransientTable): mix-in TitledObject and call its init-method with
21            a default title. Remove Title() method.
22    
23    2003-05-23  Bernhard Herzog  <[email protected]>
24    
25            * Thuban/Model/session.py (Session.AddShapeStore): Define
26            AddShapeStore analogously to AddTable.
27    
28            * test/test_session.py (TestSessionSimple.test_add_shapestore):
29            New. Test for AddShapeStore
30    
31    2003-05-23  Jan-Oliver Wagner <[email protected]>
32    
33            Introducing QueryTableFrame and a very coarse ShowTable implementation.
34    
35            * Thuban/UI/tableview.py (LayerTableFrame, QueryTableFrame): Split the
36            class LayerTableFrame into two classes, LayerTableFrame and QueryTableFrame.
37            The latter implements the selection GUI without dependency on a layer.
38            LayerTableFrame now is derived from QueryTableFrame and connects
39            to a layer.
40    
41            * Thuban/UI/mainwindow.py (MainWindow.TableShow): A very coarse
42            implementation that still needs work.
43    
44            * Thuban/Model/layer.py (Layer.TreeInfo): Added filename.
45    
46    2003-05-22  Frank Koormann  <[email protected]>
47    
48            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
49            Added "outer_join = False" as optional parameter.
50            (TransientJoinedTable.create): If outer join is true, perform a
51            "LEFT OUTER JOIN" instead of "JOIN", which preserves all records of
52            the left table. Records not matching are filled with 0 / None.
53    
54            * Thuban/UI/join.py (JoinDialog.__init__): Checkbox for outer join.
55            (JoinDialog.OnJoin): Consider outer join check box.
56    
57    2003-05-22  Bernhard Herzog  <[email protected]>
58    
59            * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a
60            somewhat safer way. Storing the traceback in a local variable can
61            lead to memory leaks
62    
63    2003-05-22  Bernhard Herzog  <[email protected]>
64    
65            * Thuban/UI/join.py (JoinDialog.OnJoin): Make sure to really call
66            the wxMessageDialog's Destroy() method.
67    
68    2003-05-22  Frank Koormann  <[email protected]>
69    
70            * Thuban/UI/join.py (JoinDialog.__init__): Make use of
71            TransientTable.Title()
72    
73    2003-05-22  Frank Koormann  <[email protected]>
74    
75            Join Dialog, initial version.
76    
77            * Thuban/UI/mainwindow.py (MainWindow.TableJoin): Removed print.
78    
79            * Thuban/UI/join.py (JoinDialog): Functional implementation of
80            former framework. Renamed Table1/Table2 to LeftTable/RightTable
81            in all occurences.
82    
83            * Thuban/Model/transientdb.py (TransientJoinedTable.__doc__):
84            Typo fixed.
85    
86    2003-05-22  Bernhard Herzog  <[email protected]>
87    
88            Give the tables titles so that the GUI can display more meaningful
89            names. For now the titles are fixed but depend on e.g. filenames
90            or the titles of the joined tables.
91    
92            * Thuban/Model/transientdb.py (TransientTable.Title)
93            (TransientJoinedTable.Title, AutoTransientTable.Title): New.
94    
95            * Thuban/Model/table.py (DBFTable.Title, MemoryTable.Title): New.
96    
97            * test/test_transientdb.py
98            (TestTransientTable.test_auto_transient_table_title): New. Test
99            for the Title method
100            (TestTransientTable.test_transient_joined_table)
101            (TestTransientTable.test_transient_table): Add test for the Title
102            methods
103    
104            * test/test_memory_table.py (TestMemoryTable.test_title): New.
105            Test for the Title method
106    
107            * test/test_dbf_table.py (TestDBFTable.test_title): New. Test for
108            the Title method
109    
110    2003-05-22  Bernhard Herzog  <[email protected]>
111    
112            * test/test_layer.py (TestLayer.setUp, TestLayer.tearDown):
113            Provide a better way to destroy the layers
114            (TestLayer.test_base_layer, TestLayer.test_arc_layer)
115            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
116            (TestLayer.test_polygon_layer, TestLayer.test_get_field_type): Use
117            the new way to destroy the layers.
118            (TestLayer.test_derived_store): New. Test for using a layer with a
119            DerivedShapeStore
120    
121            * Thuban/Model/layer.py (Layer.SetShapeStore): Only set the
122            filename if the shape store actually has one.
123    
124    2003-05-22  Bernhard Herzog  <[email protected]>
125    
126            * Thuban/Model/table.py (DBFTable.FileName): New. Accessor method
127            for the filename
128    
129            * test/test_dbf_table.py (TestDBFTable.test_filename): New. Test
130            for the FileName method
131            (TestDBFTableWriting.test_write): Fix spelling of filename
132    
133    2003-05-22  Thomas Koester  <[email protected]>
134    
135            * Thuban/Model/range.py, test/test_range.py: Brought over new Range
136            from SciParam that now really is immutable.
137    
138    2003-05-22  Frank Koormann  <[email protected]>
139    
140            Layer Top/Bottom placement added to legend.
141    
142            * Thuban/UI/legend.py
143            (LegendPanel._OnMoveTop(), LayerPanel._OnMoveBottom): New, methods
144            bound to tool events.
145            (LegendTree.MoveCurrentItemTop(), LegendTree.MoveCurrentItemBottom):
146            New, methods binding the event methods with the map methods.
147    
148            * Thuban/Model/map.py (Map.TopLayer(), Map.BottomLayer()): New, place
149            layer at top/bottom of layer stack.
150    
151            * Resources/Bitmaps/top_layer.xpm: New button icon.
152    
153            * Resources/Bitmaps/bottom_layer.xpm: New button icon.
154    
155    2003-05-22  Bernhard Herzog  <[email protected]>
156    
157            * Thuban/Model/session.py (Session.RemoveTable): New method to
158            remove tables
159    
160            * test/test_session.py (TestSessionSimple.test_remove_table): New.
161            Test for RemoveTable
162    
163    2003-05-22  Thomas Koester  <[email protected]>
164    
165            * Thuban/Model/classgen.py: Added short module doc string and CVS id.
166            (ClassGenerator.GenUniformDistribution): Use new Range __init__, too.
167    
168    2003-05-22  Bernhard Herzog  <[email protected]>
169    
170            Implement a way to discover dependencies between tables and
171            shapestores.
172    
173            * Thuban/Model/transientdb.py (TransientTableBase.Dependencies)
174            (TransientJoinedTable.Dependencies)
175            (AutoTransientTable.SimpleQuery): New. Implement the dependencies
176            interface
177            (TransientJoinedTable.__init__): Keep tack of the original table
178            objects in addition to the corresponding transient tables.
179    
180            * Thuban/Model/table.py (DBFTable.Dependencies)
181            (MemoryTable.Dependencies): New. Implement the dependencies
182            interface
183    
184            * Thuban/Model/data.py (ShapeTable): New. Helper class for
185            ShapefileStore
186            (ShapefileStore.__init__): Use ShapeTable instead of
187            AutoTransientTable
188            (ShapefileStore.Table, ShapefileStore.Shapefile): Add doc-strings
189            (ShapefileStore.FileName, ShapefileStore.FileType): New. Accessor
190            methods for filename and type
191            (ShapefileStore.Dependencies): New. Implement the dependencies
192            interface
193            (DerivedShapeStore): New class to replace SimpleStore. The main
194            difference to SimpleStore is that it depends not on a shapefile
195            but another shapestore which expresses the dependencies a bit
196            better
197            (SimpleStore.__init__): Add deprecation warning.
198    
199            * test/test_dbf_table.py (TestDBFTable.test_dependencies): New.
200            Test for the Dependencies method.
201    
202            * test/test_memory_table.py (TestMemoryTable.test_dependencies):
203            New. Test for the Dependencies method.
204    
205            * test/test_transientdb.py
206            (TestTransientTable.test_auto_transient_table_dependencies): New.
207            Test for the Dependencies method.
208            (TestTransientTable.test_transient_joined_table): Add test for the
209            Dependencies method.
210    
211            * test/test_session.py (TestSessionSimple.setUp)
212            (TestSessionSimple.tearDown): New. Implement a better way to
213            destroy the sessions.
214            (TestSessionSimple.test_initial_state)
215            (TestSessionSimple.test_add_table): Bind session to self.session
216            so that it's destroyed by tearDown
217            (TestSessionSimple.test_open_shapefile): New. Test for
218            OpenShapefile and the object it returns
219    
220    2003-05-22  Bernhard Herzog  <[email protected]>
221    
222            * Thuban/Model/session.py (Session.AddTable): New method to
223            register tables with the session.
224            (Session.Tables): Return the tables registered with AddTable too.
225    
226            * test/test_session.py (TestSessionSimple.test_add_table): New.
227            Test case for the AddTable method
228    
229    2003-05-22  Frank Koormann  <[email protected]>
230    
231            UI polishing updates: Place main buttons (OK, Cancel, etc) in the
232            lower right corner, center labels for selections, initialize controls
233            in reasonable order for keyboard navigation.
234    
235            * Thuban/UI/projdialog.py (ProjFrame.__init__, ProjFrame.__doLayout)
236            (ProjFrame.__DoOnProjAvail): Determine position of current projection
237            using the wxListBox.FindString() method. Still a problem (#1886)
238    
239            * Thuban/UI/classifier.py
240            (Classifier.__init__, SelectPropertiesDialog.__init__)
241    
242            * Thuban/UI/classgen.py (ClassGenDialog.__init__,
243            (ClassGenDialog.__DoOnGenTypeSelect): Moved initialization of the
244            different classification types from here to __init__.
245            (GenUniquePanel.__init__): Set the column width of the first field
246            in the Field ListCtrl to the full width.
247    
248            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Rename 'Save As'
249            Button to 'Export'. Center Buttons in Selection Box, set Focus to
250            Grid.
251            (LayerTableFrame.OnKeyDown()): New, bound to the grid with EVT_KEY_DOWN,
252            changes focus to the Selection when pressing "Alt-S".
253    
254            * Thuban/UI/legend.py (LegendTree.__SetVisibilityStyle): Only gray out
255            the text if not visible. The italic font sometimes exceeds the
256            rendering area.
257    
258    2003-05-21  Jonathan Coles   <[email protected]>
259    
260            * Thuban/UI/dock.py (DockFrame): Rename references to _OnClose
261            to OnClose so that Thuban closes correctly.
262    
263            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Call
264            DockFrame.OnClose, not DockFrame._OnClose.
265    
266    2003-05-21  Jonathan Coles   <[email protected]>
267    
268            * Thuban/Model/classgen.py (ClassGenerator.GenQuantiles): Remove
269            references to 'inf' and use new Range __init__ to pass floats
270            directly rather than converting them to strings first.
271            Fixes RTBug #1876.
272    
273            * Thuban/Model/classification.py (ClassGroupRange.SetRange):
274            Use new Range ___init__ to pass floats.
275    
276            * Thuban/Model/layer.py (RasterLayer.__init__): Test if the
277            filename is a valid image file. Throw IOError otherwise.
278    
279            * Thuban/Model/range.py: Brought over new Range from SciParam that
280            is immutable and has an __init__ which can accept floats.
281    
282            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Move OpenShapefile
283            into try block. AddLayer doesn't throw any exceptions anymore.
284            (MainWindow.AddRasterLayer): Move constructor of RasterLayer into
285            try block.
286    
287            * Thuban/UI/projdialog.py (GeoPanel.__init__): Put Degrees as
288            the first item in choices. Fixes RTBug #1882.
289    
290            * Thuban/UI/renderer.py (MapRenderer.render_map): Check if scale
291            has gone to 0 which is a serious problem. abort.
292            (MapRenderer.draw_raster_layer): Catch IOError seperately and
293            print the error from GDAL.
294    
295            * Thuban/UI/tableview.py (TableGrid.__init__): Call
296            ToggleEventListeners to turn on listening.
297            (TableGrid.ToggleEventListeners): New. Turns event listening on
298            and off so as to prevent excessive messages.
299            (LayerTableFrame.OnQuery): Use TableGrid.ToggleEventListeners
300            to suppress excessive messages when selecting many rows.
301            Fixes RTBug #1880.
302    
303            * Thuban/UI/view.py: Added checks against if scale == 0. This
304            is a serious problem that can occur when an image without
305            geo data is loading and causes the map projection bounds to
306            go to infinity. Right now, the solution is to simply try
307            to recover.
308    
309            * extensions/thuban/cpl_mfile.cpp (MFILEClose): Make sure
310            to set the MFILEReceiver attributes even if the data is NULL.
311    
312            * extensions/thuban/gdalwarp.cpp: Improved the error handling
313            and passed GDAL messages back up to the Python layer. Also
314            tried to fix some memory leaks that were present in the original
315            utility but didn't matter because the program aborted.
316    
317            * test/test_range.py: Copied over tests from SciParam. Removed
318            tests against importing. Fixes RTBug #1867.
319    
320    2003-05-21  Bernhard Herzog  <[email protected]>
321    
322            * test/test_load.py: Remove unused imports and restructure the
323            test code
324            (LoadSessionTest): Split into one class for each test and turn
325            LoadSessionTest itself into the base class for all such session
326            tests.
327            (ClassificationTest): New base class for load tests that test
328            classifications
329            (TestSingleLayer, TestLayerVisibility, TestClassification)
330            (TestLabels, TestLayerProjection, TestRasterLayer): New classes
331            for the individual tests
332    
333            * test/support.py (FileLoadTestCase.filename): New base class for
334            file loading tests
335    
336    2003-05-21  Jan-Oliver Wagner <[email protected]>
337    
338            * Resources/Projections/defaults.proj: Renamed 'Universal Transverse
339            Mercator' to 'UTM Zone 32' as a more convenient example.
340            Added 'Gauss Krueger Zone 6'.
341    
342            * Data/iceland_sample_raster.thuban: political polygon now
343            filled transparent to have the raster image visible at once.
344    
345    2003-05-21  Frank Koormann  <[email protected]>
346    
347            * Thuban/UI/mainwindow.py (MainWindow): Renamed _OnClose() back to
348            OnClose() to keep in sync with extensions. Internally Thuban
349            still uses "underscored" names.
350    
351    2003-05-20  Jonathan Coles   <[email protected]>
352    
353            This puts back Raster layer support. These layers support projections
354            through the GDAL library. Currently, the CVS version is being used.
355            There are no Debian packages available although this may change soon.
356            A GDAL driver was extended to support writing to memory rather to
357            files.
358    
359            There is still some work that needs to be done, such as some error
360            handling when loading invalid images or when there is a problem
361            projecting the image. This putback simply checks in the majority
362            of the work.
363    
364            * setup.py: Add gdalwarp library extension.
365    
366            * Thuban/Model/layer.py (BaseLayer.HasClassification): New.
367            Defaults to False, but can be overridden by subclasses if they
368            support classification.
369            (RasterLayer): New. Defines a new layer that represents an
370            image.
371    
372            * Thuban/Model/load.py (SessionLoader.__init__): Add rasterlayer
373            tag handler.
374            (SessionLoader.start_layer): Encode the filename.
375            (SessionLoader.start_rasterlayer, SessionLoader.end_rasterlayer):
376            New. Supports reading a rasterlayer tag.
377    
378            * Thuban/Model/map.py (Map.BoundingBox): Fix typo in comment.
379    
380            * Thuban/Model/save.py (XMLWriter.encode): Don't assume that we
381            get a string in Latin1. If we get such as string convert it to
382            unicode first, otherwise leave if alone before encoding.
383            (SessionSaver.write_layer): Add support for writing both Layers
384            and RasterLayers.
385    
386            * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):
387            The right argument may not be a string, it could also be a Column.
388    
389            * Thuban/UI/application.py (ThubanApplication.CreateMainWindow):
390            Make initial window size 600x400. Fixes RTBug #1872.
391    
392            * Thuban/UI/classifier.py (Classifier.__init__): Rearrange how
393            the dialog is constructed so that we can support layers that
394            do not have classifications.
395            (Classifier._OnTry): Only build a classification if the layer
396            supports one.
397    
398            * Thuban/UI/legend.py: Change all checks that a layer is an
399            instance of Layer into checks against BaseLayer.
400            (LegendTree.__FillTreeLayer): Only add children to a branch if
401            the layer supports classification.
402    
403            * Thuban/UI/mainwindow.py (MainWindow.NewSession,
404            MainWindow.OpenSession): Don't proceed with an action if the
405            user chooses Cancel when they are asked to save changes.
406            (MainWindow.AddRasterLayer): New. Open a dialog to allow the
407            user to select an image file. Create a new RasterLayer and add
408            it to the map.
409    
410            * Thuban/UI/renderer.py (MapRenderer.render_map): Add support
411            for rendering RasterLayer layers.
412            (MapRenderer.draw_raster_layer): Actually method that calls
413            the GDALWarp python wrapper and constructs an image from the
414            data returned.
415    
416            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Change the
417            Choices symbols to match those used in the table query method.
418            Replace deprecated method calls on table with new method names.
419    
420            * Thuban/UI/view.py (MapCanvas.set_view_transform): Try to limit
421            how small the scale can get. This still needs more testing.
422    
423            * extensions/thuban/bmpdataset.cpp: New, but copied from GDAL.
424            Provides a driver to output in .bmp format.
425    
426            * extensions/thuban/cpl_mfile.cpp, extensions/thuban/cpl_mfile.h:
427            New. Provides IO routines which write to memory, rather than a file.
428    
429            * extensions/thuban/gdalwarp.cpp: New, but basically a direct copy
430            of the gdalwarp utility provided in GDAL. Added function calls
431            that can be accessed from python.
432    
433            * Data/iceland_sample_raster.thuban: New. Sample file that uses
434            a raster layer.
435    
436            * Data/iceland/island.tfw, Data/iceland/island.tif: New. Raster
437            layer image data.
438    
439            * Doc/thuban.dtd: Added rasterlayer attribute definition.
440    
441            * test/test_layer.py, test/test_load.py, test/test_save.py: Added
442            tests associated with the raster layer code.
443    
444            * test/test_transientdb.py
445            (TestTransientTable.test_auto_transient_table_query): Added a test
446            for using a Column object as the "right" parameter to a query.
447    
448    2003-05-19  Frank Koormann  <[email protected]>
449    
450            * Thuban/version.py (get_changelog_date):
451            Catch exceptions if ChangeLog does not exist.
452    
453            * Thuban/UI/view.py (MapCanvas.Export): Bugfix
454    
455    2003-05-19  Frank Koormann  <[email protected]>
456    
457            Extended version information for Thuban
458    
459            * Thuban/version.py: New, version information for Thuban: Last
460            modification date and last ChangeLog entry date.
461    
462            * Thuban/UI/mainwindow.py (MainWindow.About()): Extended version
463            information: Display Thuban, wxPython and Python version.
464    
465    2003-05-16  Bernhard Herzog  <[email protected]>
466    
467            * Thuban/Model/save.py: Remove some unused imports including the
468            __future__ import for nested_scopes as Thuban relies on Python 2.2
469            now.
470            (XMLWriter.encode): Remove the special case for a None argument.
471            In the saver encode is always called with a string argument.
472    
473  2003-05-16  Bernhard Herzog  <[email protected]>  2003-05-16  Bernhard Herzog  <[email protected]>
474    
475          * Thuban/UI/__init__.py: Remove the work-around for the locale bug          * Thuban/UI/__init__.py: Remove the work-around for the locale bug

Legend:
Removed from v.919  
changed lines
  Added in v.1024

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26