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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 126 by bh, Thu May 2 18:55:46 2002 UTC revision 370 by jonathan, Mon Jan 27 12:21:23 2003 UTC
# Line 1  Line 1 
1    2003-01-27  Jonathan Coles  <[email protected]>
2    
3      * Thuban/Model/layer.py: Classification initialization calls.
4    
5      * Thuban/Model/classification.py: Created class to encapsulate
6      a layer classification. Supports specific data points and
7      ranges.
8    
9      * Thuban/Model/load.py: Added support for loading classification
10      information.
11    
12      * Thuban/Model/save.py: Added support for saving classification
13      information.
14    
15      * Thuban/UI/classifier.py: Initial class for a dialog box for
16      specifying classification information.
17    
18      * Thuban/UI/mainwindows.py: Support for opening the classifier
19      dialog.
20    
21      * Thuban/UI/renderer.py: Support for drawing a layer with the
22      classification information.
23    
24      * Data/iceland_sample_class.thuban: iceland_sample with
25      classification data.
26    
27      * test/test_classification: Tests for the Classification class.
28    
29    2002-12-09  Bernhard Herzog  <[email protected]>
30    
31            * test/test_command.py: New. Tests for the command classes.
32    
33            * Thuban/UI/command.py (ToolCommand): New class for tool commands.
34            (Command.IsTool): New method to distinguish between command
35            switching tools and other commands.
36    
37            * Thuban/UI/view.py (MapCanvas.SelectTool): New method to select
38            the tool to avoid direct assignments to instance variables
39            (MapCanvas.ZoomInTool, MapCanvas.ZoomOutTool, MapCanvas.PanTool)
40            (MapCanvas.IdentifyTool, MapCanvas.LabelTool): Use SelectTool to
41            change the tool
42    
43            * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): If an
44            active tool's command turns insensitive, disable the tool.
45            (_tool_command): Use the new ToolCommand class
46    
47            * Examples/simple_extensions/simple_tool.py (simple_tool): Use the
48            SelectTool method to change the tool
49            (iconfile): Use the ToolCommand class
50    
51    2002-12-03  Bernhard Herzog  <[email protected]>
52    
53            * Thuban/UI/tree.py (SessionTreeCtrl.normalize_selection): Handle
54            the case of selected items that are not children of Layers or Maps
55            properly. Previously this bug would trigger an assertion in
56            wxWindows.
57    
58    2002-11-06  Frank Koormann  <[email protected]>
59    
60            * Thuban/UI/mainwindow.py: Altered the order of tools in the
61            toolbar: First now are all navigation tools (Zoom In/Out, Pan,
62            Full Extent).
63        
64    2002-10-23  Bernhard Herzog  <[email protected]>
65    
66            * setup.py (setup call): version now 0.1.3
67    
68            * MANIFEST.in: Add the files in test/
69    
70            * test/README: Add note about tests requiring the iceland data
71    
72            * Thuban/UI/mainwindow.py (MainWindow.About): Add 2002 to
73            copyright notice.
74    
75    2002-10-18  Bernhard Herzog  <[email protected]>
76    
77            * test/test_map.py
78            (TestMapWithContents.test_projected_bounding_box): Use an explicit
79            epsilon.
80    
81            * test/support.py (FloatComparisonMixin.assertFloatEqual)
82            (FloatComparisonMixin.assertFloatSeqEqual): give a more useful
83            message if the assertion fails and don't return the return value
84            of self.assert_. In assertFloatSeqEqual the return meant that not
85            all items of the sequence were compared.
86    
87    2002-09-20  Bernhard Herzog  <[email protected]>
88    
89            * test/test_fileutil.py: New. Test cases for Thuban.Lib.fileutil
90    
91            * Thuban/Lib/fileutil.py: Fixup some whitespace and typos
92    
93            * test/test_map.py (TestMapWithContents.test_tree_info): Create
94            the string with the bounding box on the fly because of platform
95            differences in the way %g is handled.
96    
97            * test/test_layer.py (TestLayer.test_empty_layer): Create an empty
98            DBFfile too because Thuban layers can't yet cope missing DBF
99            files.
100    
101    2002-09-20  Bernhard Herzog  <[email protected]>
102    
103            * test/test_menu.py: Use initthuban instead of
104            add_thuban_dir_to_path to initialize Thuban.
105    
106            * test/support.py (FloatComparisonMixin.assertFloatEqual): New.
107            Mixin class for float comparisons
108            (SubscriberMixin): New. Mixin class to test messages sent through
109            the Connector class
110    
111            * test/README: Fix a typo and add the -v flag to the command for
112            individual tests
113    
114            * test/test_session.py: New. Test cases for Thuban.Model.session
115    
116            * test/test_proj.py: New. Test cases for Thuban.Model.proj
117    
118            * test/test_map.py: New. Test cases for Thuban.Model.map
119    
120            * test/test_layer.py: New. Test cases for Thuban.Model.layer
121    
122            * test/test_label.py: New. Test cases for Thuban.Model.label
123    
124            * test/test_connector.py: New. Test cases for Thuban.Lib.connector
125    
126            * test/test_color.py: New. Test cases for Thuban.Model.color
127    
128            * test/test_base.py: New. Test cases for Thuban.Model.base
129    
130    2002-09-13  Bernhard Herzog  <[email protected]>
131    
132            * Thuban/Model/session.py (Session.forwarded_channels): Forward
133            the CHANGED channel too.
134    
135            * Thuban/Model/map.py (Map.forwarded_channels): Forward the
136            CHANGED channel too.
137            (Map.__init__): Call the Modifiable constructor as well.
138    
139            * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
140            event if the modified flag changes.
141            (Modifiable.changed): Tweak the doc-string.
142    
143            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
144            (MainWindow.set_position_text): Put the code that puts the text
145            with the mouse position into the status bar into the new method
146            set_position_text so that it can overwritten in derived classes.
147    
148    2002-09-12  Bernhard Herzog  <[email protected]>
149    
150            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
151            message box on the main window.
152    
153    2002-09-11  Bernhard Herzog  <[email protected]>
154    
155            * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
156            the 'E' because it's less likely to interfere with other menu
157            entries.
158            (MainWindow.build_menu): remove an incorrect comment.
159    
160    2002-09-10  Bernhard Herzog  <[email protected]>
161    
162            * Thuban/UI/mainwindow.py (MainWindow.Map): New.
163            (_tool_command): Add sensitive parameter
164            (_has_visible_map): Sensitivity callback to tools and other
165            commands that require a visible map. Use it in map_zoom_in_tool,
166            map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
167            and map_full_extent
168    
169    2002-09-06  Bernhard Herzog  <[email protected]>
170    
171            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
172            VIEW_POSITION
173    
174    2002-09-04  Frank Koormann   <[email protected]>
175    
176            * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
177    
178    2002-09-02  Bernhard Herzog  <[email protected]>
179    
180            * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
181            wxWindows already and our implementation doesn't work correctly
182            with wxGTK 2.3:
183            (MapCanvas.__init__): Remove the instance variable
184            (MapCanvas.OnPaint): Always call do_redraw when there's a map to
185            be drawin
186            (MapCanvas.OnIdle): Removed.
187    
188            * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
189            a parameter to determine the size of the rectangle.
190            (MapCanvas.find_shape_at): Create the box around the point on a
191            layer by layer basis and make the size depend on the shape type.
192            This solves a problem with the selection of point shapes at the
193            border of the layer's bounding box
194    
195    2002-08-30  Bernhard Herzog  <[email protected]>
196    
197            * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
198            for the sensitivity  of remove layer.
199            (_can_remove_layer): New. Sensitivity callback for remove layer
200            (Command layer_remove): Use _can_remove_layer
201    
202            * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
203            determine whether a given layer can be deleted.
204    
205            * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
206            (MapCanvas.do_redraw): Get rid of the unused update_region
207            instance variable
208    
209            * Thuban/UI/view.py: Add/update some doc-strings.
210    
211            * test/: new subdirectory with a bunch of unit tests.
212    
213            * test/README, test/test_table.py, test/test_save.py,
214            test/test_menu.py, test/test_load.py: Initial set of tests and
215            brief instructions on how to run them
216    
217    2002-08-29  Bernhard Herzog  <[email protected]>
218    
219            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
220            arcs with multiple parts.
221    
222            * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
223            Handle degenrate rectangles.
224    
225            * Thuban/Model/table.py: Make writing records work correctly:
226            (Table.__init__): Keep track of whether the DBF is open for
227            writing
228            (Table.write_record): Open the DBF file for writing when necessary
229    
230    2002-08-27  Bernhard Herzog  <[email protected]>
231    
232            * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
233            dbf files only for reading by default. Use a new writable dbf
234            object for writing.
235    
236    2002-08-26  Bernhard Herzog  <[email protected]>
237    
238            * Thuban/UI/mainwindow.py: Refactor the context creation:
239            (MainWindow.Context): New method to return a context
240            (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
241            new method
242    
243            * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
244            layer table specific code from TableGrid into LayerTableGrid
245            (TableFrame, LayerTableFrame): Split the layer table specific code
246            from TableFrame into LayerTableFrame
247            (LayerTableGrid.select_shape): Remove a debug print
248    
249            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
250            LayerTableFrame
251    
252    2002-08-23  Bernhard Herzog  <[email protected]>
253    
254            * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
255            absolute filename.
256    
257    2002-08-22  Bernhard Herzog  <[email protected]>
258    
259            * Thuban/Model/table.py (Table.write_record): New method to write
260            records.
261            (Table.__init__): Open the DBF file for writing too.
262    
263            * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
264            into the underlying table.
265    
266            * extensions/shapelib/shapefil.h (DBFCommit),
267            extensions/shapelib/dbfopen.c (DBFCommit): New API function to
268            commit any changes made to the DBF file.
269    
270            * Thuban/UI/mainwindow.py (make_check_current_tool)
271            (_tool_command): Put the code that generates the "checked"
272            callback into a separate function so that we can reuse it
273            elsewhere
274    
275            * Thuban/Model/save.py (Saver): New class to handle serializing a
276            session into an XML file. The main reason to introduce a class is
277            that applications built on Thuban can derive from it so that they
278            can save additional information in a session file.
279            (save_session): Delegate almost all the work to the Saver class.
280            Rename the filename argument to file because it may be a file like
281            object now.
282    
283            * Thuban/Model/load.py: Get rid of the Python 1.5.2 compatibility
284            code. Remove the little test code which would be executed when the
285            module is run as a script which didn't work anymore since it can't
286            import the other Thuban modules.
287            (ProcessSession, load_session): Refactor the ProcessSession to
288            have one method for each element start and end tag so that derived
289            classes can easily override the processing of individual tags.
290            Also, always parse with namespaces enabled because applications
291            built on top of Thuban will likely use namespaces if they extend
292            the session file format.
293    
294    2002-08-21  Bernhard Herzog  <[email protected]>
295    
296            * setup.py (ThubanInstall.run): Don't repr install_lib_orig
297            because thubaninit_contents will do it for us.
298    
299    2002-08-16      Jan-Oliver Wagner <[email protected]>
300    
301            * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
302            tree window already open
303    
304    2002-08-15  Bernhard Herzog  <[email protected]>
305    
306            * Thuban/Model/layer.py (Layer.Destroy): Call the unboundd method
307            with self.
308    
309            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Only release the mouse
310            when we have actually captured it.
311    
312            * Thuban/Model/layer.py (Layer.Destroy): New. Explicitly close the
313            shapefile and destroy the table.
314    
315            * Thuban/Model/table.py (Table.Destroy): New. Close the DBF file.
316    
317    2002-08-14  Bernhard Herzog  <[email protected]>
318    
319            * Thuban/UI/controls.py (RecordTable.__init__): Remove the unused
320            instance variable columns
321            (RecordTable.GetTypeName): row and col may be negative in some
322            cases.
323    
324            * setup.py (InstallLocal.initialize_options)
325            (InstallLocal.finalize_options, InstallLocal.user_options): New
326            option create-init-file to build a thubaninit.py when running
327            install_local
328            (InstallLocal.run): Create the thubaninit.py module when requested
329            (thubaninit_contents): Split the template into several parts and
330            create a new function thubaninit_contents that creates the
331            contents of a thubaninit module.
332            (ThubanInstall.run): Use the new function to create the thubaninit
333            module.
334    
335    2002-07-30  Bernhard Herzog  <[email protected]>
336    
337            * Thuban/UI/application.py (ThubanApplication.OnExit): Do some
338            cleanup.
339            (ThubanApplication.MainLoop): Extend to automatically call OnExit.
340    
341            * Thuban/Model/session.py (Session.Destroy): Don't bypass the
342            direct base class' Destroy method.
343    
344            * Thuban/Model/map.py (Map.ClearLayers): New method to delete all
345            layers.
346            (Map.Destroy): Destroy the label_layer as well and call the
347            inherited Desatroymethod first so that no more messages are
348            issued.
349            (Map.RaiseLayer, Map.LowerLayer): Only issue LAYERS_CHANGED
350            message if the stacking order actually has changed. Add
351            doc-strings.
352            (Map.BoundingBox): Correct the doc-string.
353            (Map.AddLayer, Map.RemoveLayer, Map.Layers, Map.HasLayers)
354            (Map.ProjectedBoundingBox, Map.SetProjection): Add doc-strings.
355    
356            * Thuban/Model/label.py (LabelLayer.ClearLabels): New to delete
357            all labels.
358    
359    2002-07-29  Bernhard Herzog  <[email protected]>
360    
361            * Thuban/Model/map.py (Map.subscribe_layer_channels)
362            (Map.unsubscribe_layer_channels): Put the code that (un)subscribes
363            to a layer's channels into separate methods.
364            (Map.RemoveLayer, Map.AddLayer): Call the new methods
365            (Map.Destroy): Unsubscribe from a layer's channels before
366            destroying it.
367    
368            * Thuban/UI/view.py (MapCanvas.find_shape_at): Change the
369            selected_layer parameter to searched_layer which is the layer to
370            search in.
371            (MapCanvas.SelectShapeAt): New parameter layer to restrict the
372            search to that layer. Return the selected layer and shape.
373    
374            * Examples/simple_extensions/simple_tool.py (simple_tool): Fix a
375            typo
376    
377    2002-07-24  Bernhard Herzog  <[email protected]>
378    
379            * Thuban/UI/application.py (ThubanApplication.create_session):
380            Extend the doc string.
381            (ThubanApplication.subscribe_session)
382            (ThubanApplication.unsubscribe_session): New methods to
383            subscribe/unsubscribe to/from session channels.
384            (ThubanApplication.SetSession): Call the new methods here.
385            (ThubanApplication.maps_changed, ThubanApplication.set_map):
386            Renamed set_map to maps_changed. Its now a subscriber for
387            MAPS_CHANGED.
388    
389            * Thuban/UI/view.py (ZoomOutTool.MouseUp): Use the correct
390            x-coordinate in case of simple clicks
391    
392            * Thuban/Model/base.py (Modifiable.changed): Apply the args tuple,
393            don't pass it as a parameter
394    
395            * Thuban/Model/session.py (Session.RemoveMap): New
396    
397            * Thuban/UI/mainwindow.py (MainWindow.__init__): Turn the initial
398            window size into a parameter.
399    
400    2002-07-23  Bernhard Herzog  <[email protected]>
401    
402            * Thuban/UI/menu.py (Menu.item_index): Also search for menus not
403            just commands.
404    
405            * Thuban/UI/mainwindow.py (MainWindow.__init__): Change the
406            parameter list a bit to allow setting the window title and the
407            initial message in the status bar. Update the callers.
408    
409            * Thuban/UI/application.py (ThubanApplication.OnInit)
410            (ThubanApplication.CreateMainWindow): Put the mainwindow
411            instantiation into a separate method so that it can be overridden
412            by a subclass.
413    
414    2002-07-19  Bernhard Herzog  <[email protected]>
415    
416            * Thuban/Model/session.py: Issue a CHANGED message every time
417            another changed message is issued to make it easier to get
418            notified of changes.
419            (Session): Update the doc string
420            (Session.forward): Issue changed-events as CHANGED as well.
421            (Session.changed): Overwrite the inherited version to issue
422            CHANGED events as well.
423    
424            * Thuban/UI/tree.py: We can now simply subscribe to the session's
425            CHANGED channel to be informed of changes.
426            (SessionTreeCtrl.session_channels): Not needed any longer.
427            (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
428            Only have to (un)subscribe CHANGED
429    
430            * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
431    
432            * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
433            for the wxPython locale bug to __init__.py so that it's
434            automatically executed by anybody using UI code from Thuban.
435    
436    2002-07-18  Bernhard Herzog  <[email protected]>
437    
438            * Thuban/UI/main.py (main): app no longer needs to be global
439    
440            * Thuban/UI/mainwindow.py (MainWindow.__init__): Add application
441            as parameter and store it in an instance variable
442            (MainWindow.invoke_command, MainWindow.update_command_ui)
443            (MainWindow.save_modified_session, MainWindow.NewSession)
444            (MainWindow.OpenSession, MainWindow.SaveSession)
445            (MainWindow.SaveSessionAs, MainWindow.ShowSessionTree): Use self's
446            application object.
447    
448            * Thuban/UI/application.py (ThubanApplication.OnInit): Instantiate
449            the main window with self.
450    
451            * Thuban/UI/context.py: New module with the context class
452    
453            * Thuban/UI/command.py (Command): Update doc string.
454    
455            * Thuban/UI/mainwindow.py (MainWindow.invoke_command,
456            MainWindow.update_command_ui): Pass an instance of the context
457            class to the command's methods
458            (check_current_tool, call_method): Handle the new context
459            implementation
460    
461            * Examples/simple_extensions/simple_tool.py (simple_tool,
462            check_simple_tool): Handle the new context implementation
463    
464            * Examples/simple_extensions/simple_command.py (simple_command):
465            Handle the new context implementation. Update the comments about
466            the context.
467    
468            * Thuban/UI/application.py (ThubanApplication.SetSession): Add
469            doc-string
470            (ThubanApplication.Session): New method to return the session
471            object
472    
473            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): The
474            interactor's selected_layer may not be a layer of the current
475            session when the tree is updated while a new session is being set.
476    
477    2002-07-17  Bernhard Herzog  <[email protected]>
478    
479            * Thuban/UI/tree.py (color_string): Removed. No longer used.
480            (SessionTreeCtrl.update_tree, SessionTreeCtrl.add_items): Split
481            update_tree into update_tree and add_items. The tree now uses a
482            more generic way to display the contents of the tree.
483            (SessionTreeCtrl): Add a doc string explaining the TreeInfo method
484    
485            * Thuban/Model/layer.py (Layer.TreeInfo),
486            Thuban/Model/extension.py (Extension.TreeInfo),
487            Thuban/Model/map.py (Map.TreeInfo),
488            Thuban/Model/session.py (Session.TreeInfo):
489            Add TreeInfo methods to implement the new tree view update scheme
490    
491    2002-07-16  Bernhard Herzog  <[email protected]>
492    
493            * Thuban/UI/application.py: Don't use "import from" for the
494            MainWindow. It can't always be resolved.
495            (ThubanApplication.OnInit): change reference to MainWindow
496            accordingly.
497    
498            * Thuban/UI/menu.py (Menu.SetItems): New method to replace a menu
499            completely
500    
501    2002-07-10  Bernhard Herzog  <[email protected]>
502    
503            * setup.py (create_init_module): New configurable variable whose
504            default depends on the platform we're running on.
505            (ThubanInstall.initialize_options): Initialize
506            self.create_init_module from the global create_init_module
507            (ThubanInstall.user_options): indictate that the options
508            create-init-module and init-module-dir have arguments.
509    
510            * setup.py: In the setup call change the version number to include
511            cvs.
512    
513            * MANIFEST.in: Add the files in Examples
514    
515    2002-07-09  Bernhard Herzog  <[email protected]>
516    
517            * setup.py: In the setup call, use the thuban homepage as the
518            value of the url parameter.
519    
520            * Examples: New subdirectory for examples.
521    
522            * Examples/simple_extensions/simple_tool.xpm,
523            Examples/simple_extensions/simple_tool.py,
524            Examples/simple_extensions/simple_command.py,
525            Examples/simple_extensions/README: Simple examples showing how to
526            add new commands and tools.
527    
528            * setup.cfg (bdist_rpm): Add the default value for prefix and tell
529            bdist_rpm that we also have an install script.
530            (bdist_inno): Add 2002 to the copyright notice.
531    
532            * setup.py: Create a file in python's site-packages directory to
533            make installation of Thuban as a library easier.
534            (ThubanInstall.user_options): Add two new options,
535            create-init-module and init-module-dir
536            (ThubanInstall.expand_with_pure_python_dirs): New method to expand
537            filenames for installation in the default directories.
538            (ThubanInstall.select_scheme, ThubanInstall.convert_paths): Extend
539            the inherited methods to capture some filenames before they're
540            transformed too much by distutils.
541            (ThubanInstall.run): Create the init module if requested.
542            (ThubanInstall.thuban_init_filename): New method to return the
543            full name of the init module.
544            (ThubanInstall.get_outputs): Append the filename of the init
545            module.
546    
547    2002-07-08  Bernhard Herzog  <[email protected]>
548    
549            * setup.py (thuban_bdist_rpm): Extend this version of bdist_rpm to
550            handle the prefix properly which means that the default for the
551            installation prefix should be /usr for RPMs and /usr/local when
552            doing a normal source install.
553            (bdist_rpm_install_script): Script to override the default install
554            commands in the specfile generated by the bdist_rpm command.
555            (thuban_bdist_rpm.user_options): Add a prefix option
556            (thuban_bdist_rpm.initialize_options): Init the prefix option.
557            Create the script files for the spec files as empty files here
558            (thuban_bdist_rpm._make_spec_file): Override the inherited method
559            to fill the script files with content.
560    
561            * Thuban/Model/save.py (relative_filename): Wrapper around
562            Thuban.Lib.fileutil.relative_filename that accepts an empty dir
563            argument. save_session now automatically uses this version,
564            solving a problem when saving to a relative filename.
565    
566            * setup.py: In the setup call, make sure that the library
567            directories are under $prefix/lib not directly under $prefix.
568    
569    2002-06-20      Jan-Oliver Wagner <[email protected]>
570    
571            * Thuban/Model/extension.py: new module to handle extension objects.
572            * Thuban/Model/messages.py: new messages for extensions.
573            * Thuban/Model/session.py (Session.Extensions, Session.HasExtensions,
574            Session.AddExtension): new for handling extensions.
575            Also some other minor changes to round up extension handling.
576            * Thuban/UI/tree.py (SessionTreeCrtl:update_tree): Added visualization
577            of Extension titles and title and names of its objects.
578    
579    2002-05-29  Bernhard Herzog  <[email protected]>
580    
581            * Thuban/UI/mainwindow.py (MainWindow.bind_command_events): Bind
582            the events for a command.
583            (MainWindow.add_toolbar_command, MainWindow.add_menu_command):
584            Call bind_command_events to bind the events. add_toolbar_command
585            can now bind events too so that it's possible to have commands
586            that are only available through the toolbar.
587            (MainWindow.init_ids): New instance variable events_bound to keep
588            track of for which commands events have been bound.
589    
590    2002-05-28  Bernhard Herzog  <[email protected]>
591    
592            * Thuban/UI/menu.py: New module to build and manage menus.
593    
594            * Thuban/UI/mainwindow.py: Remove some unused imports.
595            (MainWindow.__init__, main_menu): move the definition of the main
596            menu from __init__ to the Menu instance main_menu.
597            (MainWindow.build_menu_bar, MainWindow.build_menu): New methods to
598            build the menu bar and sub-menus from a menu description.
599    
600            * Thuban/UI/application.py (ThubanApplication.OnInit): Read the
601            startup file
602            (ThubanApplication.read_startup_files): New method to run
603            ~/.thuban/thubanstart.py
604    
605            * Thuban/UI/mainwindow.py (MainWindow.__init__, main_toolbar):
606            Move the toolbar definition to the Menu instance main_toolbar.
607            (MainWindow.build_toolbar): New method to build the toolbar
608            similar to the build_menu methods
609    
610    2002-05-23  Bernhard Herzog  <[email protected]>
611    
612            * Thuban/UI/mainwindow.py (MainWindow.__init__): Fix spelling of
613            layer_outline_color. Fix it in the definition of the command too.
614    
615            * Thuban/UI/command.py (Command): Fix typo in doc string
616    
617    2002-05-22  Bernhard Herzog  <[email protected]>
618    
619            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Fix a typo
620            in the docstring
621    
622    2002-05-15  Bernhard Herzog  <[email protected]>
623    
624            * Thuban/Model/layer.py (Layer.open_shapefile): Set bbox to None
625            when the shapefile is empty.
626            (Layer.BoundingBox, Layer.LatLongBoundingBox): Both methods may
627            now return None for empty shapefiles. Update doc-strings.
628    
629            * Thuban/Model/map.py (Map.BoundingBox): Add doc-string. Deal with
630            the layer's bbox being None.
631    
632            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): Deal with the
633            layer's bbox being None.
634    
635            * Thuban/UI/view.py (MapCanvas.shape_selected): Only redraw when
636            necessary.
637            (MapCanvas.__init__): New instance variables, last_selected_layer
638            and last_selected_shape to determine how the selection has
639            changed.
640    
641            * Thuban/UI/tableview.py (TableGrid.__init__): Do not call
642            AutoSizeColumns because it will cause a traversal of the entire
643            table which for large .dbf files will take a very long time.
644    
645    2002-05-14  Bernhard Herzog  <[email protected]>
646    
647            * Thuban/Model/layer.py (Layer.open_shapefile): Choose a better
648            maximum depth for the tree than shapelib does by default.
649    
650    2002-05-10  Bernhard Herzog  <[email protected]>
651    
652            * setup.py (py_modules): The shptree modules doesn't have a
653            wrapper, so don't include it in the py_modules
654    
655    2002-05-08  Bernhard Herzog  <[email protected]>
656    
657            * extensions/shapelib/shptree.c (compare_ints): Make arguments
658            const void * as in the qsort prototype
659            (SHPTreeFindLikelyShapes): Remove some unused variables.
660    
661            * Thuban/UI/view.py (PanTool.MouseMove): Use the bitmap the view
662            maintains to redraw the window during a drag.
663            (MapCanvas.unprojected_rect_around_point): New method to determine
664            a small region around a point for hit-testing.
665            (MapCanvas.find_shape_at): Only test the shapes in a small region
666            around the point.
667    
668            * setup.py: Increment the version to 0.1.2
669    
670            * Thuban/UI/tree.py (SessionTreeCtrl.unsubscribe_all): Remove a
671            debug print and set session to None after unsubscribing
672    
673    2002-05-07  Bernhard Herzog  <[email protected]>
674    
675            * Data/iceland_sample.session, Data/iceland_sample.thuban: Rename
676            the file to have a .thuban extension.
677    
678            * Thuban/UI/tree.py (session_channels): New class constant with
679            all the session channels to subscribe to to update the tree
680            (SessionTreeCtrl.session_changed): Remember the session so that we
681            can unsubscribe properly. Use the new class constant to
682            unsubscribe from the old session and subscribe to the new one.
683            (SessionTreeCtrl.unsubscribe_all): New method to unsubscribe all
684            subscriptions of the SessionTreeCtrl.
685            (SessionTreeView.OnClose): Call the tree's unsubscribe_all method.
686    
687            * Thuban/UI/mainwindow.py (MainWindow.__init__): Add the "Show
688            Session Tree" command to the file menu.
689    
690            * Thuban/UI/view.py (MapCanvas.do_redraw): Pass the entire bitmap
691            as update_region to the renderer.
692    
693            * Thuban/UI/renderer.py
694            (ScreenRenderer.layer_ids, ScreenRenderer.draw_shape_layer): The
695            update box is now directly a tuple, not a wxRect anymore.
696    
697            * Thuban/Model/layer.py (Layer.ShapesInRegion): Remove some debug
698            prints.
699    
700    2002-05-07  Bernhard Herzog  <[email protected]>
701    
702            * setup.py: Add the shptree extension module. See
703            extensions/pyshapelib/ChangeLog for more details.
704    
705            * extensions/shapelib/shpopen.c, extensions/shapelib/shapefil.h,
706            extensions/shapelib/dbfopen.c: Really update to the versions of
707            shapelib 1.2.9. For some reason it wasn't really done on
708            2002-04-11.
709    
710            * extensions/shapelib/shptree.c: Modified version of shptree.c of
711            shapelib 1.2.9. The only real difference is the use of qsort
712            instead of a bubble sort implementation
713    
714            * Thuban/Model/layer.py (Layer.__init__): New instance variable
715            shapetree to hold the shapelib quadtree for the shapefile
716            (Layer.open_shapefile): Create the quad tree.
717            (Layer.ShapesInRegion): New method to return the ids of shapes in
718            a given region using the quad tree.
719    
720            * extensions/thuban/wxproj.cpp (project_points): Fix some typos in
721            comment
722            (draw_polygon_shape): Accept both arcs and polygons.
723            (initwxproj): Use the new PYSHAPELIB_IMPORT_API macro to import
724            the api.
725    
726            * Thuban/UI/renderer.py (MapRenderer.layer_ids): New method to
727            return the shape ids to be rendered in a given layer.
728            (MapRenderer.draw_shape_layer): Call layer_ids to get the list of
729            ids. Use draw_polygon_shape to draw arc shapes as well.
730            (ScreenRenderer.RenderMap): New parameter for the rectangle that
731            has to be updated
732            (ScreenRenderer.layer_ids): Make use of the layer's quadtree by
733            calling it's ShapesInRegion method.
734    
735            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
736            update_region for the update region.
737            (MapCanvas.OnPaint): Maintain the update region
738            (MapCanvas.do_redraw): Pass the bounding box of the update_region
739            to the renderer when drawing the bitmap. Reset the update_region.
740    
741    2002-05-03  Bernhard Herzog  <[email protected]>
742    
743            * Thuban/UI/mainwindow.py (MainWindow.SaveSessionAs,
744            MainWindow.OpenSession): Change the file extension of the session
745            files to .thuban
746    
747            * Thuban/Model/session.py (Session.AddMap, forwarded_channels):
748            Move the map channels to be forwarded by the session into the
749            class constant with forwarded_channels. Also add
750            LAYER_PROJECTION_CHANGED and LAYER_VISIBILITY_CHANGED to
751            forwarded_channels
752    
753            * Thuban/Model/base.py (Modifiable.changed): Fix doc-string (a
754            typo and some rewording).
755    
756  2002-05-02  Bernhard Herzog  <[email protected]>  2002-05-02  Bernhard Herzog  <[email protected]>
757    
758          * Thuban/UI/view.py: Keep the temporary bitmap used during drawing          * Thuban/UI/view.py: Keep the temporary bitmap used during drawing

Legend:
Removed from v.126  
changed lines
  Added in v.370

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26