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

Legend:
Removed from v.986  
changed lines
  Added in v.1116

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26