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

Legend:
Removed from v.199  
changed lines
  Added in v.313

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26