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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 380 - (hide annotations)
Tue Jan 28 12:55:47 2003 UTC (22 years, 1 month ago) by jonathan
Original Path: trunk/thuban/ChangeLog
File size: 47340 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26