/[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 1008 by bh, Thu May 22 20:08:12 2003 UTC revision 1151 by frank, Wed Jun 11 10:46:18 2003 UTC
# Line 1  Line 1 
1    2003-06-11  Frank Koormann  <[email protected]>
2    
3            * Thuban/Lib/fileutil.py (get_application_dir): New function to
4            determine the absolute .thuban/thuban directory under
5            "posix" (os.expanduser) and "nt" (read AppData registry key).
6    
7            * Thuban/Model/resource.py: Use get_application_dir
8    
9            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
10            Use get_application_dir.
11    
12    2003-06-10  Bernhard Herzog  <[email protected]>
13    
14            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Subscribe to
15            the messages MAP_LAYERS_REMOVED messages
16            (LayerTableFrame.OnClose): Unsubscribe from it.
17            (LayerTableFrame.map_layers_removed): New. Receiver for
18            MAP_LAYERS_REMOVED. Close the dialog when the layer whose the
19            dialog is showing is removed.
20    
21    2003-06-10  Bernhard Herzog  <[email protected]>
22    
23            * Thuban/Lib/connector.py (Connector.Issue): Iterate over a copy
24            of the receivers list so that unsubscribing in a receiver doesn't
25            modify it while iterating over it.
26    
27            * test/test_connector.py
28            (ConnectorTest.test_disconnect_in_receiver): New. Test whether
29            unsubscribing in a receiver works correctly. See docstring for
30            details
31    
32    2003-06-10  Bernhard Herzog  <[email protected]>
33    
34            * Thuban/Model/messages.py (LAYER_SHAPESTORE_REPLACED): New
35            message.
36    
37            * Thuban/Model/layer.py (Layer.SetShapeStore): Send
38            LAYER_SHAPESTORE_REPLACED when the shapestore changes. A
39            LAYER_CHANGED will still be sent if the classification changes.
40    
41            * Thuban/UI/classifier.py (Classifier.__init__): Add the map as
42            parameter so we can subscribe to some of its messages
43            (Classifier.__init__): Subscribe to the map's MAP_LAYERS_REMOVED
44            and the layer's LAYER_SHAPESTORE_REPLACED
45            (Classifier.unsubscribe_messages): New. Unsubscribe from message
46            subscribed to in __init__
47            (Classifier.map_layers_removed)
48            (Classifier.layer_shapestore_replaced): receivers for the messages
49            subscribed to in __init__. Unsubscribe and close the dialog
50    
51            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): Pass
52            the map to the Classifier dialog
53    
54            * test/test_layer.py (SetShapeStoreTests): Derive from
55            SubscriberMixin as well so we can test messages
56            (SetShapeStoreTests.setUp): Subscribe to some of the layer's
57            messages
58            (SetShapeStoreTests.tearDown): Clear the messages again
59            (SetShapeStoreTests.test_sanity): Expand the doc-string and check
60            for the modified flag too
61            (SetShapeStoreTests.test_set_shape_store_modified_flag): New test
62            to check whether SetShapeStore sets the modified flag
63            (SetShapeStoreTests.test_set_shape_store_different_field_name)
64            (SetShapeStoreTests.test_set_shape_store_same_field)
65            (SetShapeStoreTests.test_set_shape_store_same_field_different_type):
66            Add tests for the messages. This checks both the new
67            LAYER_SHAPESTORE_REPLACED and the older LAYER_CHANGED
68    
69    2003-06-06  Jan-Oliver Wagner <[email protected]>
70    
71            * Thuban/UI/mainwindow.py: Improved and partly added help texts for
72            the menu items.
73    
74    2003-06-05  Frank Koormann  <[email protected]>
75    
76            * Thuban/UI/identifyview.py (IdentifyView.__init__):
77            Layout reimplemented without panel. Make life easier to fit the list
78            in the dialog.
79    
80    2003-06-05  Frank Koormann  <[email protected]>
81    
82            * Thuban/UI/projdialog.py (ProjFrame.__init__): Fill the projchoice
83            once on initialisation (Former implementation resulted in multiple
84            entries for each projection).
85            (ProjFrame.__FillAvailList): selectProj as second optional parameter,
86            if set, select the projection found under the specified name. This
87            overwrites any other selection estimate.
88            Removed projchoice filling from this method.
89            (ProjFrame._OnSave, ProjFrame._OnAddToList):
90            Updated call of ProjFrame.__FillAvailList
91            (LCCPanel._DoLayout): Moved parameter controls in more common order.
92    
93            * Resources/Projections/defaults.proj: Extended defaults representing
94            various common European projections.
95    
96    2003-06-05  Frank Koormann  <[email protected]>
97    
98            * Thuban/UI/identifyview.py (IdentifyView.__init__):
99            Use ListCtrl instead of GridCtrl
100    
101            * Thuban/Model/resource.py:
102            Guess location of .thuban directory from tempdir parent directory.
103    
104            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
105            Guess location of .thuban directory from tempdir parent directory.
106    
107    2003-06-04  Bernhard Herzog  <[email protected]>
108    
109            Do not cache the values returned by the tree widget's
110            GetFirstChild and GetNextChild methods because it led to lots of
111            segfaults. The new way requires more brute force but is more
112            reliable.
113    
114            * Thuban/UI/legend.py (LegendTree.__init__): Remove instance
115            variable layer2id
116            (LegendTree.find_layer): New method to do with brute force what
117            layer2id tried to accomplish
118            (LegendTree._OnMsgLayerChanged)
119            (LegendTree._OnMsgLayerTitleChanged, LegendTree.__ShowHideLayer):
120            Use find_layer instead of layer2id
121            (LegendTree.__RemoveLayer, LegendTree.__AddLayer): No need to
122            update layer2id anymore
123            (LegendTree._OnMsgMapLayersRemoved)
124            (LegendTree._OnMsgMapLayersAdded): Get by without layer2id.
125    
126    2003-06-03  Thomas Koester  <[email protected]>
127    
128            * Thuban/Model/classgen.py (GenQuantiles0): New function.
129    
130    2003-06-02  Bernhard Herzog  <[email protected]>
131    
132            * Thuban/UI/mainwindow.py (layer_rename command, table_rename command):
133            New commands.
134            (main_menu): Add the new commands.
135            (MainWindow.TableRename): New. Implementation of the table_rename
136            command.
137            (MainWindow.RenameLayer): New. Implementation of the layer_rename
138            command.
139    
140            * Thuban/Model/session.py (Session.AddTable): call self.changed to
141            set the modified flag
142    
143            * test/test_session.py (TestSessionSimple.test_add_table): Test
144            whether the modified flag is set properly
145    
146            * Thuban/Model/base.py (TitledObject.SetTitle): Call changed
147            instead of issue so that the modified flags get updated.
148    
149            * test/test_base.py (SomeTitledObject): Derive from Modifiable
150            instead of Publisher to reflect reality better and to accomodate
151            the fact that SetTitle now calls changed instead of issue
152    
153    2003-06-02  Bernhard Herzog  <[email protected]>
154    
155            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Resource
156            acquisition has to happen before the try in a try-finally.
157    
158    2003-06-02  Bernhard Herzog  <[email protected]>
159    
160            * Thuban/UI/legend.py (LegendTree._OnMsgMapLayersRemoved): It's
161            possible that a layer is removed that is not currently selected in
162            the legend so don't check for this.
163    
164    2003-05-30  Bernhard Herzog  <[email protected]>
165    
166            * Thuban/Model/layer.py (Layer.Destroy): Set all instance
167            variables to None that have direct or indirect references to
168            shapefiles or dbf files to make sure that they do go away and the
169            files are closed.
170    
171    2003-05-30  Bernhard Herzog  <[email protected]>
172    
173            * Thuban/UI/legend.py (LegendTree.GetRootItem): Reset
174            availImgListIndices when a new image list is created
175            
176    2003-05-30  Bernhard Herzog  <[email protected]>
177    
178            * Thuban/UI/legend.py (LegendTree.__init__): New instance variable
179            changing_selection to indicate whether the LegendTree code itself
180            is currently changing the selection
181            (LegendTree.normalize_selection): New method to normalize the
182            selection by selecting the layer item even if the user clicked on
183            the classification.
184            (LegendTree._OnSelChanged): normalize the selection. This works
185            around a bug in wx which doesn't keep track of the selection
186            properly when subtrees are deleted.
187    
188    2003-05-30  Bernhard Herzog  <[email protected]>
189    
190            * Thuban/UI/view.py (MapCanvas.set_view_transform): Limit the
191            maximum and minimum scale factors.
192    
193            * test/test_classgen.py (ClassGenTest.test): Update to reflect the
194            changes in classgen.py
195    
196    2003-05-30  Jonathan Coles   <[email protected]>
197    
198            * Thuban/Model/classgen.py: Remove ClassGenerator class but make
199            all the methods functions. Fixes RTBug #1903.
200    
201            * Thuban/Model/map.py (Map.TopLayer, Map.BottomLayer): Renamed
202            to MoveLayerToTop and MoveLayerToBottom respectively. Fixes
203            RTBug #1907.
204    
205            * Thuban/UI/classgen.py: Use classgen functions that were part
206            of the ClassGenerator class. Put try/finally blocks around
207            code that uses wxBeginBusyCursor()/wxEndBusyCursor(). Fixes
208            RTBug #1904.
209    
210            * Thuban/UI/classifier.py: Remove unused import of ClassGenerator.
211    
212            * Thuban/UI/legend.py: The legend was cleared and repopulated any
213            time something changed which caused some state to be lost such
214            as which children were expanded or collapsed. Fixes RTBug #1901.
215            (LegendTree._OnMsgMapLayersAdded): Add only new layers.
216            (LegendTree.__OnMsgMapLayersRemoved): Remove layers that exist in
217            the legend but not in the map.
218            (LegendTree.__FillTree): Move main functionality out into smaller
219            methods that can be used by other methods.
220            (LegendTree.__FillTreeLayer): Reuse old slots in the image list
221            if they are available.
222            (LegendTree.DeleteAllItems): Renamed from __DeleteAllItems so
223            that we override the wxTreeCtrl method. Iterate over children
224            and call __RemoveLayer.
225            (LegendTree.__AddLayer): New. Add a new layer to the legend.
226            (LegendTree.__RemoveLayer): Remove a layer from the legend.
227            (LegendTree.DeleteChildren): New, overrides wxTreeCtrl method.
228            Should only be called with the id of a layer branch.
229            (LegendTree.GetRootItem): New, overrides wxTreeCtrl method.
230            Returns the root item or creates one if necessary.
231    
232            * Thuban/UI/renderer.py (MapRenderer.draw_raster_layer): Call
233            ProjectRasterFile with tuple arguments instead of strings.
234    
235            * Thuban/UI/tableview.py (QueryTableFrame.OnQuery): Wrap code
236            with try/finally. Fixes RTBug #1904.
237    
238            * Thuban/UI/view.py (MapCanvas.OnPaint): Wrap code
239            with try/finally. Fixes RTBug #1904.
240            (MapCanvas.FitSelectedToWindow): If a single point is selected
241            simply center it on the display. Fixes RTBug #1849.
242    
243            * extensions/thuban/gdalwarp.cpp: Removed code that allowed gdalwarp
244            to be compiled as a standalone app. Now the code can only be
245            called from Python which simplifies the parameter passing.
246            (ProjectRasterFile): Handle Python arguments. Remove code that
247            checks for a destination dataset. Add more clean up code.
248    
249            * test/test_map.py (TestMapWithContents.test_raise_layer_top,
250            TestMapWithContents.test_lower_layer_bottom):
251            Test Map.MoveLayerToTop() and Map.MoveLayerToBottom() respectively.
252            Fixes RTBug #1907.
253    
254            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Apply a full
255            extent to the map when the legend is toggled. Fixes RTBug #1881.
256    
257    2003-05-29  Jan-Oliver Wagner <[email protected]>
258    
259            * Thuban/UI/tableview.py (LayerTableFrame.OnClose): Bug-fix: Now
260            unsubscribes all that is subcribed in __init__.
261    
262    2003-05-28  Bernhard Herzog  <[email protected]>
263    
264            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer)
265            (MainWindow.CanDuplicateLayer): New methods to implement the
266            Layer/Duplicate command.
267            (layer_duplicate command): New.
268            (main_menu): Add layer_duplicate to the Layer menu.
269    
270    2003-05-28  Bernhard Herzog  <[email protected]>
271    
272            * Thuban/UI/tableview.py (NullRenderer.Draw): New. Our own
273            renderer so that NULL/None values get displayed differently (by a
274            gray rectangle).
275            (TableGrid.__init__): Override the default renderers
276    
277    2003-05-28  Bernhard Herzog  <[email protected]>
278    
279            * Thuban/Model/layer.py (Layer.SetShapeStore): Set the
280            classification to "None" if the type of the field has changed.
281    
282            * test/test_layer.py (SetShapeStoreTests): New. Class with a few
283            test for the Layer.SetShapeStore method
284    
285    2003-05-28  Jan-Oliver Wagner <[email protected]>
286    
287            * Thuban/Model/layer.py (Layer.TreeInfo): Fixed a bug (a layer
288            does not necessarily have a filename).
289    
290    2003-05-28  Jan-Oliver Wagner <[email protected]>
291    
292            * Thuban/UI/mainwindow.py (MainWindow.TableClose, MainWindow.TableShow):
293            sort the selection list for the dialog.
294    
295    2003-05-28  Frank Koormann  <[email protected]>
296    
297            * extensions/thuban/wxproj.cpp
298            (project_point): Removed cast to int for projected point coordinates.
299            (shape_centroid): Return last point if all polygon vertices fall
300            to one point.
301    
302    2003-05-28  Bernhard Herzog  <[email protected]>
303    
304            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
305            with layers that don't have shapestores, i.e. raster layers.
306    
307    2003-05-28  Bernhard Herzog  <[email protected]>
308    
309            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
310            when determining the title from the filename.
311    
312            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
313            reflect changes in the way the title is derived from the filename
314    
315    2003-05-28  Frank Koormann  <[email protected]>
316    
317            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
318            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
319    
320    2003-05-27  Bernhard Herzog  <[email protected]>
321    
322            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
323            delegate SelectedLayer.
324            (MainWindow.LayerUnjoinTable): Implement.
325            (_can_unjoin): New. Helper function for the sensitivity of the
326            layer/unjoin command.
327    
328            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
329            (DerivedShapeStore.OrigShapeStore): New. Return the original
330            shapestore. Used to figure out how to unjoin.
331            (DerivedShapeStore.Shapefile): Fix a typo.
332    
333    2003-05-27  Bernhard Herzog  <[email protected]>
334    
335            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
336            well
337            (JoinDialog.__init__): Use the layer parameter and only build the
338            left choice when a layer is given
339            (JoinDialog.OnJoin): Handle layer joins as well
340            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
341            that the user selects the "Select..." item. The sensitivitly
342            updating is now in update_sensitivity
343            (JoinDialog.y): New method to refactor the sensitivity update of
344            the join button into its own method.
345    
346            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
347    
348    2003-05-27  Bernhard Herzog  <[email protected]>
349    
350            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
351            iff there are unreferenced tables in the session
352    
353    2003-05-27  Bernhard Herzog  <[email protected]>
354    
355            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
356    
357            * Thuban/Model/session.py (Session.UnreferencedTables): New method
358            to return tables that are not referenced by other tables or shape
359            stores and can be removed.
360            (Session.RemoveTable): Issue a TABLE_REMOVED message after
361            removing the table
362    
363            * Thuban/UI/mainwindow.py: Remove unused imports
364            (MainWindow.TableClose): Implement.
365    
366            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
367            messages so that the frame will be automatically closed when a new
368            session is opened or the table is removed.
369            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
370            __init__
371            (TableFrame.close_on_session_replaced)
372            (TableFrame.close_on_table_removed): New. Subscribers that close
373            the window
374    
375            * test/test_session.py (TestSessionMessages.test_remove_table)
376            (TestSessionSimple.test_remove_table): Move the test to
377            TestSessionSimple and add test for the TABLE_REMOVED message
378            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
379            (TestSessionSimple.test_unreferenced_tables) New. Test for the
380            UnreferencedTables method.
381            (UnreferencedTablesTests): New. Class with some more sophisticated
382            tests for UnreferencedTables.
383    
384    2003-05-27  Frank Koormann  <[email protected]>
385    
386            * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
387            display has some unwanted side effects. Removed again.
388    
389    2003-05-27  Frank Koormann  <[email protected]>
390    
391            * Resources/Bitmaps/legend_icon_layer.xpm: New, icon for legend.
392    
393            * Thuban/UI/legend.py (LegendTree.__FillTree): Use "legend_icon_layer"
394    
395    2003-05-27  Jan-Oliver Wagner <[email protected]>
396    
397            * test/test_menu.py (MenuTest.test): Added test for
398            Menu.RemoveItem().
399    
400            * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
401            the menu.
402    
403    2003-05-27  Frank Koormann  <[email protected]>
404            
405            Nonmodal dialogs without parent (i.e. they can fall behind the main
406            window)
407    
408            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Explicitly destroy
409            all dialogs in the dialogs dictionary and the canvas.
410    
411            * Thuban/UI/dialogs.py (NonModalNonParentDialog): New class, without
412            parent, i.e. can fall behind other windows.
413            (NonModalDialog.OnClose): Check is dialog is in mainwindow.dialog
414            dictionary before removing it.
415    
416            * Thuban/UI/classifier.py: Dialog derived from NonModalNonParentDialog
417    
418            * Thuban/UI/projdialog.py: Dialog derived from NonModalNonParentDialog
419            * Thuban/UI/tableview.py: Dialog derived from NonModalNonParentDialog
420            * Thuban/UI/tree.py: Dialog derived from NonModalNonParentDialog
421    
422    2003-05-27  Bernhard Herzog  <[email protected]>
423    
424            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): New. Open a
425            tableview dialog
426            (MainWindow.TableShow): Use ShowTableView to open the dialogs.
427            Also, don't use the table's titles as the dialog names. The titles
428            aren't guaranteed to be unique.
429            (MainWindow.TableOpen): Open a table view dialog after opening the
430            table
431    
432    2003-05-27  Bernhard Herzog  <[email protected]>
433    
434            * Thuban/UI/mainwindow.py: Remove the Table/Hide menu item. Its
435            effect can be achieved by simply closing the window showing the
436            table.
437            (MainWindow.TableHide): Removed.
438            (main_menu): Removed "table_hide"
439    
440    2003-05-27  Frank Koormann  <[email protected]>
441    
442            Fix legend tree display problems under Win32
443    
444            * Thuban/UI/legend.py:  BMP_SIZE_W = 15
445            (LegendTree.__FillTree): Display "legend_icon_map.xpm" with layer title.
446            (LegendTree.__FillTreeLayer): Explicitely set SelectedImage.
447    
448            * Resources/Bitmaps/legend_icon_map.xpm: New icon for legend.
449    
450    2003-05-27  Jan-Oliver Wagner <[email protected]>
451    
452            * Thuban/UI/menu.py (Menu.InsertSeparator): Additional optional parameter
453            'after' now allows to insert separators almost anywhere in the menu.
454    
455    2003-05-27  Frank Koormann  <[email protected]>
456    
457            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Underline the
458            "S" of selection box label to hint on hot key (Alt-S). Works under
459            Win32 but is ignored under GTK.
460    
461    2003-05-26  Frank Koormann  <[email protected]>
462    
463            * Thuban/UI/projdialog.py (ProjFrame.__do_layout, ProjPanel._DoLayout):
464            Center Choices.
465    
466    2003-05-26  Bernhard Herzog  <[email protected]>
467    
468            Remove the Precision methods again. They're too DBF specific to be
469            part of the table interface and they're only used in table_to_dbf
470            anyway.
471            
472            * Thuban/Model/transientdb.py (TransientTableBase.Width):Use a
473            fixed precision of 12 for doubles.
474            (TransientTableBase.Precision): Removed
475            (AutoTransientTable.Width): Delegate to self.table.
476    
477            * Thuban/Model/table.py (DBFTable.Precision)
478            (MemoryTable.Precision): Removed.
479            (MemoryTable.Width): Use a fixed precision of 12 for doubles.
480            (table_to_dbf): Use a fixed precision of 12 for floats unless the
481            column object specifies something else.
482    
483            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): New.
484            test for table_to_dbf
485    
486    2003-05-26  Bernhard Herzog  <[email protected]>
487    
488            * test/test_transientdb.py
489            (TestTransientTable.run_iceland_political_tests): Fix a comment.
490    
491    2003-05-26  Bernhard Herzog  <[email protected]>
492    
493            * Thuban/UI/mainwindow.py (MainWindow.TableOpen): Real
494            implementation. Mark parts of the file format strings for
495            localization.
496    
497            * Thuban/Model/session.py (Session.OpenTableFile): New. Open a dbf
498            file and add the table to the tables managed by the session
499    
500            * test/test_session.py (TestSessionSimple.test_open_table_file):
501            New. test case for OpenTableFile
502    
503    2003-05-26  Jan-Oliver Wagner <[email protected]>
504    
505            * Thuban/UI/controls.py, Thuban/UI/identifyview.py, Thuban/UI/join.py,
506            Thuban/UI/labeldialog.py, Thuban/UI/mainwindow.py,
507            Thuban/UI/proj4dialog.py, Thuban/UI/tableview.py, Thuban/UI/view.py:
508            Replace the true/false of wxWindows by True/False of Python 2.2.1.
509    
510    2003-05-26  Jan-Oliver Wagner <[email protected]>
511    
512            * Thuban/UI/tableview.py (LayerTableFrame.__init__): If there is
513            already a selection present, update the grid accordingly.
514    
515            * Thuban/UI/mainwindow.py (MainWindow.TableShow): Make the dialog
516            resizeable and increase its initial size.
517    
518    2003-05-26  Frank Koormann  <[email protected]>
519    
520            Table export functionality
521    
522            * Thuban/Model/table.py (DBFTable.Width, MemoryTable.Width):
523            Return width (in characters) for a column.
524            (DBFTable.Precision, MemoryTable.Precision): Return decimal precision.
525            (table_to_dbf): Write table to dbf file.
526            (table_to_csv): Write table to csv file.
527    
528            * Thuban/Model/transientdb.py (TransientTableBase.Width,
529            TransientTableBase.Precision): Return column width and precision.
530    
531            * Thuban/UI/tableview.py (QueryTableFrame.OnSaveAs): Call table_to_dbf
532            or table_to_csv depending on file selection.
533    
534            * test/test_dbf_table.py:
535            Test table_to_dbf (extension of former part of test).
536    
537            * test/test_csv_table.py:
538            Test table_to_csv.
539    
540    2003-05-23  Jan-Oliver Wagner <[email protected]>
541    
542            * Thuban/UI/join.py (JoinDialog.OnJoin): Use _() for strings.
543            Use QueryTableFrame instead of TableFrame.
544    
545            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Prefix the
546            table window with 'Layer Table:' instead of 'Table:'.
547    
548    2003-05-23  Jan-Oliver Wagner <[email protected]>
549    
550            Give all tables a title via mix-in TitledObject.LayerShowTable
551    
552            * Thuban/Model/base.py (TitledObject.SetTitle): Call method 'issue'
553            only if it exists.
554    
555            * Thuban/Model/table.py (DBFTable, MemoryTable): mix-in TitledObject
556            and call its init-method with a default title. Remove Title() method.
557    
558            * Thuban/Model/transientdb.py (TransientTable, TransientJoinedTable,
559            AutoTransientTable): mix-in TitledObject and call its init-method with
560            a default title. Remove Title() method.
561    
562    2003-05-23  Bernhard Herzog  <[email protected]>
563    
564            * Thuban/Model/session.py (Session.AddShapeStore): Define
565            AddShapeStore analogously to AddTable.
566    
567            * test/test_session.py (TestSessionSimple.test_add_shapestore):
568            New. Test for AddShapeStore
569    
570    2003-05-23  Jan-Oliver Wagner <[email protected]>
571    
572            Introducing QueryTableFrame and a very coarse ShowTable implementation.
573    
574            * Thuban/UI/tableview.py (LayerTableFrame, QueryTableFrame): Split the
575            class LayerTableFrame into two classes, LayerTableFrame and QueryTableFrame.
576            The latter implements the selection GUI without dependency on a layer.
577            LayerTableFrame now is derived from QueryTableFrame and connects
578            to a layer.
579    
580            * Thuban/UI/mainwindow.py (MainWindow.TableShow): A very coarse
581            implementation that still needs work.
582    
583            * Thuban/Model/layer.py (Layer.TreeInfo): Added filename.
584    
585    2003-05-22  Frank Koormann  <[email protected]>
586    
587            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
588            Added "outer_join = False" as optional parameter.
589            (TransientJoinedTable.create): If outer join is true, perform a
590            "LEFT OUTER JOIN" instead of "JOIN", which preserves all records of
591            the left table. Records not matching are filled with 0 / None.
592    
593            * Thuban/UI/join.py (JoinDialog.__init__): Checkbox for outer join.
594            (JoinDialog.OnJoin): Consider outer join check box.
595    
596  2003-05-22  Bernhard Herzog  <[email protected]>  2003-05-22  Bernhard Herzog  <[email protected]>
597    
598          * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a          * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a

Legend:
Removed from v.1008  
changed lines
  Added in v.1151

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26