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

Legend:
Removed from v.64  
changed lines
  Added in v.313

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26