/[thuban]/branches/greater-ms3/thuban/ChangeLog
ViewVC logotype

Contents of /branches/greater-ms3/thuban/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 344 - (show annotations)
Fri Oct 18 17:29:22 2002 UTC (22 years, 4 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 44074 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26