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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 322 - (hide annotations)
Fri Sep 13 14:21:58 2002 UTC (22 years, 5 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 42218 byte(s)
update ChangeLog

1 bh 322 2002-09-13 Bernhard Herzog <[email protected]>
2    
3     * Thuban/Model/session.py (Session.forwarded_channels): Forward
4     the CHANGED channel too.
5    
6     * Thuban/Model/map.py (Map.forwarded_channels): Forward the
7     CHANGED channel too.
8     (Map.__init__): Call the Modifiable constructor as well.
9    
10     * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
11     event if the modified flag changes.
12     (Modifiable.changed): Tweak the doc-string.
13    
14     * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
15     (MainWindow.set_position_text): Put the code that puts the text
16     with the mouse position into the status bar into the new method
17     set_position_text so that it can overwritten in derived classes.
18    
19 bh 317 2002-09-12 Bernhard Herzog <[email protected]>
20    
21     * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
22     message box on the main window.
23    
24 bh 313 2002-09-11 Bernhard Herzog <[email protected]>
25    
26     * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
27     the 'E' because it's less likely to interfere with other menu
28     entries.
29 bh 315 (MainWindow.build_menu): remove an incorrect comment.
30 bh 313
31 bh 311 2002-09-10 Bernhard Herzog <[email protected]>
32    
33     * Thuban/UI/mainwindow.py (MainWindow.Map): New.
34     (_tool_command): Add sensitive parameter
35     (_has_visible_map): Sensitivity callback to tools and other
36     commands that require a visible map. Use it in map_zoom_in_tool,
37     map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
38     and map_full_extent
39    
40 bh 308 2002-09-06 Bernhard Herzog <[email protected]>
41    
42     * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
43     VIEW_POSITION
44    
45 frank 306 2002-09-04 Frank Koormann <[email protected]>
46    
47     * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
48    
49 bh 302 2002-09-02 Bernhard Herzog <[email protected]>
50    
51 bh 304 * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
52     wxWindows already and our implementation doesn't work correctly
53     with wxGTK 2.3:
54     (MapCanvas.__init__): Remove the instance variable
55     (MapCanvas.OnPaint): Always call do_redraw when there's a map to
56     be drawin
57     (MapCanvas.OnIdle): Removed.
58    
59 bh 302 * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
60     a parameter to determine the size of the rectangle.
61     (MapCanvas.find_shape_at): Create the box around the point on a
62     layer by layer basis and make the size depend on the shape type.
63     This solves a problem with the selection of point shapes at the
64     border of the layer's bounding box
65    
66 bh 292 2002-08-30 Bernhard Herzog <[email protected]>
67    
68 bh 300 * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
69     for the sensitivity of remove layer.
70     (_can_remove_layer): New. Sensitivity callback for remove layer
71     (Command layer_remove): Use _can_remove_layer
72    
73     * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
74     determine whether a given layer can be deleted.
75    
76 bh 297 * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
77     (MapCanvas.do_redraw): Get rid of the unused update_region
78     instance variable
79    
80 bh 294 * Thuban/UI/view.py: Add/update some doc-strings.
81    
82 bh 292 * test/: new subdirectory with a bunch of unit tests.
83    
84     * test/README, test/test_table.py, test/test_save.py,
85     test/test_menu.py, test/test_load.py: Initial set of tests and
86     brief instructions on how to run them
87    
88 bh 287 2002-08-29 Bernhard Herzog <[email protected]>
89    
90 bh 291 * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
91     arcs with multiple parts.
92    
93 bh 289 * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
94     Handle degenrate rectangles.
95    
96 bh 287 * Thuban/Model/table.py: Make writing records work correctly:
97     (Table.__init__): Keep track of whether the DBF is open for
98     writing
99     (Table.write_record): Open the DBF file for writing when necessary
100    
101 bh 285 2002-08-27 Bernhard Herzog <[email protected]>
102    
103     * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
104     dbf files only for reading by default. Use a new writable dbf
105     object for writing.
106    
107 bh 278 2002-08-26 Bernhard Herzog <[email protected]>
108    
109 bh 282 * Thuban/UI/mainwindow.py: Refactor the context creation:
110     (MainWindow.Context): New method to return a context
111     (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
112     new method
113    
114 bh 278 * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
115     layer table specific code from TableGrid into LayerTableGrid
116     (TableFrame, LayerTableFrame): Split the layer table specific code
117     from TableFrame into LayerTableFrame
118 bh 280 (LayerTableGrid.select_shape): Remove a debug print
119 bh 278
120     * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
121     LayerTableFrame
122    
123 bh 277 2002-08-23 Bernhard Herzog <[email protected]>
124    
125     * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
126     absolute filename.
127    
128 bh 269 2002-08-22 Bernhard Herzog <[email protected]>
129    
130 bh 275 * Thuban/Model/table.py (Table.write_record): New method to write
131     records.
132     (Table.__init__): Open the DBF file for writing too.
133    
134     * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
135     into the underlying table.
136    
137     * extensions/shapelib/shapefil.h (DBFCommit),
138     extensions/shapelib/dbfopen.c (DBFCommit): New API function to
139     commit any changes made to the DBF file.
140    
141 bh 271 * Thuban/UI/mainwindow.py (make_check_current_tool)
142     (_tool_command): Put the code that generates the "checked"
143     callback into a separate function so that we can reuse it
144     elsewhere
145    
146 bh 269 * Thuban/Model/save.py (Saver): New class to handle serializing a
147     session into an XML file. The main reason to introduce a class is
148     that applications built on Thuban can derive from it so that they
149     can save additional information in a session file.
150     (save_session): Delegate almost all the work to the Saver class.
151     Rename the filename argument to file because it may be a file like
152     object now.
153    
154     * Thuban/Model/load.py: Get rid of the Python 1.5.2 compatibility
155     code. Remove the little test code which would be executed when the
156     module is run as a script which didn't work anymore since it can't
157     import the other Thuban modules.
158     (ProcessSession, load_session): Refactor the ProcessSession to
159     have one method for each element start and end tag so that derived
160     classes can easily override the processing of individual tags.
161     Also, always parse with namespaces enabled because applications
162     built on top of Thuban will likely use namespaces if they extend
163     the session file format.
164    
165 bh 266 2002-08-21 Bernhard Herzog <[email protected]>
166    
167     * setup.py (ThubanInstall.run): Don't repr install_lib_orig
168     because thubaninit_contents will do it for us.
169    
170 jan 265 2002-08-16 Jan-Oliver Wagner <[email protected]>
171    
172     * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
173     tree window already open
174    
175 bh 259 2002-08-15 Bernhard Herzog <[email protected]>
176    
177 bh 263 * Thuban/Model/layer.py (Layer.Destroy): Call the unboundd method
178     with self.
179    
180     * Thuban/UI/view.py (MapCanvas.OnLeftUp): Only release the mouse
181     when we have actually captured it.
182    
183 bh 259 * Thuban/Model/layer.py (Layer.Destroy): New. Explicitly close the
184     shapefile and destroy the table.
185    
186     * Thuban/Model/table.py (Table.Destroy): New. Close the DBF file.
187    
188 bh 254 2002-08-14 Bernhard Herzog <[email protected]>
189    
190 bh 256 * Thuban/UI/controls.py (RecordTable.__init__): Remove the unused
191     instance variable columns
192     (RecordTable.GetTypeName): row and col may be negative in some
193     cases.
194    
195 bh 254 * setup.py (InstallLocal.initialize_options)
196     (InstallLocal.finalize_options, InstallLocal.user_options): New
197     option create-init-file to build a thubaninit.py when running
198     install_local
199     (InstallLocal.run): Create the thubaninit.py module when requested
200     (thubaninit_contents): Split the template into several parts and
201     create a new function thubaninit_contents that creates the
202     contents of a thubaninit module.
203     (ThubanInstall.run): Use the new function to create the thubaninit
204     module.
205    
206 bh 252 2002-07-30 Bernhard Herzog <[email protected]>
207    
208     * Thuban/UI/application.py (ThubanApplication.OnExit): Do some
209     cleanup.
210     (ThubanApplication.MainLoop): Extend to automatically call OnExit.
211    
212     * Thuban/Model/session.py (Session.Destroy): Don't bypass the
213     direct base class' Destroy method.
214    
215     * Thuban/Model/map.py (Map.ClearLayers): New method to delete all
216     layers.
217     (Map.Destroy): Destroy the label_layer as well and call the
218     inherited Desatroymethod first so that no more messages are
219     issued.
220     (Map.RaiseLayer, Map.LowerLayer): Only issue LAYERS_CHANGED
221     message if the stacking order actually has changed. Add
222     doc-strings.
223     (Map.BoundingBox): Correct the doc-string.
224     (Map.AddLayer, Map.RemoveLayer, Map.Layers, Map.HasLayers)
225     (Map.ProjectedBoundingBox, Map.SetProjection): Add doc-strings.
226    
227     * Thuban/Model/label.py (LabelLayer.ClearLabels): New to delete
228     all labels.
229    
230 bh 247 2002-07-29 Bernhard Herzog <[email protected]>
231    
232     * Thuban/Model/map.py (Map.subscribe_layer_channels)
233     (Map.unsubscribe_layer_channels): Put the code that (un)subscribes
234     to a layer's channels into separate methods.
235     (Map.RemoveLayer, Map.AddLayer): Call the new methods
236     (Map.Destroy): Unsubscribe from a layer's channels before
237     destroying it.
238    
239     * Thuban/UI/view.py (MapCanvas.find_shape_at): Change the
240     selected_layer parameter to searched_layer which is the layer to
241     search in.
242     (MapCanvas.SelectShapeAt): New parameter layer to restrict the
243     search to that layer. Return the selected layer and shape.
244    
245     * Examples/simple_extensions/simple_tool.py (simple_tool): Fix a
246     typo
247    
248 bh 238 2002-07-24 Bernhard Herzog <[email protected]>
249    
250 bh 243 * Thuban/UI/application.py (ThubanApplication.create_session):
251     Extend the doc string.
252     (ThubanApplication.subscribe_session)
253     (ThubanApplication.unsubscribe_session): New methods to
254     subscribe/unsubscribe to/from session channels.
255     (ThubanApplication.SetSession): Call the new methods here.
256     (ThubanApplication.maps_changed, ThubanApplication.set_map):
257     Renamed set_map to maps_changed. Its now a subscriber for
258     MAPS_CHANGED.
259    
260     * Thuban/UI/view.py (ZoomOutTool.MouseUp): Use the correct
261     x-coordinate in case of simple clicks
262    
263     * Thuban/Model/base.py (Modifiable.changed): Apply the args tuple,
264     don't pass it as a parameter
265    
266     * Thuban/Model/session.py (Session.RemoveMap): New
267    
268 bh 238 * Thuban/UI/mainwindow.py (MainWindow.__init__): Turn the initial
269     window size into a parameter.
270    
271 bh 235 2002-07-23 Bernhard Herzog <[email protected]>
272    
273 bh 237 * Thuban/UI/menu.py (Menu.item_index): Also search for menus not
274     just commands.
275    
276 bh 235 * Thuban/UI/mainwindow.py (MainWindow.__init__): Change the
277     parameter list a bit to allow setting the window title and the
278     initial message in the status bar. Update the callers.
279    
280     * Thuban/UI/application.py (ThubanApplication.OnInit)
281     (ThubanApplication.CreateMainWindow): Put the mainwindow
282     instantiation into a separate method so that it can be overridden
283     by a subclass.
284    
285 bh 230 2002-07-19 Bernhard Herzog <[email protected]>
286    
287 bh 234 * Thuban/Model/session.py: Issue a CHANGED message every time
288     another changed message is issued to make it easier to get
289     notified of changes.
290     (Session): Update the doc string
291     (Session.forward): Issue changed-events as CHANGED as well.
292     (Session.changed): Overwrite the inherited version to issue
293     CHANGED events as well.
294    
295     * Thuban/UI/tree.py: We can now simply subscribe to the session's
296     CHANGED channel to be informed of changes.
297     (SessionTreeCtrl.session_channels): Not needed any longer.
298     (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
299     Only have to (un)subscribe CHANGED
300    
301     * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
302    
303 bh 230 * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
304     for the wxPython locale bug to __init__.py so that it's
305     automatically executed by anybody using UI code from Thuban.
306    
307 bh 225 2002-07-18 Bernhard Herzog <[email protected]>
308    
309 bh 228 * Thuban/UI/main.py (main): app no longer needs to be global
310    
311     * Thuban/UI/mainwindow.py (MainWindow.__init__): Add application
312     as parameter and store it in an instance variable
313     (MainWindow.invoke_command, MainWindow.update_command_ui)
314     (MainWindow.save_modified_session, MainWindow.NewSession)
315     (MainWindow.OpenSession, MainWindow.SaveSession)
316     (MainWindow.SaveSessionAs, MainWindow.ShowSessionTree): Use self's
317     application object.
318    
319     * Thuban/UI/application.py (ThubanApplication.OnInit): Instantiate
320     the main window with self.
321    
322 bh 225 * Thuban/UI/context.py: New module with the context class
323    
324     * Thuban/UI/command.py (Command): Update doc string.
325    
326     * Thuban/UI/mainwindow.py (MainWindow.invoke_command,
327     MainWindow.update_command_ui): Pass an instance of the context
328     class to the command's methods
329     (check_current_tool, call_method): Handle the new context
330     implementation
331    
332     * Examples/simple_extensions/simple_tool.py (simple_tool,
333     check_simple_tool): Handle the new context implementation
334    
335     * Examples/simple_extensions/simple_command.py (simple_command):
336     Handle the new context implementation. Update the comments about
337     the context.
338    
339     * Thuban/UI/application.py (ThubanApplication.SetSession): Add
340     doc-string
341     (ThubanApplication.Session): New method to return the session
342     object
343    
344     * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): The
345     interactor's selected_layer may not be a layer of the current
346     session when the tree is updated while a new session is being set.
347    
348 bh 217 2002-07-17 Bernhard Herzog <[email protected]>
349    
350     * Thuban/UI/tree.py (color_string): Removed. No longer used.
351     (SessionTreeCtrl.update_tree, SessionTreeCtrl.add_items): Split
352     update_tree into update_tree and add_items. The tree now uses a
353     more generic way to display the contents of the tree.
354     (SessionTreeCtrl): Add a doc string explaining the TreeInfo method
355    
356     * Thuban/Model/layer.py (Layer.TreeInfo),
357     Thuban/Model/extension.py (Extension.TreeInfo),
358     Thuban/Model/map.py (Map.TreeInfo),
359     Thuban/Model/session.py (Session.TreeInfo):
360     Add TreeInfo methods to implement the new tree view update scheme
361    
362 bh 216 2002-07-16 Bernhard Herzog <[email protected]>
363    
364     * Thuban/UI/application.py: Don't use "import from" for the
365     MainWindow. It can't always be resolved.
366     (ThubanApplication.OnInit): change reference to MainWindow
367     accordingly.
368    
369     * Thuban/UI/menu.py (Menu.SetItems): New method to replace a menu
370     completely
371    
372 bh 213 2002-07-10 Bernhard Herzog <[email protected]>
373    
374     * setup.py (create_init_module): New configurable variable whose
375     default depends on the platform we're running on.
376     (ThubanInstall.initialize_options): Initialize
377     self.create_init_module from the global create_init_module
378     (ThubanInstall.user_options): indictate that the options
379     create-init-module and init-module-dir have arguments.
380    
381     * setup.py: In the setup call change the version number to include
382     cvs.
383    
384     * MANIFEST.in: Add the files in Examples
385    
386 bh 205 2002-07-09 Bernhard Herzog <[email protected]>
387    
388 bh 210 * setup.py: In the setup call, use the thuban homepage as the
389     value of the url parameter.
390    
391 bh 208 * Examples: New subdirectory for examples.
392    
393     * Examples/simple_extensions/simple_tool.xpm,
394     Examples/simple_extensions/simple_tool.py,
395     Examples/simple_extensions/simple_command.py,
396     Examples/simple_extensions/README: Simple examples showing how to
397     add new commands and tools.
398    
399 bh 207 * setup.cfg (bdist_rpm): Add the default value for prefix and tell
400     bdist_rpm that we also have an install script.
401     (bdist_inno): Add 2002 to the copyright notice.
402    
403 bh 205 * setup.py: Create a file in python's site-packages directory to
404     make installation of Thuban as a library easier.
405     (ThubanInstall.user_options): Add two new options,
406     create-init-module and init-module-dir
407     (ThubanInstall.expand_with_pure_python_dirs): New method to expand
408     filenames for installation in the default directories.
409     (ThubanInstall.select_scheme, ThubanInstall.convert_paths): Extend
410     the inherited methods to capture some filenames before they're
411     transformed too much by distutils.
412     (ThubanInstall.run): Create the init module if requested.
413     (ThubanInstall.thuban_init_filename): New method to return the
414     full name of the init module.
415     (ThubanInstall.get_outputs): Append the filename of the init
416     module.
417    
418 bh 202 2002-07-08 Bernhard Herzog <[email protected]>
419    
420 bh 205 * setup.py (thuban_bdist_rpm): Extend this version of bdist_rpm to
421     handle the prefix properly which means that the default for the
422     installation prefix should be /usr for RPMs and /usr/local when
423     doing a normal source install.
424     (bdist_rpm_install_script): Script to override the default install
425     commands in the specfile generated by the bdist_rpm command.
426     (thuban_bdist_rpm.user_options): Add a prefix option
427     (thuban_bdist_rpm.initialize_options): Init the prefix option.
428     Create the script files for the spec files as empty files here
429     (thuban_bdist_rpm._make_spec_file): Override the inherited method
430     to fill the script files with content.
431    
432 bh 202 * Thuban/Model/save.py (relative_filename): Wrapper around
433     Thuban.Lib.fileutil.relative_filename that accepts an empty dir
434     argument. save_session now automatically uses this version,
435     solving a problem when saving to a relative filename.
436    
437     * setup.py: In the setup call, make sure that the library
438     directories are under $prefix/lib not directly under $prefix.
439    
440 jan 199 2002-06-20 Jan-Oliver Wagner <[email protected]>
441    
442     * Thuban/Model/extension.py: new module to handle extension objects.
443     * Thuban/Model/messages.py: new messages for extensions.
444     * Thuban/Model/session.py (Session.Extensions, Session.HasExtensions,
445     Session.AddExtension): new for handling extensions.
446     Also some other minor changes to round up extension handling.
447     * Thuban/UI/tree.py (SessionTreeCrtl:update_tree): Added visualization
448     of Extension titles and title and names of its objects.
449    
450 bh 194 2002-05-29 Bernhard Herzog <[email protected]>
451    
452     * Thuban/UI/mainwindow.py (MainWindow.bind_command_events): Bind
453 bh 202 the events for a command.
454 bh 194 (MainWindow.add_toolbar_command, MainWindow.add_menu_command):
455     Call bind_command_events to bind the events. add_toolbar_command
456     can now bind events too so that it's possible to have commands
457     that are only available through the toolbar.
458     (MainWindow.init_ids): New instance variable events_bound to keep
459     track of for which commands events have been bound.
460    
461 bh 190 2002-05-28 Bernhard Herzog <[email protected]>
462    
463     * Thuban/UI/menu.py: New module to build and manage menus.
464    
465     * Thuban/UI/mainwindow.py: Remove some unused imports.
466     (MainWindow.__init__, main_menu): move the definition of the main
467     menu from __init__ to the Menu instance main_menu.
468     (MainWindow.build_menu_bar, MainWindow.build_menu): New methods to
469     build the menu bar and sub-menus from a menu description.
470    
471     * Thuban/UI/application.py (ThubanApplication.OnInit): Read the
472     startup file
473     (ThubanApplication.read_startup_files): New method to run
474     ~/.thuban/thubanstart.py
475    
476 bh 192 * Thuban/UI/mainwindow.py (MainWindow.__init__, main_toolbar):
477     Move the toolbar definition to the Menu instance main_toolbar.
478     (MainWindow.build_toolbar): New method to build the toolbar
479     similar to the build_menu methods
480    
481 bh 184 2002-05-23 Bernhard Herzog <[email protected]>
482    
483 bh 186 * Thuban/UI/mainwindow.py (MainWindow.__init__): Fix spelling of
484     layer_outline_color. Fix it in the definition of the command too.
485    
486 bh 184 * Thuban/UI/command.py (Command): Fix typo in doc string
487    
488 bh 182 2002-05-22 Bernhard Herzog <[email protected]>
489    
490     * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Fix a typo
491     in the docstring
492    
493 bh 175 2002-05-15 Bernhard Herzog <[email protected]>
494    
495 bh 180 * Thuban/Model/layer.py (Layer.open_shapefile): Set bbox to None
496     when the shapefile is empty.
497     (Layer.BoundingBox, Layer.LatLongBoundingBox): Both methods may
498     now return None for empty shapefiles. Update doc-strings.
499    
500     * Thuban/Model/map.py (Map.BoundingBox): Add doc-string. Deal with
501     the layer's bbox being None.
502    
503     * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): Deal with the
504     layer's bbox being None.
505    
506 bh 175 * Thuban/UI/view.py (MapCanvas.shape_selected): Only redraw when
507     necessary.
508     (MapCanvas.__init__): New instance variables, last_selected_layer
509     and last_selected_shape to determine how the selection has
510     changed.
511    
512     * Thuban/UI/tableview.py (TableGrid.__init__): Do not call
513     AutoSizeColumns because it will cause a traversal of the entire
514     table which for large .dbf files will take a very long time.
515    
516 bh 172 2002-05-14 Bernhard Herzog <[email protected]>
517    
518     * Thuban/Model/layer.py (Layer.open_shapefile): Choose a better
519     maximum depth for the tree than shapelib does by default.
520    
521 bh 165 2002-05-10 Bernhard Herzog <[email protected]>
522    
523     * setup.py (py_modules): The shptree modules doesn't have a
524     wrapper, so don't include it in the py_modules
525    
526 bh 163 2002-05-08 Bernhard Herzog <[email protected]>
527    
528     * extensions/shapelib/shptree.c (compare_ints): Make arguments
529     const void * as in the qsort prototype
530     (SHPTreeFindLikelyShapes): Remove some unused variables.
531    
532     * Thuban/UI/view.py (PanTool.MouseMove): Use the bitmap the view
533     maintains to redraw the window during a drag.
534     (MapCanvas.unprojected_rect_around_point): New method to determine
535     a small region around a point for hit-testing.
536     (MapCanvas.find_shape_at): Only test the shapes in a small region
537     around the point.
538    
539     * setup.py: Increment the version to 0.1.2
540    
541     * Thuban/UI/tree.py (SessionTreeCtrl.unsubscribe_all): Remove a
542     debug print and set session to None after unsubscribing
543    
544 bh 146 2002-05-07 Bernhard Herzog <[email protected]>
545    
546 bh 154 * Data/iceland_sample.session, Data/iceland_sample.thuban: Rename
547     the file to have a .thuban extension.
548    
549 bh 152 * Thuban/UI/tree.py (session_channels): New class constant with
550     all the session channels to subscribe to to update the tree
551     (SessionTreeCtrl.session_changed): Remember the session so that we
552     can unsubscribe properly. Use the new class constant to
553     unsubscribe from the old session and subscribe to the new one.
554     (SessionTreeCtrl.unsubscribe_all): New method to unsubscribe all
555     subscriptions of the SessionTreeCtrl.
556     (SessionTreeView.OnClose): Call the tree's unsubscribe_all method.
557    
558     * Thuban/UI/mainwindow.py (MainWindow.__init__): Add the "Show
559     Session Tree" command to the file menu.
560    
561     * Thuban/UI/view.py (MapCanvas.do_redraw): Pass the entire bitmap
562     as update_region to the renderer.
563    
564     * Thuban/UI/renderer.py
565     (ScreenRenderer.layer_ids, ScreenRenderer.draw_shape_layer): The
566     update box is now directly a tuple, not a wxRect anymore.
567    
568     * Thuban/Model/layer.py (Layer.ShapesInRegion): Remove some debug
569     prints.
570    
571     2002-05-07 Bernhard Herzog <[email protected]>
572    
573 bh 146 * setup.py: Add the shptree extension module. See
574     extensions/pyshapelib/ChangeLog for more details.
575    
576     * extensions/shapelib/shpopen.c, extensions/shapelib/shapefil.h,
577     extensions/shapelib/dbfopen.c: Really update to the versions of
578     shapelib 1.2.9. For some reason it wasn't really done on
579     2002-04-11.
580    
581     * extensions/shapelib/shptree.c: Modified version of shptree.c of
582     shapelib 1.2.9. The only real difference is the use of qsort
583     instead of a bubble sort implementation
584    
585     * Thuban/Model/layer.py (Layer.__init__): New instance variable
586     shapetree to hold the shapelib quadtree for the shapefile
587     (Layer.open_shapefile): Create the quad tree.
588     (Layer.ShapesInRegion): New method to return the ids of shapes in
589     a given region using the quad tree.
590    
591     * extensions/thuban/wxproj.cpp (project_points): Fix some typos in
592     comment
593     (draw_polygon_shape): Accept both arcs and polygons.
594     (initwxproj): Use the new PYSHAPELIB_IMPORT_API macro to import
595     the api.
596    
597     * Thuban/UI/renderer.py (MapRenderer.layer_ids): New method to
598     return the shape ids to be rendered in a given layer.
599     (MapRenderer.draw_shape_layer): Call layer_ids to get the list of
600     ids. Use draw_polygon_shape to draw arc shapes as well.
601     (ScreenRenderer.RenderMap): New parameter for the rectangle that
602     has to be updated
603     (ScreenRenderer.layer_ids): Make use of the layer's quadtree by
604     calling it's ShapesInRegion method.
605    
606     * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
607     update_region for the update region.
608     (MapCanvas.OnPaint): Maintain the update region
609     (MapCanvas.do_redraw): Pass the bounding box of the update_region
610     to the renderer when drawing the bitmap. Reset the update_region.
611    
612 bh 129 2002-05-03 Bernhard Herzog <[email protected]>
613    
614 bh 131 * Thuban/UI/mainwindow.py (MainWindow.SaveSessionAs,
615     MainWindow.OpenSession): Change the file extension of the session
616     files to .thuban
617    
618 bh 129 * Thuban/Model/session.py (Session.AddMap, forwarded_channels):
619     Move the map channels to be forwarded by the session into the
620 bh 146 class constant with forwarded_channels. Also add
621     LAYER_PROJECTION_CHANGED and LAYER_VISIBILITY_CHANGED to
622     forwarded_channels
623 bh 129
624     * Thuban/Model/base.py (Modifiable.changed): Fix doc-string (a
625     typo and some rewording).
626    
627 bh 126 2002-05-02 Bernhard Herzog <[email protected]>
628    
629     * Thuban/UI/view.py: Keep the temporary bitmap used during drawing
630     around to speed up most redraws:
631     (MapCanvas.__init__): New instance variable bitmap which holds the
632     bitmap
633     (MapCanvas.do_redraw): Redraw self.bitmap if necessary. Use
634     self.bitmap to draw.
635     (MapCanvas.full_redraw): New method to force a full redraw
636     including the bitmap
637     (MapCanvas.SetMap): Subscribe full_redraw instead of redraw to
638     make sure the bitmap is redrawn.
639     (MapCanvas.projection_changed, MapCanvas.set_view_transform,
640     MapCanvas.shape_selected): Call full_redraw instead of readraw to
641     make sure the bitmap is redrawn.
642     (MapCanvas.OnSize): New method to handle size events so that the
643     bitmap can be redrawn.
644    
645 bh 124 2002-04-29 Bernhard Herzog <[email protected]>
646    
647     * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
648     canvas' VIEW_POSITION event
649     (MainWindow.view_position_changed): Handler for VIEW_POSITION.
650     Update the text in the status-bar accordingly.
651    
652     * Thuban/UI/view.py (MapCanvas): Derive from Publisher as well
653     (MapCanvas.__del__): Implement because Publisher.__del__ has to be
654     called.
655     (MapCanvas.__init__): Bind EVT_LEAVE_WINDOW too. Initialize
656     current_position
657     (MapCanvas.set_current_position): New method to set
658     current_position. Issue a VIEW_POSITION event
659     (MapCanvas.CurrentPosition): New public method to return the value
660     of current_position. Should be called when the VIEW_POSITION event
661     is processed.
662     (MapCanvas.OnLeftDown, MapCanvas.OnLeftUp, MapCanvas.OnMotion):
663     Update the position.
664     (MapCanvas.OnLeaveWindow): Set the position to None.
665    
666     * Thuban/UI/messages.py (VIEW_POSITION): New message for the
667     position in the statusbar
668    
669 frank 120 2002-04-26 Frank Koormann <[email protected]>
670    
671     * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
672    
673     2002-04-24 Frank Koormann <[email protected]>
674 frank 118
675     * Resources/Bitmaps/identify.xpm: shadow added
676    
677     * Resources/Bitmaps/fullextent.xpm: new
678    
679 jan 116 2002-04-22 Jan-Oliver Wagner <[email protected]>
680    
681     * Thuban/UI/tree.py (update_tree): added test for None on map bounding box
682    
683 jan 114 2002-04-21 Jan-Oliver Wagner <[email protected]>
684    
685     * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
686    
687     * Thuban/UI/tree.py (update_tree): added added map extent
688    
689     * Thuban/UI/mainwindow.py (_method_command): extended by parameter
690     icon; added map_full_extend as tool
691    
692 jan 107 2002-04-19 Jan-Oliver Wagner <[email protected]>
693    
694     * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
695     saving _new_ sessions
696    
697     * Thuban/Model/session.py (create_empty_session): new session
698     don't have a filename (set to None)
699    
700     * Thuban/UI/tree.py (update_tree): added filename and modified flag
701    
702     * Thuban/Model/load.py (ProcessSession): convert projection
703     parameters from unicode to regular string
704    
705     * Data/iceland_sample.session: Added UTM Zone 26 projection.
706    
707 bh 100 2002-04-11 Bernhard Herzog <[email protected]>
708    
709     * extensions/shapelib/shapefil.h, extensions/shapelib/shpopen.c,
710     extensions/shapelib/dbfopen.c: Update to the versions of shapelib
711     1.2.9
712    
713     * setup.py (Lib.wxproj extension): Don't link shpopen.c and put
714     the pyshapelib directoy into the list of include dirs, so that
715     pyshapelib_api.h can be found.
716    
717     * extensions/thuban/wxproj.cpp (pyshapelib_api): New variable that
718     holds the pyshapelib C-API
719     (draw_polygon_shape, point_in_polygon_shape, shape_centroid): Use
720     pyshapelib_api to access the shapelib functions.
721     (initwxproj): Import the c_api from the shapelib module and
722     initialize pyshapelib_api.
723    
724 bh 89 2002-04-04 Bernhard Herzog <[email protected]>
725    
726 bh 91 * setup.py (thuban_bdist_rpm.initialize_options): Use
727     initialize_options to create the scripts for the rpm.
728    
729 bh 89 * extensions/pyprojection/setup.py (PROJ4_PREFIX): Just use /
730    
731 bh 85 2002-04-03 Bernhard Herzog <[email protected]>
732    
733 bh 87 * setup.py: Increment version to 0.1.1
734    
735 bh 85 * Thuban/UI/mainwindow.py (MainWindow.__init__): Move the "Add
736     Layer" and "Remove Layer" commands from the layer menu to the map
737     menu
738    
739 bh 83 2002-02-15 Bernhard Herzog <[email protected]>
740    
741     * Thuban/Model/layer.py (Layer.Shape): list append only takes one
742     argument (python <= 1.5.2 erroneously accepted multiuple
743     arguments)
744    
745 bh 81 2002-02-04 Bernhard Herzog <[email protected]>
746    
747     * Thuban/UI/identifyview.py (IdentifyGridCtrl): New class to use a
748     RecordGrid in the identifyview.
749     (IdentifyView.__init__): Use IdentifyGridCtrl instead of
750     IdentifyListCtrl. The grid allows editing of the values.
751    
752     * Thuban/UI/controls.py (RecordTable, RecordGridCtrl): New classes
753     implementing a grid for a single row of a thuban table.
754    
755     * Thuban/UI/view.py (MapCanvas.SelectShapeAt): Search through all
756     layers by default. Easier to use than the previous default of only
757     searching through the select layer which meant that if no layer
758     was selected, you couldn't select a shape.
759    
760     * Thuban/UI/tableview.py (TableGrid.__init__): Fix typo
761    
762     * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Honour the
763     stroke_width attribute
764    
765     * Thuban/Model/save.py (save_session): Write the new stroke_width
766     attribute
767    
768     * Thuban/Model/load.py (ProcessSession.startElement): Read the
769     stroke_width attribute
770    
771     * Thuban/Model/layer.py (Layer.__init__): New parameter and
772     instance variable stroke_width
773     (Layer.SetStrokeWidth): Set the stroke_width.
774    
775 bh 72 2002-02-01 Bernhard Herzog <[email protected]>
776    
777     * extensions/thuban/wxproj.cpp (project_points): Fix two
778     off-by-one errors in the last loop that joins the various parts
779     together.
780    
781 bh 71 2002-01-14 Bernhard Herzog <[email protected]>
782    
783     * setup.py (data_dist.make_distribution): Fix some typos
784    
785 bh 70 2001-09-18 Bernhard Herzog <[email protected]>
786    
787     * README: Slight tweaking in preparation for the 0.1 release
788    
789     * setup.cfg: Add section for sdist to create both tgz and zip
790     archives
791    
792     * setup.py: increase version number to 0.1
793     (data_dist): New command class for data distribution
794    
795    
796 bh 64 2001-09-14 Bernhard Herzog <[email protected]>
797    
798 bh 70 * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
799     Handle the case of no layer (i.e. layer is None) properly.
800    
801     * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
802     Set the initial selection of the combo boxes to reflect the
803     projection we're starting with in a way that works on windows,
804     too.
805    
806 bh 64 * Thuban/Lib/connector.py (Connector.print_connections): Print the
807     puiblisher's ids in hex to make it easier to compare them to the
808     standard repr of python methods
809    
810     * Thuban/Model/map.py (Map.Destroy): Unsubscribe the label_layer
811     messages
812    
813 bh 59 2001-09-13 Bernhard Herzog <[email protected]>
814    
815 bh 64 * Thuban/UI/tree.py (SessionTreeCtrl.OnSelChanged): Make sure to
816     deselect the layer if no layer is selected
817    
818 bh 59 * Thuban/UI/view.py (MapCanvas.OnPaint): Only delay drawing to
819     idle time when there actually is something to draw. If there's
820     nothing to draw simply clear the window
821     (MapCanvas.do_redraw): Call dc.EndDrawing and add some comments.
822     (MapCanvas.SetMap): force a redraw in all cases because
823     FitMapToWindow doesn't always do it.
824     (MapCanvas.ZoomFactor): Add an optional parameter, center, to
825     specify the point to move into the center of the window
826     (ZoomOutTool.MouseUp, ZoomInTool.MouseUp): If the mouse wasn't
827     dragged, zoon in/out by a factor of 2
828 bh 64 (MapCanvas.find_shape_at): Iterate backwards (i.e. with decreasing
829     index, i.e. reversed drawing order) so that objects appearing to
830     be in from of others are selected first. This is probably mostly
831     relevant for point shapes where the symbols used may overlap
832 bh 59
833     * Thuban/Model/session.py (create_empty_session): Unset the
834     modified bit before returning it
835    
836     * Thuban/UI/mainwindow.py (MainWindow.NewSession): Use
837     create_empty_session session to create the new, empty session.
838    
839     * Thuban/UI/mainwindow.py (MainWindow.__init__): Set the size of
840     the tool bitmaps.
841     (MainWindow.OnClose, MainWindow.save_modified_session): Separate
842     the code that asks whether the session should be saved into the
843     new method save_modified_session.
844     (MainWindow.OpenSession, MainWindow.NewSession): Use the new
845     method to save modified session here too.
846    
847 bh 55 2001-09-11 Bernhard Herzog <[email protected]>
848    
849     * setup.py (InnoIconItem): fix typo
850    
851     (thuban_bdist_inno.run):
852     (bdist_inno.run): Move the decision not to create symlinks on
853     non-nt platforms to thuban_bdist_inno and do it unconditinally
854     since we never want to create the symlinks here
855    
856 bh 48 2001-09-10 Bernhard Herzog <[email protected]>
857    
858 bh 53 * Thuban/UI/mainwindow.py (MainWindow.IdentifyTool): Popup the
859     identify view immediately
860    
861     * Thuban/UI/controls.py: New file with two classes RecordListCtrl
862     and SelectableRecordListCtrl that implement the code shared by the
863     identify view and the label dialog
864    
865     * Thuban/UI/identifyview.py (IdentifyListCtrl): Derive from the
866     new class RecordListCtrl
867    
868     * Thuban/UI/labeldialog.py (LabelDialog.OnOK): Check whether the
869     return value of GetValue is None instead of using it as a boolean
870     directly so that Zero numbers are handled properly.
871     (LabelListCtrl): Derive from the new class
872     SelectableRecordListCtrl
873    
874 bh 48 * Thuban/UI/proj4dialog.py (Proj4Dialog.__init__):
875     (Proj4Dialog.dialogLayout): Make the window resizable and set the
876     size of the text control explicitly to make the sizers work on
877     both Windows and X.
878    
879 bh 44 2001-09-07 Bernhard Herzog <[email protected]>
880    
881     * Thuban/UI/view.py (MapCanvas.find_shape_at):Add a new parameter
882     that can limit the search to the currently selected layer.
883     (MapCanvas.SelectShapeAt): Make sure that the currently selected
884     layer stays selected even when no shape is found
885 bh 46 (MapCanvas.FitRectToWindow): If the rect has zero with or zero
886     height do nothing (avoids zero division errors)
887 bh 44
888 bh 32 2001-09-06 Bernhard Herzog <[email protected]>
889    
890 bh 42 * Thuban/UI/tree.py (SessionTreeCtrl, SessionTreeView.__init__):
891     Correct the spelling of SessionTreeCtrl. dabbrev is too damn
892     convenient :-)
893     (SessionTreeCtrl.__init__, SessionTreeCtrl.update_tree): Introduce
894     a new instvar layer_to_item to map layers to tree items
895     (SessionTreeCtrl.layer_selected): Select the appropriate tree item
896     to match the current selection in the interactor
897    
898 bh 40 * Thuban/UI/interactor.py (Interactor.SelectedLayer):
899     (Interactor.HasSelectedLayer): New methods to query the current
900     selection
901    
902     * Thuban/UI/mainwindow.py (MainWindow.current_layer):
903     (MainWindow.has_selected_layer): Simply call the appropriate
904     interactor method
905    
906     * Thuban/UI/mainwindow.py (MainWindow.__init__):
907     (MainWindow.LayerShowTable):
908     (MainWindow.identify_view_on_demand): Store the interactor in an
909     instvar and use that reference instead of going through main.app
910    
911     * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
912     * Thuban/UI/application.py (ThubanApplication.OnInit):
913     * Thuban/UI/main.py (main): Create the session tree view in main
914     with the new mainwindow method ShowSessionTree and not directly
915     the application's OnInit method
916    
917     * Thuban/UI/tree.py (myTreeCtrlPanel):
918     (SessioinTreeCtrl): Rename to SessioinTreeCtrl and turn it into a
919     TreeCtrl isntead of a panel. This affects most method since we now
920     refer to self instead of self.tree
921     (SessionTreeView): New class implementing a non-modal dialog
922     showing the session tree.
923    
924 bh 35 * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Pass the
925     layer to the tableview dialog.
926    
927     * Thuban/UI/tableview.py: Add some doc-strings
928     (TableGrid):
929     (TableGrid.OnRangeSelect):
930     (TableGrid.OnSelectCell):
931     (TableFrame.__init__):
932     (TableFrame.row_selected):
933     Selecting rows in the grid view now updates the selected shapes
934     through the TableFrame. To achieve this we derive TableGrid from
935     Publisher and introduce the message type ROW_SELECTED which the
936     TableFrame subscribes to and which is issued by OnRangeSelect and
937     OnSelectCell
938    
939     (DataTable.SelectRow): Removed because it's no longer needed in
940     the row/shape selection scheme
941    
942 bh 32 * Thuban/UI/dialogs.py: New file implementing common classes for
943     dialogs
944    
945     * Thuban/UI/tableview.py (TableGrid.__init__): Don't subscribe to
946     the SELECTED_SHAPE message anymore. This is now handled by the
947     parent.
948     (TableGrid.select_shape): Only update the selection if the shape
949     is not None.
950     (TableFrame): Inherit from the new NonModalDialog class.
951     (TableFrame.__init__, TableFrame.select_shape): Handle the
952     SELECT_SHAPE message.
953     (TableFrame.OnClose): Extend the inherited method to unsubscribe
954     SELECT_SHAPE
955    
956     * Thuban/UI/mainwindow.py (MainWindow.init_dialogs):
957     (MainWindow.add_dialog):
958     (MainWindow.dialog_open):
959     (MainWindow.remove_dialog):
960     (MainWindow.get_open_dialog): New methods to maintain a dictionary
961     of opened non-modal dialogs.
962    
963     (MainWindow.__init__): Initialize the new non-modal dictionary
964     management code
965     (MainWindow.LayerShowTable): maintain separate dialogs for each
966     table using the non-modal dialog management code to only open a
967     view once for each table.
968    
969     (MainWindow.IdentifyTool):
970     (MainWindow.__init__):
971     (MainWindow.identify_view_on_demand): Don't open the identify view
972     in IdentifyTool anymore. This will be done automatically by the
973     new method identify_view_on_demand which handles the
974     SELECTED_SHAPE message so that the identify view will be opened on
975     demand
976    
977     * Thuban/UI/identifyview.py (IdentifyListCtrl.__init__): Remove
978     the interactor argument. The SELECTED_SHAPE message is now handled
979     by the parent.
980     (IdentifyView.__init__): Add the interactor argument so that we
981     can handle the SELECTED_SHAPE message here
982     (IdentifyView.selected_shape): New method to handle the
983     SELECTED_SHAPE messages
984    
985     * Thuban/UI/identifyview.py (IdentifyView): Derive from the new
986     NonModalDialog class
987     (IdentifyView.OnClose): Extend the inherited version to
988     unsubscribe SELECT_SHAPE
989    
990     * Thuban/Model/session.py (Session.UnsetModified): Remove debug prints
991    
992 bh 26 2001-09-05 Bernhard Herzog <[email protected]>
993    
994     * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.
995    
996     * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument
997     interactor to pass through to the MapCanvas
998    
999     * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new
1000     argument to the MainWindow constructor to get rid of the ugly hack
1001     that made main.app available early just so that the mapcanvas
1002     could access the interactor object.
1003    
1004 bh 19 2001-09-04 Bernhard Herzog <[email protected]>
1005    
1006 bh 22 * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): New method
1007     that runs a modal message box
1008     (MainWindow.OnClose): Use the new method
1009     (MainWindow.RemoveLayer): Just do nothing in case no layer is
1010     selected. The command should be grayed out anyway, so there's no
1011     need to pop up a message box.
1012     (MainWindow.AddLayer): Pop up a message box with an error message
1013     if the shape file can't be opened
1014    
1015     * Thuban/Model/layer.py (Layer.__init__): Open the shapefile
1016     immediately. This will cause an exception in case the file can't
1017     be opened and we can display an appropriate message.
1018    
1019 bh 19 * MANIFEST.in: Add extensions/pyprojection/LICENSE
1020    
1021     * setup.py (thuban_bdist_rpm): New class implementing a Thuban
1022     specific bdist_rpm command.
1023    
1024     * Thuban/UI/main.py: Catch ImportError exceptions when importing
1025     the locale module because it may not be available on some
1026     installations.
1027    
1028     * extensions/pyprojection/LICENSE: Copy of the license text in
1029     Projection.i. Having it in a separate file makes it easier to
1030     refer to license text in e.g. RPMs
1031    
1032 bh 18 2001-09-03 Bernhard Herzog <[email protected]>
1033    
1034 bh 19 * setup.py: use wx-config instead of wxgtk-config because it's
1035     more generic
1036    
1037     * setup.py (ThubanInstall.get_outputs): Add the symlink in
1038     <prefix>/bin to the outputs
1039     (ThubanInstall.link_file): New method to link files. We need this
1040     because the standard copy_files refuses to link non-existing
1041     files.
1042     (ThubanInstall.run): Remove the leading install root from the
1043     script filename if an install root was specified and use the new
1044     link_file method
1045    
1046 bh 18 * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to
1047     the window when the first layer is added to the map.
1048    
1049     * setup.py (ThubanInstall.run): Honor the build root (self.root)
1050     when linking thuban.py to <prefix>/bin
1051    
1052 bh 16 2001-08-31 Bernhard Herzog <[email protected]>
1053    
1054     * setup.py: In the setup call, the install parameters shouldn't
1055     have trailing slashes because distutils on non-posix platforms
1056     doesn't like that. The same applies to other directories like
1057     "Resources/Bitmaps"
1058    
1059     In the configuration section for nt, move the wxWindows directory
1060     optins into the part clearly marked as editable.
1061    
1062     (InstallLocal.initialize_options):
1063     (InstallLocal.user_options): remove the currently unused debug
1064     flag
1065     (thuban_build_py.find_all_modules): Add this method so that it
1066     works for our case of having packages and modules in one
1067     distribution as well.
1068     (ThubanInstall.initialize_options):
1069     (ThubanInstall.finalize_options):
1070     (ThubanInstall.user_options):
1071     (ThubanInstall.boolean_options): Add new options, do-symlink and
1072     extra files. Since these are the first ThubanInstall specific
1073     options, override user_options and boolean_options
1074     (ThubanInstall.run): Honor the new do-symlink and extra-files
1075     options.
1076     (ThubanInstall.get_outputs): Add to override the base-class's
1077     version and add the extra-files to the outputs
1078     (bdist_inno): New class for windows distributions with Inno Setup
1079     (InnoIconItem): Helper class for bdist_inno
1080     (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
1081     this together with the appropriate parameters, to the setup call.
1082    
1083     * setup.cfg (bdist_inno): added new section for the inno setup
1084     installer
1085    
1086     * Thuban/UI/tree.py (myTreeCtrlPanel.__init__): New inst var
1087     changing_selection to avoid recursive selection events when
1088     modifying the selection in response to a selection event.
1089     (myTreeCtrlPanel.normalize_selection): Set the new inst var when
1090     changing the tree's selection.
1091     (myTreeCtrlPanel.OnSelChanged): Only normalize the selection when
1092     we're not being called indirectly from normalize_selection.
1093    
1094     * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): Call
1095     event.Check only if the command is actuall checkable.
1096     (MainWindow.__init__): Call the toolbar's Realize method to make
1097     sure that the items are actually shown
1098    
1099 bh 7 2001-08-28 Bernhard Herzog <[email protected]>
1100    
1101 bh 9 * setup.py: Fix some doc strings
1102    
1103 bh 7 * ChangeLog: started
1104    

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26