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

Legend:
Removed from v.131  
changed lines
  Added in v.375

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26