/[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 972 by jonathan, Wed May 21 17:32:05 2003 UTC revision 1143 by bh, Tue Jun 10 09:42:10 2003 UTC
# Line 1  Line 1 
1    2003-06-10  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/Model/messages.py (LAYER_SHAPESTORE_REPLACED): New
4            message.
5    
6            * Thuban/Model/layer.py (Layer.SetShapeStore): Send
7            LAYER_SHAPESTORE_REPLACED when the shapestore changes. A
8            LAYER_CHANGED will still be sent if the classification changes.
9    
10            * Thuban/UI/classifier.py (Classifier.__init__): Add the map as
11            parameter so we can subscribe to some of its messages
12            (Classifier.__init__): Subscribe to the map's MAP_LAYERS_REMOVED
13            and the layer's LAYER_SHAPESTORE_REPLACED
14            (Classifier.unsubscribe_messages): New. Unsubscribe from message
15            subscribed to in __init__
16            (Classifier.map_layers_removed)
17            (Classifier.layer_shapestore_replaced): receivers for the messages
18            subscribed to in __init__. Unsubscribe and close the dialog
19    
20            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): Pass
21            the map to the Classifier dialog
22    
23            * test/test_layer.py (SetShapeStoreTests): Derive from
24            SubscriberMixin as well so we can test messages
25            (SetShapeStoreTests.setUp): Subscribe to some of the layer's
26            messages
27            (SetShapeStoreTests.tearDown): Clear the messages again
28            (SetShapeStoreTests.test_sanity): Expand the doc-string and check
29            for the modified flag too
30            (SetShapeStoreTests.test_set_shape_store_modified_flag): New test
31            to check whether SetShapeStore sets the modified flag
32            (SetShapeStoreTests.test_set_shape_store_different_field_name)
33            (SetShapeStoreTests.test_set_shape_store_same_field)
34            (SetShapeStoreTests.test_set_shape_store_same_field_different_type):
35            Add tests for the messages. This checks both the new
36            LAYER_SHAPESTORE_REPLACED and the older LAYER_CHANGED
37    
38    2003-06-06  Jan-Oliver Wagner <[email protected]>
39    
40            * Thuban/UI/mainwindow.py: Improved and partly added help texts for
41            the menu items.
42    
43    2003-06-05  Frank Koormann  <[email protected]>
44    
45            * Thuban/UI/identifyview.py (IdentifyView.__init__):
46            Layout reimplemented without panel. Make life easier to fit the list
47            in the dialog.
48    
49    2003-06-05  Frank Koormann  <[email protected]>
50    
51            * Thuban/UI/projdialog.py (ProjFrame.__init__): Fill the projchoice
52            once on initialisation (Former implementation resulted in multiple
53            entries for each projection).
54            (ProjFrame.__FillAvailList): selectProj as second optional parameter,
55            if set, select the projection found under the specified name. This
56            overwrites any other selection estimate.
57            Removed projchoice filling from this method.
58            (ProjFrame._OnSave, ProjFrame._OnAddToList):
59            Updated call of ProjFrame.__FillAvailList
60            (LCCPanel._DoLayout): Moved parameter controls in more common order.
61    
62            * Resources/Projections/defaults.proj: Extended defaults representing
63            various common European projections.
64    
65    2003-06-05  Frank Koormann  <[email protected]>
66    
67            * Thuban/UI/identifyview.py (IdentifyView.__init__):
68            Use ListCtrl instead of GridCtrl
69    
70            * Thuban/Model/resource.py:
71            Guess location of .thuban directory from tempdir parent directory.
72    
73            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
74            Guess location of .thuban directory from tempdir parent directory.
75    
76    2003-06-04  Bernhard Herzog  <[email protected]>
77    
78            Do not cache the values returned by the tree widget's
79            GetFirstChild and GetNextChild methods because it led to lots of
80            segfaults. The new way requires more brute force but is more
81            reliable.
82    
83            * Thuban/UI/legend.py (LegendTree.__init__): Remove instance
84            variable layer2id
85            (LegendTree.find_layer): New method to do with brute force what
86            layer2id tried to accomplish
87            (LegendTree._OnMsgLayerChanged)
88            (LegendTree._OnMsgLayerTitleChanged, LegendTree.__ShowHideLayer):
89            Use find_layer instead of layer2id
90            (LegendTree.__RemoveLayer, LegendTree.__AddLayer): No need to
91            update layer2id anymore
92            (LegendTree._OnMsgMapLayersRemoved)
93            (LegendTree._OnMsgMapLayersAdded): Get by without layer2id.
94    
95    2003-06-03  Thomas Koester  <[email protected]>
96    
97            * Thuban/Model/classgen.py (GenQuantiles0): New function.
98    
99    2003-06-02  Bernhard Herzog  <[email protected]>
100    
101            * Thuban/UI/mainwindow.py (layer_rename command, table_rename command):
102            New commands.
103            (main_menu): Add the new commands.
104            (MainWindow.TableRename): New. Implementation of the table_rename
105            command.
106            (MainWindow.RenameLayer): New. Implementation of the layer_rename
107            command.
108    
109            * Thuban/Model/session.py (Session.AddTable): call self.changed to
110            set the modified flag
111    
112            * test/test_session.py (TestSessionSimple.test_add_table): Test
113            whether the modified flag is set properly
114    
115            * Thuban/Model/base.py (TitledObject.SetTitle): Call changed
116            instead of issue so that the modified flags get updated.
117    
118            * test/test_base.py (SomeTitledObject): Derive from Modifiable
119            instead of Publisher to reflect reality better and to accomodate
120            the fact that SetTitle now calls changed instead of issue
121    
122    2003-06-02  Bernhard Herzog  <[email protected]>
123    
124            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Resource
125            acquisition has to happen before the try in a try-finally.
126    
127    2003-06-02  Bernhard Herzog  <[email protected]>
128    
129            * Thuban/UI/legend.py (LegendTree._OnMsgMapLayersRemoved): It's
130            possible that a layer is removed that is not currently selected in
131            the legend so don't check for this.
132    
133    2003-05-30  Bernhard Herzog  <[email protected]>
134    
135            * Thuban/Model/layer.py (Layer.Destroy): Set all instance
136            variables to None that have direct or indirect references to
137            shapefiles or dbf files to make sure that they do go away and the
138            files are closed.
139    
140    2003-05-30  Bernhard Herzog  <[email protected]>
141    
142            * Thuban/UI/legend.py (LegendTree.GetRootItem): Reset
143            availImgListIndices when a new image list is created
144            
145    2003-05-30  Bernhard Herzog  <[email protected]>
146    
147            * Thuban/UI/legend.py (LegendTree.__init__): New instance variable
148            changing_selection to indicate whether the LegendTree code itself
149            is currently changing the selection
150            (LegendTree.normalize_selection): New method to normalize the
151            selection by selecting the layer item even if the user clicked on
152            the classification.
153            (LegendTree._OnSelChanged): normalize the selection. This works
154            around a bug in wx which doesn't keep track of the selection
155            properly when subtrees are deleted.
156    
157    2003-05-30  Bernhard Herzog  <[email protected]>
158    
159            * Thuban/UI/view.py (MapCanvas.set_view_transform): Limit the
160            maximum and minimum scale factors.
161    
162            * test/test_classgen.py (ClassGenTest.test): Update to reflect the
163            changes in classgen.py
164    
165    2003-05-30  Jonathan Coles   <[email protected]>
166    
167            * Thuban/Model/classgen.py: Remove ClassGenerator class but make
168            all the methods functions. Fixes RTBug #1903.
169    
170            * Thuban/Model/map.py (Map.TopLayer, Map.BottomLayer): Renamed
171            to MoveLayerToTop and MoveLayerToBottom respectively. Fixes
172            RTBug #1907.
173    
174            * Thuban/UI/classgen.py: Use classgen functions that were part
175            of the ClassGenerator class. Put try/finally blocks around
176            code that uses wxBeginBusyCursor()/wxEndBusyCursor(). Fixes
177            RTBug #1904.
178    
179            * Thuban/UI/classifier.py: Remove unused import of ClassGenerator.
180    
181            * Thuban/UI/legend.py: The legend was cleared and repopulated any
182            time something changed which caused some state to be lost such
183            as which children were expanded or collapsed. Fixes RTBug #1901.
184            (LegendTree._OnMsgMapLayersAdded): Add only new layers.
185            (LegendTree.__OnMsgMapLayersRemoved): Remove layers that exist in
186            the legend but not in the map.
187            (LegendTree.__FillTree): Move main functionality out into smaller
188            methods that can be used by other methods.
189            (LegendTree.__FillTreeLayer): Reuse old slots in the image list
190            if they are available.
191            (LegendTree.DeleteAllItems): Renamed from __DeleteAllItems so
192            that we override the wxTreeCtrl method. Iterate over children
193            and call __RemoveLayer.
194            (LegendTree.__AddLayer): New. Add a new layer to the legend.
195            (LegendTree.__RemoveLayer): Remove a layer from the legend.
196            (LegendTree.DeleteChildren): New, overrides wxTreeCtrl method.
197            Should only be called with the id of a layer branch.
198            (LegendTree.GetRootItem): New, overrides wxTreeCtrl method.
199            Returns the root item or creates one if necessary.
200    
201            * Thuban/UI/renderer.py (MapRenderer.draw_raster_layer): Call
202            ProjectRasterFile with tuple arguments instead of strings.
203    
204            * Thuban/UI/tableview.py (QueryTableFrame.OnQuery): Wrap code
205            with try/finally. Fixes RTBug #1904.
206    
207            * Thuban/UI/view.py (MapCanvas.OnPaint): Wrap code
208            with try/finally. Fixes RTBug #1904.
209            (MapCanvas.FitSelectedToWindow): If a single point is selected
210            simply center it on the display. Fixes RTBug #1849.
211    
212            * extensions/thuban/gdalwarp.cpp: Removed code that allowed gdalwarp
213            to be compiled as a standalone app. Now the code can only be
214            called from Python which simplifies the parameter passing.
215            (ProjectRasterFile): Handle Python arguments. Remove code that
216            checks for a destination dataset. Add more clean up code.
217    
218            * test/test_map.py (TestMapWithContents.test_raise_layer_top,
219            TestMapWithContents.test_lower_layer_bottom):
220            Test Map.MoveLayerToTop() and Map.MoveLayerToBottom() respectively.
221            Fixes RTBug #1907.
222    
223            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Apply a full
224            extent to the map when the legend is toggled. Fixes RTBug #1881.
225    
226    2003-05-29  Jan-Oliver Wagner <[email protected]>
227    
228            * Thuban/UI/tableview.py (LayerTableFrame.OnClose): Bug-fix: Now
229            unsubscribes all that is subcribed in __init__.
230    
231    2003-05-28  Bernhard Herzog  <[email protected]>
232    
233            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer)
234            (MainWindow.CanDuplicateLayer): New methods to implement the
235            Layer/Duplicate command.
236            (layer_duplicate command): New.
237            (main_menu): Add layer_duplicate to the Layer menu.
238    
239    2003-05-28  Bernhard Herzog  <[email protected]>
240    
241            * Thuban/UI/tableview.py (NullRenderer.Draw): New. Our own
242            renderer so that NULL/None values get displayed differently (by a
243            gray rectangle).
244            (TableGrid.__init__): Override the default renderers
245    
246    2003-05-28  Bernhard Herzog  <[email protected]>
247    
248            * Thuban/Model/layer.py (Layer.SetShapeStore): Set the
249            classification to "None" if the type of the field has changed.
250    
251            * test/test_layer.py (SetShapeStoreTests): New. Class with a few
252            test for the Layer.SetShapeStore method
253    
254    2003-05-28  Jan-Oliver Wagner <[email protected]>
255    
256            * Thuban/Model/layer.py (Layer.TreeInfo): Fixed a bug (a layer
257            does not necessarily have a filename).
258    
259    2003-05-28  Jan-Oliver Wagner <[email protected]>
260    
261            * Thuban/UI/mainwindow.py (MainWindow.TableClose, MainWindow.TableShow):
262            sort the selection list for the dialog.
263    
264    2003-05-28  Frank Koormann  <[email protected]>
265    
266            * extensions/thuban/wxproj.cpp
267            (project_point): Removed cast to int for projected point coordinates.
268            (shape_centroid): Return last point if all polygon vertices fall
269            to one point.
270    
271    2003-05-28  Bernhard Herzog  <[email protected]>
272    
273            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
274            with layers that don't have shapestores, i.e. raster layers.
275    
276    2003-05-28  Bernhard Herzog  <[email protected]>
277    
278            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
279            when determining the title from the filename.
280    
281            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
282            reflect changes in the way the title is derived from the filename
283    
284    2003-05-28  Frank Koormann  <[email protected]>
285    
286            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
287            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
288    
289    2003-05-27  Bernhard Herzog  <[email protected]>
290    
291            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
292            delegate SelectedLayer.
293            (MainWindow.LayerUnjoinTable): Implement.
294            (_can_unjoin): New. Helper function for the sensitivity of the
295            layer/unjoin command.
296    
297            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
298            (DerivedShapeStore.OrigShapeStore): New. Return the original
299            shapestore. Used to figure out how to unjoin.
300            (DerivedShapeStore.Shapefile): Fix a typo.
301    
302    2003-05-27  Bernhard Herzog  <[email protected]>
303    
304            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
305            well
306            (JoinDialog.__init__): Use the layer parameter and only build the
307            left choice when a layer is given
308            (JoinDialog.OnJoin): Handle layer joins as well
309            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
310            that the user selects the "Select..." item. The sensitivitly
311            updating is now in update_sensitivity
312            (JoinDialog.y): New method to refactor the sensitivity update of
313            the join button into its own method.
314    
315            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
316    
317    2003-05-27  Bernhard Herzog  <[email protected]>
318    
319            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
320            iff there are unreferenced tables in the session
321    
322    2003-05-27  Bernhard Herzog  <[email protected]>
323    
324            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
325    
326            * Thuban/Model/session.py (Session.UnreferencedTables): New method
327            to return tables that are not referenced by other tables or shape
328            stores and can be removed.
329            (Session.RemoveTable): Issue a TABLE_REMOVED message after
330            removing the table
331    
332            * Thuban/UI/mainwindow.py: Remove unused imports
333            (MainWindow.TableClose): Implement.
334    
335            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
336            messages so that the frame will be automatically closed when a new
337            session is opened or the table is removed.
338            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
339            __init__
340            (TableFrame.close_on_session_replaced)
341            (TableFrame.close_on_table_removed): New. Subscribers that close
342            the window
343    
344            * test/test_session.py (TestSessionMessages.test_remove_table)
345            (TestSessionSimple.test_remove_table): Move the test to
346            TestSessionSimple and add test for the TABLE_REMOVED message
347            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
348            (TestSessionSimple.test_unreferenced_tables) New. Test for the
349            UnreferencedTables method.
350            (UnreferencedTablesTests): New. Class with some more sophisticated
351            tests for UnreferencedTables.
352    
353    2003-05-27  Frank Koormann  <[email protected]>
354    
355            * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
356            display has some unwanted side effects. Removed again.
357    
358    2003-05-27  Frank Koormann  <[email protected]>
359    
360            * Resources/Bitmaps/legend_icon_layer.xpm: New, icon for legend.
361    
362            * Thuban/UI/legend.py (LegendTree.__FillTree): Use "legend_icon_layer"
363    
364    2003-05-27  Jan-Oliver Wagner <[email protected]>
365    
366            * test/test_menu.py (MenuTest.test): Added test for
367            Menu.RemoveItem().
368    
369            * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
370            the menu.
371    
372    2003-05-27  Frank Koormann  <[email protected]>
373            
374            Nonmodal dialogs without parent (i.e. they can fall behind the main
375            window)
376    
377            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Explicitly destroy
378            all dialogs in the dialogs dictionary and the canvas.
379    
380            * Thuban/UI/dialogs.py (NonModalNonParentDialog): New class, without
381            parent, i.e. can fall behind other windows.
382            (NonModalDialog.OnClose): Check is dialog is in mainwindow.dialog
383            dictionary before removing it.
384    
385            * Thuban/UI/classifier.py: Dialog derived from NonModalNonParentDialog
386    
387            * Thuban/UI/projdialog.py: Dialog derived from NonModalNonParentDialog
388            * Thuban/UI/tableview.py: Dialog derived from NonModalNonParentDialog
389            * Thuban/UI/tree.py: Dialog derived from NonModalNonParentDialog
390    
391    2003-05-27  Bernhard Herzog  <[email protected]>
392    
393            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): New. Open a
394            tableview dialog
395            (MainWindow.TableShow): Use ShowTableView to open the dialogs.
396            Also, don't use the table's titles as the dialog names. The titles
397            aren't guaranteed to be unique.
398            (MainWindow.TableOpen): Open a table view dialog after opening the
399            table
400    
401    2003-05-27  Bernhard Herzog  <[email protected]>
402    
403            * Thuban/UI/mainwindow.py: Remove the Table/Hide menu item. Its
404            effect can be achieved by simply closing the window showing the
405            table.
406            (MainWindow.TableHide): Removed.
407            (main_menu): Removed "table_hide"
408    
409    2003-05-27  Frank Koormann  <[email protected]>
410    
411            Fix legend tree display problems under Win32
412    
413            * Thuban/UI/legend.py:  BMP_SIZE_W = 15
414            (LegendTree.__FillTree): Display "legend_icon_map.xpm" with layer title.
415            (LegendTree.__FillTreeLayer): Explicitely set SelectedImage.
416    
417            * Resources/Bitmaps/legend_icon_map.xpm: New icon for legend.
418    
419    2003-05-27  Jan-Oliver Wagner <[email protected]>
420    
421            * Thuban/UI/menu.py (Menu.InsertSeparator): Additional optional parameter
422            'after' now allows to insert separators almost anywhere in the menu.
423    
424    2003-05-27  Frank Koormann  <[email protected]>
425    
426            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Underline the
427            "S" of selection box label to hint on hot key (Alt-S). Works under
428            Win32 but is ignored under GTK.
429    
430    2003-05-26  Frank Koormann  <[email protected]>
431    
432            * Thuban/UI/projdialog.py (ProjFrame.__do_layout, ProjPanel._DoLayout):
433            Center Choices.
434    
435    2003-05-26  Bernhard Herzog  <[email protected]>
436    
437            Remove the Precision methods again. They're too DBF specific to be
438            part of the table interface and they're only used in table_to_dbf
439            anyway.
440            
441            * Thuban/Model/transientdb.py (TransientTableBase.Width):Use a
442            fixed precision of 12 for doubles.
443            (TransientTableBase.Precision): Removed
444            (AutoTransientTable.Width): Delegate to self.table.
445    
446            * Thuban/Model/table.py (DBFTable.Precision)
447            (MemoryTable.Precision): Removed.
448            (MemoryTable.Width): Use a fixed precision of 12 for doubles.
449            (table_to_dbf): Use a fixed precision of 12 for floats unless the
450            column object specifies something else.
451    
452            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): New.
453            test for table_to_dbf
454    
455    2003-05-26  Bernhard Herzog  <[email protected]>
456    
457            * test/test_transientdb.py
458            (TestTransientTable.run_iceland_political_tests): Fix a comment.
459    
460    2003-05-26  Bernhard Herzog  <[email protected]>
461    
462            * Thuban/UI/mainwindow.py (MainWindow.TableOpen): Real
463            implementation. Mark parts of the file format strings for
464            localization.
465    
466            * Thuban/Model/session.py (Session.OpenTableFile): New. Open a dbf
467            file and add the table to the tables managed by the session
468    
469            * test/test_session.py (TestSessionSimple.test_open_table_file):
470            New. test case for OpenTableFile
471    
472    2003-05-26  Jan-Oliver Wagner <[email protected]>
473    
474            * Thuban/UI/controls.py, Thuban/UI/identifyview.py, Thuban/UI/join.py,
475            Thuban/UI/labeldialog.py, Thuban/UI/mainwindow.py,
476            Thuban/UI/proj4dialog.py, Thuban/UI/tableview.py, Thuban/UI/view.py:
477            Replace the true/false of wxWindows by True/False of Python 2.2.1.
478    
479    2003-05-26  Jan-Oliver Wagner <[email protected]>
480    
481            * Thuban/UI/tableview.py (LayerTableFrame.__init__): If there is
482            already a selection present, update the grid accordingly.
483    
484            * Thuban/UI/mainwindow.py (MainWindow.TableShow): Make the dialog
485            resizeable and increase its initial size.
486    
487    2003-05-26  Frank Koormann  <[email protected]>
488    
489            Table export functionality
490    
491            * Thuban/Model/table.py (DBFTable.Width, MemoryTable.Width):
492            Return width (in characters) for a column.
493            (DBFTable.Precision, MemoryTable.Precision): Return decimal precision.
494            (table_to_dbf): Write table to dbf file.
495            (table_to_csv): Write table to csv file.
496    
497            * Thuban/Model/transientdb.py (TransientTableBase.Width,
498            TransientTableBase.Precision): Return column width and precision.
499    
500            * Thuban/UI/tableview.py (QueryTableFrame.OnSaveAs): Call table_to_dbf
501            or table_to_csv depending on file selection.
502    
503            * test/test_dbf_table.py:
504            Test table_to_dbf (extension of former part of test).
505    
506            * test/test_csv_table.py:
507            Test table_to_csv.
508    
509    2003-05-23  Jan-Oliver Wagner <[email protected]>
510    
511            * Thuban/UI/join.py (JoinDialog.OnJoin): Use _() for strings.
512            Use QueryTableFrame instead of TableFrame.
513    
514            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Prefix the
515            table window with 'Layer Table:' instead of 'Table:'.
516    
517    2003-05-23  Jan-Oliver Wagner <[email protected]>
518    
519            Give all tables a title via mix-in TitledObject.LayerShowTable
520    
521            * Thuban/Model/base.py (TitledObject.SetTitle): Call method 'issue'
522            only if it exists.
523    
524            * Thuban/Model/table.py (DBFTable, MemoryTable): mix-in TitledObject
525            and call its init-method with a default title. Remove Title() method.
526    
527            * Thuban/Model/transientdb.py (TransientTable, TransientJoinedTable,
528            AutoTransientTable): mix-in TitledObject and call its init-method with
529            a default title. Remove Title() method.
530    
531    2003-05-23  Bernhard Herzog  <[email protected]>
532    
533            * Thuban/Model/session.py (Session.AddShapeStore): Define
534            AddShapeStore analogously to AddTable.
535    
536            * test/test_session.py (TestSessionSimple.test_add_shapestore):
537            New. Test for AddShapeStore
538    
539    2003-05-23  Jan-Oliver Wagner <[email protected]>
540    
541            Introducing QueryTableFrame and a very coarse ShowTable implementation.
542    
543            * Thuban/UI/tableview.py (LayerTableFrame, QueryTableFrame): Split the
544            class LayerTableFrame into two classes, LayerTableFrame and QueryTableFrame.
545            The latter implements the selection GUI without dependency on a layer.
546            LayerTableFrame now is derived from QueryTableFrame and connects
547            to a layer.
548    
549            * Thuban/UI/mainwindow.py (MainWindow.TableShow): A very coarse
550            implementation that still needs work.
551    
552            * Thuban/Model/layer.py (Layer.TreeInfo): Added filename.
553    
554    2003-05-22  Frank Koormann  <[email protected]>
555    
556            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
557            Added "outer_join = False" as optional parameter.
558            (TransientJoinedTable.create): If outer join is true, perform a
559            "LEFT OUTER JOIN" instead of "JOIN", which preserves all records of
560            the left table. Records not matching are filled with 0 / None.
561    
562            * Thuban/UI/join.py (JoinDialog.__init__): Checkbox for outer join.
563            (JoinDialog.OnJoin): Consider outer join check box.
564    
565    2003-05-22  Bernhard Herzog  <[email protected]>
566    
567            * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a
568            somewhat safer way. Storing the traceback in a local variable can
569            lead to memory leaks
570    
571    2003-05-22  Bernhard Herzog  <[email protected]>
572    
573            * Thuban/UI/join.py (JoinDialog.OnJoin): Make sure to really call
574            the wxMessageDialog's Destroy() method.
575    
576    2003-05-22  Frank Koormann  <[email protected]>
577    
578            * Thuban/UI/join.py (JoinDialog.__init__): Make use of
579            TransientTable.Title()
580    
581    2003-05-22  Frank Koormann  <[email protected]>
582    
583            Join Dialog, initial version.
584    
585            * Thuban/UI/mainwindow.py (MainWindow.TableJoin): Removed print.
586    
587            * Thuban/UI/join.py (JoinDialog): Functional implementation of
588            former framework. Renamed Table1/Table2 to LeftTable/RightTable
589            in all occurences.
590    
591            * Thuban/Model/transientdb.py (TransientJoinedTable.__doc__):
592            Typo fixed.
593    
594    2003-05-22  Bernhard Herzog  <[email protected]>
595    
596            Give the tables titles so that the GUI can display more meaningful
597            names. For now the titles are fixed but depend on e.g. filenames
598            or the titles of the joined tables.
599    
600            * Thuban/Model/transientdb.py (TransientTable.Title)
601            (TransientJoinedTable.Title, AutoTransientTable.Title): New.
602    
603            * Thuban/Model/table.py (DBFTable.Title, MemoryTable.Title): New.
604    
605            * test/test_transientdb.py
606            (TestTransientTable.test_auto_transient_table_title): New. Test
607            for the Title method
608            (TestTransientTable.test_transient_joined_table)
609            (TestTransientTable.test_transient_table): Add test for the Title
610            methods
611    
612            * test/test_memory_table.py (TestMemoryTable.test_title): New.
613            Test for the Title method
614    
615            * test/test_dbf_table.py (TestDBFTable.test_title): New. Test for
616            the Title method
617    
618    2003-05-22  Bernhard Herzog  <[email protected]>
619    
620            * test/test_layer.py (TestLayer.setUp, TestLayer.tearDown):
621            Provide a better way to destroy the layers
622            (TestLayer.test_base_layer, TestLayer.test_arc_layer)
623            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
624            (TestLayer.test_polygon_layer, TestLayer.test_get_field_type): Use
625            the new way to destroy the layers.
626            (TestLayer.test_derived_store): New. Test for using a layer with a
627            DerivedShapeStore
628    
629            * Thuban/Model/layer.py (Layer.SetShapeStore): Only set the
630            filename if the shape store actually has one.
631    
632    2003-05-22  Bernhard Herzog  <[email protected]>
633    
634            * Thuban/Model/table.py (DBFTable.FileName): New. Accessor method
635            for the filename
636    
637            * test/test_dbf_table.py (TestDBFTable.test_filename): New. Test
638            for the FileName method
639            (TestDBFTableWriting.test_write): Fix spelling of filename
640    
641    2003-05-22  Thomas Koester  <[email protected]>
642    
643            * Thuban/Model/range.py, test/test_range.py: Brought over new Range
644            from SciParam that now really is immutable.
645    
646    2003-05-22  Frank Koormann  <[email protected]>
647    
648            Layer Top/Bottom placement added to legend.
649    
650            * Thuban/UI/legend.py
651            (LegendPanel._OnMoveTop(), LayerPanel._OnMoveBottom): New, methods
652            bound to tool events.
653            (LegendTree.MoveCurrentItemTop(), LegendTree.MoveCurrentItemBottom):
654            New, methods binding the event methods with the map methods.
655    
656            * Thuban/Model/map.py (Map.TopLayer(), Map.BottomLayer()): New, place
657            layer at top/bottom of layer stack.
658    
659            * Resources/Bitmaps/top_layer.xpm: New button icon.
660    
661            * Resources/Bitmaps/bottom_layer.xpm: New button icon.
662    
663    2003-05-22  Bernhard Herzog  <[email protected]>
664    
665            * Thuban/Model/session.py (Session.RemoveTable): New method to
666            remove tables
667    
668            * test/test_session.py (TestSessionSimple.test_remove_table): New.
669            Test for RemoveTable
670    
671    2003-05-22  Thomas Koester  <[email protected]>
672    
673            * Thuban/Model/classgen.py: Added short module doc string and CVS id.
674            (ClassGenerator.GenUniformDistribution): Use new Range __init__, too.
675    
676    2003-05-22  Bernhard Herzog  <[email protected]>
677    
678            Implement a way to discover dependencies between tables and
679            shapestores.
680    
681            * Thuban/Model/transientdb.py (TransientTableBase.Dependencies)
682            (TransientJoinedTable.Dependencies)
683            (AutoTransientTable.SimpleQuery): New. Implement the dependencies
684            interface
685            (TransientJoinedTable.__init__): Keep tack of the original table
686            objects in addition to the corresponding transient tables.
687    
688            * Thuban/Model/table.py (DBFTable.Dependencies)
689            (MemoryTable.Dependencies): New. Implement the dependencies
690            interface
691    
692            * Thuban/Model/data.py (ShapeTable): New. Helper class for
693            ShapefileStore
694            (ShapefileStore.__init__): Use ShapeTable instead of
695            AutoTransientTable
696            (ShapefileStore.Table, ShapefileStore.Shapefile): Add doc-strings
697            (ShapefileStore.FileName, ShapefileStore.FileType): New. Accessor
698            methods for filename and type
699            (ShapefileStore.Dependencies): New. Implement the dependencies
700            interface
701            (DerivedShapeStore): New class to replace SimpleStore. The main
702            difference to SimpleStore is that it depends not on a shapefile
703            but another shapestore which expresses the dependencies a bit
704            better
705            (SimpleStore.__init__): Add deprecation warning.
706    
707            * test/test_dbf_table.py (TestDBFTable.test_dependencies): New.
708            Test for the Dependencies method.
709    
710            * test/test_memory_table.py (TestMemoryTable.test_dependencies):
711            New. Test for the Dependencies method.
712    
713            * test/test_transientdb.py
714            (TestTransientTable.test_auto_transient_table_dependencies): New.
715            Test for the Dependencies method.
716            (TestTransientTable.test_transient_joined_table): Add test for the
717            Dependencies method.
718    
719            * test/test_session.py (TestSessionSimple.setUp)
720            (TestSessionSimple.tearDown): New. Implement a better way to
721            destroy the sessions.
722            (TestSessionSimple.test_initial_state)
723            (TestSessionSimple.test_add_table): Bind session to self.session
724            so that it's destroyed by tearDown
725            (TestSessionSimple.test_open_shapefile): New. Test for
726            OpenShapefile and the object it returns
727    
728    2003-05-22  Bernhard Herzog  <[email protected]>
729    
730            * Thuban/Model/session.py (Session.AddTable): New method to
731            register tables with the session.
732            (Session.Tables): Return the tables registered with AddTable too.
733    
734            * test/test_session.py (TestSessionSimple.test_add_table): New.
735            Test case for the AddTable method
736    
737    2003-05-22  Frank Koormann  <[email protected]>
738    
739            UI polishing updates: Place main buttons (OK, Cancel, etc) in the
740            lower right corner, center labels for selections, initialize controls
741            in reasonable order for keyboard navigation.
742    
743            * Thuban/UI/projdialog.py (ProjFrame.__init__, ProjFrame.__doLayout)
744            (ProjFrame.__DoOnProjAvail): Determine position of current projection
745            using the wxListBox.FindString() method. Still a problem (#1886)
746    
747            * Thuban/UI/classifier.py
748            (Classifier.__init__, SelectPropertiesDialog.__init__)
749    
750            * Thuban/UI/classgen.py (ClassGenDialog.__init__,
751            (ClassGenDialog.__DoOnGenTypeSelect): Moved initialization of the
752            different classification types from here to __init__.
753            (GenUniquePanel.__init__): Set the column width of the first field
754            in the Field ListCtrl to the full width.
755    
756            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Rename 'Save As'
757            Button to 'Export'. Center Buttons in Selection Box, set Focus to
758            Grid.
759            (LayerTableFrame.OnKeyDown()): New, bound to the grid with EVT_KEY_DOWN,
760            changes focus to the Selection when pressing "Alt-S".
761    
762            * Thuban/UI/legend.py (LegendTree.__SetVisibilityStyle): Only gray out
763            the text if not visible. The italic font sometimes exceeds the
764            rendering area.
765    
766    2003-05-21  Jonathan Coles   <[email protected]>
767    
768            * Thuban/UI/dock.py (DockFrame): Rename references to _OnClose
769            to OnClose so that Thuban closes correctly.
770    
771            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Call
772            DockFrame.OnClose, not DockFrame._OnClose.
773    
774  2003-05-21  Jonathan Coles   <[email protected]>  2003-05-21  Jonathan Coles   <[email protected]>
775    
776          * Thuban/Model/classgen.py (ClassGenerator.GenQuantiles): Remove          * Thuban/Model/classgen.py (ClassGenerator.GenQuantiles): Remove

Legend:
Removed from v.972  
changed lines
  Added in v.1143

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26