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

Legend:
Removed from v.35  
changed lines
  Added in v.322

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26