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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26