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

Legend:
Removed from v.53  
changed lines
  Added in v.317

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26