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

Legend:
Removed from v.921  
changed lines
  Added in v.1015

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26