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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 405 - (hide annotations)
Fri Feb 14 17:40:41 2003 UTC (22 years ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 50559 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26