/[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 205 by bh, Tue Jul 9 14:02:40 2002 UTC revision 359 by bh, Mon Dec 9 10:32:51 2002 UTC
# Line 1  Line 1 
1    2002-12-09  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/UI/command.py (ToolCommand): New class for tool commands.
4            (Command.IsTool): New method to distinguish between command
5            switching tools and other commands.
6    
7            * Thuban/UI/view.py (MapCanvas.SelectTool): New method to select
8            the tool to avoid direct assignments to instance variables
9            (MapCanvas.ZoomInTool, MapCanvas.ZoomOutTool, MapCanvas.PanTool)
10            (MapCanvas.IdentifyTool, MapCanvas.LabelTool): Use SelectTool to
11            change the tool
12    
13            * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): If an
14            active tool's command turns insensitive, disable the tool.
15            (_tool_command): Use the new ToolCommand class
16    
17            * Examples/simple_extensions/simple_tool.py (simple_tool): Use the
18            SelectTool method to change the tool
19            (iconfile): Use the ToolCommand class
20    
21    2002-12-03  Bernhard Herzog  <[email protected]>
22    
23            * Thuban/UI/tree.py (SessionTreeCtrl.normalize_selection): Handle
24            the case of selected items that are not children of Layers or Maps
25            properly. Previously this bug would trigger an assertion in
26            wxWindows.
27    
28    2002-11-06  Frank Koormann  <[email protected]>
29    
30            * Thuban/UI/mainwindow.py: Altered the order of tools in the
31            toolbar: First now are all navigation tools (Zoom In/Out, Pan,
32            Full Extent).
33        
34    2002-10-23  Bernhard Herzog  <[email protected]>
35    
36            * setup.py (setup call): version now 0.1.3
37    
38            * MANIFEST.in: Add the files in test/
39    
40            * test/README: Add note about tests requiring the iceland data
41    
42            * Thuban/UI/mainwindow.py (MainWindow.About): Add 2002 to
43            copyright notice.
44    
45    2002-10-18  Bernhard Herzog  <[email protected]>
46    
47            * test/test_map.py
48            (TestMapWithContents.test_projected_bounding_box): Use an explicit
49            epsilon.
50    
51            * test/support.py (FloatComparisonMixin.assertFloatEqual)
52            (FloatComparisonMixin.assertFloatSeqEqual): give a more useful
53            message if the assertion fails and don't return the return value
54            of self.assert_. In assertFloatSeqEqual the return meant that not
55            all items of the sequence were compared.
56    
57    2002-09-20  Bernhard Herzog  <[email protected]>
58    
59            * test/test_fileutil.py: New. Test cases for Thuban.Lib.fileutil
60    
61            * Thuban/Lib/fileutil.py: Fixup some whitespace and typos
62    
63            * test/test_map.py (TestMapWithContents.test_tree_info): Create
64            the string with the bounding box on the fly because of platform
65            differences in the way %g is handled.
66    
67            * test/test_layer.py (TestLayer.test_empty_layer): Create an empty
68            DBFfile too because Thuban layers can't yet cope missing DBF
69            files.
70    
71    2002-09-20  Bernhard Herzog  <[email protected]>
72    
73            * test/test_menu.py: Use initthuban instead of
74            add_thuban_dir_to_path to initialize Thuban.
75    
76            * test/support.py (FloatComparisonMixin.assertFloatEqual): New.
77            Mixin class for float comparisons
78            (SubscriberMixin): New. Mixin class to test messages sent through
79            the Connector class
80    
81            * test/README: Fix a typo and add the -v flag to the command for
82            individual tests
83    
84            * test/test_session.py: New. Test cases for Thuban.Model.session
85    
86            * test/test_proj.py: New. Test cases for Thuban.Model.proj
87    
88            * test/test_map.py: New. Test cases for Thuban.Model.map
89    
90            * test/test_layer.py: New. Test cases for Thuban.Model.layer
91    
92            * test/test_label.py: New. Test cases for Thuban.Model.label
93    
94            * test/test_connector.py: New. Test cases for Thuban.Lib.connector
95    
96            * test/test_color.py: New. Test cases for Thuban.Model.color
97    
98            * test/test_base.py: New. Test cases for Thuban.Model.base
99    
100    2002-09-13  Bernhard Herzog  <[email protected]>
101    
102            * Thuban/Model/session.py (Session.forwarded_channels): Forward
103            the CHANGED channel too.
104    
105            * Thuban/Model/map.py (Map.forwarded_channels): Forward the
106            CHANGED channel too.
107            (Map.__init__): Call the Modifiable constructor as well.
108    
109            * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
110            event if the modified flag changes.
111            (Modifiable.changed): Tweak the doc-string.
112    
113            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
114            (MainWindow.set_position_text): Put the code that puts the text
115            with the mouse position into the status bar into the new method
116            set_position_text so that it can overwritten in derived classes.
117    
118    2002-09-12  Bernhard Herzog  <[email protected]>
119    
120            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
121            message box on the main window.
122    
123    2002-09-11  Bernhard Herzog  <[email protected]>
124    
125            * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
126            the 'E' because it's less likely to interfere with other menu
127            entries.
128            (MainWindow.build_menu): remove an incorrect comment.
129    
130    2002-09-10  Bernhard Herzog  <[email protected]>
131    
132            * Thuban/UI/mainwindow.py (MainWindow.Map): New.
133            (_tool_command): Add sensitive parameter
134            (_has_visible_map): Sensitivity callback to tools and other
135            commands that require a visible map. Use it in map_zoom_in_tool,
136            map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
137            and map_full_extent
138    
139    2002-09-06  Bernhard Herzog  <[email protected]>
140    
141            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
142            VIEW_POSITION
143    
144    2002-09-04  Frank Koormann   <[email protected]>
145    
146            * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
147    
148    2002-09-02  Bernhard Herzog  <[email protected]>
149    
150            * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
151            wxWindows already and our implementation doesn't work correctly
152            with wxGTK 2.3:
153            (MapCanvas.__init__): Remove the instance variable
154            (MapCanvas.OnPaint): Always call do_redraw when there's a map to
155            be drawin
156            (MapCanvas.OnIdle): Removed.
157    
158            * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
159            a parameter to determine the size of the rectangle.
160            (MapCanvas.find_shape_at): Create the box around the point on a
161            layer by layer basis and make the size depend on the shape type.
162            This solves a problem with the selection of point shapes at the
163            border of the layer's bounding box
164    
165    2002-08-30  Bernhard Herzog  <[email protected]>
166    
167            * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
168            for the sensitivity  of remove layer.
169            (_can_remove_layer): New. Sensitivity callback for remove layer
170            (Command layer_remove): Use _can_remove_layer
171    
172            * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
173            determine whether a given layer can be deleted.
174    
175            * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
176            (MapCanvas.do_redraw): Get rid of the unused update_region
177            instance variable
178    
179            * Thuban/UI/view.py: Add/update some doc-strings.
180    
181            * test/: new subdirectory with a bunch of unit tests.
182    
183            * test/README, test/test_table.py, test/test_save.py,
184            test/test_menu.py, test/test_load.py: Initial set of tests and
185            brief instructions on how to run them
186    
187    2002-08-29  Bernhard Herzog  <[email protected]>
188    
189            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
190            arcs with multiple parts.
191    
192            * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
193            Handle degenrate rectangles.
194    
195            * Thuban/Model/table.py: Make writing records work correctly:
196            (Table.__init__): Keep track of whether the DBF is open for
197            writing
198            (Table.write_record): Open the DBF file for writing when necessary
199    
200    2002-08-27  Bernhard Herzog  <[email protected]>
201    
202            * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
203            dbf files only for reading by default. Use a new writable dbf
204            object for writing.
205    
206    2002-08-26  Bernhard Herzog  <[email protected]>
207    
208            * Thuban/UI/mainwindow.py: Refactor the context creation:
209            (MainWindow.Context): New method to return a context
210            (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
211            new method
212    
213            * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
214            layer table specific code from TableGrid into LayerTableGrid
215            (TableFrame, LayerTableFrame): Split the layer table specific code
216            from TableFrame into LayerTableFrame
217            (LayerTableGrid.select_shape): Remove a debug print
218    
219            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
220            LayerTableFrame
221    
222    2002-08-23  Bernhard Herzog  <[email protected]>
223    
224            * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
225            absolute filename.
226    
227    2002-08-22  Bernhard Herzog  <[email protected]>
228    
229            * Thuban/Model/table.py (Table.write_record): New method to write
230            records.
231            (Table.__init__): Open the DBF file for writing too.
232    
233            * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
234            into the underlying table.
235    
236            * extensions/shapelib/shapefil.h (DBFCommit),
237            extensions/shapelib/dbfopen.c (DBFCommit): New API function to
238            commit any changes made to the DBF file.
239    
240            * Thuban/UI/mainwindow.py (make_check_current_tool)
241            (_tool_command): Put the code that generates the "checked"
242            callback into a separate function so that we can reuse it
243            elsewhere
244    
245            * Thuban/Model/save.py (Saver): New class to handle serializing a
246            session into an XML file. The main reason to introduce a class is
247            that applications built on Thuban can derive from it so that they
248            can save additional information in a session file.
249            (save_session): Delegate almost all the work to the Saver class.
250            Rename the filename argument to file because it may be a file like
251            object now.
252    
253            * Thuban/Model/load.py: Get rid of the Python 1.5.2 compatibility
254            code. Remove the little test code which would be executed when the
255            module is run as a script which didn't work anymore since it can't
256            import the other Thuban modules.
257            (ProcessSession, load_session): Refactor the ProcessSession to
258            have one method for each element start and end tag so that derived
259            classes can easily override the processing of individual tags.
260            Also, always parse with namespaces enabled because applications
261            built on top of Thuban will likely use namespaces if they extend
262            the session file format.
263    
264    2002-08-21  Bernhard Herzog  <[email protected]>
265    
266            * setup.py (ThubanInstall.run): Don't repr install_lib_orig
267            because thubaninit_contents will do it for us.
268    
269    2002-08-16      Jan-Oliver Wagner <[email protected]>
270    
271            * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
272            tree window already open
273    
274    2002-08-15  Bernhard Herzog  <[email protected]>
275    
276            * Thuban/Model/layer.py (Layer.Destroy): Call the unboundd method
277            with self.
278    
279            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Only release the mouse
280            when we have actually captured it.
281    
282            * Thuban/Model/layer.py (Layer.Destroy): New. Explicitly close the
283            shapefile and destroy the table.
284    
285            * Thuban/Model/table.py (Table.Destroy): New. Close the DBF file.
286    
287    2002-08-14  Bernhard Herzog  <[email protected]>
288    
289            * Thuban/UI/controls.py (RecordTable.__init__): Remove the unused
290            instance variable columns
291            (RecordTable.GetTypeName): row and col may be negative in some
292            cases.
293    
294            * setup.py (InstallLocal.initialize_options)
295            (InstallLocal.finalize_options, InstallLocal.user_options): New
296            option create-init-file to build a thubaninit.py when running
297            install_local
298            (InstallLocal.run): Create the thubaninit.py module when requested
299            (thubaninit_contents): Split the template into several parts and
300            create a new function thubaninit_contents that creates the
301            contents of a thubaninit module.
302            (ThubanInstall.run): Use the new function to create the thubaninit
303            module.
304    
305    2002-07-30  Bernhard Herzog  <[email protected]>
306    
307            * Thuban/UI/application.py (ThubanApplication.OnExit): Do some
308            cleanup.
309            (ThubanApplication.MainLoop): Extend to automatically call OnExit.
310    
311            * Thuban/Model/session.py (Session.Destroy): Don't bypass the
312            direct base class' Destroy method.
313    
314            * Thuban/Model/map.py (Map.ClearLayers): New method to delete all
315            layers.
316            (Map.Destroy): Destroy the label_layer as well and call the
317            inherited Desatroymethod first so that no more messages are
318            issued.
319            (Map.RaiseLayer, Map.LowerLayer): Only issue LAYERS_CHANGED
320            message if the stacking order actually has changed. Add
321            doc-strings.
322            (Map.BoundingBox): Correct the doc-string.
323            (Map.AddLayer, Map.RemoveLayer, Map.Layers, Map.HasLayers)
324            (Map.ProjectedBoundingBox, Map.SetProjection): Add doc-strings.
325    
326            * Thuban/Model/label.py (LabelLayer.ClearLabels): New to delete
327            all labels.
328    
329    2002-07-29  Bernhard Herzog  <[email protected]>
330    
331            * Thuban/Model/map.py (Map.subscribe_layer_channels)
332            (Map.unsubscribe_layer_channels): Put the code that (un)subscribes
333            to a layer's channels into separate methods.
334            (Map.RemoveLayer, Map.AddLayer): Call the new methods
335            (Map.Destroy): Unsubscribe from a layer's channels before
336            destroying it.
337    
338            * Thuban/UI/view.py (MapCanvas.find_shape_at): Change the
339            selected_layer parameter to searched_layer which is the layer to
340            search in.
341            (MapCanvas.SelectShapeAt): New parameter layer to restrict the
342            search to that layer. Return the selected layer and shape.
343    
344            * Examples/simple_extensions/simple_tool.py (simple_tool): Fix a
345            typo
346    
347    2002-07-24  Bernhard Herzog  <[email protected]>
348    
349            * Thuban/UI/application.py (ThubanApplication.create_session):
350            Extend the doc string.
351            (ThubanApplication.subscribe_session)
352            (ThubanApplication.unsubscribe_session): New methods to
353            subscribe/unsubscribe to/from session channels.
354            (ThubanApplication.SetSession): Call the new methods here.
355            (ThubanApplication.maps_changed, ThubanApplication.set_map):
356            Renamed set_map to maps_changed. Its now a subscriber for
357            MAPS_CHANGED.
358    
359            * Thuban/UI/view.py (ZoomOutTool.MouseUp): Use the correct
360            x-coordinate in case of simple clicks
361    
362            * Thuban/Model/base.py (Modifiable.changed): Apply the args tuple,
363            don't pass it as a parameter
364    
365            * Thuban/Model/session.py (Session.RemoveMap): New
366    
367            * Thuban/UI/mainwindow.py (MainWindow.__init__): Turn the initial
368            window size into a parameter.
369    
370    2002-07-23  Bernhard Herzog  <[email protected]>
371    
372            * Thuban/UI/menu.py (Menu.item_index): Also search for menus not
373            just commands.
374    
375            * Thuban/UI/mainwindow.py (MainWindow.__init__): Change the
376            parameter list a bit to allow setting the window title and the
377            initial message in the status bar. Update the callers.
378    
379            * Thuban/UI/application.py (ThubanApplication.OnInit)
380            (ThubanApplication.CreateMainWindow): Put the mainwindow
381            instantiation into a separate method so that it can be overridden
382            by a subclass.
383    
384    2002-07-19  Bernhard Herzog  <[email protected]>
385    
386            * Thuban/Model/session.py: Issue a CHANGED message every time
387            another changed message is issued to make it easier to get
388            notified of changes.
389            (Session): Update the doc string
390            (Session.forward): Issue changed-events as CHANGED as well.
391            (Session.changed): Overwrite the inherited version to issue
392            CHANGED events as well.
393    
394            * Thuban/UI/tree.py: We can now simply subscribe to the session's
395            CHANGED channel to be informed of changes.
396            (SessionTreeCtrl.session_channels): Not needed any longer.
397            (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
398            Only have to (un)subscribe CHANGED
399    
400            * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
401    
402            * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
403            for the wxPython locale bug to __init__.py so that it's
404            automatically executed by anybody using UI code from Thuban.
405    
406    2002-07-18  Bernhard Herzog  <[email protected]>
407    
408            * Thuban/UI/main.py (main): app no longer needs to be global
409    
410            * Thuban/UI/mainwindow.py (MainWindow.__init__): Add application
411            as parameter and store it in an instance variable
412            (MainWindow.invoke_command, MainWindow.update_command_ui)
413            (MainWindow.save_modified_session, MainWindow.NewSession)
414            (MainWindow.OpenSession, MainWindow.SaveSession)
415            (MainWindow.SaveSessionAs, MainWindow.ShowSessionTree): Use self's
416            application object.
417    
418            * Thuban/UI/application.py (ThubanApplication.OnInit): Instantiate
419            the main window with self.
420    
421            * Thuban/UI/context.py: New module with the context class
422    
423            * Thuban/UI/command.py (Command): Update doc string.
424    
425            * Thuban/UI/mainwindow.py (MainWindow.invoke_command,
426            MainWindow.update_command_ui): Pass an instance of the context
427            class to the command's methods
428            (check_current_tool, call_method): Handle the new context
429            implementation
430    
431            * Examples/simple_extensions/simple_tool.py (simple_tool,
432            check_simple_tool): Handle the new context implementation
433    
434            * Examples/simple_extensions/simple_command.py (simple_command):
435            Handle the new context implementation. Update the comments about
436            the context.
437    
438            * Thuban/UI/application.py (ThubanApplication.SetSession): Add
439            doc-string
440            (ThubanApplication.Session): New method to return the session
441            object
442    
443            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): The
444            interactor's selected_layer may not be a layer of the current
445            session when the tree is updated while a new session is being set.
446    
447    2002-07-17  Bernhard Herzog  <[email protected]>
448    
449            * Thuban/UI/tree.py (color_string): Removed. No longer used.
450            (SessionTreeCtrl.update_tree, SessionTreeCtrl.add_items): Split
451            update_tree into update_tree and add_items. The tree now uses a
452            more generic way to display the contents of the tree.
453            (SessionTreeCtrl): Add a doc string explaining the TreeInfo method
454    
455            * Thuban/Model/layer.py (Layer.TreeInfo),
456            Thuban/Model/extension.py (Extension.TreeInfo),
457            Thuban/Model/map.py (Map.TreeInfo),
458            Thuban/Model/session.py (Session.TreeInfo):
459            Add TreeInfo methods to implement the new tree view update scheme
460    
461    2002-07-16  Bernhard Herzog  <[email protected]>
462    
463            * Thuban/UI/application.py: Don't use "import from" for the
464            MainWindow. It can't always be resolved.
465            (ThubanApplication.OnInit): change reference to MainWindow
466            accordingly.
467    
468            * Thuban/UI/menu.py (Menu.SetItems): New method to replace a menu
469            completely
470    
471    2002-07-10  Bernhard Herzog  <[email protected]>
472    
473            * setup.py (create_init_module): New configurable variable whose
474            default depends on the platform we're running on.
475            (ThubanInstall.initialize_options): Initialize
476            self.create_init_module from the global create_init_module
477            (ThubanInstall.user_options): indictate that the options
478            create-init-module and init-module-dir have arguments.
479    
480            * setup.py: In the setup call change the version number to include
481            cvs.
482    
483            * MANIFEST.in: Add the files in Examples
484    
485  2002-07-09  Bernhard Herzog  <[email protected]>  2002-07-09  Bernhard Herzog  <[email protected]>
486    
487            * setup.py: In the setup call, use the thuban homepage as the
488            value of the url parameter.
489    
490            * Examples: New subdirectory for examples.
491    
492            * Examples/simple_extensions/simple_tool.xpm,
493            Examples/simple_extensions/simple_tool.py,
494            Examples/simple_extensions/simple_command.py,
495            Examples/simple_extensions/README: Simple examples showing how to
496            add new commands and tools.
497    
498            * setup.cfg (bdist_rpm): Add the default value for prefix and tell
499            bdist_rpm that we also have an install script.
500            (bdist_inno): Add 2002 to the copyright notice.
501    
502          * setup.py: Create a file in python's site-packages directory to          * setup.py: Create a file in python's site-packages directory to
503          make installation of Thuban as a library easier.          make installation of Thuban as a library easier.
504          (ThubanInstall.user_options): Add two new options,          (ThubanInstall.user_options): Add two new options,

Legend:
Removed from v.205  
changed lines
  Added in v.359

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26