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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 375 - (hide annotations)
Mon Jan 27 14:20:40 2003 UTC (22 years, 1 month ago) by jan
Original Path: trunk/thuban/ChangeLog
File size: 47135 byte(s)
preparation for i18n

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26