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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 384 - (hide annotations)
Tue Jan 28 18:38:17 2003 UTC (22 years, 1 month ago) by jonathan
Original Path: trunk/thuban/ChangeLog
File size: 47708 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26