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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 370 - (hide annotations)
Mon Jan 27 12:21:23 2003 UTC (22 years, 1 month ago) by jonathan
Original Path: trunk/thuban/ChangeLog
File size: 46543 byte(s)
notes about classification modifications

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26