/[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 995 by bh, Thu May 22 18:05:25 2003 UTC revision 1109 by jonathan, Fri May 30 06:31:48 2003 UTC
# Line 1  Line 1 
1    2003-05-30  Jonathan Coles   <[email protected]>
2    
3            * Thuban/Model/classgen.py: Remove ClassGenerator class but make
4            all the methods functions. Fixes RTBug #1903.
5    
6            * Thuban/Model/map.py (Map.TopLayer, Map.BottomLayer): Renamed
7            to MoveLayerToTop and MoveLayerToBottom respectively. Fixes
8            RTBug #1907.
9    
10            * Thuban/UI/classgen.py: Use classgen functions that were part
11            of the ClassGenerator class. Put try/finally blocks around
12            code that uses wxBeginBusyCursor()/wxEndBusyCursor(). Fixes
13            RTBug #1904.
14    
15            * Thuban/UI/classifier.py: Remove unused import of ClassGenerator.
16    
17            * Thuban/UI/legend.py: The legend was cleared and repopulated any
18            time something changed which caused some state to be lost such
19            as which children were expanded or collapsed. Fixes RTBug #1901.
20            (LegendTree._OnMsgMapLayersAdded): Add only new layers.
21            (LegendTree.__OnMsgMapLayersRemoved): Remove layers that exist in
22            the legend but not in the map.
23            (LegendTree.__FillTree): Move main functionality out into smaller
24            methods that can be used by other methods.
25            (LegendTree.__FillTreeLayer): Reuse old slots in the image list
26            if they are available.
27            (LegendTree.DeleteAllItems): Renamed from __DeleteAllItems so
28            that we override the wxTreeCtrl method. Iterate over children
29            and call __RemoveLayer.
30            (LegendTree.__AddLayer): New. Add a new layer to the legend.
31            (LegendTree.__RemoveLayer): Remove a layer from the legend.
32            (LegendTree.DeleteChildren): New, overrides wxTreeCtrl method.
33            Should only be called with the id of a layer branch.
34            (LegendTree.GetRootItem): New, overrides wxTreeCtrl method.
35            Returns the root item or creates one if necessary.
36    
37            * Thuban/UI/renderer.py (MapRenderer.draw_raster_layer): Call
38            ProjectRasterFile with tuple arguments instead of strings.
39    
40            * Thuban/UI/tableview.py (QueryTableFrame.OnQuery): Wrap code
41            with try/finally. Fixes RTBug #1904.
42    
43            * Thuban/UI/view.py (MapCanvas.OnPaint): Wrap code
44            with try/finally. Fixes RTBug #1904.
45            (MapCanvas.FitSelectedToWindow): If a single point is selected
46            simply center it on the display. Fixes RTBug #1849.
47    
48            * extensions/thuban/gdalwarp.cpp: Removed code that allowed gdalwarp
49            to be compiled as a standalone app. Now the code can only be
50            called from Python which simplifies the parameter passing.
51            (ProjectRasterFile): Handle Python arguments. Remove code that
52            checks for a destination dataset. Add more clean up code.
53    
54            * test/test_map.py (TestMapWithContents.test_raise_layer_top,
55            TestMapWithContents.test_lower_layer_bottom):
56            Test Map.MoveLayerToTop() and Map.MoveLayerToBottom() respectively.
57            Fixes RTBug #1907.
58    
59            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Apply a full
60            extent to the map when the legend is toggled. Fixes RTBug #1881.
61    
62    2003-05-29  Jan-Oliver Wagner <[email protected]>
63    
64            * Thuban/UI/tableview.py (LayerTableFrame.OnClose): Bug-fix: Now
65            unsubscribes all that is subcribed in __init__.
66    
67    2003-05-28  Bernhard Herzog  <[email protected]>
68    
69            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer)
70            (MainWindow.CanDuplicateLayer): New methods to implement the
71            Layer/Duplicate command.
72            (layer_duplicate command): New.
73            (main_menu): Add layer_duplicate to the Layer menu.
74    
75    2003-05-28  Bernhard Herzog  <[email protected]>
76    
77            * Thuban/UI/tableview.py (NullRenderer.Draw): New. Our own
78            renderer so that NULL/None values get displayed differently (by a
79            gray rectangle).
80            (TableGrid.__init__): Override the default renderers
81    
82    2003-05-28  Bernhard Herzog  <[email protected]>
83    
84            * Thuban/Model/layer.py (Layer.SetShapeStore): Set the
85            classification to "None" if the type of the field has changed.
86    
87            * test/test_layer.py (SetShapeStoreTests): New. Class with a few
88            test for the Layer.SetShapeStore method
89    
90    2003-05-28  Jan-Oliver Wagner <[email protected]>
91    
92            * Thuban/Model/layer.py (Layer.TreeInfo): Fixed a bug (a layer
93            does not necessarily have a filename).
94    
95    2003-05-28  Jan-Oliver Wagner <[email protected]>
96    
97            * Thuban/UI/mainwindow.py (MainWindow.TableClose, MainWindow.TableShow):
98            sort the selection list for the dialog.
99    
100    2003-05-28  Frank Koormann  <[email protected]>
101    
102            * extensions/thuban/wxproj.cpp
103            (project_point): Removed cast to int for projected point coordinates.
104            (shape_centroid): Return last point if all polygon vertices fall
105            to one point.
106    
107    2003-05-28  Bernhard Herzog  <[email protected]>
108    
109            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
110            with layers that don't have shapestores, i.e. raster layers.
111    
112    2003-05-28  Bernhard Herzog  <[email protected]>
113    
114            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
115            when determining the title from the filename.
116    
117            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
118            reflect changes in the way the title is derived from the filename
119    
120    2003-05-28  Frank Koormann  <[email protected]>
121    
122            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
123            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
124    
125    2003-05-27  Bernhard Herzog  <[email protected]>
126    
127            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
128            delegate SelectedLayer.
129            (MainWindow.LayerUnjoinTable): Implement.
130            (_can_unjoin): New. Helper function for the sensitivity of the
131            layer/unjoin command.
132    
133            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
134            (DerivedShapeStore.OrigShapeStore): New. Return the original
135            shapestore. Used to figure out how to unjoin.
136            (DerivedShapeStore.Shapefile): Fix a typo.
137    
138    2003-05-27  Bernhard Herzog  <[email protected]>
139    
140            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
141            well
142            (JoinDialog.__init__): Use the layer parameter and only build the
143            left choice when a layer is given
144            (JoinDialog.OnJoin): Handle layer joins as well
145            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
146            that the user selects the "Select..." item. The sensitivitly
147            updating is now in update_sensitivity
148            (JoinDialog.y): New method to refactor the sensitivity update of
149            the join button into its own method.
150    
151            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
152    
153    2003-05-27  Bernhard Herzog  <[email protected]>
154    
155            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
156            iff there are unreferenced tables in the session
157    
158    2003-05-27  Bernhard Herzog  <[email protected]>
159    
160            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
161    
162            * Thuban/Model/session.py (Session.UnreferencedTables): New method
163            to return tables that are not referenced by other tables or shape
164            stores and can be removed.
165            (Session.RemoveTable): Issue a TABLE_REMOVED message after
166            removing the table
167    
168            * Thuban/UI/mainwindow.py: Remove unused imports
169            (MainWindow.TableClose): Implement.
170    
171            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
172            messages so that the frame will be automatically closed when a new
173            session is opened or the table is removed.
174            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
175            __init__
176            (TableFrame.close_on_session_replaced)
177            (TableFrame.close_on_table_removed): New. Subscribers that close
178            the window
179    
180            * test/test_session.py (TestSessionMessages.test_remove_table)
181            (TestSessionSimple.test_remove_table): Move the test to
182            TestSessionSimple and add test for the TABLE_REMOVED message
183            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
184            (TestSessionSimple.test_unreferenced_tables) New. Test for the
185            UnreferencedTables method.
186            (UnreferencedTablesTests): New. Class with some more sophisticated
187            tests for UnreferencedTables.
188    
189    2003-05-27  Frank Koormann  <[email protected]>
190    
191            * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
192            display has some unwanted side effects. Removed again.
193    
194    2003-05-27  Frank Koormann  <[email protected]>
195    
196            * Resources/Bitmaps/legend_icon_layer.xpm: New, icon for legend.
197    
198            * Thuban/UI/legend.py (LegendTree.__FillTree): Use "legend_icon_layer"
199    
200    2003-05-27  Jan-Oliver Wagner <[email protected]>
201    
202            * test/test_menu.py (MenuTest.test): Added test for
203            Menu.RemoveItem().
204    
205            * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
206            the menu.
207    
208    2003-05-27  Frank Koormann  <[email protected]>
209            
210            Nonmodal dialogs without parent (i.e. they can fall behind the main
211            window)
212    
213            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Explicitly destroy
214            all dialogs in the dialogs dictionary and the canvas.
215    
216            * Thuban/UI/dialogs.py (NonModalNonParentDialog): New class, without
217            parent, i.e. can fall behind other windows.
218            (NonModalDialog.OnClose): Check is dialog is in mainwindow.dialog
219            dictionary before removing it.
220    
221            * Thuban/UI/classifier.py: Dialog derived from NonModalNonParentDialog
222    
223            * Thuban/UI/projdialog.py: Dialog derived from NonModalNonParentDialog
224            * Thuban/UI/tableview.py: Dialog derived from NonModalNonParentDialog
225            * Thuban/UI/tree.py: Dialog derived from NonModalNonParentDialog
226    
227    2003-05-27  Bernhard Herzog  <[email protected]>
228    
229            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): New. Open a
230            tableview dialog
231            (MainWindow.TableShow): Use ShowTableView to open the dialogs.
232            Also, don't use the table's titles as the dialog names. The titles
233            aren't guaranteed to be unique.
234            (MainWindow.TableOpen): Open a table view dialog after opening the
235            table
236    
237    2003-05-27  Bernhard Herzog  <[email protected]>
238    
239            * Thuban/UI/mainwindow.py: Remove the Table/Hide menu item. Its
240            effect can be achieved by simply closing the window showing the
241            table.
242            (MainWindow.TableHide): Removed.
243            (main_menu): Removed "table_hide"
244    
245    2003-05-27  Frank Koormann  <[email protected]>
246    
247            Fix legend tree display problems under Win32
248    
249            * Thuban/UI/legend.py:  BMP_SIZE_W = 15
250            (LegendTree.__FillTree): Display "legend_icon_map.xpm" with layer title.
251            (LegendTree.__FillTreeLayer): Explicitely set SelectedImage.
252    
253            * Resources/Bitmaps/legend_icon_map.xpm: New icon for legend.
254    
255    2003-05-27  Jan-Oliver Wagner <[email protected]>
256    
257            * Thuban/UI/menu.py (Menu.InsertSeparator): Additional optional parameter
258            'after' now allows to insert separators almost anywhere in the menu.
259    
260    2003-05-27  Frank Koormann  <[email protected]>
261    
262            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Underline the
263            "S" of selection box label to hint on hot key (Alt-S). Works under
264            Win32 but is ignored under GTK.
265    
266    2003-05-26  Frank Koormann  <[email protected]>
267    
268            * Thuban/UI/projdialog.py (ProjFrame.__do_layout, ProjPanel._DoLayout):
269            Center Choices.
270    
271    2003-05-26  Bernhard Herzog  <[email protected]>
272    
273            Remove the Precision methods again. They're too DBF specific to be
274            part of the table interface and they're only used in table_to_dbf
275            anyway.
276            
277            * Thuban/Model/transientdb.py (TransientTableBase.Width):Use a
278            fixed precision of 12 for doubles.
279            (TransientTableBase.Precision): Removed
280            (AutoTransientTable.Width): Delegate to self.table.
281    
282            * Thuban/Model/table.py (DBFTable.Precision)
283            (MemoryTable.Precision): Removed.
284            (MemoryTable.Width): Use a fixed precision of 12 for doubles.
285            (table_to_dbf): Use a fixed precision of 12 for floats unless the
286            column object specifies something else.
287    
288            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): New.
289            test for table_to_dbf
290    
291    2003-05-26  Bernhard Herzog  <[email protected]>
292    
293            * test/test_transientdb.py
294            (TestTransientTable.run_iceland_political_tests): Fix a comment.
295    
296    2003-05-26  Bernhard Herzog  <[email protected]>
297    
298            * Thuban/UI/mainwindow.py (MainWindow.TableOpen): Real
299            implementation. Mark parts of the file format strings for
300            localization.
301    
302            * Thuban/Model/session.py (Session.OpenTableFile): New. Open a dbf
303            file and add the table to the tables managed by the session
304    
305            * test/test_session.py (TestSessionSimple.test_open_table_file):
306            New. test case for OpenTableFile
307    
308    2003-05-26  Jan-Oliver Wagner <[email protected]>
309    
310            * Thuban/UI/controls.py, Thuban/UI/identifyview.py, Thuban/UI/join.py,
311            Thuban/UI/labeldialog.py, Thuban/UI/mainwindow.py,
312            Thuban/UI/proj4dialog.py, Thuban/UI/tableview.py, Thuban/UI/view.py:
313            Replace the true/false of wxWindows by True/False of Python 2.2.1.
314    
315    2003-05-26  Jan-Oliver Wagner <[email protected]>
316    
317            * Thuban/UI/tableview.py (LayerTableFrame.__init__): If there is
318            already a selection present, update the grid accordingly.
319    
320            * Thuban/UI/mainwindow.py (MainWindow.TableShow): Make the dialog
321            resizeable and increase its initial size.
322    
323    2003-05-26  Frank Koormann  <[email protected]>
324    
325            Table export functionality
326    
327            * Thuban/Model/table.py (DBFTable.Width, MemoryTable.Width):
328            Return width (in characters) for a column.
329            (DBFTable.Precision, MemoryTable.Precision): Return decimal precision.
330            (table_to_dbf): Write table to dbf file.
331            (table_to_csv): Write table to csv file.
332    
333            * Thuban/Model/transientdb.py (TransientTableBase.Width,
334            TransientTableBase.Precision): Return column width and precision.
335    
336            * Thuban/UI/tableview.py (QueryTableFrame.OnSaveAs): Call table_to_dbf
337            or table_to_csv depending on file selection.
338    
339            * test/test_dbf_table.py:
340            Test table_to_dbf (extension of former part of test).
341    
342            * test/test_csv_table.py:
343            Test table_to_csv.
344    
345    2003-05-23  Jan-Oliver Wagner <[email protected]>
346    
347            * Thuban/UI/join.py (JoinDialog.OnJoin): Use _() for strings.
348            Use QueryTableFrame instead of TableFrame.
349    
350            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Prefix the
351            table window with 'Layer Table:' instead of 'Table:'.
352    
353    2003-05-23  Jan-Oliver Wagner <[email protected]>
354    
355            Give all tables a title via mix-in TitledObject.LayerShowTable
356    
357            * Thuban/Model/base.py (TitledObject.SetTitle): Call method 'issue'
358            only if it exists.
359    
360            * Thuban/Model/table.py (DBFTable, MemoryTable): mix-in TitledObject
361            and call its init-method with a default title. Remove Title() method.
362    
363            * Thuban/Model/transientdb.py (TransientTable, TransientJoinedTable,
364            AutoTransientTable): mix-in TitledObject and call its init-method with
365            a default title. Remove Title() method.
366    
367    2003-05-23  Bernhard Herzog  <[email protected]>
368    
369            * Thuban/Model/session.py (Session.AddShapeStore): Define
370            AddShapeStore analogously to AddTable.
371    
372            * test/test_session.py (TestSessionSimple.test_add_shapestore):
373            New. Test for AddShapeStore
374    
375    2003-05-23  Jan-Oliver Wagner <[email protected]>
376    
377            Introducing QueryTableFrame and a very coarse ShowTable implementation.
378    
379            * Thuban/UI/tableview.py (LayerTableFrame, QueryTableFrame): Split the
380            class LayerTableFrame into two classes, LayerTableFrame and QueryTableFrame.
381            The latter implements the selection GUI without dependency on a layer.
382            LayerTableFrame now is derived from QueryTableFrame and connects
383            to a layer.
384    
385            * Thuban/UI/mainwindow.py (MainWindow.TableShow): A very coarse
386            implementation that still needs work.
387    
388            * Thuban/Model/layer.py (Layer.TreeInfo): Added filename.
389    
390    2003-05-22  Frank Koormann  <[email protected]>
391    
392            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
393            Added "outer_join = False" as optional parameter.
394            (TransientJoinedTable.create): If outer join is true, perform a
395            "LEFT OUTER JOIN" instead of "JOIN", which preserves all records of
396            the left table. Records not matching are filled with 0 / None.
397    
398            * Thuban/UI/join.py (JoinDialog.__init__): Checkbox for outer join.
399            (JoinDialog.OnJoin): Consider outer join check box.
400    
401    2003-05-22  Bernhard Herzog  <[email protected]>
402    
403            * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a
404            somewhat safer way. Storing the traceback in a local variable can
405            lead to memory leaks
406    
407    2003-05-22  Bernhard Herzog  <[email protected]>
408    
409            * Thuban/UI/join.py (JoinDialog.OnJoin): Make sure to really call
410            the wxMessageDialog's Destroy() method.
411    
412    2003-05-22  Frank Koormann  <[email protected]>
413    
414            * Thuban/UI/join.py (JoinDialog.__init__): Make use of
415            TransientTable.Title()
416    
417    2003-05-22  Frank Koormann  <[email protected]>
418    
419            Join Dialog, initial version.
420    
421            * Thuban/UI/mainwindow.py (MainWindow.TableJoin): Removed print.
422    
423            * Thuban/UI/join.py (JoinDialog): Functional implementation of
424            former framework. Renamed Table1/Table2 to LeftTable/RightTable
425            in all occurences.
426    
427            * Thuban/Model/transientdb.py (TransientJoinedTable.__doc__):
428            Typo fixed.
429    
430    2003-05-22  Bernhard Herzog  <[email protected]>
431    
432            Give the tables titles so that the GUI can display more meaningful
433            names. For now the titles are fixed but depend on e.g. filenames
434            or the titles of the joined tables.
435    
436            * Thuban/Model/transientdb.py (TransientTable.Title)
437            (TransientJoinedTable.Title, AutoTransientTable.Title): New.
438    
439            * Thuban/Model/table.py (DBFTable.Title, MemoryTable.Title): New.
440    
441            * test/test_transientdb.py
442            (TestTransientTable.test_auto_transient_table_title): New. Test
443            for the Title method
444            (TestTransientTable.test_transient_joined_table)
445            (TestTransientTable.test_transient_table): Add test for the Title
446            methods
447    
448            * test/test_memory_table.py (TestMemoryTable.test_title): New.
449            Test for the Title method
450    
451            * test/test_dbf_table.py (TestDBFTable.test_title): New. Test for
452            the Title method
453    
454    2003-05-22  Bernhard Herzog  <[email protected]>
455    
456            * test/test_layer.py (TestLayer.setUp, TestLayer.tearDown):
457            Provide a better way to destroy the layers
458            (TestLayer.test_base_layer, TestLayer.test_arc_layer)
459            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
460            (TestLayer.test_polygon_layer, TestLayer.test_get_field_type): Use
461            the new way to destroy the layers.
462            (TestLayer.test_derived_store): New. Test for using a layer with a
463            DerivedShapeStore
464    
465            * Thuban/Model/layer.py (Layer.SetShapeStore): Only set the
466            filename if the shape store actually has one.
467    
468  2003-05-22  Bernhard Herzog  <[email protected]>  2003-05-22  Bernhard Herzog  <[email protected]>
469    
470          * Thuban/Model/table.py (DBFTable.FileName): New. Accessor method          * Thuban/Model/table.py (DBFTable.FileName): New. Accessor method

Legend:
Removed from v.995  
changed lines
  Added in v.1109

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26