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

Legend:
Removed from v.70  
changed lines
  Added in v.308

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26