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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 384 - (show annotations)
Tue Jan 28 18:38:17 2003 UTC (22 years, 1 month ago) by jonathan
Original Path: trunk/thuban/ChangeLog
File size: 47708 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26