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

Legend:
Removed from v.81  
changed lines
  Added in v.354

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26