/[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 152 by bh, Tue May 7 17:01:49 2002 UTC revision 499 by jonathan, Mon Mar 10 15:10:48 2003 UTC
# Line 1  Line 1 
1    2003-03-10  Jonathan Coles   <[email protected]>
2    
3            * Thuban/UI/application.py: Changed SESSION_CHANGED to
4            SESSION_REPLACED.
5    
6            * Thuban/UI/classifier.py: Wrap text with _().
7            (ClassGrid.CreateTable): Set dimensions and size hints here,
8            instead of in Reset, so we only set the size once.
9    
10            * Thuban/UI/dialogs.py: Don't need Shutdown(); just use Close()!
11    
12            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
13            Call Close() instead of Shutdown().
14    
15            * Thuban/UI/messages.py: Changed SESSION_CHANGED to SESSION_REPLACED.
16    
17            * Thuban/UI/tree.py: Changed SESSION_CHANGED to SESSION_REPLACED.
18            Go back to using OnClose() instead of Shutdown().
19    
20    2003-03-10  Jonathan Coles   <[email protected]>
21    
22            * Thuban/UI/classifier.py (Classifier): SelectField() needed
23            to know the old field index as well as the new one.
24    
25    2003-03-10  Jonathan Coles   <[email protected]>
26    
27            * Thuban/UI/classifier.py (Classifier): Use __SelectField()
28            to correctly set the table information and call this from
29            __init__ and from _OnFieldSelect so that all the information
30            is up to date when the dialog opens and when a field is changed.
31    
32    2003-03-10  Jonathan Coles   <[email protected]>
33    
34            * Thuban/Model/classification.py (Classification): Don't use
35            layer's message function directly, use the ClassChanged() method
36            when then classification changes. SetField/SetFieldType/SetLayer
37            must keep the information about field name and field type in
38            sync when an owning layer is set or removed.
39    
40            * Thuban/Model/layer.py: Added ClassChanged() so that the
41            classification can tell the layer when its data has changed.
42            (Layer.SetClassification): Accepts None as an arguement to
43            remove the current classification and correctly handles
44            adding a new classification.
45    
46            * Thuban/Model/load.py: Comment out print statement
47    
48            * test/test_classification.py, test/test_save.py: New and
49            improved tests.
50    
51    2003-03-07  Jonathan Coles   <[email protected]>
52    
53            * Thuban/Model/classification.py: Implemented __copy__ and
54            __deepcopy__ for ClassGroup* and ClassGroupProperites so
55            they can easily be copied by the classifier dialog.
56            (ClassGroupProperites.__init__): The default line color should
57            have been Color.Black.
58    
59            * Thuban/UI/classifier.py: Setting and Getting table values now
60            uses a consistent set of functions.
61            (Classifier): Now non-modal. Has field type label which changes
62            as the field changes. Keep track of buttons in a list so that
63            we can enable/disable the buttons when the None field is selected.
64            (SelectPropertiesDialog): Add buttons to make the colors transparent.
65    
66            * Thuban/UI/dialogs.py (NonModalDialog.Shutdown): New method which
67            does what OnClose did, but can be called by the application to
68            close a window. Needed when a session changes, and we have to
69            close the classifier windows.
70    
71            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
72            Shuts down open dialogs. Used when a new session is created
73            or a session is opened.
74            (MainWindow.SaveSession): Should only call application.SaveSession()
75            if we don't call SaveSessionAs first.
76            (MainWindow.Classify): Allow different classifier dialogs for
77            different layers.
78    
79            * Thuban/UI/tree.py (SessionTreeView): Remove OnClose and let
80            the parent class handle it. Add Shutdown() to unsubscibe from
81            event notification and call the parent Shutdown(). This was
82            necessary so the application can close the tree window.
83    
84    2003-03-06  Jonathan Coles   <[email protected]>
85    
86            * Thuban/Model/classification.py: Minor documentation changes,
87            Addition of __eq__ and __ne__ methods.
88            (Classification.SetLayer): prevent recursion between this method
89            and Layer.SetClassification().
90    
91            * Thuban/Model/color.py: Addition of __eq__ and __ne__ methods.
92    
93            * Thuban/Model/layer.py (SetClassification): prevent recursion
94            between this method and Classification.SetLayer().
95    
96            * test/test_classification.py, test/test_load.py,
97            test/test_session.py: Fixed and added tests for the classification
98            classes.
99    
100    2003-03-06  Bernhard Herzog  <[email protected]>
101    
102            * Thuban/UI/classifier.py (ClassGrid.__init__)
103            (ClassGrid.CreateTable): Move the SetSelectionMode call to
104            CreateTable because otherwise it triggers an assertion in
105            wxPython/wxGTK 2.4.
106    
107    2003-03-05  Jonathan Coles   <[email protected]>
108    
109            * Thuban/common.py: Move FIELDTYPE constants back to table.py.
110    
111            * Thuban/Model/load.py: import FIELDTYPE constants from table.
112    
113            * Thuban/UI/classifier.py: import FIELDTYPE constants from table.
114    
115            * Thuban/Model/table.py: Put FIELDTYPE constants back.
116    
117    2003-03-05  Jonathan Coles   <[email protected]>
118    
119            * Thuban/UI/classifier.py: Added class documentation.
120            Fixed RTbug #1713, #1714. Added Move[Up|Down] buttons.
121            Store just the groups in the table and generate the other
122            column information when it is requested. Add "None" field
123            to pull-down to select no classification.
124    
125            * Thuban/common.py: Moved FIELDTYPE constants from table.py
126            (Str2Num): Only catch ValueError exceptions.
127    
128            * Thuban/Model/classification.py: Class documentation. Renaming
129            of methods with Stroke to Line. Groups are stored in a single
130            list with the default as the first element. Groups are searched
131            in the order they appear in the list.
132    
133            * Thuban/Model/color.py: Documentation.
134    
135            * Thuban/Model/layer.py (Layer): Add GetFieldType to retreive
136            the kind of data represented by a field.
137    
138            * Thuban/Model/load.py (ProcessSession): Use proper string
139            conversion function; fixes RTbug #1713.
140    
141            * Thuban/Model/save.py (Saver): Store field type information.
142    
143            * Thuban/Model/table.py: Put FIELDTYPE constants in common.py.
144            (Table): Add field_info_by_name() to retrieve field information
145            by specifying the field name, not the number.
146    
147            * Thuban/UI/mainwindow.py: Function name changes.
148    
149            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Only
150            get the layer classification once. Don't try to classify
151            values when the field is None: just use the default properties.
152    
153            * Thuban/UI/view.py: Function name changes.
154    
155            * Doc/thuban.dtd: Add field_type attribute to a classification.
156    
157    2003-03-04  Bernhard Herzog  <[email protected]>
158    
159            * Doc/thuban.dtd: Use correct syntax for optional attributes. Make
160            the fill and stroke layer attributes optional with suitable
161            default values. Add the stroke_width layer attribute. Use correct
162            syntax for empty elements. Make the attribute list for labels
163            refer to the label element.
164    
165    2003-03-04  Bernhard Herzog  <[email protected]>
166    
167            * setup.py (thuban_build_py.build): Add a comment about distutils in
168            Python 2.3 containing some of the functionality we implement in
169            setup.py ourselves.
170    
171            * Thuban/UI/classifier.py (ClassGrid.__init__): Set the table
172            before the selection mode. Doing it the other way round triggers
173            an assertion in wxWindows.
174    
175            * Thuban/Model/save.py (escape): Fix typo in doc-string
176    
177            * Thuban/Model/classification.py: Remove unnecessary wxPython
178            import
179    
180    2003-03-04  Jonathan Coles   <[email protected]>
181    
182            * Thuban/Model/classification.py (ClassGroupRange.GetProperties):
183            Parameter 'value' should default to None.
184    
185            * Thuban/UI/mainwindow.py: Use Layer.GetClassification() since
186            the class attribute __classification is now private.
187    
188            * Thuban/UI/classifier.py (ClassGrid): Moved OnCellDClick() from
189            Classifier to ClassGrid. Added support for removing selected rows,
190            which including code for keeping track of when cells are selected,
191            and deselected.
192            (ClassTable): Support for added/removing rows. Fixed a problem
193            with __ParseInput whereby it would not allow strings (only numbers)
194            to be entered.
195            (Classifier): Added button and supporting code for removing
196            selected rows.
197    
198    2003-02-27  Jonathan Coles   <[email protected]>
199    
200            * Thuban/common.py: Moved color conversion functions into
201            Thuban/UI/common.py.
202            (Str2Num): Now converts the float (not the string) to a long/int
203            so that an exception isn't thrown.
204    
205            * Thuban/UI/common.py: Common functions used in several UI modules
206    
207            * Thuban/Model/classification.py: Changed the class hierarchy
208            so that a Classification consists of Groups which return
209            Properties when a value matches a Group.
210    
211            * Thuban/Model/layer.py: Fixed name resolution problem.
212    
213            * Thuban/Model/load.py: Use new Classification and Group functions.
214    
215            * Thuban/Model/save.py (Saver.write_attribs): Fixes a test case
216            failure.
217            (Saver.write_classification): Use new Classification and Group
218            functions.
219    
220            * Thuban/UI/classifier.py: Changes to use new Classification and Group
221            functions. Fix to create a tuple with a single value instead of
222            simply returning the value.
223    
224            * Thuban/UI/renderer.py: Use new Classification and Group functions.
225            Use common.py functions.
226    
227            * Thuban/UI/tree.py: Use common.py functions.
228            
229            * test/test_classification.py: Use new Classification and Group
230            classes.
231    
232    2003-02-24  Jonathan Coles   <[email protected]>
233    
234            * Thuban/common.py (Color2wxColour, wxColour2Color): Conversion
235            functions from Thuban color objects to wxWindow colour objects.
236    
237            * Thuban/Model/classification.py (Classification): Renamed
238            GetProperties() to GetClassData(). Used the new iterator
239            in TreeInfo().
240            (ClassIterator): Iterator implementation to iterate over the
241            ClassData objects in a classification object.
242    
243            * Thuban/Model/save.py (Saver.write_classificaton): Uses
244            the new iterator to save the classification information.
245    
246            * Thuban/UI/classifier.py (SelectPropertiesDialog): Support
247            for changing the stroke and fill colors and previewing the
248            changes.
249    
250            * Thuban/UI/mainwindow.py (MainWindow.OpenSession,
251            MainWindow.SaveSessionAs): Text string changes so the dialogs
252            have more meaningful titles.
253    
254            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Change
255            Classification method name from GetProperties to GetClassData.
256    
257            * Thuban/UI/view.py (MapCanvas.find_shape_at): Use method calls
258            instead of accessing now non-existent class variables.
259    
260    2003-02-24  Bernhard Herzog  <[email protected]>
261    
262            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Remove
263            unneeded Shape() call. Rendering is substantially faster without
264            it and it avoids some problems with broken shape files.
265    
266    2003-02-20  Frank Koormann   <[email protected]>
267    
268            Force minimal size of identify and label dialogs. The autosizing
269            looked too ugly.
270    
271            * Thuban/UI/controls.py (RecordListCtrl): Set minimal width for columns.
272            * Thuban/UI/labeldialog.py (LabelDialog.dialog_layout):
273            Set size of listctrl.
274            * Thuban/UI/identifyview.py (IdentifyView.__init__):
275            Set size of dialog.
276    
277    2003-02-19  Jonathan Coles   <[email protected]>
278    
279            * test/test_classification.py, test/test_layer.py,
280            test/test_load.py, test/test_map.py, test/test_session.py:
281            Updated the tests to use the new functions that are in the
282            respective classes.
283    
284            * Thuban/Model/classification.py (Classification):
285            Uses the new ClassData* classes. Modification messages are
286            passed up to the parent layer (if it exists).
287            (ClassData): New class to encapsulate the common data in each
288            classification property.
289            (ClassDataDefault): Represents the Default class. data.
290            (ClassDataPoint): Represents a single class. data point
291            (ClassDataRange): Represents a class. range
292            (ClassDataMap): Represents a class. map (unused).
293    
294            * Thuban/Model/color.py: Added Color.None to represent something
295            with no color. Color.Black represents the color black.
296            (NoColor): Helper class derived from Color to represent something
297            with no color.
298    
299            * Thuban/Model/layer.py (Layer): Removed references to fill, stroke,
300            stroke_width attributes. Made the 'classification' attribute private.
301            New methods for setting/getting the classification.
302    
303            * Thuban/Model/load.py (ProcessSession): Use new methods on Layer
304            to get the classifcation and use the new ClassData* classes to
305            hold the classification data. Use Str2Num to convert numbers
306            properly.
307    
308            * Thuban/Model/save.py (Saver): Use new Color and Classification
309            methods
310    
311            * Thuban/UI/classifier.py (ClassGrid): New class to represent a
312            custom grid.
313            (ClassTable): Support for editing Values and Labels and for
314            changing what type (point or range) of data is stored in each
315            property based on how the user enters the data.
316            (Classifier): Support for saving the new classifications and
317            launching the dialog to edit a property.
318            (SelectPropertiesDialog): New class for editing the visual
319            properties of a classification (stroke color, width, and fill color)
320            (ClassPreviewer): Took the Draw method from ClassRenderer and
321            made most of it into this new class. Intend to use this class in
322            the SelectPropertiesDialog for previewing changes.
323    
324            * Thuban/UI/renderer.py: Use new Color and Classification methods.
325    
326            * Thuban/UI/tree.py: Formatting changes.
327    
328            * Doc/thuban.dtd: Add 'label' element
329    
330            * Thuban/common.py: New. Contains common routines used throughout
331            the code.
332            (Str2Num): Takes a string and converts it to the "best" type of
333            number.
334    
335    2003-02-14  Bernhard Herzog  <[email protected]>
336    
337            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Make sure that the
338            dragging flag is always set to 0 even when the tool implementation
339            raises an exception
340    
341    2003-02-11  Bernhard Herzog  <[email protected]>
342    
343            * Thuban/UI/application.py (ThubanApplication.splash_screen): New
344            method to create a splash screen.
345            (ThubanApplication.ShowMainWindow): New. Show the main window.
346            Needed so the splash screen can display the mainwindow
347            (ThubanApplication.OnInit): Call the
348            new splash_screen method to determine whether the application
349            should display a splash screen. If it displays a splash screen do
350            not immediately show the main window.
351    
352    2003-02-11  Jonathan Coles  <[email protected]>
353    
354            * Thuban/Model/classification.py: Added import line to fix
355            feature conflicts between running on python2.2 and python2.1.
356    
357            * Thuban/UI/classifier.py (ClassTable): Didn't need to hang
358            onto the clinfo parameter, so removed the deepcopy().
359    
360    2003-02-10  Jonathan Coles  <[email protected]>
361    
362            * Thuban/Model/save.py (Saver.open_element, Saver.close_element):
363            Added element_open variable to track opening and closing of tags
364            so that tags that don't span more than one line are closed with
365            /> instead of </tag_name>. Use the GetDefault*() methods of
366            the Classification class.
367    
368            * Thuban/Model/classification.py (Classificaton): Added set and
369            get methods for the default data. The class also takes a layer
370            reference so that modification messages can be sent. Fixed the
371            methods to use the new ClassData class.
372            (ClassData): New class to encapsulate the classification data
373    
374            * Thuban/Model/layer.py (Layer): Remove the
375            Set[Fill|Stroke|StrokeWidth]() methods. Code should call the
376            SetDefault*() methods on the layer's classification object.
377            (Layer.__init__): Use the new SetDefault*() methods in the
378            Classification class.
379    
380            * Thuban/Model/load.py (ProcessSession): Use the new ClassData
381            object instead of a dictionary.
382    
383            * Thuban/UI/classifier.py (ClassRenderer): New class to
384            draw the classifications in the dialog box's table.
385            (Classifier): Modified to use the ClassRenderer class.
386    
387            * Thuban/UI/mainwindow.py (MainWindow): Use the SetDefault*()
388            methods of the Classification class.
389    
390            * Thuban/UI/renderer.py (MapRenderer): Use the Get*() methods
391            of the ClassData class.
392    
393            * test/test_classification.py, test/test_layer.py,
394            test/test_map.py, test/test_session.py: Fix the tests to work
395            with the above code changes.
396    
397    2003-02-03  Jonathan Coles  <[email protected]>
398    
399            * Thuban/Model/classification.py (Classification): Added getNull()
400            to return the NullData reference
401    
402            * Thuban/Model/layer.py (Layer.SetFill, Layer.SetStroke,
403            Layer.SetStrokeWidth): Modified these functions to change the
404            null data in the classification rather than keep these values
405            directly in the Layer class. Menu options to change these values
406            work again.
407    
408    2003-01-28  Jonathan Coles  <[email protected]>
409    
410            * Thuban/UI/classifier.py (Classifier): Resolved merging conflicts.
411            Fixed crashing problem on some systems. Dialog box shows
412            classification data.
413    
414            * Thuban/UI/tree.py (SessionTreeCtrl.add_items): Handle drawing
415            Colors in the tree view.
416    
417            * Thuban/Model/layer.py (Layer.TreeInfo): Added a call to build
418            the tree info for classifications. Commented out unnecessary lines.
419    
420            * Thuban/Model/classification.py (Classification.TreeInfo): New
421            function to add information about the classification into the
422            tree view.
423    
424    2003-01-27  Jan-Oliver Wagner <[email protected]>
425    
426            * Thuban/__init__.py (_): New.
427    
428            * Thuban/Model/classification.py, Thuban/Model/extension.py,
429            Thuban/Model/layer.py, Thuban/Model/load.py, Thuban/Model/map.py,
430            Thuban/Model/session.py, Thuban/UI/application.py,
431            Thuban/UI/classifier.py, Thuban/UI/context.py, Thuban/UI/controls.py,
432            Thuban/UI/identifyview.py, Thuban/UI/labeldialog.py,
433            Thuban/UI/mainwindow.py, Thuban/UI/menu.py, Thuban/UI/proj4dialog.py,
434            Thuban/UI/renderer.py, Thuban/UI/tree.py, Thuban/Lib/connector.py,
435            Thuban/Lib/fileutil.py: Replace user string by _() for i18n.
436    
437    2003-01-27  Jonathan Coles  <[email protected]>
438    
439            * Thuban/Model/layer.py: Classification initialization calls.
440    
441            * Thuban/Model/classification.py: Created class to encapsulate
442            a layer classification. Supports specific data points and
443            ranges.
444    
445            * Thuban/Model/load.py: Added support for loading classification
446            information.
447    
448            * Thuban/Model/save.py: Added support for saving classification
449            information.
450    
451            * Thuban/UI/classifier.py: Initial class for a dialog box for
452            specifying classification information.
453    
454            * Thuban/UI/mainwindows.py: Support for opening the classifier
455            dialog.
456    
457            * Thuban/UI/renderer.py: Support for drawing a layer with the
458            classification information.
459    
460            * Data/iceland_sample_class.thuban: iceland_sample with
461            classification data.
462    
463            * test/test_classification: Tests for the Classification class.
464    
465    2002-12-09  Bernhard Herzog  <[email protected]>
466    
467            * test/test_command.py: New. Tests for the command classes.
468    
469            * Thuban/UI/command.py (ToolCommand): New class for tool commands.
470            (Command.IsTool): New method to distinguish between command
471            switching tools and other commands.
472    
473            * Thuban/UI/view.py (MapCanvas.SelectTool): New method to select
474            the tool to avoid direct assignments to instance variables
475            (MapCanvas.ZoomInTool, MapCanvas.ZoomOutTool, MapCanvas.PanTool)
476            (MapCanvas.IdentifyTool, MapCanvas.LabelTool): Use SelectTool to
477            change the tool
478    
479            * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): If an
480            active tool's command turns insensitive, disable the tool.
481            (_tool_command): Use the new ToolCommand class
482    
483            * Examples/simple_extensions/simple_tool.py (simple_tool): Use the
484            SelectTool method to change the tool
485            (iconfile): Use the ToolCommand class
486    
487    2002-12-03  Bernhard Herzog  <[email protected]>
488    
489            * Thuban/UI/tree.py (SessionTreeCtrl.normalize_selection): Handle
490            the case of selected items that are not children of Layers or Maps
491            properly. Previously this bug would trigger an assertion in
492            wxWindows.
493    
494    2002-11-06  Frank Koormann  <[email protected]>
495    
496            * Thuban/UI/mainwindow.py: Altered the order of tools in the
497            toolbar: First now are all navigation tools (Zoom In/Out, Pan,
498            Full Extent).
499    
500    2002-10-23  Bernhard Herzog  <[email protected]>
501    
502            * setup.py (setup call): version now 0.1.3
503    
504            * MANIFEST.in: Add the files in test/
505    
506            * test/README: Add note about tests requiring the iceland data
507    
508            * Thuban/UI/mainwindow.py (MainWindow.About): Add 2002 to
509            copyright notice.
510    
511    2002-10-18  Bernhard Herzog  <[email protected]>
512    
513            * test/test_map.py
514            (TestMapWithContents.test_projected_bounding_box): Use an explicit
515            epsilon.
516    
517            * test/support.py (FloatComparisonMixin.assertFloatEqual)
518            (FloatComparisonMixin.assertFloatSeqEqual): give a more useful
519            message if the assertion fails and don't return the return value
520            of self.assert_. In assertFloatSeqEqual the return meant that not
521            all items of the sequence were compared.
522    
523    2002-09-20  Bernhard Herzog  <[email protected]>
524    
525            * test/test_fileutil.py: New. Test cases for Thuban.Lib.fileutil
526    
527            * Thuban/Lib/fileutil.py: Fixup some whitespace and typos
528    
529            * test/test_map.py (TestMapWithContents.test_tree_info): Create
530            the string with the bounding box on the fly because of platform
531            differences in the way %g is handled.
532    
533            * test/test_layer.py (TestLayer.test_empty_layer): Create an empty
534            DBFfile too because Thuban layers can't yet cope missing DBF
535            files.
536    
537    2002-09-20  Bernhard Herzog  <[email protected]>
538    
539            * test/test_menu.py: Use initthuban instead of
540            add_thuban_dir_to_path to initialize Thuban.
541    
542            * test/support.py (FloatComparisonMixin.assertFloatEqual): New.
543            Mixin class for float comparisons
544            (SubscriberMixin): New. Mixin class to test messages sent through
545            the Connector class
546    
547            * test/README: Fix a typo and add the -v flag to the command for
548            individual tests
549    
550            * test/test_session.py: New. Test cases for Thuban.Model.session
551    
552            * test/test_proj.py: New. Test cases for Thuban.Model.proj
553    
554            * test/test_map.py: New. Test cases for Thuban.Model.map
555    
556            * test/test_layer.py: New. Test cases for Thuban.Model.layer
557    
558            * test/test_label.py: New. Test cases for Thuban.Model.label
559    
560            * test/test_connector.py: New. Test cases for Thuban.Lib.connector
561    
562            * test/test_color.py: New. Test cases for Thuban.Model.color
563    
564            * test/test_base.py: New. Test cases for Thuban.Model.base
565    
566    2002-09-13  Bernhard Herzog  <[email protected]>
567    
568            * Thuban/Model/session.py (Session.forwarded_channels): Forward
569            the CHANGED channel too.
570    
571            * Thuban/Model/map.py (Map.forwarded_channels): Forward the
572            CHANGED channel too.
573            (Map.__init__): Call the Modifiable constructor as well.
574    
575            * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
576            event if the modified flag changes.
577            (Modifiable.changed): Tweak the doc-string.
578    
579            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
580            (MainWindow.set_position_text): Put the code that puts the text
581            with the mouse position into the status bar into the new method
582            set_position_text so that it can overwritten in derived classes.
583    
584    2002-09-12  Bernhard Herzog  <[email protected]>
585    
586            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
587            message box on the main window.
588    
589    2002-09-11  Bernhard Herzog  <[email protected]>
590    
591            * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
592            the 'E' because it's less likely to interfere with other menu
593            entries.
594            (MainWindow.build_menu): remove an incorrect comment.
595    
596    2002-09-10  Bernhard Herzog  <[email protected]>
597    
598            * Thuban/UI/mainwindow.py (MainWindow.Map): New.
599            (_tool_command): Add sensitive parameter
600            (_has_visible_map): Sensitivity callback to tools and other
601            commands that require a visible map. Use it in map_zoom_in_tool,
602            map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
603            and map_full_extent
604    
605    2002-09-06  Bernhard Herzog  <[email protected]>
606    
607            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
608            VIEW_POSITION
609    
610    2002-09-04  Frank Koormann  <[email protected]>
611    
612            * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
613    
614    2002-09-02  Bernhard Herzog  <[email protected]>
615    
616            * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
617            wxWindows already and our implementation doesn't work correctly
618            with wxGTK 2.3:
619            (MapCanvas.__init__): Remove the instance variable
620            (MapCanvas.OnPaint): Always call do_redraw when there's a map to
621            be drawin
622            (MapCanvas.OnIdle): Removed.
623    
624            * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
625            a parameter to determine the size of the rectangle.
626            (MapCanvas.find_shape_at): Create the box around the point on a
627            layer by layer basis and make the size depend on the shape type.
628            This solves a problem with the selection of point shapes at the
629            border of the layer's bounding box
630    
631    2002-08-30  Bernhard Herzog  <[email protected]>
632    
633            * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
634            for the sensitivity  of remove layer.
635            (_can_remove_layer): New. Sensitivity callback for remove layer
636            (Command layer_remove): Use _can_remove_layer
637    
638            * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
639            determine whether a given layer can be deleted.
640    
641            * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
642            (MapCanvas.do_redraw): Get rid of the unused update_region
643            instance variable
644    
645            * Thuban/UI/view.py: Add/update some doc-strings.
646    
647            * test/: new subdirectory with a bunch of unit tests.
648    
649            * test/README, test/test_table.py, test/test_save.py,
650            test/test_menu.py, test/test_load.py: Initial set of tests and
651            brief instructions on how to run them
652    
653    2002-08-29  Bernhard Herzog  <[email protected]>
654    
655            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
656            arcs with multiple parts.
657    
658            * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
659            Handle degenrate rectangles.
660    
661            * Thuban/Model/table.py: Make writing records work correctly:
662            (Table.__init__): Keep track of whether the DBF is open for
663            writing
664            (Table.write_record): Open the DBF file for writing when necessary
665    
666    2002-08-27  Bernhard Herzog  <[email protected]>
667    
668            * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
669            dbf files only for reading by default. Use a new writable dbf
670            object for writing.
671    
672    2002-08-26  Bernhard Herzog  <[email protected]>
673    
674            * Thuban/UI/mainwindow.py: Refactor the context creation:
675            (MainWindow.Context): New method to return a context
676            (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
677            new method
678    
679            * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
680            layer table specific code from TableGrid into LayerTableGrid
681            (TableFrame, LayerTableFrame): Split the layer table specific code
682            from TableFrame into LayerTableFrame
683            (LayerTableGrid.select_shape): Remove a debug print
684    
685            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
686            LayerTableFrame
687    
688    2002-08-23  Bernhard Herzog  <[email protected]>
689    
690            * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
691            absolute filename.
692    
693    2002-08-22  Bernhard Herzog  <[email protected]>
694    
695            * Thuban/Model/table.py (Table.write_record): New method to write
696            records.
697            (Table.__init__): Open the DBF file for writing too.
698    
699            * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
700            into the underlying table.
701    
702            * extensions/shapelib/shapefil.h (DBFCommit),
703            extensions/shapelib/dbfopen.c (DBFCommit): New API function to
704            commit any changes made to the DBF file.
705    
706            * Thuban/UI/mainwindow.py (make_check_current_tool)
707            (_tool_command): Put the code that generates the "checked"
708            callback into a separate function so that we can reuse it
709            elsewhere
710    
711            * Thuban/Model/save.py (Saver): New class to handle serializing a
712            session into an XML file. The main reason to introduce a class is
713            that applications built on Thuban can derive from it so that they
714            can save additional information in a session file.
715            (save_session): Delegate almost all the work to the Saver class.
716            Rename the filename argument to file because it may be a file like
717            object now.
718    
719            * Thuban/Model/load.py: Get rid of the Python 1.5.2 compatibility
720            code. Remove the little test code which would be executed when the
721            module is run as a script which didn't work anymore since it can't
722            import the other Thuban modules.
723            (ProcessSession, load_session): Refactor the ProcessSession to
724            have one method for each element start and end tag so that derived
725            classes can easily override the processing of individual tags.
726            Also, always parse with namespaces enabled because applications
727            built on top of Thuban will likely use namespaces if they extend
728            the session file format.
729    
730    2002-08-21  Bernhard Herzog  <[email protected]>
731    
732            * setup.py (ThubanInstall.run): Don't repr install_lib_orig
733            because thubaninit_contents will do it for us.
734    
735    2002-08-16  Jan-Oliver Wagner <[email protected]>
736    
737            * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
738            tree window already open
739    
740    2002-08-15  Bernhard Herzog  <[email protected]>
741    
742            * Thuban/Model/layer.py (Layer.Destroy): Call the unboundd method
743            with self.
744    
745            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Only release the mouse
746            when we have actually captured it.
747    
748            * Thuban/Model/layer.py (Layer.Destroy): New. Explicitly close the
749            shapefile and destroy the table.
750    
751            * Thuban/Model/table.py (Table.Destroy): New. Close the DBF file.
752    
753    2002-08-14  Bernhard Herzog  <[email protected]>
754    
755            * Thuban/UI/controls.py (RecordTable.__init__): Remove the unused
756            instance variable columns
757            (RecordTable.GetTypeName): row and col may be negative in some
758            cases.
759    
760            * setup.py (InstallLocal.initialize_options)
761            (InstallLocal.finalize_options, InstallLocal.user_options): New
762            option create-init-file to build a thubaninit.py when running
763            install_local
764            (InstallLocal.run): Create the thubaninit.py module when requested
765            (thubaninit_contents): Split the template into several parts and
766            create a new function thubaninit_contents that creates the
767            contents of a thubaninit module.
768            (ThubanInstall.run): Use the new function to create the thubaninit
769            module.
770    
771    2002-07-30  Bernhard Herzog  <[email protected]>
772    
773            * Thuban/UI/application.py (ThubanApplication.OnExit): Do some
774            cleanup.
775            (ThubanApplication.MainLoop): Extend to automatically call OnExit.
776    
777            * Thuban/Model/session.py (Session.Destroy): Don't bypass the
778            direct base class' Destroy method.
779    
780            * Thuban/Model/map.py (Map.ClearLayers): New method to delete all
781            layers.
782            (Map.Destroy): Destroy the label_layer as well and call the
783            inherited Desatroymethod first so that no more messages are
784            issued.
785            (Map.RaiseLayer, Map.LowerLayer): Only issue LAYERS_CHANGED
786            message if the stacking order actually has changed. Add
787            doc-strings.
788            (Map.BoundingBox): Correct the doc-string.
789            (Map.AddLayer, Map.RemoveLayer, Map.Layers, Map.HasLayers)
790            (Map.ProjectedBoundingBox, Map.SetProjection): Add doc-strings.
791    
792            * Thuban/Model/label.py (LabelLayer.ClearLabels): New to delete
793            all labels.
794    
795    2002-07-29  Bernhard Herzog  <[email protected]>
796    
797            * Thuban/Model/map.py (Map.subscribe_layer_channels)
798            (Map.unsubscribe_layer_channels): Put the code that (un)subscribes
799            to a layer's channels into separate methods.
800            (Map.RemoveLayer, Map.AddLayer): Call the new methods
801            (Map.Destroy): Unsubscribe from a layer's channels before
802            destroying it.
803    
804            * Thuban/UI/view.py (MapCanvas.find_shape_at): Change the
805            selected_layer parameter to searched_layer which is the layer to
806            search in.
807            (MapCanvas.SelectShapeAt): New parameter layer to restrict the
808            search to that layer. Return the selected layer and shape.
809    
810            * Examples/simple_extensions/simple_tool.py (simple_tool): Fix a
811            typo
812    
813    2002-07-24  Bernhard Herzog  <[email protected]>
814    
815            * Thuban/UI/application.py (ThubanApplication.create_session):
816            Extend the doc string.
817            (ThubanApplication.subscribe_session)
818            (ThubanApplication.unsubscribe_session): New methods to
819            subscribe/unsubscribe to/from session channels.
820            (ThubanApplication.SetSession): Call the new methods here.
821            (ThubanApplication.maps_changed, ThubanApplication.set_map):
822            Renamed set_map to maps_changed. Its now a subscriber for
823            MAPS_CHANGED.
824    
825            * Thuban/UI/view.py (ZoomOutTool.MouseUp): Use the correct
826            x-coordinate in case of simple clicks
827    
828            * Thuban/Model/base.py (Modifiable.changed): Apply the args tuple,
829            don't pass it as a parameter
830    
831            * Thuban/Model/session.py (Session.RemoveMap): New
832    
833            * Thuban/UI/mainwindow.py (MainWindow.__init__): Turn the initial
834            window size into a parameter.
835    
836    2002-07-23  Bernhard Herzog  <[email protected]>
837    
838            * Thuban/UI/menu.py (Menu.item_index): Also search for menus not
839            just commands.
840    
841            * Thuban/UI/mainwindow.py (MainWindow.__init__): Change the
842            parameter list a bit to allow setting the window title and the
843            initial message in the status bar. Update the callers.
844    
845            * Thuban/UI/application.py (ThubanApplication.OnInit)
846            (ThubanApplication.CreateMainWindow): Put the mainwindow
847            instantiation into a separate method so that it can be overridden
848            by a subclass.
849    
850    2002-07-19  Bernhard Herzog  <[email protected]>
851    
852            * Thuban/Model/session.py: Issue a CHANGED message every time
853            another changed message is issued to make it easier to get
854            notified of changes.
855            (Session): Update the doc string
856            (Session.forward): Issue changed-events as CHANGED as well.
857            (Session.changed): Overwrite the inherited version to issue
858            CHANGED events as well.
859    
860            * Thuban/UI/tree.py: We can now simply subscribe to the session's
861            CHANGED channel to be informed of changes.
862            (SessionTreeCtrl.session_channels): Not needed any longer.
863            (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
864            Only have to (un)subscribe CHANGED
865    
866            * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
867    
868            * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
869            for the wxPython locale bug to __init__.py so that it's
870            automatically executed by anybody using UI code from Thuban.
871    
872    2002-07-18  Bernhard Herzog  <[email protected]>
873    
874            * Thuban/UI/main.py (main): app no longer needs to be global
875    
876            * Thuban/UI/mainwindow.py (MainWindow.__init__): Add application
877            as parameter and store it in an instance variable
878            (MainWindow.invoke_command, MainWindow.update_command_ui)
879            (MainWindow.save_modified_session, MainWindow.NewSession)
880            (MainWindow.OpenSession, MainWindow.SaveSession)
881            (MainWindow.SaveSessionAs, MainWindow.ShowSessionTree): Use self's
882            application object.
883    
884            * Thuban/UI/application.py (ThubanApplication.OnInit): Instantiate
885            the main window with self.
886    
887            * Thuban/UI/context.py: New module with the context class
888    
889            * Thuban/UI/command.py (Command): Update doc string.
890    
891            * Thuban/UI/mainwindow.py (MainWindow.invoke_command,
892            MainWindow.update_command_ui): Pass an instance of the context
893            class to the command's methods
894            (check_current_tool, call_method): Handle the new context
895            implementation
896    
897            * Examples/simple_extensions/simple_tool.py (simple_tool,
898            check_simple_tool): Handle the new context implementation
899    
900            * Examples/simple_extensions/simple_command.py (simple_command):
901            Handle the new context implementation. Update the comments about
902            the context.
903    
904            * Thuban/UI/application.py (ThubanApplication.SetSession): Add
905            doc-string
906            (ThubanApplication.Session): New method to return the session
907            object
908    
909            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): The
910            interactor's selected_layer may not be a layer of the current
911            session when the tree is updated while a new session is being set.
912    
913    2002-07-17  Bernhard Herzog  <[email protected]>
914    
915            * Thuban/UI/tree.py (color_string): Removed. No longer used.
916            (SessionTreeCtrl.update_tree, SessionTreeCtrl.add_items): Split
917            update_tree into update_tree and add_items. The tree now uses a
918            more generic way to display the contents of the tree.
919            (SessionTreeCtrl): Add a doc string explaining the TreeInfo method
920    
921            * Thuban/Model/layer.py (Layer.TreeInfo),
922            Thuban/Model/extension.py (Extension.TreeInfo),
923            Thuban/Model/map.py (Map.TreeInfo),
924            Thuban/Model/session.py (Session.TreeInfo):
925            Add TreeInfo methods to implement the new tree view update scheme
926    
927    2002-07-16  Bernhard Herzog  <[email protected]>
928    
929            * Thuban/UI/application.py: Don't use "import from" for the
930            MainWindow. It can't always be resolved.
931            (ThubanApplication.OnInit): change reference to MainWindow
932            accordingly.
933    
934            * Thuban/UI/menu.py (Menu.SetItems): New method to replace a menu
935            completely
936    
937    2002-07-10  Bernhard Herzog  <[email protected]>
938    
939            * setup.py (create_init_module): New configurable variable whose
940            default depends on the platform we're running on.
941            (ThubanInstall.initialize_options): Initialize
942            self.create_init_module from the global create_init_module
943            (ThubanInstall.user_options): indictate that the options
944            create-init-module and init-module-dir have arguments.
945    
946            * setup.py: In the setup call change the version number to include
947            cvs.
948    
949            * MANIFEST.in: Add the files in Examples
950    
951    2002-07-09  Bernhard Herzog  <[email protected]>
952    
953            * setup.py: In the setup call, use the thuban homepage as the
954            value of the url parameter.
955    
956            * Examples: New subdirectory for examples.
957    
958            * Examples/simple_extensions/simple_tool.xpm,
959            Examples/simple_extensions/simple_tool.py,
960            Examples/simple_extensions/simple_command.py,
961            Examples/simple_extensions/README: Simple examples showing how to
962            add new commands and tools.
963    
964            * setup.cfg (bdist_rpm): Add the default value for prefix and tell
965            bdist_rpm that we also have an install script.
966            (bdist_inno): Add 2002 to the copyright notice.
967    
968            * setup.py: Create a file in python's site-packages directory to
969            make installation of Thuban as a library easier.
970            (ThubanInstall.user_options): Add two new options,
971            create-init-module and init-module-dir
972            (ThubanInstall.expand_with_pure_python_dirs): New method to expand
973            filenames for installation in the default directories.
974            (ThubanInstall.select_scheme, ThubanInstall.convert_paths): Extend
975            the inherited methods to capture some filenames before they're
976            transformed too much by distutils.
977            (ThubanInstall.run): Create the init module if requested.
978            (ThubanInstall.thuban_init_filename): New method to return the
979            full name of the init module.
980            (ThubanInstall.get_outputs): Append the filename of the init
981            module.
982    
983    2002-07-08  Bernhard Herzog  <[email protected]>
984    
985            * setup.py (thuban_bdist_rpm): Extend this version of bdist_rpm to
986            handle the prefix properly which means that the default for the
987            installation prefix should be /usr for RPMs and /usr/local when
988            doing a normal source install.
989            (bdist_rpm_install_script): Script to override the default install
990            commands in the specfile generated by the bdist_rpm command.
991            (thuban_bdist_rpm.user_options): Add a prefix option
992            (thuban_bdist_rpm.initialize_options): Init the prefix option.
993            Create the script files for the spec files as empty files here
994            (thuban_bdist_rpm._make_spec_file): Override the inherited method
995            to fill the script files with content.
996    
997            * Thuban/Model/save.py (relative_filename): Wrapper around
998            Thuban.Lib.fileutil.relative_filename that accepts an empty dir
999            argument. save_session now automatically uses this version,
1000            solving a problem when saving to a relative filename.
1001    
1002            * setup.py: In the setup call, make sure that the library
1003            directories are under $prefix/lib not directly under $prefix.
1004    
1005    2002-06-20  Jan-Oliver Wagner <[email protected]>
1006    
1007            * Thuban/Model/extension.py: new module to handle extension objects.
1008            * Thuban/Model/messages.py: new messages for extensions.
1009            * Thuban/Model/session.py (Session.Extensions, Session.HasExtensions,
1010            Session.AddExtension): new for handling extensions.
1011            Also some other minor changes to round up extension handling.
1012            * Thuban/UI/tree.py (SessionTreeCrtl:update_tree): Added visualization
1013            of Extension titles and title and names of its objects.
1014    
1015    2002-05-29  Bernhard Herzog  <[email protected]>
1016    
1017            * Thuban/UI/mainwindow.py (MainWindow.bind_command_events): Bind
1018            the events for a command.
1019            (MainWindow.add_toolbar_command, MainWindow.add_menu_command):
1020            Call bind_command_events to bind the events. add_toolbar_command
1021            can now bind events too so that it's possible to have commands
1022            that are only available through the toolbar.
1023            (MainWindow.init_ids): New instance variable events_bound to keep
1024            track of for which commands events have been bound.
1025    
1026    2002-05-28  Bernhard Herzog  <[email protected]>
1027    
1028            * Thuban/UI/menu.py: New module to build and manage menus.
1029    
1030            * Thuban/UI/mainwindow.py: Remove some unused imports.
1031            (MainWindow.__init__, main_menu): move the definition of the main
1032            menu from __init__ to the Menu instance main_menu.
1033            (MainWindow.build_menu_bar, MainWindow.build_menu): New methods to
1034            build the menu bar and sub-menus from a menu description.
1035    
1036            * Thuban/UI/application.py (ThubanApplication.OnInit): Read the
1037            startup file
1038            (ThubanApplication.read_startup_files): New method to run
1039            ~/.thuban/thubanstart.py
1040    
1041            * Thuban/UI/mainwindow.py (MainWindow.__init__, main_toolbar):
1042            Move the toolbar definition to the Menu instance main_toolbar.
1043            (MainWindow.build_toolbar): New method to build the toolbar
1044            similar to the build_menu methods
1045    
1046    2002-05-23  Bernhard Herzog  <[email protected]>
1047    
1048            * Thuban/UI/mainwindow.py (MainWindow.__init__): Fix spelling of
1049            layer_outline_color. Fix it in the definition of the command too.
1050    
1051            * Thuban/UI/command.py (Command): Fix typo in doc string
1052    
1053    2002-05-22  Bernhard Herzog  <[email protected]>
1054    
1055            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Fix a typo
1056            in the docstring
1057    
1058    2002-05-15  Bernhard Herzog  <[email protected]>
1059    
1060            * Thuban/Model/layer.py (Layer.open_shapefile): Set bbox to None
1061            when the shapefile is empty.
1062            (Layer.BoundingBox, Layer.LatLongBoundingBox): Both methods may
1063            now return None for empty shapefiles. Update doc-strings.
1064    
1065            * Thuban/Model/map.py (Map.BoundingBox): Add doc-string. Deal with
1066            the layer's bbox being None.
1067    
1068            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): Deal with the
1069            layer's bbox being None.
1070    
1071            * Thuban/UI/view.py (MapCanvas.shape_selected): Only redraw when
1072            necessary.
1073            (MapCanvas.__init__): New instance variables, last_selected_layer
1074            and last_selected_shape to determine how the selection has
1075            changed.
1076    
1077            * Thuban/UI/tableview.py (TableGrid.__init__): Do not call
1078            AutoSizeColumns because it will cause a traversal of the entire
1079            table which for large .dbf files will take a very long time.
1080    
1081    2002-05-14  Bernhard Herzog  <[email protected]>
1082    
1083            * Thuban/Model/layer.py (Layer.open_shapefile): Choose a better
1084            maximum depth for the tree than shapelib does by default.
1085    
1086    2002-05-10  Bernhard Herzog  <[email protected]>
1087    
1088            * setup.py (py_modules): The shptree modules doesn't have a
1089            wrapper, so don't include it in the py_modules
1090    
1091    2002-05-08  Bernhard Herzog  <[email protected]>
1092    
1093            * extensions/shapelib/shptree.c (compare_ints): Make arguments
1094            const void * as in the qsort prototype
1095            (SHPTreeFindLikelyShapes): Remove some unused variables.
1096    
1097            * Thuban/UI/view.py (PanTool.MouseMove): Use the bitmap the view
1098            maintains to redraw the window during a drag.
1099            (MapCanvas.unprojected_rect_around_point): New method to determine
1100            a small region around a point for hit-testing.
1101            (MapCanvas.find_shape_at): Only test the shapes in a small region
1102            around the point.
1103    
1104            * setup.py: Increment the version to 0.1.2
1105    
1106            * Thuban/UI/tree.py (SessionTreeCtrl.unsubscribe_all): Remove a
1107            debug print and set session to None after unsubscribing
1108    
1109  2002-05-07  Bernhard Herzog  <[email protected]>  2002-05-07  Bernhard Herzog  <[email protected]>
1110    
1111            * Data/iceland_sample.session, Data/iceland_sample.thuban: Rename
1112            the file to have a .thuban extension.
1113    
1114          * Thuban/UI/tree.py (session_channels): New class constant with          * Thuban/UI/tree.py (session_channels): New class constant with
1115          all the session channels to subscribe to to update the tree          all the session channels to subscribe to to update the tree
1116          (SessionTreeCtrl.session_changed): Remember the session so that we          (SessionTreeCtrl.session_changed): Remember the session so that we
# Line 120  Line 1231 
1231          * Thuban/UI/messages.py (VIEW_POSITION): New message for the          * Thuban/UI/messages.py (VIEW_POSITION): New message for the
1232          position in the statusbar          position in the statusbar
1233    
1234  2002-04-26      Frank Koormann <[email protected]>  2002-04-26  Frank Koormann <[email protected]>
1235    
1236          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
1237    
1238  2002-04-24      Frank Koormann <[email protected]>  2002-04-24  Frank Koormann <[email protected]>
1239            
1240          * Resources/Bitmaps/identify.xpm: shadow added          * Resources/Bitmaps/identify.xpm: shadow added
1241    
1242          * Resources/Bitmaps/fullextent.xpm: new          * Resources/Bitmaps/fullextent.xpm: new
           
 2002-04-22      Jan-Oliver Wagner <[email protected]>  
1243    
1244          * Thuban/UI/tree.py (update_tree): added test for None on map bounding box  2002-04-22  Jan-Oliver Wagner <[email protected]>
1245    
1246  2002-04-21      Jan-Oliver Wagner <[email protected]>          * Thuban/UI/tree.py (update_tree): added test for None on map bounding
1247            box
1248    
1249    2002-04-21  Jan-Oliver Wagner <[email protected]>
1250    
1251          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
1252    
1253          * Thuban/UI/tree.py (update_tree): added added map extent          * Thuban/UI/tree.py (update_tree): added added map extent
1254    
1255          * Thuban/UI/mainwindow.py (_method_command): extended by parameter          * Thuban/UI/mainwindow.py (_method_command): extended by parameter
1256          icon; added map_full_extend as tool          icon; added map_full_extend as tool
1257    
1258  2002-04-19      Jan-Oliver Wagner <[email protected]>  2002-04-19  Jan-Oliver Wagner <[email protected]>
1259    
1260          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
1261          saving _new_ sessions          saving _new_ sessions
# Line 245  Line 1357 
1357    
1358          * setup.py: increase version number to 0.1          * setup.py: increase version number to 0.1
1359          (data_dist): New command class for data distribution          (data_dist): New command class for data distribution
           
1360    
1361  2001-09-14  Bernhard Herzog  <[email protected]>  2001-09-14  Bernhard Herzog  <[email protected]>
1362    
1363          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
1364          Handle the case of no layer (i.e. layer is None) properly.          Handle the case of no layer (i.e. layer is None) properly.
1365    
1366          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
1367          Set the initial selection of the combo boxes to reflect the          Set the initial selection of the combo boxes to reflect the
1368          projection we're starting with in a way that works on windows,          projection we're starting with in a way that works on windows,
1369          too.          too.
# Line 362  Line 1473 
1473          (MainWindow.identify_view_on_demand): Store the interactor in an          (MainWindow.identify_view_on_demand): Store the interactor in an
1474          instvar and use that reference instead of going through main.app          instvar and use that reference instead of going through main.app
1475    
1476          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
1477          * Thuban/UI/application.py (ThubanApplication.OnInit):          * Thuban/UI/application.py (ThubanApplication.OnInit):
1478          * Thuban/UI/main.py (main): Create the session tree view in main          * Thuban/UI/main.py (main): Create the session tree view in main
1479          with the new mainwindow method ShowSessionTree and not directly          with the new mainwindow method ShowSessionTree and not directly
1480          the application's OnInit method          the application's OnInit method
# Line 379  Line 1490 
1490          layer to the tableview dialog.          layer to the tableview dialog.
1491    
1492          * Thuban/UI/tableview.py: Add some doc-strings          * Thuban/UI/tableview.py: Add some doc-strings
1493          (TableGrid):          (TableGrid):
1494          (TableGrid.OnRangeSelect):          (TableGrid.OnRangeSelect):
1495          (TableGrid.OnSelectCell):          (TableGrid.OnSelectCell):
1496          (TableFrame.__init__):          (TableFrame.__init__):
# Line 446  Line 1557 
1557  2001-09-05  Bernhard Herzog  <[email protected]>  2001-09-05  Bernhard Herzog  <[email protected]>
1558    
1559          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.
1560            
1561          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument
1562          interactor to pass through to the MapCanvas          interactor to pass through to the MapCanvas
1563            
1564          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new
1565          argument to the MainWindow constructor to get rid of the ugly hack          argument to the MainWindow constructor to get rid of the ugly hack
1566          that made main.app available early just so that the mapcanvas          that made main.app available early just so that the mapcanvas
# Line 496  Line 1607 
1607          (ThubanInstall.run): Remove the leading install root from the          (ThubanInstall.run): Remove the leading install root from the
1608          script filename if an install root was specified and use the new          script filename if an install root was specified and use the new
1609          link_file method          link_file method
1610            
1611          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to
1612          the window when the first layer is added to the map.          the window when the first layer is added to the map.
1613    
# Line 533  Line 1644 
1644          (InnoIconItem): Helper class for bdist_inno          (InnoIconItem): Helper class for bdist_inno
1645          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
1646          this together with the appropriate parameters, to the setup call.          this together with the appropriate parameters, to the setup call.
1647            
1648          * setup.cfg (bdist_inno): added new section for the inno setup          * setup.cfg (bdist_inno): added new section for the inno setup
1649          installer          installer
1650    

Legend:
Removed from v.152  
changed lines
  Added in v.499

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26