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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 349 - (show annotations)
Wed Oct 23 14:46:18 2002 UTC (22 years, 4 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 44352 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26