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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26