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

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

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

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

Legend:
Removed from v.988  
changed lines
  Added in v.1172

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26