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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 370 - (show annotations)
Mon Jan 27 12:21:23 2003 UTC (22 years, 1 month ago) by jonathan
Original Path: trunk/thuban/ChangeLog
File size: 46543 byte(s)
notes about classification modifications

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26