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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 354 - (show annotations)
Tue Dec 3 17:35:47 2002 UTC (22 years, 3 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 44817 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26