/[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 186 by bh, Thu May 23 15:37:48 2002 UTC revision 423 by frank, Thu Feb 20 16:23:59 2003 UTC
# Line 1  Line 1 
1    2003-02-20  Frank Koormann   <[email protected]>
2    
3            Force minimal size of identify and label dialogs. The autosizing
4            looked too ugly.
5    
6            * Thuban/UI/controls.py (RecordListCtrl): Set minimal width for columns.
7            * Thuban/UI/labeldialog.py (LabelDialog.dialog_layout):
8            Set size of listctrl.
9            * Thuban/UI/identifyview.py (IdentifyView.__init__):
10            Set size of dialog.
11    
12    2003-02-19  Jonathan Coles   <[email protected]>
13    
14            * test/test_classification.py, test/test_layer.py,
15            test/test_load.py, test/test_map.py, test/test_session.py:
16            Updated the tests to use the new functions that are in the
17            respective classes.
18    
19            * Thuban/Model/classification.py (Classification):
20            Uses the new ClassData* classes. Modification messages are
21            passed up to the parent layer (if it exists).
22            (ClassData): New class to encapsulate the common data in each
23            classification property.
24            (ClassDataDefault): Represents the Default class. data.
25            (ClassDataPoint): Represents a single class. data point
26            (ClassDataRange): Represents a class. range
27            (ClassDataMap): Represents a class. map (unused).
28    
29            * Thuban/Model/color.py: Added Color.None to represent something
30            with no color. Color.Black represents the color black.
31            (NoColor): Helper class derived from Color to represent something
32            with no color.
33    
34            * Thuban/Model/layer.py (Layer): Removed references to fill, stroke,
35            stroke_width attributes. Made the 'classification' attribute private.
36            New methods for setting/getting the classification.
37    
38            * Thuban/Model/load.py (ProcessSession): Use new methods on Layer
39            to get the classifcation and use the new ClassData* classes to
40            hold the classification data. Use Str2Num to convert numbers
41            properly.
42    
43            * Thuban/Model/save.py (Saver): Use new Color and Classification
44            methods
45    
46            * Thuban/UI/classifier.py (ClassGrid): New class to represent a
47            custom grid.
48            (ClassTable): Support for editing Values and Labels and for
49            changing what type (point or range) of data is stored in each
50            property based on how the user enters the data.
51            (Classifier): Support for saving the new classifications and
52            launching the dialog to edit a property.
53            (SelectPropertiesDialog): New class for editing the visual
54            properties of a classification (stroke color, width, and fill color)
55            (ClassPreviewer): Took the Draw method from ClassRenderer and
56            made most of it into this new class. Intend to use this class in
57            the SelectPropertiesDialog for previewing changes.
58    
59            * Thuban/UI/renderer.py: Use new Color and Classification methods.
60    
61            * Thuban/UI/tree.py: Formatting changes.
62    
63            * Doc/thuban.dtd: Add 'label' element
64    
65            * Thuban/common.py: New. Contains common routines used throughout
66            the code.
67            (Str2Num): Takes a string and converts it to the "best" type of
68            number.
69    
70    2003-02-14  Bernhard Herzog  <[email protected]>
71    
72            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Make sure that the
73            dragging flag is always set to 0 even when the tool implementation
74            raises an exception
75    
76    2003-02-11  Bernhard Herzog  <[email protected]>
77    
78            * Thuban/UI/application.py (ThubanApplication.splash_screen): New
79            method to create a splash screen.
80            (ThubanApplication.ShowMainWindow): New. Show the main window.
81            Needed so the splash screen can display the mainwindow
82            (ThubanApplication.OnInit): Call the
83            new splash_screen method to determine whether the application
84            should display a splash screen. If it displays a splash screen do
85            not immediately show the main window.
86    
87    2003-02-11  Jonathan Coles  <[email protected]>
88    
89            * Thuban/Model/classification.py: Added import line to fix
90            feature conflicts between running on python2.2 and python2.1.
91    
92            * Thuban/UI/classifier.py (ClassTable): Didn't need to hang
93            onto the clinfo parameter, so removed the deepcopy().
94    
95    2003-02-10  Jonathan Coles  <[email protected]>
96    
97            * Thuban/Model/save.py (Saver.open_element, Saver.close_element):
98            Added element_open variable to track opening and closing of tags
99            so that tags that don't span more than one line are closed with
100            /> instead of </tag_name>. Use the GetDefault*() methods of
101            the Classification class.
102    
103            * Thuban/Model/classification.py (Classificaton): Added set and
104            get methods for the default data. The class also takes a layer
105            reference so that modification messages can be sent. Fixed the
106            methods to use the new ClassData class.
107            (ClassData): New class to encapsulate the classification data
108    
109            * Thuban/Model/layer.py (Layer): Remove the
110            Set[Fill|Stroke|StrokeWidth]() methods. Code should call the
111            SetDefault*() methods on the layer's classification object.
112            (Layer.__init__): Use the new SetDefault*() methods in the
113            Classification class.
114    
115            * Thuban/Model/load.py (ProcessSession): Use the new ClassData
116            object instead of a dictionary.
117    
118            * Thuban/UI/classifier.py (ClassRenderer): New class to
119            draw the classifications in the dialog box's table.
120            (Classifier): Modified to use the ClassRenderer class.
121    
122            * Thuban/UI/mainwindow.py (MainWindow): Use the SetDefault*()
123            methods of the Classification class.
124    
125            * Thuban/UI/renderer.py (MapRenderer): Use the Get*() methods
126            of the ClassData class.
127    
128            * test/test_classification.py, test/test_layer.py,
129            test/test_map.py, test/test_session.py: Fix the tests to work
130            with the above code changes.
131    
132    2003-02-03  Jonathan Coles  <[email protected]>
133    
134            * Thuban/Model/classification.py (Classification): Added getNull()
135            to return the NullData reference
136    
137            * Thuban/Model/layer.py (Layer.SetFill, Layer.SetStroke,
138            Layer.SetStrokeWidth): Modified these functions to change the
139            null data in the classification rather than keep these values
140            directly in the Layer class. Menu options to change these values
141            work again.
142    
143    2003-01-28  Jonathan Coles  <[email protected]>
144    
145            * Thuban/UI/classifier.py (Classifier): Resolved merging conflicts.
146            Fixed crashing problem on some systems. Dialog box shows
147            classification data.
148    
149            * Thuban/UI/tree.py (SessionTreeCtrl.add_items): Handle drawing
150            Colors in the tree view.
151    
152            * Thuban/Model/layer.py (Layer.TreeInfo): Added a call to build
153            the tree info for classifications. Commented out unnecessary lines.
154    
155            * Thuban/Model/classification.py (Classification.TreeInfo): New
156            function to add information about the classification into the
157            tree view.
158    
159    2003-01-27  Jan-Oliver Wagner <[email protected]>
160    
161            * Thuban/__init__.py (_): New.
162    
163            * Thuban/Model/classification.py, Thuban/Model/extension.py,
164            Thuban/Model/layer.py, Thuban/Model/load.py, Thuban/Model/map.py,
165            Thuban/Model/session.py, Thuban/UI/application.py,
166            Thuban/UI/classifier.py, Thuban/UI/context.py, Thuban/UI/controls.py,
167            Thuban/UI/identifyview.py, Thuban/UI/labeldialog.py,
168            Thuban/UI/mainwindow.py, Thuban/UI/menu.py, Thuban/UI/proj4dialog.py,
169            Thuban/UI/renderer.py, Thuban/UI/tree.py, Thuban/Lib/connector.py,
170            Thuban/Lib/fileutil.py: Replace user string by _() for i18n.
171    
172    2003-01-27  Jonathan Coles  <[email protected]>
173    
174            * Thuban/Model/layer.py: Classification initialization calls.
175    
176            * Thuban/Model/classification.py: Created class to encapsulate
177            a layer classification. Supports specific data points and
178            ranges.
179    
180            * Thuban/Model/load.py: Added support for loading classification
181            information.
182    
183            * Thuban/Model/save.py: Added support for saving classification
184            information.
185    
186            * Thuban/UI/classifier.py: Initial class for a dialog box for
187            specifying classification information.
188    
189            * Thuban/UI/mainwindows.py: Support for opening the classifier
190            dialog.
191    
192            * Thuban/UI/renderer.py: Support for drawing a layer with the
193            classification information.
194    
195            * Data/iceland_sample_class.thuban: iceland_sample with
196            classification data.
197    
198            * test/test_classification: Tests for the Classification class.
199    
200    2002-12-09  Bernhard Herzog  <[email protected]>
201    
202            * test/test_command.py: New. Tests for the command classes.
203    
204            * Thuban/UI/command.py (ToolCommand): New class for tool commands.
205            (Command.IsTool): New method to distinguish between command
206            switching tools and other commands.
207    
208            * Thuban/UI/view.py (MapCanvas.SelectTool): New method to select
209            the tool to avoid direct assignments to instance variables
210            (MapCanvas.ZoomInTool, MapCanvas.ZoomOutTool, MapCanvas.PanTool)
211            (MapCanvas.IdentifyTool, MapCanvas.LabelTool): Use SelectTool to
212            change the tool
213    
214            * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): If an
215            active tool's command turns insensitive, disable the tool.
216            (_tool_command): Use the new ToolCommand class
217    
218            * Examples/simple_extensions/simple_tool.py (simple_tool): Use the
219            SelectTool method to change the tool
220            (iconfile): Use the ToolCommand class
221    
222    2002-12-03  Bernhard Herzog  <[email protected]>
223    
224            * Thuban/UI/tree.py (SessionTreeCtrl.normalize_selection): Handle
225            the case of selected items that are not children of Layers or Maps
226            properly. Previously this bug would trigger an assertion in
227            wxWindows.
228    
229    2002-11-06  Frank Koormann  <[email protected]>
230    
231            * Thuban/UI/mainwindow.py: Altered the order of tools in the
232            toolbar: First now are all navigation tools (Zoom In/Out, Pan,
233            Full Extent).
234    
235    2002-10-23  Bernhard Herzog  <[email protected]>
236    
237            * setup.py (setup call): version now 0.1.3
238    
239            * MANIFEST.in: Add the files in test/
240    
241            * test/README: Add note about tests requiring the iceland data
242    
243            * Thuban/UI/mainwindow.py (MainWindow.About): Add 2002 to
244            copyright notice.
245    
246    2002-10-18  Bernhard Herzog  <[email protected]>
247    
248            * test/test_map.py
249            (TestMapWithContents.test_projected_bounding_box): Use an explicit
250            epsilon.
251    
252            * test/support.py (FloatComparisonMixin.assertFloatEqual)
253            (FloatComparisonMixin.assertFloatSeqEqual): give a more useful
254            message if the assertion fails and don't return the return value
255            of self.assert_. In assertFloatSeqEqual the return meant that not
256            all items of the sequence were compared.
257    
258    2002-09-20  Bernhard Herzog  <[email protected]>
259    
260            * test/test_fileutil.py: New. Test cases for Thuban.Lib.fileutil
261    
262            * Thuban/Lib/fileutil.py: Fixup some whitespace and typos
263    
264            * test/test_map.py (TestMapWithContents.test_tree_info): Create
265            the string with the bounding box on the fly because of platform
266            differences in the way %g is handled.
267    
268            * test/test_layer.py (TestLayer.test_empty_layer): Create an empty
269            DBFfile too because Thuban layers can't yet cope missing DBF
270            files.
271    
272    2002-09-20  Bernhard Herzog  <[email protected]>
273    
274            * test/test_menu.py: Use initthuban instead of
275            add_thuban_dir_to_path to initialize Thuban.
276    
277            * test/support.py (FloatComparisonMixin.assertFloatEqual): New.
278            Mixin class for float comparisons
279            (SubscriberMixin): New. Mixin class to test messages sent through
280            the Connector class
281    
282            * test/README: Fix a typo and add the -v flag to the command for
283            individual tests
284    
285            * test/test_session.py: New. Test cases for Thuban.Model.session
286    
287            * test/test_proj.py: New. Test cases for Thuban.Model.proj
288    
289            * test/test_map.py: New. Test cases for Thuban.Model.map
290    
291            * test/test_layer.py: New. Test cases for Thuban.Model.layer
292    
293            * test/test_label.py: New. Test cases for Thuban.Model.label
294    
295            * test/test_connector.py: New. Test cases for Thuban.Lib.connector
296    
297            * test/test_color.py: New. Test cases for Thuban.Model.color
298    
299            * test/test_base.py: New. Test cases for Thuban.Model.base
300    
301    2002-09-13  Bernhard Herzog  <[email protected]>
302    
303            * Thuban/Model/session.py (Session.forwarded_channels): Forward
304            the CHANGED channel too.
305    
306            * Thuban/Model/map.py (Map.forwarded_channels): Forward the
307            CHANGED channel too.
308            (Map.__init__): Call the Modifiable constructor as well.
309    
310            * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
311            event if the modified flag changes.
312            (Modifiable.changed): Tweak the doc-string.
313    
314            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
315            (MainWindow.set_position_text): Put the code that puts the text
316            with the mouse position into the status bar into the new method
317            set_position_text so that it can overwritten in derived classes.
318    
319    2002-09-12  Bernhard Herzog  <[email protected]>
320    
321            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
322            message box on the main window.
323    
324    2002-09-11  Bernhard Herzog  <[email protected]>
325    
326            * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
327            the 'E' because it's less likely to interfere with other menu
328            entries.
329            (MainWindow.build_menu): remove an incorrect comment.
330    
331    2002-09-10  Bernhard Herzog  <[email protected]>
332    
333            * Thuban/UI/mainwindow.py (MainWindow.Map): New.
334            (_tool_command): Add sensitive parameter
335            (_has_visible_map): Sensitivity callback to tools and other
336            commands that require a visible map. Use it in map_zoom_in_tool,
337            map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
338            and map_full_extent
339    
340    2002-09-06  Bernhard Herzog  <[email protected]>
341    
342            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
343            VIEW_POSITION
344    
345    2002-09-04  Frank Koormann  <[email protected]>
346    
347            * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
348    
349    2002-09-02  Bernhard Herzog  <[email protected]>
350    
351            * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
352            wxWindows already and our implementation doesn't work correctly
353            with wxGTK 2.3:
354            (MapCanvas.__init__): Remove the instance variable
355            (MapCanvas.OnPaint): Always call do_redraw when there's a map to
356            be drawin
357            (MapCanvas.OnIdle): Removed.
358    
359            * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
360            a parameter to determine the size of the rectangle.
361            (MapCanvas.find_shape_at): Create the box around the point on a
362            layer by layer basis and make the size depend on the shape type.
363            This solves a problem with the selection of point shapes at the
364            border of the layer's bounding box
365    
366    2002-08-30  Bernhard Herzog  <[email protected]>
367    
368            * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
369            for the sensitivity  of remove layer.
370            (_can_remove_layer): New. Sensitivity callback for remove layer
371            (Command layer_remove): Use _can_remove_layer
372    
373            * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
374            determine whether a given layer can be deleted.
375    
376            * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
377            (MapCanvas.do_redraw): Get rid of the unused update_region
378            instance variable
379    
380            * Thuban/UI/view.py: Add/update some doc-strings.
381    
382            * test/: new subdirectory with a bunch of unit tests.
383    
384            * test/README, test/test_table.py, test/test_save.py,
385            test/test_menu.py, test/test_load.py: Initial set of tests and
386            brief instructions on how to run them
387    
388    2002-08-29  Bernhard Herzog  <[email protected]>
389    
390            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
391            arcs with multiple parts.
392    
393            * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
394            Handle degenrate rectangles.
395    
396            * Thuban/Model/table.py: Make writing records work correctly:
397            (Table.__init__): Keep track of whether the DBF is open for
398            writing
399            (Table.write_record): Open the DBF file for writing when necessary
400    
401    2002-08-27  Bernhard Herzog  <[email protected]>
402    
403            * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
404            dbf files only for reading by default. Use a new writable dbf
405            object for writing.
406    
407    2002-08-26  Bernhard Herzog  <[email protected]>
408    
409            * Thuban/UI/mainwindow.py: Refactor the context creation:
410            (MainWindow.Context): New method to return a context
411            (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
412            new method
413    
414            * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
415            layer table specific code from TableGrid into LayerTableGrid
416            (TableFrame, LayerTableFrame): Split the layer table specific code
417            from TableFrame into LayerTableFrame
418            (LayerTableGrid.select_shape): Remove a debug print
419    
420            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
421            LayerTableFrame
422    
423    2002-08-23  Bernhard Herzog  <[email protected]>
424    
425            * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
426            absolute filename.
427    
428    2002-08-22  Bernhard Herzog  <[email protected]>
429    
430            * Thuban/Model/table.py (Table.write_record): New method to write
431            records.
432            (Table.__init__): Open the DBF file for writing too.
433    
434            * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
435            into the underlying table.
436    
437            * extensions/shapelib/shapefil.h (DBFCommit),
438            extensions/shapelib/dbfopen.c (DBFCommit): New API function to
439            commit any changes made to the DBF file.
440    
441            * Thuban/UI/mainwindow.py (make_check_current_tool)
442            (_tool_command): Put the code that generates the "checked"
443            callback into a separate function so that we can reuse it
444            elsewhere
445    
446            * Thuban/Model/save.py (Saver): New class to handle serializing a
447            session into an XML file. The main reason to introduce a class is
448            that applications built on Thuban can derive from it so that they
449            can save additional information in a session file.
450            (save_session): Delegate almost all the work to the Saver class.
451            Rename the filename argument to file because it may be a file like
452            object now.
453    
454            * Thuban/Model/load.py: Get rid of the Python 1.5.2 compatibility
455            code. Remove the little test code which would be executed when the
456            module is run as a script which didn't work anymore since it can't
457            import the other Thuban modules.
458            (ProcessSession, load_session): Refactor the ProcessSession to
459            have one method for each element start and end tag so that derived
460            classes can easily override the processing of individual tags.
461            Also, always parse with namespaces enabled because applications
462            built on top of Thuban will likely use namespaces if they extend
463            the session file format.
464    
465    2002-08-21  Bernhard Herzog  <[email protected]>
466    
467            * setup.py (ThubanInstall.run): Don't repr install_lib_orig
468            because thubaninit_contents will do it for us.
469    
470    2002-08-16  Jan-Oliver Wagner <[email protected]>
471    
472            * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
473            tree window already open
474    
475    2002-08-15  Bernhard Herzog  <[email protected]>
476    
477            * Thuban/Model/layer.py (Layer.Destroy): Call the unboundd method
478            with self.
479    
480            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Only release the mouse
481            when we have actually captured it.
482    
483            * Thuban/Model/layer.py (Layer.Destroy): New. Explicitly close the
484            shapefile and destroy the table.
485    
486            * Thuban/Model/table.py (Table.Destroy): New. Close the DBF file.
487    
488    2002-08-14  Bernhard Herzog  <[email protected]>
489    
490            * Thuban/UI/controls.py (RecordTable.__init__): Remove the unused
491            instance variable columns
492            (RecordTable.GetTypeName): row and col may be negative in some
493            cases.
494    
495            * setup.py (InstallLocal.initialize_options)
496            (InstallLocal.finalize_options, InstallLocal.user_options): New
497            option create-init-file to build a thubaninit.py when running
498            install_local
499            (InstallLocal.run): Create the thubaninit.py module when requested
500            (thubaninit_contents): Split the template into several parts and
501            create a new function thubaninit_contents that creates the
502            contents of a thubaninit module.
503            (ThubanInstall.run): Use the new function to create the thubaninit
504            module.
505    
506    2002-07-30  Bernhard Herzog  <[email protected]>
507    
508            * Thuban/UI/application.py (ThubanApplication.OnExit): Do some
509            cleanup.
510            (ThubanApplication.MainLoop): Extend to automatically call OnExit.
511    
512            * Thuban/Model/session.py (Session.Destroy): Don't bypass the
513            direct base class' Destroy method.
514    
515            * Thuban/Model/map.py (Map.ClearLayers): New method to delete all
516            layers.
517            (Map.Destroy): Destroy the label_layer as well and call the
518            inherited Desatroymethod first so that no more messages are
519            issued.
520            (Map.RaiseLayer, Map.LowerLayer): Only issue LAYERS_CHANGED
521            message if the stacking order actually has changed. Add
522            doc-strings.
523            (Map.BoundingBox): Correct the doc-string.
524            (Map.AddLayer, Map.RemoveLayer, Map.Layers, Map.HasLayers)
525            (Map.ProjectedBoundingBox, Map.SetProjection): Add doc-strings.
526    
527            * Thuban/Model/label.py (LabelLayer.ClearLabels): New to delete
528            all labels.
529    
530    2002-07-29  Bernhard Herzog  <[email protected]>
531    
532            * Thuban/Model/map.py (Map.subscribe_layer_channels)
533            (Map.unsubscribe_layer_channels): Put the code that (un)subscribes
534            to a layer's channels into separate methods.
535            (Map.RemoveLayer, Map.AddLayer): Call the new methods
536            (Map.Destroy): Unsubscribe from a layer's channels before
537            destroying it.
538    
539            * Thuban/UI/view.py (MapCanvas.find_shape_at): Change the
540            selected_layer parameter to searched_layer which is the layer to
541            search in.
542            (MapCanvas.SelectShapeAt): New parameter layer to restrict the
543            search to that layer. Return the selected layer and shape.
544    
545            * Examples/simple_extensions/simple_tool.py (simple_tool): Fix a
546            typo
547    
548    2002-07-24  Bernhard Herzog  <[email protected]>
549    
550            * Thuban/UI/application.py (ThubanApplication.create_session):
551            Extend the doc string.
552            (ThubanApplication.subscribe_session)
553            (ThubanApplication.unsubscribe_session): New methods to
554            subscribe/unsubscribe to/from session channels.
555            (ThubanApplication.SetSession): Call the new methods here.
556            (ThubanApplication.maps_changed, ThubanApplication.set_map):
557            Renamed set_map to maps_changed. Its now a subscriber for
558            MAPS_CHANGED.
559    
560            * Thuban/UI/view.py (ZoomOutTool.MouseUp): Use the correct
561            x-coordinate in case of simple clicks
562    
563            * Thuban/Model/base.py (Modifiable.changed): Apply the args tuple,
564            don't pass it as a parameter
565    
566            * Thuban/Model/session.py (Session.RemoveMap): New
567    
568            * Thuban/UI/mainwindow.py (MainWindow.__init__): Turn the initial
569            window size into a parameter.
570    
571    2002-07-23  Bernhard Herzog  <[email protected]>
572    
573            * Thuban/UI/menu.py (Menu.item_index): Also search for menus not
574            just commands.
575    
576            * Thuban/UI/mainwindow.py (MainWindow.__init__): Change the
577            parameter list a bit to allow setting the window title and the
578            initial message in the status bar. Update the callers.
579    
580            * Thuban/UI/application.py (ThubanApplication.OnInit)
581            (ThubanApplication.CreateMainWindow): Put the mainwindow
582            instantiation into a separate method so that it can be overridden
583            by a subclass.
584    
585    2002-07-19  Bernhard Herzog  <[email protected]>
586    
587            * Thuban/Model/session.py: Issue a CHANGED message every time
588            another changed message is issued to make it easier to get
589            notified of changes.
590            (Session): Update the doc string
591            (Session.forward): Issue changed-events as CHANGED as well.
592            (Session.changed): Overwrite the inherited version to issue
593            CHANGED events as well.
594    
595            * Thuban/UI/tree.py: We can now simply subscribe to the session's
596            CHANGED channel to be informed of changes.
597            (SessionTreeCtrl.session_channels): Not needed any longer.
598            (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
599            Only have to (un)subscribe CHANGED
600    
601            * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
602    
603            * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
604            for the wxPython locale bug to __init__.py so that it's
605            automatically executed by anybody using UI code from Thuban.
606    
607    2002-07-18  Bernhard Herzog  <[email protected]>
608    
609            * Thuban/UI/main.py (main): app no longer needs to be global
610    
611            * Thuban/UI/mainwindow.py (MainWindow.__init__): Add application
612            as parameter and store it in an instance variable
613            (MainWindow.invoke_command, MainWindow.update_command_ui)
614            (MainWindow.save_modified_session, MainWindow.NewSession)
615            (MainWindow.OpenSession, MainWindow.SaveSession)
616            (MainWindow.SaveSessionAs, MainWindow.ShowSessionTree): Use self's
617            application object.
618    
619            * Thuban/UI/application.py (ThubanApplication.OnInit): Instantiate
620            the main window with self.
621    
622            * Thuban/UI/context.py: New module with the context class
623    
624            * Thuban/UI/command.py (Command): Update doc string.
625    
626            * Thuban/UI/mainwindow.py (MainWindow.invoke_command,
627            MainWindow.update_command_ui): Pass an instance of the context
628            class to the command's methods
629            (check_current_tool, call_method): Handle the new context
630            implementation
631    
632            * Examples/simple_extensions/simple_tool.py (simple_tool,
633            check_simple_tool): Handle the new context implementation
634    
635            * Examples/simple_extensions/simple_command.py (simple_command):
636            Handle the new context implementation. Update the comments about
637            the context.
638    
639            * Thuban/UI/application.py (ThubanApplication.SetSession): Add
640            doc-string
641            (ThubanApplication.Session): New method to return the session
642            object
643    
644            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): The
645            interactor's selected_layer may not be a layer of the current
646            session when the tree is updated while a new session is being set.
647    
648    2002-07-17  Bernhard Herzog  <[email protected]>
649    
650            * Thuban/UI/tree.py (color_string): Removed. No longer used.
651            (SessionTreeCtrl.update_tree, SessionTreeCtrl.add_items): Split
652            update_tree into update_tree and add_items. The tree now uses a
653            more generic way to display the contents of the tree.
654            (SessionTreeCtrl): Add a doc string explaining the TreeInfo method
655    
656            * Thuban/Model/layer.py (Layer.TreeInfo),
657            Thuban/Model/extension.py (Extension.TreeInfo),
658            Thuban/Model/map.py (Map.TreeInfo),
659            Thuban/Model/session.py (Session.TreeInfo):
660            Add TreeInfo methods to implement the new tree view update scheme
661    
662    2002-07-16  Bernhard Herzog  <[email protected]>
663    
664            * Thuban/UI/application.py: Don't use "import from" for the
665            MainWindow. It can't always be resolved.
666            (ThubanApplication.OnInit): change reference to MainWindow
667            accordingly.
668    
669            * Thuban/UI/menu.py (Menu.SetItems): New method to replace a menu
670            completely
671    
672    2002-07-10  Bernhard Herzog  <[email protected]>
673    
674            * setup.py (create_init_module): New configurable variable whose
675            default depends on the platform we're running on.
676            (ThubanInstall.initialize_options): Initialize
677            self.create_init_module from the global create_init_module
678            (ThubanInstall.user_options): indictate that the options
679            create-init-module and init-module-dir have arguments.
680    
681            * setup.py: In the setup call change the version number to include
682            cvs.
683    
684            * MANIFEST.in: Add the files in Examples
685    
686    2002-07-09  Bernhard Herzog  <[email protected]>
687    
688            * setup.py: In the setup call, use the thuban homepage as the
689            value of the url parameter.
690    
691            * Examples: New subdirectory for examples.
692    
693            * Examples/simple_extensions/simple_tool.xpm,
694            Examples/simple_extensions/simple_tool.py,
695            Examples/simple_extensions/simple_command.py,
696            Examples/simple_extensions/README: Simple examples showing how to
697            add new commands and tools.
698    
699            * setup.cfg (bdist_rpm): Add the default value for prefix and tell
700            bdist_rpm that we also have an install script.
701            (bdist_inno): Add 2002 to the copyright notice.
702    
703            * setup.py: Create a file in python's site-packages directory to
704            make installation of Thuban as a library easier.
705            (ThubanInstall.user_options): Add two new options,
706            create-init-module and init-module-dir
707            (ThubanInstall.expand_with_pure_python_dirs): New method to expand
708            filenames for installation in the default directories.
709            (ThubanInstall.select_scheme, ThubanInstall.convert_paths): Extend
710            the inherited methods to capture some filenames before they're
711            transformed too much by distutils.
712            (ThubanInstall.run): Create the init module if requested.
713            (ThubanInstall.thuban_init_filename): New method to return the
714            full name of the init module.
715            (ThubanInstall.get_outputs): Append the filename of the init
716            module.
717    
718    2002-07-08  Bernhard Herzog  <[email protected]>
719    
720            * setup.py (thuban_bdist_rpm): Extend this version of bdist_rpm to
721            handle the prefix properly which means that the default for the
722            installation prefix should be /usr for RPMs and /usr/local when
723            doing a normal source install.
724            (bdist_rpm_install_script): Script to override the default install
725            commands in the specfile generated by the bdist_rpm command.
726            (thuban_bdist_rpm.user_options): Add a prefix option
727            (thuban_bdist_rpm.initialize_options): Init the prefix option.
728            Create the script files for the spec files as empty files here
729            (thuban_bdist_rpm._make_spec_file): Override the inherited method
730            to fill the script files with content.
731    
732            * Thuban/Model/save.py (relative_filename): Wrapper around
733            Thuban.Lib.fileutil.relative_filename that accepts an empty dir
734            argument. save_session now automatically uses this version,
735            solving a problem when saving to a relative filename.
736    
737            * setup.py: In the setup call, make sure that the library
738            directories are under $prefix/lib not directly under $prefix.
739    
740    2002-06-20  Jan-Oliver Wagner <[email protected]>
741    
742            * Thuban/Model/extension.py: new module to handle extension objects.
743            * Thuban/Model/messages.py: new messages for extensions.
744            * Thuban/Model/session.py (Session.Extensions, Session.HasExtensions,
745            Session.AddExtension): new for handling extensions.
746            Also some other minor changes to round up extension handling.
747            * Thuban/UI/tree.py (SessionTreeCrtl:update_tree): Added visualization
748            of Extension titles and title and names of its objects.
749    
750    2002-05-29  Bernhard Herzog  <[email protected]>
751    
752            * Thuban/UI/mainwindow.py (MainWindow.bind_command_events): Bind
753            the events for a command.
754            (MainWindow.add_toolbar_command, MainWindow.add_menu_command):
755            Call bind_command_events to bind the events. add_toolbar_command
756            can now bind events too so that it's possible to have commands
757            that are only available through the toolbar.
758            (MainWindow.init_ids): New instance variable events_bound to keep
759            track of for which commands events have been bound.
760    
761    2002-05-28  Bernhard Herzog  <[email protected]>
762    
763            * Thuban/UI/menu.py: New module to build and manage menus.
764    
765            * Thuban/UI/mainwindow.py: Remove some unused imports.
766            (MainWindow.__init__, main_menu): move the definition of the main
767            menu from __init__ to the Menu instance main_menu.
768            (MainWindow.build_menu_bar, MainWindow.build_menu): New methods to
769            build the menu bar and sub-menus from a menu description.
770    
771            * Thuban/UI/application.py (ThubanApplication.OnInit): Read the
772            startup file
773            (ThubanApplication.read_startup_files): New method to run
774            ~/.thuban/thubanstart.py
775    
776            * Thuban/UI/mainwindow.py (MainWindow.__init__, main_toolbar):
777            Move the toolbar definition to the Menu instance main_toolbar.
778            (MainWindow.build_toolbar): New method to build the toolbar
779            similar to the build_menu methods
780    
781  2002-05-23  Bernhard Herzog  <[email protected]>  2002-05-23  Bernhard Herzog  <[email protected]>
782    
783          * Thuban/UI/mainwindow.py (MainWindow.__init__): Fix spelling of          * Thuban/UI/mainwindow.py (MainWindow.__init__): Fix spelling of
# Line 186  Line 966 
966          * Thuban/UI/messages.py (VIEW_POSITION): New message for the          * Thuban/UI/messages.py (VIEW_POSITION): New message for the
967          position in the statusbar          position in the statusbar
968    
969  2002-04-26      Frank Koormann <[email protected]>  2002-04-26  Frank Koormann <[email protected]>
970    
971          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
972    
973  2002-04-24      Frank Koormann <[email protected]>  2002-04-24  Frank Koormann <[email protected]>
974            
975          * Resources/Bitmaps/identify.xpm: shadow added          * Resources/Bitmaps/identify.xpm: shadow added
976    
977          * Resources/Bitmaps/fullextent.xpm: new          * Resources/Bitmaps/fullextent.xpm: new
           
 2002-04-22      Jan-Oliver Wagner <[email protected]>  
978    
979          * Thuban/UI/tree.py (update_tree): added test for None on map bounding box  2002-04-22  Jan-Oliver Wagner <[email protected]>
980    
981            * Thuban/UI/tree.py (update_tree): added test for None on map bounding
982            box
983    
984  2002-04-21      Jan-Oliver Wagner <[email protected]>  2002-04-21  Jan-Oliver Wagner <[email protected]>
985    
986          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
987    
988          * Thuban/UI/tree.py (update_tree): added added map extent          * Thuban/UI/tree.py (update_tree): added added map extent
989    
990          * Thuban/UI/mainwindow.py (_method_command): extended by parameter          * Thuban/UI/mainwindow.py (_method_command): extended by parameter
991          icon; added map_full_extend as tool          icon; added map_full_extend as tool
992    
993  2002-04-19      Jan-Oliver Wagner <[email protected]>  2002-04-19  Jan-Oliver Wagner <[email protected]>
994    
995          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
996          saving _new_ sessions          saving _new_ sessions
# Line 311  Line 1092 
1092    
1093          * setup.py: increase version number to 0.1          * setup.py: increase version number to 0.1
1094          (data_dist): New command class for data distribution          (data_dist): New command class for data distribution
           
1095    
1096  2001-09-14  Bernhard Herzog  <[email protected]>  2001-09-14  Bernhard Herzog  <[email protected]>
1097    
1098          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
1099          Handle the case of no layer (i.e. layer is None) properly.          Handle the case of no layer (i.e. layer is None) properly.
1100    
1101          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
1102          Set the initial selection of the combo boxes to reflect the          Set the initial selection of the combo boxes to reflect the
1103          projection we're starting with in a way that works on windows,          projection we're starting with in a way that works on windows,
1104          too.          too.
# Line 428  Line 1208 
1208          (MainWindow.identify_view_on_demand): Store the interactor in an          (MainWindow.identify_view_on_demand): Store the interactor in an
1209          instvar and use that reference instead of going through main.app          instvar and use that reference instead of going through main.app
1210    
1211          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
1212          * Thuban/UI/application.py (ThubanApplication.OnInit):          * Thuban/UI/application.py (ThubanApplication.OnInit):
1213          * Thuban/UI/main.py (main): Create the session tree view in main          * Thuban/UI/main.py (main): Create the session tree view in main
1214          with the new mainwindow method ShowSessionTree and not directly          with the new mainwindow method ShowSessionTree and not directly
1215          the application's OnInit method          the application's OnInit method
# Line 445  Line 1225 
1225          layer to the tableview dialog.          layer to the tableview dialog.
1226    
1227          * Thuban/UI/tableview.py: Add some doc-strings          * Thuban/UI/tableview.py: Add some doc-strings
1228          (TableGrid):          (TableGrid):
1229          (TableGrid.OnRangeSelect):          (TableGrid.OnRangeSelect):
1230          (TableGrid.OnSelectCell):          (TableGrid.OnSelectCell):
1231          (TableFrame.__init__):          (TableFrame.__init__):
# Line 512  Line 1292 
1292  2001-09-05  Bernhard Herzog  <[email protected]>  2001-09-05  Bernhard Herzog  <[email protected]>
1293    
1294          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.
1295            
1296          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument
1297          interactor to pass through to the MapCanvas          interactor to pass through to the MapCanvas
1298            
1299          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new
1300          argument to the MainWindow constructor to get rid of the ugly hack          argument to the MainWindow constructor to get rid of the ugly hack
1301          that made main.app available early just so that the mapcanvas          that made main.app available early just so that the mapcanvas
# Line 562  Line 1342 
1342          (ThubanInstall.run): Remove the leading install root from the          (ThubanInstall.run): Remove the leading install root from the
1343          script filename if an install root was specified and use the new          script filename if an install root was specified and use the new
1344          link_file method          link_file method
1345            
1346          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to
1347          the window when the first layer is added to the map.          the window when the first layer is added to the map.
1348    
# Line 599  Line 1379 
1379          (InnoIconItem): Helper class for bdist_inno          (InnoIconItem): Helper class for bdist_inno
1380          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
1381          this together with the appropriate parameters, to the setup call.          this together with the appropriate parameters, to the setup call.
1382            
1383          * setup.cfg (bdist_inno): added new section for the inno setup          * setup.cfg (bdist_inno): added new section for the inno setup
1384          installer          installer
1385    

Legend:
Removed from v.186  
changed lines
  Added in v.423

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26