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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 341 - (hide annotations)
Fri Sep 20 17:33:13 2002 UTC (22 years, 5 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 43627 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26