/[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 278 by bh, Mon Aug 26 12:50:23 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]>  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          * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
661          layer table specific code from TableGrid into LayerTableGrid          layer table specific code from TableGrid into LayerTableGrid
662          (TableFrame, LayerTableFrame): Split the layer table specific code          (TableFrame, LayerTableFrame): Split the layer table specific code
663          from TableFrame into LayerTableFrame          from TableFrame into LayerTableFrame
664            (LayerTableGrid.select_shape): Remove a debug print
665    
666          * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the          * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
667          LayerTableFrame          LayerTableFrame
# Line 17  Line 675 
675    
676          * Thuban/Model/table.py (Table.write_record): New method to write          * Thuban/Model/table.py (Table.write_record): New method to write
677          records.          records.
678          (Table.__init__): Open the DBF file for writing too.          (Table.__init__): Open the DBF file for writing too.
679    
680          * Thuban/UI/controls.py (RecordTable.SetValue): Write the value          * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
681          into the underlying table.          into the underlying table.
# Line 55  Line 713 
713          * setup.py (ThubanInstall.run): Don't repr install_lib_orig          * setup.py (ThubanInstall.run): Don't repr install_lib_orig
714          because thubaninit_contents will do it for us.          because thubaninit_contents will do it for us.
715    
716  2002-08-16      Jan-Oliver Wagner <[email protected]>  2002-08-16  Jan-Oliver Wagner <[email protected]>
717    
718          * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if          * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
719          tree window already open          tree window already open
# Line 183  Line 841 
841          * Thuban/UI/tree.py: We can now simply subscribe to the session's          * Thuban/UI/tree.py: We can now simply subscribe to the session's
842          CHANGED channel to be informed of changes.          CHANGED channel to be informed of changes.
843          (SessionTreeCtrl.session_channels): Not needed any longer.          (SessionTreeCtrl.session_channels): Not needed any longer.
844          (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):          (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
845          Only have to (un)subscribe CHANGED          Only have to (un)subscribe CHANGED
846    
847          * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.          * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
# Line 244  Line 902 
902          * Thuban/Model/layer.py (Layer.TreeInfo),          * Thuban/Model/layer.py (Layer.TreeInfo),
903          Thuban/Model/extension.py (Extension.TreeInfo),          Thuban/Model/extension.py (Extension.TreeInfo),
904          Thuban/Model/map.py (Map.TreeInfo),          Thuban/Model/map.py (Map.TreeInfo),
905          Thuban/Model/session.py (Session.TreeInfo):          Thuban/Model/session.py (Session.TreeInfo):
906          Add TreeInfo methods to implement the new tree view update scheme          Add TreeInfo methods to implement the new tree view update scheme
907    
908  2002-07-16  Bernhard Herzog  <[email protected]>  2002-07-16  Bernhard Herzog  <[email protected]>
# Line 325  Line 983 
983          * setup.py: In the setup call, make sure that the library          * setup.py: In the setup call, make sure that the library
984          directories are under $prefix/lib not directly under $prefix.          directories are under $prefix/lib not directly under $prefix.
985    
986  2002-06-20      Jan-Oliver Wagner <[email protected]>  2002-06-20  Jan-Oliver Wagner <[email protected]>
987    
988          * Thuban/Model/extension.py: new module to handle extension objects.          * Thuban/Model/extension.py: new module to handle extension objects.
989          * Thuban/Model/messages.py: new messages for extensions.          * Thuban/Model/messages.py: new messages for extensions.
# Line 554  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 679  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 796  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 813  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 880  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 930  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 967  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.278  
changed lines
  Added in v.497

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26