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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26