/[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 952 by frank, Wed May 21 14:21:23 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]>  2003-05-21  Frank Koormann  <[email protected]>
395    
396          * Thuban/UI/mainwindow.py (MainWindow): Renamed _OnClose() back to          * Thuban/UI/mainwindow.py (MainWindow): Renamed _OnClose() back to

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26