/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.999  
changed lines
  Added in v.1114

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26