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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 354 - (hide annotations)
Tue Dec 3 17:35:47 2002 UTC (22 years, 3 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 44817 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26