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

Legend:
Removed from v.116  
changed lines
  Added in v.405

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26