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

Legend:
Removed from v.89  
changed lines
  Added in v.387

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26