/[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 846 by bh, Tue May 6 18:05:23 2003 UTC revision 1120 by bh, Mon Jun 2 10:38:24 2003 UTC
# Line 1  Line 1 
1    2003-06-02  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/UI/legend.py (LegendTree._OnMsgMapLayersRemoved): It's
4            possible that a layer is removed that is not currently selected in
5            the legend so don't check for this.
6    
7    2003-05-30  Bernhard Herzog  <[email protected]>
8    
9            * Thuban/Model/layer.py (Layer.Destroy): Set all instance
10            variables to None that have direct or indirect references to
11            shapefiles or dbf files to make sure that they do go away and the
12            files are closed.
13    
14    2003-05-30  Bernhard Herzog  <[email protected]>
15    
16            * Thuban/UI/legend.py (LegendTree.GetRootItem): Reset
17            availImgListIndices when a new image list is created
18            
19    2003-05-30  Bernhard Herzog  <[email protected]>
20    
21            * Thuban/UI/legend.py (LegendTree.__init__): New instance variable
22            changing_selection to indicate whether the LegendTree code itself
23            is currently changing the selection
24            (LegendTree.normalize_selection): New method to normalize the
25            selection by selecting the layer item even if the user clicked on
26            the classification.
27            (LegendTree._OnSelChanged): normalize the selection. This works
28            around a bug in wx which doesn't keep track of the selection
29            properly when subtrees are deleted.
30    
31    2003-05-30  Bernhard Herzog  <[email protected]>
32    
33            * Thuban/UI/view.py (MapCanvas.set_view_transform): Limit the
34            maximum and minimum scale factors.
35    
36            * test/test_classgen.py (ClassGenTest.test): Update to reflect the
37            changes in classgen.py
38    
39    2003-05-30  Jonathan Coles   <[email protected]>
40    
41            * Thuban/Model/classgen.py: Remove ClassGenerator class but make
42            all the methods functions. Fixes RTBug #1903.
43    
44            * Thuban/Model/map.py (Map.TopLayer, Map.BottomLayer): Renamed
45            to MoveLayerToTop and MoveLayerToBottom respectively. Fixes
46            RTBug #1907.
47    
48            * Thuban/UI/classgen.py: Use classgen functions that were part
49            of the ClassGenerator class. Put try/finally blocks around
50            code that uses wxBeginBusyCursor()/wxEndBusyCursor(). Fixes
51            RTBug #1904.
52    
53            * Thuban/UI/classifier.py: Remove unused import of ClassGenerator.
54    
55            * Thuban/UI/legend.py: The legend was cleared and repopulated any
56            time something changed which caused some state to be lost such
57            as which children were expanded or collapsed. Fixes RTBug #1901.
58            (LegendTree._OnMsgMapLayersAdded): Add only new layers.
59            (LegendTree.__OnMsgMapLayersRemoved): Remove layers that exist in
60            the legend but not in the map.
61            (LegendTree.__FillTree): Move main functionality out into smaller
62            methods that can be used by other methods.
63            (LegendTree.__FillTreeLayer): Reuse old slots in the image list
64            if they are available.
65            (LegendTree.DeleteAllItems): Renamed from __DeleteAllItems so
66            that we override the wxTreeCtrl method. Iterate over children
67            and call __RemoveLayer.
68            (LegendTree.__AddLayer): New. Add a new layer to the legend.
69            (LegendTree.__RemoveLayer): Remove a layer from the legend.
70            (LegendTree.DeleteChildren): New, overrides wxTreeCtrl method.
71            Should only be called with the id of a layer branch.
72            (LegendTree.GetRootItem): New, overrides wxTreeCtrl method.
73            Returns the root item or creates one if necessary.
74    
75            * Thuban/UI/renderer.py (MapRenderer.draw_raster_layer): Call
76            ProjectRasterFile with tuple arguments instead of strings.
77    
78            * Thuban/UI/tableview.py (QueryTableFrame.OnQuery): Wrap code
79            with try/finally. Fixes RTBug #1904.
80    
81            * Thuban/UI/view.py (MapCanvas.OnPaint): Wrap code
82            with try/finally. Fixes RTBug #1904.
83            (MapCanvas.FitSelectedToWindow): If a single point is selected
84            simply center it on the display. Fixes RTBug #1849.
85    
86            * extensions/thuban/gdalwarp.cpp: Removed code that allowed gdalwarp
87            to be compiled as a standalone app. Now the code can only be
88            called from Python which simplifies the parameter passing.
89            (ProjectRasterFile): Handle Python arguments. Remove code that
90            checks for a destination dataset. Add more clean up code.
91    
92            * test/test_map.py (TestMapWithContents.test_raise_layer_top,
93            TestMapWithContents.test_lower_layer_bottom):
94            Test Map.MoveLayerToTop() and Map.MoveLayerToBottom() respectively.
95            Fixes RTBug #1907.
96    
97            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Apply a full
98            extent to the map when the legend is toggled. Fixes RTBug #1881.
99    
100    2003-05-29  Jan-Oliver Wagner <[email protected]>
101    
102            * Thuban/UI/tableview.py (LayerTableFrame.OnClose): Bug-fix: Now
103            unsubscribes all that is subcribed in __init__.
104    
105    2003-05-28  Bernhard Herzog  <[email protected]>
106    
107            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer)
108            (MainWindow.CanDuplicateLayer): New methods to implement the
109            Layer/Duplicate command.
110            (layer_duplicate command): New.
111            (main_menu): Add layer_duplicate to the Layer menu.
112    
113    2003-05-28  Bernhard Herzog  <[email protected]>
114    
115            * Thuban/UI/tableview.py (NullRenderer.Draw): New. Our own
116            renderer so that NULL/None values get displayed differently (by a
117            gray rectangle).
118            (TableGrid.__init__): Override the default renderers
119    
120    2003-05-28  Bernhard Herzog  <[email protected]>
121    
122            * Thuban/Model/layer.py (Layer.SetShapeStore): Set the
123            classification to "None" if the type of the field has changed.
124    
125            * test/test_layer.py (SetShapeStoreTests): New. Class with a few
126            test for the Layer.SetShapeStore method
127    
128    2003-05-28  Jan-Oliver Wagner <[email protected]>
129    
130            * Thuban/Model/layer.py (Layer.TreeInfo): Fixed a bug (a layer
131            does not necessarily have a filename).
132    
133    2003-05-28  Jan-Oliver Wagner <[email protected]>
134    
135            * Thuban/UI/mainwindow.py (MainWindow.TableClose, MainWindow.TableShow):
136            sort the selection list for the dialog.
137    
138    2003-05-28  Frank Koormann  <[email protected]>
139    
140            * extensions/thuban/wxproj.cpp
141            (project_point): Removed cast to int for projected point coordinates.
142            (shape_centroid): Return last point if all polygon vertices fall
143            to one point.
144    
145    2003-05-28  Bernhard Herzog  <[email protected]>
146    
147            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
148            with layers that don't have shapestores, i.e. raster layers.
149    
150    2003-05-28  Bernhard Herzog  <[email protected]>
151    
152            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
153            when determining the title from the filename.
154    
155            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
156            reflect changes in the way the title is derived from the filename
157    
158    2003-05-28  Frank Koormann  <[email protected]>
159    
160            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
161            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
162    
163    2003-05-27  Bernhard Herzog  <[email protected]>
164    
165            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
166            delegate SelectedLayer.
167            (MainWindow.LayerUnjoinTable): Implement.
168            (_can_unjoin): New. Helper function for the sensitivity of the
169            layer/unjoin command.
170    
171            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
172            (DerivedShapeStore.OrigShapeStore): New. Return the original
173            shapestore. Used to figure out how to unjoin.
174            (DerivedShapeStore.Shapefile): Fix a typo.
175    
176    2003-05-27  Bernhard Herzog  <[email protected]>
177    
178            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
179            well
180            (JoinDialog.__init__): Use the layer parameter and only build the
181            left choice when a layer is given
182            (JoinDialog.OnJoin): Handle layer joins as well
183            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
184            that the user selects the "Select..." item. The sensitivitly
185            updating is now in update_sensitivity
186            (JoinDialog.y): New method to refactor the sensitivity update of
187            the join button into its own method.
188    
189            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
190    
191    2003-05-27  Bernhard Herzog  <[email protected]>
192    
193            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
194            iff there are unreferenced tables in the session
195    
196    2003-05-27  Bernhard Herzog  <[email protected]>
197    
198            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
199    
200            * Thuban/Model/session.py (Session.UnreferencedTables): New method
201            to return tables that are not referenced by other tables or shape
202            stores and can be removed.
203            (Session.RemoveTable): Issue a TABLE_REMOVED message after
204            removing the table
205    
206            * Thuban/UI/mainwindow.py: Remove unused imports
207            (MainWindow.TableClose): Implement.
208    
209            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
210            messages so that the frame will be automatically closed when a new
211            session is opened or the table is removed.
212            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
213            __init__
214            (TableFrame.close_on_session_replaced)
215            (TableFrame.close_on_table_removed): New. Subscribers that close
216            the window
217    
218            * test/test_session.py (TestSessionMessages.test_remove_table)
219            (TestSessionSimple.test_remove_table): Move the test to
220            TestSessionSimple and add test for the TABLE_REMOVED message
221            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
222            (TestSessionSimple.test_unreferenced_tables) New. Test for the
223            UnreferencedTables method.
224            (UnreferencedTablesTests): New. Class with some more sophisticated
225            tests for UnreferencedTables.
226    
227    2003-05-27  Frank Koormann  <[email protected]>
228    
229            * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
230            display has some unwanted side effects. Removed again.
231    
232    2003-05-27  Frank Koormann  <[email protected]>
233    
234            * Resources/Bitmaps/legend_icon_layer.xpm: New, icon for legend.
235    
236            * Thuban/UI/legend.py (LegendTree.__FillTree): Use "legend_icon_layer"
237    
238    2003-05-27  Jan-Oliver Wagner <[email protected]>
239    
240            * test/test_menu.py (MenuTest.test): Added test for
241            Menu.RemoveItem().
242    
243            * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
244            the menu.
245    
246    2003-05-27  Frank Koormann  <[email protected]>
247            
248            Nonmodal dialogs without parent (i.e. they can fall behind the main
249            window)
250    
251            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Explicitly destroy
252            all dialogs in the dialogs dictionary and the canvas.
253    
254            * Thuban/UI/dialogs.py (NonModalNonParentDialog): New class, without
255            parent, i.e. can fall behind other windows.
256            (NonModalDialog.OnClose): Check is dialog is in mainwindow.dialog
257            dictionary before removing it.
258    
259            * Thuban/UI/classifier.py: Dialog derived from NonModalNonParentDialog
260    
261            * Thuban/UI/projdialog.py: Dialog derived from NonModalNonParentDialog
262            * Thuban/UI/tableview.py: Dialog derived from NonModalNonParentDialog
263            * Thuban/UI/tree.py: Dialog derived from NonModalNonParentDialog
264    
265    2003-05-27  Bernhard Herzog  <[email protected]>
266    
267            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): New. Open a
268            tableview dialog
269            (MainWindow.TableShow): Use ShowTableView to open the dialogs.
270            Also, don't use the table's titles as the dialog names. The titles
271            aren't guaranteed to be unique.
272            (MainWindow.TableOpen): Open a table view dialog after opening the
273            table
274    
275    2003-05-27  Bernhard Herzog  <[email protected]>
276    
277            * Thuban/UI/mainwindow.py: Remove the Table/Hide menu item. Its
278            effect can be achieved by simply closing the window showing the
279            table.
280            (MainWindow.TableHide): Removed.
281            (main_menu): Removed "table_hide"
282    
283    2003-05-27  Frank Koormann  <[email protected]>
284    
285            Fix legend tree display problems under Win32
286    
287            * Thuban/UI/legend.py:  BMP_SIZE_W = 15
288            (LegendTree.__FillTree): Display "legend_icon_map.xpm" with layer title.
289            (LegendTree.__FillTreeLayer): Explicitely set SelectedImage.
290    
291            * Resources/Bitmaps/legend_icon_map.xpm: New icon for legend.
292    
293    2003-05-27  Jan-Oliver Wagner <[email protected]>
294    
295            * Thuban/UI/menu.py (Menu.InsertSeparator): Additional optional parameter
296            'after' now allows to insert separators almost anywhere in the menu.
297    
298    2003-05-27  Frank Koormann  <[email protected]>
299    
300            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Underline the
301            "S" of selection box label to hint on hot key (Alt-S). Works under
302            Win32 but is ignored under GTK.
303    
304    2003-05-26  Frank Koormann  <[email protected]>
305    
306            * Thuban/UI/projdialog.py (ProjFrame.__do_layout, ProjPanel._DoLayout):
307            Center Choices.
308    
309    2003-05-26  Bernhard Herzog  <[email protected]>
310    
311            Remove the Precision methods again. They're too DBF specific to be
312            part of the table interface and they're only used in table_to_dbf
313            anyway.
314            
315            * Thuban/Model/transientdb.py (TransientTableBase.Width):Use a
316            fixed precision of 12 for doubles.
317            (TransientTableBase.Precision): Removed
318            (AutoTransientTable.Width): Delegate to self.table.
319    
320            * Thuban/Model/table.py (DBFTable.Precision)
321            (MemoryTable.Precision): Removed.
322            (MemoryTable.Width): Use a fixed precision of 12 for doubles.
323            (table_to_dbf): Use a fixed precision of 12 for floats unless the
324            column object specifies something else.
325    
326            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): New.
327            test for table_to_dbf
328    
329    2003-05-26  Bernhard Herzog  <[email protected]>
330    
331            * test/test_transientdb.py
332            (TestTransientTable.run_iceland_political_tests): Fix a comment.
333    
334    2003-05-26  Bernhard Herzog  <[email protected]>
335    
336            * Thuban/UI/mainwindow.py (MainWindow.TableOpen): Real
337            implementation. Mark parts of the file format strings for
338            localization.
339    
340            * Thuban/Model/session.py (Session.OpenTableFile): New. Open a dbf
341            file and add the table to the tables managed by the session
342    
343            * test/test_session.py (TestSessionSimple.test_open_table_file):
344            New. test case for OpenTableFile
345    
346    2003-05-26  Jan-Oliver Wagner <[email protected]>
347    
348            * Thuban/UI/controls.py, Thuban/UI/identifyview.py, Thuban/UI/join.py,
349            Thuban/UI/labeldialog.py, Thuban/UI/mainwindow.py,
350            Thuban/UI/proj4dialog.py, Thuban/UI/tableview.py, Thuban/UI/view.py:
351            Replace the true/false of wxWindows by True/False of Python 2.2.1.
352    
353    2003-05-26  Jan-Oliver Wagner <[email protected]>
354    
355            * Thuban/UI/tableview.py (LayerTableFrame.__init__): If there is
356            already a selection present, update the grid accordingly.
357    
358            * Thuban/UI/mainwindow.py (MainWindow.TableShow): Make the dialog
359            resizeable and increase its initial size.
360    
361    2003-05-26  Frank Koormann  <[email protected]>
362    
363            Table export functionality
364    
365            * Thuban/Model/table.py (DBFTable.Width, MemoryTable.Width):
366            Return width (in characters) for a column.
367            (DBFTable.Precision, MemoryTable.Precision): Return decimal precision.
368            (table_to_dbf): Write table to dbf file.
369            (table_to_csv): Write table to csv file.
370    
371            * Thuban/Model/transientdb.py (TransientTableBase.Width,
372            TransientTableBase.Precision): Return column width and precision.
373    
374            * Thuban/UI/tableview.py (QueryTableFrame.OnSaveAs): Call table_to_dbf
375            or table_to_csv depending on file selection.
376    
377            * test/test_dbf_table.py:
378            Test table_to_dbf (extension of former part of test).
379    
380            * test/test_csv_table.py:
381            Test table_to_csv.
382    
383    2003-05-23  Jan-Oliver Wagner <[email protected]>
384    
385            * Thuban/UI/join.py (JoinDialog.OnJoin): Use _() for strings.
386            Use QueryTableFrame instead of TableFrame.
387    
388            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Prefix the
389            table window with 'Layer Table:' instead of 'Table:'.
390    
391    2003-05-23  Jan-Oliver Wagner <[email protected]>
392    
393            Give all tables a title via mix-in TitledObject.LayerShowTable
394    
395            * Thuban/Model/base.py (TitledObject.SetTitle): Call method 'issue'
396            only if it exists.
397    
398            * Thuban/Model/table.py (DBFTable, MemoryTable): mix-in TitledObject
399            and call its init-method with a default title. Remove Title() method.
400    
401            * Thuban/Model/transientdb.py (TransientTable, TransientJoinedTable,
402            AutoTransientTable): mix-in TitledObject and call its init-method with
403            a default title. Remove Title() method.
404    
405    2003-05-23  Bernhard Herzog  <[email protected]>
406    
407            * Thuban/Model/session.py (Session.AddShapeStore): Define
408            AddShapeStore analogously to AddTable.
409    
410            * test/test_session.py (TestSessionSimple.test_add_shapestore):
411            New. Test for AddShapeStore
412    
413    2003-05-23  Jan-Oliver Wagner <[email protected]>
414    
415            Introducing QueryTableFrame and a very coarse ShowTable implementation.
416    
417            * Thuban/UI/tableview.py (LayerTableFrame, QueryTableFrame): Split the
418            class LayerTableFrame into two classes, LayerTableFrame and QueryTableFrame.
419            The latter implements the selection GUI without dependency on a layer.
420            LayerTableFrame now is derived from QueryTableFrame and connects
421            to a layer.
422    
423            * Thuban/UI/mainwindow.py (MainWindow.TableShow): A very coarse
424            implementation that still needs work.
425    
426            * Thuban/Model/layer.py (Layer.TreeInfo): Added filename.
427    
428    2003-05-22  Frank Koormann  <[email protected]>
429    
430            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
431            Added "outer_join = False" as optional parameter.
432            (TransientJoinedTable.create): If outer join is true, perform a
433            "LEFT OUTER JOIN" instead of "JOIN", which preserves all records of
434            the left table. Records not matching are filled with 0 / None.
435    
436            * Thuban/UI/join.py (JoinDialog.__init__): Checkbox for outer join.
437            (JoinDialog.OnJoin): Consider outer join check box.
438    
439    2003-05-22  Bernhard Herzog  <[email protected]>
440    
441            * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a
442            somewhat safer way. Storing the traceback in a local variable can
443            lead to memory leaks
444    
445    2003-05-22  Bernhard Herzog  <[email protected]>
446    
447            * Thuban/UI/join.py (JoinDialog.OnJoin): Make sure to really call
448            the wxMessageDialog's Destroy() method.
449    
450    2003-05-22  Frank Koormann  <[email protected]>
451    
452            * Thuban/UI/join.py (JoinDialog.__init__): Make use of
453            TransientTable.Title()
454    
455    2003-05-22  Frank Koormann  <[email protected]>
456    
457            Join Dialog, initial version.
458    
459            * Thuban/UI/mainwindow.py (MainWindow.TableJoin): Removed print.
460    
461            * Thuban/UI/join.py (JoinDialog): Functional implementation of
462            former framework. Renamed Table1/Table2 to LeftTable/RightTable
463            in all occurences.
464    
465            * Thuban/Model/transientdb.py (TransientJoinedTable.__doc__):
466            Typo fixed.
467    
468    2003-05-22  Bernhard Herzog  <[email protected]>
469    
470            Give the tables titles so that the GUI can display more meaningful
471            names. For now the titles are fixed but depend on e.g. filenames
472            or the titles of the joined tables.
473    
474            * Thuban/Model/transientdb.py (TransientTable.Title)
475            (TransientJoinedTable.Title, AutoTransientTable.Title): New.
476    
477            * Thuban/Model/table.py (DBFTable.Title, MemoryTable.Title): New.
478    
479            * test/test_transientdb.py
480            (TestTransientTable.test_auto_transient_table_title): New. Test
481            for the Title method
482            (TestTransientTable.test_transient_joined_table)
483            (TestTransientTable.test_transient_table): Add test for the Title
484            methods
485    
486            * test/test_memory_table.py (TestMemoryTable.test_title): New.
487            Test for the Title method
488    
489            * test/test_dbf_table.py (TestDBFTable.test_title): New. Test for
490            the Title method
491    
492    2003-05-22  Bernhard Herzog  <[email protected]>
493    
494            * test/test_layer.py (TestLayer.setUp, TestLayer.tearDown):
495            Provide a better way to destroy the layers
496            (TestLayer.test_base_layer, TestLayer.test_arc_layer)
497            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
498            (TestLayer.test_polygon_layer, TestLayer.test_get_field_type): Use
499            the new way to destroy the layers.
500            (TestLayer.test_derived_store): New. Test for using a layer with a
501            DerivedShapeStore
502    
503            * Thuban/Model/layer.py (Layer.SetShapeStore): Only set the
504            filename if the shape store actually has one.
505    
506    2003-05-22  Bernhard Herzog  <[email protected]>
507    
508            * Thuban/Model/table.py (DBFTable.FileName): New. Accessor method
509            for the filename
510    
511            * test/test_dbf_table.py (TestDBFTable.test_filename): New. Test
512            for the FileName method
513            (TestDBFTableWriting.test_write): Fix spelling of filename
514    
515    2003-05-22  Thomas Koester  <[email protected]>
516    
517            * Thuban/Model/range.py, test/test_range.py: Brought over new Range
518            from SciParam that now really is immutable.
519    
520    2003-05-22  Frank Koormann  <[email protected]>
521    
522            Layer Top/Bottom placement added to legend.
523    
524            * Thuban/UI/legend.py
525            (LegendPanel._OnMoveTop(), LayerPanel._OnMoveBottom): New, methods
526            bound to tool events.
527            (LegendTree.MoveCurrentItemTop(), LegendTree.MoveCurrentItemBottom):
528            New, methods binding the event methods with the map methods.
529    
530            * Thuban/Model/map.py (Map.TopLayer(), Map.BottomLayer()): New, place
531            layer at top/bottom of layer stack.
532    
533            * Resources/Bitmaps/top_layer.xpm: New button icon.
534    
535            * Resources/Bitmaps/bottom_layer.xpm: New button icon.
536    
537    2003-05-22  Bernhard Herzog  <[email protected]>
538    
539            * Thuban/Model/session.py (Session.RemoveTable): New method to
540            remove tables
541    
542            * test/test_session.py (TestSessionSimple.test_remove_table): New.
543            Test for RemoveTable
544    
545    2003-05-22  Thomas Koester  <[email protected]>
546    
547            * Thuban/Model/classgen.py: Added short module doc string and CVS id.
548            (ClassGenerator.GenUniformDistribution): Use new Range __init__, too.
549    
550    2003-05-22  Bernhard Herzog  <[email protected]>
551    
552            Implement a way to discover dependencies between tables and
553            shapestores.
554    
555            * Thuban/Model/transientdb.py (TransientTableBase.Dependencies)
556            (TransientJoinedTable.Dependencies)
557            (AutoTransientTable.SimpleQuery): New. Implement the dependencies
558            interface
559            (TransientJoinedTable.__init__): Keep tack of the original table
560            objects in addition to the corresponding transient tables.
561    
562            * Thuban/Model/table.py (DBFTable.Dependencies)
563            (MemoryTable.Dependencies): New. Implement the dependencies
564            interface
565    
566            * Thuban/Model/data.py (ShapeTable): New. Helper class for
567            ShapefileStore
568            (ShapefileStore.__init__): Use ShapeTable instead of
569            AutoTransientTable
570            (ShapefileStore.Table, ShapefileStore.Shapefile): Add doc-strings
571            (ShapefileStore.FileName, ShapefileStore.FileType): New. Accessor
572            methods for filename and type
573            (ShapefileStore.Dependencies): New. Implement the dependencies
574            interface
575            (DerivedShapeStore): New class to replace SimpleStore. The main
576            difference to SimpleStore is that it depends not on a shapefile
577            but another shapestore which expresses the dependencies a bit
578            better
579            (SimpleStore.__init__): Add deprecation warning.
580    
581            * test/test_dbf_table.py (TestDBFTable.test_dependencies): New.
582            Test for the Dependencies method.
583    
584            * test/test_memory_table.py (TestMemoryTable.test_dependencies):
585            New. Test for the Dependencies method.
586    
587            * test/test_transientdb.py
588            (TestTransientTable.test_auto_transient_table_dependencies): New.
589            Test for the Dependencies method.
590            (TestTransientTable.test_transient_joined_table): Add test for the
591            Dependencies method.
592    
593            * test/test_session.py (TestSessionSimple.setUp)
594            (TestSessionSimple.tearDown): New. Implement a better way to
595            destroy the sessions.
596            (TestSessionSimple.test_initial_state)
597            (TestSessionSimple.test_add_table): Bind session to self.session
598            so that it's destroyed by tearDown
599            (TestSessionSimple.test_open_shapefile): New. Test for
600            OpenShapefile and the object it returns
601    
602    2003-05-22  Bernhard Herzog  <[email protected]>
603    
604            * Thuban/Model/session.py (Session.AddTable): New method to
605            register tables with the session.
606            (Session.Tables): Return the tables registered with AddTable too.
607    
608            * test/test_session.py (TestSessionSimple.test_add_table): New.
609            Test case for the AddTable method
610    
611    2003-05-22  Frank Koormann  <[email protected]>
612    
613            UI polishing updates: Place main buttons (OK, Cancel, etc) in the
614            lower right corner, center labels for selections, initialize controls
615            in reasonable order for keyboard navigation.
616    
617            * Thuban/UI/projdialog.py (ProjFrame.__init__, ProjFrame.__doLayout)
618            (ProjFrame.__DoOnProjAvail): Determine position of current projection
619            using the wxListBox.FindString() method. Still a problem (#1886)
620    
621            * Thuban/UI/classifier.py
622            (Classifier.__init__, SelectPropertiesDialog.__init__)
623    
624            * Thuban/UI/classgen.py (ClassGenDialog.__init__,
625            (ClassGenDialog.__DoOnGenTypeSelect): Moved initialization of the
626            different classification types from here to __init__.
627            (GenUniquePanel.__init__): Set the column width of the first field
628            in the Field ListCtrl to the full width.
629    
630            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Rename 'Save As'
631            Button to 'Export'. Center Buttons in Selection Box, set Focus to
632            Grid.
633            (LayerTableFrame.OnKeyDown()): New, bound to the grid with EVT_KEY_DOWN,
634            changes focus to the Selection when pressing "Alt-S".
635    
636            * Thuban/UI/legend.py (LegendTree.__SetVisibilityStyle): Only gray out
637            the text if not visible. The italic font sometimes exceeds the
638            rendering area.
639    
640    2003-05-21  Jonathan Coles   <[email protected]>
641    
642            * Thuban/UI/dock.py (DockFrame): Rename references to _OnClose
643            to OnClose so that Thuban closes correctly.
644    
645            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Call
646            DockFrame.OnClose, not DockFrame._OnClose.
647    
648    2003-05-21  Jonathan Coles   <[email protected]>
649    
650            * Thuban/Model/classgen.py (ClassGenerator.GenQuantiles): Remove
651            references to 'inf' and use new Range __init__ to pass floats
652            directly rather than converting them to strings first.
653            Fixes RTBug #1876.
654    
655            * Thuban/Model/classification.py (ClassGroupRange.SetRange):
656            Use new Range ___init__ to pass floats.
657    
658            * Thuban/Model/layer.py (RasterLayer.__init__): Test if the
659            filename is a valid image file. Throw IOError otherwise.
660    
661            * Thuban/Model/range.py: Brought over new Range from SciParam that
662            is immutable and has an __init__ which can accept floats.
663    
664            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Move OpenShapefile
665            into try block. AddLayer doesn't throw any exceptions anymore.
666            (MainWindow.AddRasterLayer): Move constructor of RasterLayer into
667            try block.
668    
669            * Thuban/UI/projdialog.py (GeoPanel.__init__): Put Degrees as
670            the first item in choices. Fixes RTBug #1882.
671    
672            * Thuban/UI/renderer.py (MapRenderer.render_map): Check if scale
673            has gone to 0 which is a serious problem. abort.
674            (MapRenderer.draw_raster_layer): Catch IOError seperately and
675            print the error from GDAL.
676    
677            * Thuban/UI/tableview.py (TableGrid.__init__): Call
678            ToggleEventListeners to turn on listening.
679            (TableGrid.ToggleEventListeners): New. Turns event listening on
680            and off so as to prevent excessive messages.
681            (LayerTableFrame.OnQuery): Use TableGrid.ToggleEventListeners
682            to suppress excessive messages when selecting many rows.
683            Fixes RTBug #1880.
684    
685            * Thuban/UI/view.py: Added checks against if scale == 0. This
686            is a serious problem that can occur when an image without
687            geo data is loading and causes the map projection bounds to
688            go to infinity. Right now, the solution is to simply try
689            to recover.
690    
691            * extensions/thuban/cpl_mfile.cpp (MFILEClose): Make sure
692            to set the MFILEReceiver attributes even if the data is NULL.
693    
694            * extensions/thuban/gdalwarp.cpp: Improved the error handling
695            and passed GDAL messages back up to the Python layer. Also
696            tried to fix some memory leaks that were present in the original
697            utility but didn't matter because the program aborted.
698    
699            * test/test_range.py: Copied over tests from SciParam. Removed
700            tests against importing. Fixes RTBug #1867.
701    
702    2003-05-21  Bernhard Herzog  <[email protected]>
703    
704            * test/test_load.py: Remove unused imports and restructure the
705            test code
706            (LoadSessionTest): Split into one class for each test and turn
707            LoadSessionTest itself into the base class for all such session
708            tests.
709            (ClassificationTest): New base class for load tests that test
710            classifications
711            (TestSingleLayer, TestLayerVisibility, TestClassification)
712            (TestLabels, TestLayerProjection, TestRasterLayer): New classes
713            for the individual tests
714    
715            * test/support.py (FileLoadTestCase.filename): New base class for
716            file loading tests
717    
718    2003-05-21  Jan-Oliver Wagner <[email protected]>
719    
720            * Resources/Projections/defaults.proj: Renamed 'Universal Transverse
721            Mercator' to 'UTM Zone 32' as a more convenient example.
722            Added 'Gauss Krueger Zone 6'.
723    
724            * Data/iceland_sample_raster.thuban: political polygon now
725            filled transparent to have the raster image visible at once.
726    
727    2003-05-21  Frank Koormann  <[email protected]>
728    
729            * Thuban/UI/mainwindow.py (MainWindow): Renamed _OnClose() back to
730            OnClose() to keep in sync with extensions. Internally Thuban
731            still uses "underscored" names.
732    
733    2003-05-20  Jonathan Coles   <[email protected]>
734    
735            This puts back Raster layer support. These layers support projections
736            through the GDAL library. Currently, the CVS version is being used.
737            There are no Debian packages available although this may change soon.
738            A GDAL driver was extended to support writing to memory rather to
739            files.
740    
741            There is still some work that needs to be done, such as some error
742            handling when loading invalid images or when there is a problem
743            projecting the image. This putback simply checks in the majority
744            of the work.
745    
746            * setup.py: Add gdalwarp library extension.
747    
748            * Thuban/Model/layer.py (BaseLayer.HasClassification): New.
749            Defaults to False, but can be overridden by subclasses if they
750            support classification.
751            (RasterLayer): New. Defines a new layer that represents an
752            image.
753    
754            * Thuban/Model/load.py (SessionLoader.__init__): Add rasterlayer
755            tag handler.
756            (SessionLoader.start_layer): Encode the filename.
757            (SessionLoader.start_rasterlayer, SessionLoader.end_rasterlayer):
758            New. Supports reading a rasterlayer tag.
759    
760            * Thuban/Model/map.py (Map.BoundingBox): Fix typo in comment.
761    
762            * Thuban/Model/save.py (XMLWriter.encode): Don't assume that we
763            get a string in Latin1. If we get such as string convert it to
764            unicode first, otherwise leave if alone before encoding.
765            (SessionSaver.write_layer): Add support for writing both Layers
766            and RasterLayers.
767    
768            * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):
769            The right argument may not be a string, it could also be a Column.
770    
771            * Thuban/UI/application.py (ThubanApplication.CreateMainWindow):
772            Make initial window size 600x400. Fixes RTBug #1872.
773    
774            * Thuban/UI/classifier.py (Classifier.__init__): Rearrange how
775            the dialog is constructed so that we can support layers that
776            do not have classifications.
777            (Classifier._OnTry): Only build a classification if the layer
778            supports one.
779    
780            * Thuban/UI/legend.py: Change all checks that a layer is an
781            instance of Layer into checks against BaseLayer.
782            (LegendTree.__FillTreeLayer): Only add children to a branch if
783            the layer supports classification.
784    
785            * Thuban/UI/mainwindow.py (MainWindow.NewSession,
786            MainWindow.OpenSession): Don't proceed with an action if the
787            user chooses Cancel when they are asked to save changes.
788            (MainWindow.AddRasterLayer): New. Open a dialog to allow the
789            user to select an image file. Create a new RasterLayer and add
790            it to the map.
791    
792            * Thuban/UI/renderer.py (MapRenderer.render_map): Add support
793            for rendering RasterLayer layers.
794            (MapRenderer.draw_raster_layer): Actually method that calls
795            the GDALWarp python wrapper and constructs an image from the
796            data returned.
797    
798            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Change the
799            Choices symbols to match those used in the table query method.
800            Replace deprecated method calls on table with new method names.
801    
802            * Thuban/UI/view.py (MapCanvas.set_view_transform): Try to limit
803            how small the scale can get. This still needs more testing.
804    
805            * extensions/thuban/bmpdataset.cpp: New, but copied from GDAL.
806            Provides a driver to output in .bmp format.
807    
808            * extensions/thuban/cpl_mfile.cpp, extensions/thuban/cpl_mfile.h:
809            New. Provides IO routines which write to memory, rather than a file.
810    
811            * extensions/thuban/gdalwarp.cpp: New, but basically a direct copy
812            of the gdalwarp utility provided in GDAL. Added function calls
813            that can be accessed from python.
814    
815            * Data/iceland_sample_raster.thuban: New. Sample file that uses
816            a raster layer.
817    
818            * Data/iceland/island.tfw, Data/iceland/island.tif: New. Raster
819            layer image data.
820    
821            * Doc/thuban.dtd: Added rasterlayer attribute definition.
822    
823            * test/test_layer.py, test/test_load.py, test/test_save.py: Added
824            tests associated with the raster layer code.
825    
826            * test/test_transientdb.py
827            (TestTransientTable.test_auto_transient_table_query): Added a test
828            for using a Column object as the "right" parameter to a query.
829    
830    2003-05-19  Frank Koormann  <[email protected]>
831    
832            * Thuban/version.py (get_changelog_date):
833            Catch exceptions if ChangeLog does not exist.
834    
835            * Thuban/UI/view.py (MapCanvas.Export): Bugfix
836    
837    2003-05-19  Frank Koormann  <[email protected]>
838    
839            Extended version information for Thuban
840    
841            * Thuban/version.py: New, version information for Thuban: Last
842            modification date and last ChangeLog entry date.
843    
844            * Thuban/UI/mainwindow.py (MainWindow.About()): Extended version
845            information: Display Thuban, wxPython and Python version.
846    
847    2003-05-16  Bernhard Herzog  <[email protected]>
848    
849            * Thuban/Model/save.py: Remove some unused imports including the
850            __future__ import for nested_scopes as Thuban relies on Python 2.2
851            now.
852            (XMLWriter.encode): Remove the special case for a None argument.
853            In the saver encode is always called with a string argument.
854    
855    2003-05-16  Bernhard Herzog  <[email protected]>
856    
857            * Thuban/UI/__init__.py: Remove the work-around for the locale bug
858            in wxPython (at least when usinvg wxGTK) prior to 2.4. The symptom
859            of the bug was that e.g. float("1.2") would fail. Thuban now
860            requires 2.4.x.
861            
862    2003-05-16  Frank Koormann   <[email protected]>
863    
864            Printing enhancement and WMF export (under Win32)
865    
866            * Thuban/UI/renderer.py (ExportRenderer): New, derived from
867            ScreenRenderer. Renders Map, Legend and Scalebar for export.
868            (PrinterRenderer): New, derived from ExportRenderer. Replaces the old
869            PrintRender.
870    
871            * Thuban/UI/view.py (MapPrintout.__init__): Enhanced parameter set
872            to fullfil information needed for PrinterRenderer.
873            (MapCanvas.Export): New. Export Map (currently only to WMF on Win32).
874            (MapCanvas.Print): Adapted to new MapPrintout.
875            (OutputTransform): General calculations to transform from canvas
876            coordinates to export/printing devices.
877    
878            * Thuban/UI/mainwindow.py (MainWindow.ExportMap()): New. Added also
879            new method_command to call ExportMap, with platform dependency (only
880            __WXMSW__)
881      
882            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Position and Size
883            of scalebar drawing area as new parameters.
884            
885            * Thuban/Model/scalebar.py (roundInterval): round long instead of int
886    
887            * Thuban/UI/legend.py (ScalebarBitmap.__SetScale):
888            Update to extended scalebar.DrawScalebar header.
889    
890            * test/test_export.py: New, test Thuban.UI.view.OutputTransform()
891    
892            * test/test_scalebar.py: Made test executable as standalone.
893    
894    2003-05-16  Bernhard Herzog  <[email protected]>
895    
896            * Thuban/Model/table.py (Table): Remove this compatibility alias
897            for DBFTable.
898    
899            * test/test_table.py: Import DBFTable as Table because that alias
900            doesn't exist anymore.
901    
902            * Thuban/UI/classgen.py: Remove some unused imports
903    
904    2003-05-14  Jonathan Coles   <[email protected]>
905    
906            * Thuban/Model/classgen.py (ClassGenerator.GenSingletonsFromList):
907            Fix docstring.
908            (ClassGenerator.GenUniformDistribution): Fix spelling of method name.
909            (ClassGenerator.GenQuantiles): Use the left/right brackets and min/max
910            values of the supplied range to determine the beginning and end
911            bounds of the generated classes.
912    
913            * Thuban/Model/range.py (Range.number_re): Now accepts floats that
914            do not have a leading 0 (.5 is now accepted as well as 0.5).
915    
916            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Fix name of method
917            call to ClassGenerator.GenUniformDistribution.
918    
919            * Thuban/UI/projdialog.py (ProjFrame.__do_layout): Fix Windows
920            layout bug with the 'Projection' label.
921    
922            * test/support.py (FloatTestCase): New. Needed for the Range tests.
923    
924            * test/test_range.py: New. Imported from SciParam.
925    
926    2003-05-12  Jonathan Coles   <[email protected]>
927    
928            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Replace call
929            to table.UniqueValues() with calls that retrieve all the values
930            from the table. This will need to be replaced by a method on table
931            which can simply return the list (perhaps more efficiently).
932    
933    2003-05-12  Jonathan Coles   <[email protected]>
934    
935            The return value of ClassGenerator.CalculateQuantiles has changed.
936            Refer to the documentation for details.
937    
938            * test/test_classgen.py: Modified Quantile tests to use the
939            new return values.
940    
941            * Thuban/Model/classgen.py
942            (ClassGenerator.GenQuantiles): Add comments describing the parameters,
943            use new return values from CalculateQuantiles to produce the correct
944            range bounds in the Classification.
945            (ClassGenerator.CalculateQuantiles): Add more comments describing
946            the return values and parameters. Make minor adjustments to improve
947            the legibility of the code. Fix problem with adjusted not being set
948            in most cases.
949    
950    2003-05-12  Frank Koormann <[email protected]>
951            
952            * Thuban/Model/save.py (XMLWriter.encode()): Explicite call to unicode
953            and latin1. Fixes #1851 finally.
954    
955    2003-05-09  Jonathan Coles   <[email protected]>
956    
957            * test/test_classgen.py: New. Tests the Quantile algorithm.
958    
959            * Thuban/Model/classgen.py (ClassGenerator.CalculateQuantiles):
960            Clean up debugging statement, add comments, fix a small bug in the
961            returned adjusted percentiles.
962            
963    2003-05-09  Jonathan Coles   <[email protected]>
964    
965            Introduces Range class from SciParam into the ClassGroupRange class,
966            and such ranges can now be saved and loaded from disk.
967    
968            Quantiles are now available in the Classification Generator.
969    
970            Initial support for building Queries on a table. Doesn't do anything
971            but run some tests.
972    
973            * Thuban/Model/classification.py: Explicit imports.
974            (ClassGroupRange): Use the Range class to store the underlying
975            range information. The interface remains the same, except for
976            GetRange(), and you can also supply a Range object as the min
977            parameter to SetRange or __init__.
978    
979            * Thuban/Model/load.py (XMLReader.encode): New. Encodes the given
980            string appropriately for use in Thuban. Fixes RTbug #1851.
981            (SessionLoader.end_projection): Handle the context of the
982            projection tag a bit better by looking at what objects are not
983            None. There was an assumption that a projection tag for a map
984            could occur before any layers.
985            (SessionLoader.start_clrange): Provide backward compatibility for
986            reading min/max values as well as the new range parameter.
987    
988            * Thuban/Model/map.py: Explicit imports.
989    
990            * Thuban/Model/resource.py: Import _.
991            (ProjFileSaver.write): write header using projfile.dtd.
992    
993            * Thuban/Model/save.py: Explicit imports.
994            (XMLWriter.encode): New. Encode the given string from a format
995            used by Thuban into UTF-8. Fixes RTbug #1851.
996    
997            * Thuban/UI/classgen.py: Explicit imports.
998            (ClassGenDialog.__init__): Clean up the code and add support
999            for Quantiles.
1000            (ClassGenDialog.OnOK): Add support for Quantiles.
1001            (GenQuantilesPanel): New. Input panel for Quantiles.
1002            (ClassGenerator, CustomRamp, MonochromaticRamp, GreyRamp, RedRamp,
1003            GreenRamp, BlueRamp, HotToColdRamp): Move to Thuban/Model/classgen.py
1004    
1005            * Thuban/Model/classgen.py: New. Contains all the classes named above.
1006    
1007            * Thuban/UI/classifier.py: Explicit imports.
1008            (ClassTable.GetValueAsCust, ClassTable.__ParseInput,
1009            ClassTable.SetValueAsCustom): Reworked to use new Range class.
1010    
1011            * Thuban/UI/legend.py: Explicit imports.
1012    
1013            * Thuban/UI/mainwindow.py: Add support for the Join Dialog. Added
1014            a Table menu and associated method calls.
1015            (MainWindow.choose_color): Removed. No longer needed.
1016    
1017            * Thuban/UI/projdialog.py (ProjFrame.__VerifyButtons): Save button
1018            should be disabled if no projection is selected in the available
1019            list.
1020    
1021            * Thuban/UI/renderer.py: Explicit imports.
1022    
1023            * Thuban/UI/tableview.py (TableGrid.OnRangeSelect): Fix some issues
1024            with correctly selecting the rows and issuing the right events.
1025            Be sure to call Skip() to allow the grid to do some of its own
1026            handling which allows the rows to actually be selected.
1027            (LayerTableGrid.select_shapes): Rename from select_shape. Supports
1028            selecting multiple shapes.
1029            (LayerTableFrame): Support for building Queries.
1030            (LayerTableFrame.select_shapes): Allow multiple shapes to be selected.
1031    
1032            * Thuban/UI/tree.py: Explicit imports.
1033    
1034            * Thuban/UI/view.py (MapCanvas): Delegate "SelectedShapes" so the
1035            table view can call it.
1036    
1037            * test/test_classification.py: Explicit imports.
1038            (TestClassification.test_ClassGroupRange): Fix test for new
1039            Range class.
1040    
1041            * Doc/thuban.dtd: Add range parameter for clrange.
1042    
1043            * Thuban/Model/range.py: Taken from SciParam. Used as the underlying
1044            object in ClassGroupRange, and also uesd for inputting ranges in
1045            the classifer table and elsewhere.
1046    
1047            * Thuban/UI/join.py: New. Initial Join dialog. No real functionality
1048            yet.
1049    
1050    2003-05-09  Frank Koormann <[email protected]>
1051    
1052            * Thuban/UI/scalebar.py (DrawScaleBar): Draw only if interval > 0.0.
1053    
1054    2003-05-08  Frank Koormann <[email protected]>
1055    
1056            Coding style updates
1057    
1058            * test/test_scalebar.py: Replaced tab indentation by spaces.
1059    
1060            * Thuban/UI/scalebar.py: Explicit imports.
1061    
1062    2003-05-08  Frank Koormann <[email protected]>
1063    
1064            * Thuban/UI/scalebar.py
1065            (ScaleBar.DrawScalebar): Format string bug fixed.
1066    
1067    2003-05-08  Frank Koormann <[email protected]>
1068    
1069            Reorganization of scalebar component (no wx in Thuban/Model)
1070    
1071            * Thuban/Model/scalebar.py: Rendering moved to Thuban/UI/scalebar.py
1072            (deriveInterval):
1073            Calculate scalebar interval and unit which fits in width for scale.
1074            (roundInterval): Round float.
1075    
1076            * Thuban/UI/scalebar.py (ScaleBar): Scalebar rendering
1077    
1078            * test/test_scalebar.py: Test for Thuban/Model/scalebar.py methods.
1079    
1080            * Thuban/UI/legend.py: Import Thuban.UI.scalebar
1081    
1082    2003-05-08  Frank Koormann <[email protected]>
1083    
1084            * Thuban/UI/legend.py (ScalebarBitmap.SetCanvas):
1085            Initialize ScaleBar with canvas.map
1086    
1087            * Thuban/Model/scalebar.py (ScaleBar.roundInterval()): New,
1088            round intervals to display smarter lengths
1089            (ScaleBar.DrawScalebar): Draw Scalebar only if the map contains a
1090            layer. If the maps has no projection applied grey the scalebar.
1091    
1092    2003-05-07  Frank Koormann <[email protected]>
1093            
1094            Basic Scalebar features added.
1095    
1096            * Thuban/Model/scalebar.py (ScaleBar): New, scalebar rendering.
1097    
1098            * Thuban/UI/legend.py (LegendPanel): Added scalebar bitmap
1099            (ScaleBarBitmap): New, links the scalebar bitmap with view messages
1100            and the renderer.
1101    
1102            * Thuban/UI/view.py (MapCanvas.set_view_transform): Issue SCALE_CHANGED.
1103    
1104            * Thuban/UI/messages.py: SCALE_CHANGED added.
1105    
1106    2003-05-07  Bernhard Herzog  <[email protected]>
1107    
1108            * Thuban/Model/session.py (Session.__init__): New instance
1109            variable shapestores to hold a list of all open shapestore objects
1110            (Session.ShapeStores): New. Accessor method for the shapestores
1111            list.
1112            (Session._add_shapestore, Session._clean_weak_store_refs): New.
1113            Internal methods to maintain the shapestores list.
1114            (Session.Tables): New. Return all tables open in the session.
1115            (Session.OpenShapefile): Insert the new ShapeStore into the
1116            shapestores list.
1117    
1118            * test/test_session.py (TestSessionSimple.test_initial_state): Add
1119            tests for ShapeStores and Tables
1120            (TestSessionWithContent.test_shape_stores)
1121            (TestSessionWithContent.test_tables): New. Test cases for
1122            ShapeStores and Tables
1123    
1124    2003-05-07  Bernhard Herzog  <[email protected]>
1125    
1126            * Thuban/Model/transientdb.py (TransientTableBase.ReadRowAsDict):
1127            Add comments about the optimizations used.
1128            (AutoTransientTable.ReadValue, TransientTableBase.ReadValue): New.
1129            Implement the ReadValue table interface method.
1130    
1131            * test/test_transientdb.py
1132            (TestTransientTable.run_iceland_political_tests)
1133            (TestTransientTable.test_transient_joined_table): Add tests for
1134            ReadValue
1135    
1136    2003-05-07  Frank Koormann <[email protected]>
1137    
1138            * Resources/Bitmaps/fulllayerextent.xpm,
1139            Resources/Bitmaps/fullselextent.xpm: Replaced the place holders with
1140            new icons.
1141    
1142  2003-05-06  Bernhard Herzog  <[email protected]>  2003-05-06  Bernhard Herzog  <[email protected]>
1143    
1144          * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):          * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):

Legend:
Removed from v.846  
changed lines
  Added in v.1120

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26