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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26