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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 359 - (hide annotations)
Mon Dec 9 10:32:51 2002 UTC (22 years, 2 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 45629 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26