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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 361 - (show annotations)
Mon Dec 9 10:34:37 2002 UTC (22 years, 2 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 45691 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26