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

Legend:
Removed from v.59  
changed lines
  Added in v.359

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26