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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 352 - (show annotations)
Wed Nov 6 14:47:01 2002 UTC (22 years, 4 months ago) by frank
Original Path: trunk/thuban/ChangeLog
File size: 44564 byte(s)
Toolbar icon order changed.

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26