/[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 271 by bh, Thu Aug 22 13:46:54 2002 UTC revision 490 by jonathan, Mon Mar 10 10:44:24 2003 UTC
# Line 1  Line 1 
1    2003-03-10  Jonathan Coles   <[email protected]>
2    
3            * Thuban/Model/classification.py (Classification): Don't use
4            layer's message function directly, use the ClassChanged() method
5            when then classification changes. SetField/SetFieldType/SetLayer
6            must keep the information about field name and field type in
7            sync when an owning layer is set or removed.
8    
9            * Thuban/Model/layer.py: Added ClassChanged() so that the
10            classification can tell the layer when its data has changed.
11            (Layer.SetClassification): Accepts None as an arguement to
12            remove the current classification and correctly handles
13            adding a new classification.
14    
15            * Thuban/Model/load.py: Comment out print statement
16    
17            * test/test_classification.py, test/test_save.py: New and
18            improved tests.
19    
20    2003-03-07  Jonathan Coles   <[email protected]>
21    
22            * Thuban/Model/classification.py: Implemented __copy__ and
23            __deepcopy__ for ClassGroup* and ClassGroupProperites so
24            they can easily be copied by the classifier dialog.
25            (ClassGroupProperites.__init__): The default line color should
26            have been Color.Black.
27    
28            * Thuban/UI/classifier.py: Setting and Getting table values now
29            uses a consistent set of functions.
30            (Classifier): Now non-modal. Has field type label which changes
31            as the field changes. Keep track of buttons in a list so that
32            we can enable/disable the buttons when the None field is selected.
33            (SelectPropertiesDialog): Add buttons to make the colors transparent.
34    
35            * Thuban/UI/dialogs.py (NonModalDialog.Shutdown): New method which
36            does what OnClose did, but can be called by the application to
37            close a window. Needed when a session changes, and we have to
38            close the classifier windows.
39    
40            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
41            Shuts down open dialogs. Used when a new session is created
42            or a session is opened.
43            (MainWindow.SaveSession): Should only call application.SaveSession()
44            if we don't call SaveSessionAs first.
45            (MainWindow.Classify): Allow different classifier dialogs for
46            different layers.
47    
48            * Thuban/UI/tree.py (SessionTreeView): Remove OnClose and let
49            the parent class handle it. Add Shutdown() to unsubscibe from
50            event notification and call the parent Shutdown(). This was
51            necessary so the application can close the tree window.
52    
53    2003-03-06  Jonathan Coles   <[email protected]>
54    
55            * Thuban/Model/classification.py: Minor documentation changes,
56            Addition of __eq__ and __ne__ methods.
57            (Classification.SetLayer): prevent recursion between this method
58            and Layer.SetClassification().
59    
60            * Thuban/Model/color.py: Addition of __eq__ and __ne__ methods.
61    
62            * Thuban/Model/layer.py (SetClassification): prevent recursion
63            between this method and Classification.SetLayer().
64    
65            * test/test_classification.py, test/test_load.py,
66            test/test_session.py: Fixed and added tests for the classification
67            classes.
68    
69    2003-03-06  Bernhard Herzog  <[email protected]>
70    
71            * Thuban/UI/classifier.py (ClassGrid.__init__)
72            (ClassGrid.CreateTable): Move the SetSelectionMode call to
73            CreateTable because otherwise it triggers an assertion in
74            wxPython/wxGTK 2.4.
75    
76    2003-03-05  Jonathan Coles   <[email protected]>
77    
78            * Thuban/common.py: Move FIELDTYPE constants back to table.py.
79    
80            * Thuban/Model/load.py: import FIELDTYPE constants from table.
81    
82            * Thuban/UI/classifier.py: import FIELDTYPE constants from table.
83    
84            * Thuban/Model/table.py: Put FIELDTYPE constants back.
85    
86    2003-03-05  Jonathan Coles   <[email protected]>
87    
88            * Thuban/UI/classifier.py: Added class documentation.
89            Fixed RTbug #1713, #1714. Added Move[Up|Down] buttons.
90            Store just the groups in the table and generate the other
91            column information when it is requested. Add "None" field
92            to pull-down to select no classification.
93    
94            * Thuban/common.py: Moved FIELDTYPE constants from table.py
95            (Str2Num): Only catch ValueError exceptions.
96    
97            * Thuban/Model/classification.py: Class documentation. Renaming
98            of methods with Stroke to Line. Groups are stored in a single
99            list with the default as the first element. Groups are searched
100            in the order they appear in the list.
101    
102            * Thuban/Model/color.py: Documentation.
103    
104            * Thuban/Model/layer.py (Layer): Add GetFieldType to retreive
105            the kind of data represented by a field.
106    
107            * Thuban/Model/load.py (ProcessSession): Use proper string
108            conversion function; fixes RTbug #1713.
109    
110            * Thuban/Model/save.py (Saver): Store field type information.
111    
112            * Thuban/Model/table.py: Put FIELDTYPE constants in common.py.
113            (Table): Add field_info_by_name() to retrieve field information
114            by specifying the field name, not the number.
115    
116            * Thuban/UI/mainwindow.py: Function name changes.
117    
118            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Only
119            get the layer classification once. Don't try to classify
120            values when the field is None: just use the default properties.
121    
122            * Thuban/UI/view.py: Function name changes.
123    
124            * Doc/thuban.dtd: Add field_type attribute to a classification.
125    
126    2003-03-04  Bernhard Herzog  <[email protected]>
127    
128            * Doc/thuban.dtd: Use correct syntax for optional attributes. Make
129            the fill and stroke layer attributes optional with suitable
130            default values. Add the stroke_width layer attribute. Use correct
131            syntax for empty elements. Make the attribute list for labels
132            refer to the label element.
133    
134    2003-03-04  Bernhard Herzog  <[email protected]>
135    
136            * setup.py (thuban_build_py.build): Add a comment about distutils in
137            Python 2.3 containing some of the functionality we implement in
138            setup.py ourselves.
139    
140            * Thuban/UI/classifier.py (ClassGrid.__init__): Set the table
141            before the selection mode. Doing it the other way round triggers
142            an assertion in wxWindows.
143    
144            * Thuban/Model/save.py (escape): Fix typo in doc-string
145    
146            * Thuban/Model/classification.py: Remove unnecessary wxPython
147            import
148    
149    2003-03-04  Jonathan Coles   <[email protected]>
150    
151            * Thuban/Model/classification.py (ClassGroupRange.GetProperties):
152            Parameter 'value' should default to None.
153    
154            * Thuban/UI/mainwindow.py: Use Layer.GetClassification() since
155            the class attribute __classification is now private.
156    
157            * Thuban/UI/classifier.py (ClassGrid): Moved OnCellDClick() from
158            Classifier to ClassGrid. Added support for removing selected rows,
159            which including code for keeping track of when cells are selected,
160            and deselected.
161            (ClassTable): Support for added/removing rows. Fixed a problem
162            with __ParseInput whereby it would not allow strings (only numbers)
163            to be entered.
164            (Classifier): Added button and supporting code for removing
165            selected rows.
166    
167    2003-02-27  Jonathan Coles   <[email protected]>
168    
169            * Thuban/common.py: Moved color conversion functions into
170            Thuban/UI/common.py.
171            (Str2Num): Now converts the float (not the string) to a long/int
172            so that an exception isn't thrown.
173    
174            * Thuban/UI/common.py: Common functions used in several UI modules
175    
176            * Thuban/Model/classification.py: Changed the class hierarchy
177            so that a Classification consists of Groups which return
178            Properties when a value matches a Group.
179    
180            * Thuban/Model/layer.py: Fixed name resolution problem.
181    
182            * Thuban/Model/load.py: Use new Classification and Group functions.
183    
184            * Thuban/Model/save.py (Saver.write_attribs): Fixes a test case
185            failure.
186            (Saver.write_classification): Use new Classification and Group
187            functions.
188    
189            * Thuban/UI/classifier.py: Changes to use new Classification and Group
190            functions. Fix to create a tuple with a single value instead of
191            simply returning the value.
192    
193            * Thuban/UI/renderer.py: Use new Classification and Group functions.
194            Use common.py functions.
195    
196            * Thuban/UI/tree.py: Use common.py functions.
197            
198            * test/test_classification.py: Use new Classification and Group
199            classes.
200    
201    2003-02-24  Jonathan Coles   <[email protected]>
202    
203            * Thuban/common.py (Color2wxColour, wxColour2Color): Conversion
204            functions from Thuban color objects to wxWindow colour objects.
205    
206            * Thuban/Model/classification.py (Classification): Renamed
207            GetProperties() to GetClassData(). Used the new iterator
208            in TreeInfo().
209            (ClassIterator): Iterator implementation to iterate over the
210            ClassData objects in a classification object.
211    
212            * Thuban/Model/save.py (Saver.write_classificaton): Uses
213            the new iterator to save the classification information.
214    
215            * Thuban/UI/classifier.py (SelectPropertiesDialog): Support
216            for changing the stroke and fill colors and previewing the
217            changes.
218    
219            * Thuban/UI/mainwindow.py (MainWindow.OpenSession,
220            MainWindow.SaveSessionAs): Text string changes so the dialogs
221            have more meaningful titles.
222    
223            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Change
224            Classification method name from GetProperties to GetClassData.
225    
226            * Thuban/UI/view.py (MapCanvas.find_shape_at): Use method calls
227            instead of accessing now non-existent class variables.
228    
229    2003-02-24  Bernhard Herzog  <[email protected]>
230    
231            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Remove
232            unneeded Shape() call. Rendering is substantially faster without
233            it and it avoids some problems with broken shape files.
234    
235    2003-02-20  Frank Koormann   <[email protected]>
236    
237            Force minimal size of identify and label dialogs. The autosizing
238            looked too ugly.
239    
240            * Thuban/UI/controls.py (RecordListCtrl): Set minimal width for columns.
241            * Thuban/UI/labeldialog.py (LabelDialog.dialog_layout):
242            Set size of listctrl.
243            * Thuban/UI/identifyview.py (IdentifyView.__init__):
244            Set size of dialog.
245    
246    2003-02-19  Jonathan Coles   <[email protected]>
247    
248            * test/test_classification.py, test/test_layer.py,
249            test/test_load.py, test/test_map.py, test/test_session.py:
250            Updated the tests to use the new functions that are in the
251            respective classes.
252    
253            * Thuban/Model/classification.py (Classification):
254            Uses the new ClassData* classes. Modification messages are
255            passed up to the parent layer (if it exists).
256            (ClassData): New class to encapsulate the common data in each
257            classification property.
258            (ClassDataDefault): Represents the Default class. data.
259            (ClassDataPoint): Represents a single class. data point
260            (ClassDataRange): Represents a class. range
261            (ClassDataMap): Represents a class. map (unused).
262    
263            * Thuban/Model/color.py: Added Color.None to represent something
264            with no color. Color.Black represents the color black.
265            (NoColor): Helper class derived from Color to represent something
266            with no color.
267    
268            * Thuban/Model/layer.py (Layer): Removed references to fill, stroke,
269            stroke_width attributes. Made the 'classification' attribute private.
270            New methods for setting/getting the classification.
271    
272            * Thuban/Model/load.py (ProcessSession): Use new methods on Layer
273            to get the classifcation and use the new ClassData* classes to
274            hold the classification data. Use Str2Num to convert numbers
275            properly.
276    
277            * Thuban/Model/save.py (Saver): Use new Color and Classification
278            methods
279    
280            * Thuban/UI/classifier.py (ClassGrid): New class to represent a
281            custom grid.
282            (ClassTable): Support for editing Values and Labels and for
283            changing what type (point or range) of data is stored in each
284            property based on how the user enters the data.
285            (Classifier): Support for saving the new classifications and
286            launching the dialog to edit a property.
287            (SelectPropertiesDialog): New class for editing the visual
288            properties of a classification (stroke color, width, and fill color)
289            (ClassPreviewer): Took the Draw method from ClassRenderer and
290            made most of it into this new class. Intend to use this class in
291            the SelectPropertiesDialog for previewing changes.
292    
293            * Thuban/UI/renderer.py: Use new Color and Classification methods.
294    
295            * Thuban/UI/tree.py: Formatting changes.
296    
297            * Doc/thuban.dtd: Add 'label' element
298    
299            * Thuban/common.py: New. Contains common routines used throughout
300            the code.
301            (Str2Num): Takes a string and converts it to the "best" type of
302            number.
303    
304    2003-02-14  Bernhard Herzog  <[email protected]>
305    
306            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Make sure that the
307            dragging flag is always set to 0 even when the tool implementation
308            raises an exception
309    
310    2003-02-11  Bernhard Herzog  <[email protected]>
311    
312            * Thuban/UI/application.py (ThubanApplication.splash_screen): New
313            method to create a splash screen.
314            (ThubanApplication.ShowMainWindow): New. Show the main window.
315            Needed so the splash screen can display the mainwindow
316            (ThubanApplication.OnInit): Call the
317            new splash_screen method to determine whether the application
318            should display a splash screen. If it displays a splash screen do
319            not immediately show the main window.
320    
321    2003-02-11  Jonathan Coles  <[email protected]>
322    
323            * Thuban/Model/classification.py: Added import line to fix
324            feature conflicts between running on python2.2 and python2.1.
325    
326            * Thuban/UI/classifier.py (ClassTable): Didn't need to hang
327            onto the clinfo parameter, so removed the deepcopy().
328    
329    2003-02-10  Jonathan Coles  <[email protected]>
330    
331            * Thuban/Model/save.py (Saver.open_element, Saver.close_element):
332            Added element_open variable to track opening and closing of tags
333            so that tags that don't span more than one line are closed with
334            /> instead of </tag_name>. Use the GetDefault*() methods of
335            the Classification class.
336    
337            * Thuban/Model/classification.py (Classificaton): Added set and
338            get methods for the default data. The class also takes a layer
339            reference so that modification messages can be sent. Fixed the
340            methods to use the new ClassData class.
341            (ClassData): New class to encapsulate the classification data
342    
343            * Thuban/Model/layer.py (Layer): Remove the
344            Set[Fill|Stroke|StrokeWidth]() methods. Code should call the
345            SetDefault*() methods on the layer's classification object.
346            (Layer.__init__): Use the new SetDefault*() methods in the
347            Classification class.
348    
349            * Thuban/Model/load.py (ProcessSession): Use the new ClassData
350            object instead of a dictionary.
351    
352            * Thuban/UI/classifier.py (ClassRenderer): New class to
353            draw the classifications in the dialog box's table.
354            (Classifier): Modified to use the ClassRenderer class.
355    
356            * Thuban/UI/mainwindow.py (MainWindow): Use the SetDefault*()
357            methods of the Classification class.
358    
359            * Thuban/UI/renderer.py (MapRenderer): Use the Get*() methods
360            of the ClassData class.
361    
362            * test/test_classification.py, test/test_layer.py,
363            test/test_map.py, test/test_session.py: Fix the tests to work
364            with the above code changes.
365    
366    2003-02-03  Jonathan Coles  <[email protected]>
367    
368            * Thuban/Model/classification.py (Classification): Added getNull()
369            to return the NullData reference
370    
371            * Thuban/Model/layer.py (Layer.SetFill, Layer.SetStroke,
372            Layer.SetStrokeWidth): Modified these functions to change the
373            null data in the classification rather than keep these values
374            directly in the Layer class. Menu options to change these values
375            work again.
376    
377    2003-01-28  Jonathan Coles  <[email protected]>
378    
379            * Thuban/UI/classifier.py (Classifier): Resolved merging conflicts.
380            Fixed crashing problem on some systems. Dialog box shows
381            classification data.
382    
383            * Thuban/UI/tree.py (SessionTreeCtrl.add_items): Handle drawing
384            Colors in the tree view.
385    
386            * Thuban/Model/layer.py (Layer.TreeInfo): Added a call to build
387            the tree info for classifications. Commented out unnecessary lines.
388    
389            * Thuban/Model/classification.py (Classification.TreeInfo): New
390            function to add information about the classification into the
391            tree view.
392    
393    2003-01-27  Jan-Oliver Wagner <[email protected]>
394    
395            * Thuban/__init__.py (_): New.
396    
397            * Thuban/Model/classification.py, Thuban/Model/extension.py,
398            Thuban/Model/layer.py, Thuban/Model/load.py, Thuban/Model/map.py,
399            Thuban/Model/session.py, Thuban/UI/application.py,
400            Thuban/UI/classifier.py, Thuban/UI/context.py, Thuban/UI/controls.py,
401            Thuban/UI/identifyview.py, Thuban/UI/labeldialog.py,
402            Thuban/UI/mainwindow.py, Thuban/UI/menu.py, Thuban/UI/proj4dialog.py,
403            Thuban/UI/renderer.py, Thuban/UI/tree.py, Thuban/Lib/connector.py,
404            Thuban/Lib/fileutil.py: Replace user string by _() for i18n.
405    
406    2003-01-27  Jonathan Coles  <[email protected]>
407    
408            * Thuban/Model/layer.py: Classification initialization calls.
409    
410            * Thuban/Model/classification.py: Created class to encapsulate
411            a layer classification. Supports specific data points and
412            ranges.
413    
414            * Thuban/Model/load.py: Added support for loading classification
415            information.
416    
417            * Thuban/Model/save.py: Added support for saving classification
418            information.
419    
420            * Thuban/UI/classifier.py: Initial class for a dialog box for
421            specifying classification information.
422    
423            * Thuban/UI/mainwindows.py: Support for opening the classifier
424            dialog.
425    
426            * Thuban/UI/renderer.py: Support for drawing a layer with the
427            classification information.
428    
429            * Data/iceland_sample_class.thuban: iceland_sample with
430            classification data.
431    
432            * test/test_classification: Tests for the Classification class.
433    
434    2002-12-09  Bernhard Herzog  <[email protected]>
435    
436            * test/test_command.py: New. Tests for the command classes.
437    
438            * Thuban/UI/command.py (ToolCommand): New class for tool commands.
439            (Command.IsTool): New method to distinguish between command
440            switching tools and other commands.
441    
442            * Thuban/UI/view.py (MapCanvas.SelectTool): New method to select
443            the tool to avoid direct assignments to instance variables
444            (MapCanvas.ZoomInTool, MapCanvas.ZoomOutTool, MapCanvas.PanTool)
445            (MapCanvas.IdentifyTool, MapCanvas.LabelTool): Use SelectTool to
446            change the tool
447    
448            * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): If an
449            active tool's command turns insensitive, disable the tool.
450            (_tool_command): Use the new ToolCommand class
451    
452            * Examples/simple_extensions/simple_tool.py (simple_tool): Use the
453            SelectTool method to change the tool
454            (iconfile): Use the ToolCommand class
455    
456    2002-12-03  Bernhard Herzog  <[email protected]>
457    
458            * Thuban/UI/tree.py (SessionTreeCtrl.normalize_selection): Handle
459            the case of selected items that are not children of Layers or Maps
460            properly. Previously this bug would trigger an assertion in
461            wxWindows.
462    
463    2002-11-06  Frank Koormann  <[email protected]>
464    
465            * Thuban/UI/mainwindow.py: Altered the order of tools in the
466            toolbar: First now are all navigation tools (Zoom In/Out, Pan,
467            Full Extent).
468    
469    2002-10-23  Bernhard Herzog  <[email protected]>
470    
471            * setup.py (setup call): version now 0.1.3
472    
473            * MANIFEST.in: Add the files in test/
474    
475            * test/README: Add note about tests requiring the iceland data
476    
477            * Thuban/UI/mainwindow.py (MainWindow.About): Add 2002 to
478            copyright notice.
479    
480    2002-10-18  Bernhard Herzog  <[email protected]>
481    
482            * test/test_map.py
483            (TestMapWithContents.test_projected_bounding_box): Use an explicit
484            epsilon.
485    
486            * test/support.py (FloatComparisonMixin.assertFloatEqual)
487            (FloatComparisonMixin.assertFloatSeqEqual): give a more useful
488            message if the assertion fails and don't return the return value
489            of self.assert_. In assertFloatSeqEqual the return meant that not
490            all items of the sequence were compared.
491    
492    2002-09-20  Bernhard Herzog  <[email protected]>
493    
494            * test/test_fileutil.py: New. Test cases for Thuban.Lib.fileutil
495    
496            * Thuban/Lib/fileutil.py: Fixup some whitespace and typos
497    
498            * test/test_map.py (TestMapWithContents.test_tree_info): Create
499            the string with the bounding box on the fly because of platform
500            differences in the way %g is handled.
501    
502            * test/test_layer.py (TestLayer.test_empty_layer): Create an empty
503            DBFfile too because Thuban layers can't yet cope missing DBF
504            files.
505    
506    2002-09-20  Bernhard Herzog  <[email protected]>
507    
508            * test/test_menu.py: Use initthuban instead of
509            add_thuban_dir_to_path to initialize Thuban.
510    
511            * test/support.py (FloatComparisonMixin.assertFloatEqual): New.
512            Mixin class for float comparisons
513            (SubscriberMixin): New. Mixin class to test messages sent through
514            the Connector class
515    
516            * test/README: Fix a typo and add the -v flag to the command for
517            individual tests
518    
519            * test/test_session.py: New. Test cases for Thuban.Model.session
520    
521            * test/test_proj.py: New. Test cases for Thuban.Model.proj
522    
523            * test/test_map.py: New. Test cases for Thuban.Model.map
524    
525            * test/test_layer.py: New. Test cases for Thuban.Model.layer
526    
527            * test/test_label.py: New. Test cases for Thuban.Model.label
528    
529            * test/test_connector.py: New. Test cases for Thuban.Lib.connector
530    
531            * test/test_color.py: New. Test cases for Thuban.Model.color
532    
533            * test/test_base.py: New. Test cases for Thuban.Model.base
534    
535    2002-09-13  Bernhard Herzog  <[email protected]>
536    
537            * Thuban/Model/session.py (Session.forwarded_channels): Forward
538            the CHANGED channel too.
539    
540            * Thuban/Model/map.py (Map.forwarded_channels): Forward the
541            CHANGED channel too.
542            (Map.__init__): Call the Modifiable constructor as well.
543    
544            * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
545            event if the modified flag changes.
546            (Modifiable.changed): Tweak the doc-string.
547    
548            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
549            (MainWindow.set_position_text): Put the code that puts the text
550            with the mouse position into the status bar into the new method
551            set_position_text so that it can overwritten in derived classes.
552    
553    2002-09-12  Bernhard Herzog  <[email protected]>
554    
555            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
556            message box on the main window.
557    
558    2002-09-11  Bernhard Herzog  <[email protected]>
559    
560            * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
561            the 'E' because it's less likely to interfere with other menu
562            entries.
563            (MainWindow.build_menu): remove an incorrect comment.
564    
565    2002-09-10  Bernhard Herzog  <[email protected]>
566    
567            * Thuban/UI/mainwindow.py (MainWindow.Map): New.
568            (_tool_command): Add sensitive parameter
569            (_has_visible_map): Sensitivity callback to tools and other
570            commands that require a visible map. Use it in map_zoom_in_tool,
571            map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
572            and map_full_extent
573    
574    2002-09-06  Bernhard Herzog  <[email protected]>
575    
576            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
577            VIEW_POSITION
578    
579    2002-09-04  Frank Koormann  <[email protected]>
580    
581            * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
582    
583    2002-09-02  Bernhard Herzog  <[email protected]>
584    
585            * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
586            wxWindows already and our implementation doesn't work correctly
587            with wxGTK 2.3:
588            (MapCanvas.__init__): Remove the instance variable
589            (MapCanvas.OnPaint): Always call do_redraw when there's a map to
590            be drawin
591            (MapCanvas.OnIdle): Removed.
592    
593            * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
594            a parameter to determine the size of the rectangle.
595            (MapCanvas.find_shape_at): Create the box around the point on a
596            layer by layer basis and make the size depend on the shape type.
597            This solves a problem with the selection of point shapes at the
598            border of the layer's bounding box
599    
600    2002-08-30  Bernhard Herzog  <[email protected]>
601    
602            * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
603            for the sensitivity  of remove layer.
604            (_can_remove_layer): New. Sensitivity callback for remove layer
605            (Command layer_remove): Use _can_remove_layer
606    
607            * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
608            determine whether a given layer can be deleted.
609    
610            * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
611            (MapCanvas.do_redraw): Get rid of the unused update_region
612            instance variable
613    
614            * Thuban/UI/view.py: Add/update some doc-strings.
615    
616            * test/: new subdirectory with a bunch of unit tests.
617    
618            * test/README, test/test_table.py, test/test_save.py,
619            test/test_menu.py, test/test_load.py: Initial set of tests and
620            brief instructions on how to run them
621    
622    2002-08-29  Bernhard Herzog  <[email protected]>
623    
624            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
625            arcs with multiple parts.
626    
627            * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
628            Handle degenrate rectangles.
629    
630            * Thuban/Model/table.py: Make writing records work correctly:
631            (Table.__init__): Keep track of whether the DBF is open for
632            writing
633            (Table.write_record): Open the DBF file for writing when necessary
634    
635    2002-08-27  Bernhard Herzog  <[email protected]>
636    
637            * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
638            dbf files only for reading by default. Use a new writable dbf
639            object for writing.
640    
641    2002-08-26  Bernhard Herzog  <[email protected]>
642    
643            * Thuban/UI/mainwindow.py: Refactor the context creation:
644            (MainWindow.Context): New method to return a context
645            (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
646            new method
647    
648            * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
649            layer table specific code from TableGrid into LayerTableGrid
650            (TableFrame, LayerTableFrame): Split the layer table specific code
651            from TableFrame into LayerTableFrame
652            (LayerTableGrid.select_shape): Remove a debug print
653    
654            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
655            LayerTableFrame
656    
657    2002-08-23  Bernhard Herzog  <[email protected]>
658    
659            * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
660            absolute filename.
661    
662  2002-08-22  Bernhard Herzog  <[email protected]>  2002-08-22  Bernhard Herzog  <[email protected]>
663    
664            * Thuban/Model/table.py (Table.write_record): New method to write
665            records.
666            (Table.__init__): Open the DBF file for writing too.
667    
668            * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
669            into the underlying table.
670    
671            * extensions/shapelib/shapefil.h (DBFCommit),
672            extensions/shapelib/dbfopen.c (DBFCommit): New API function to
673            commit any changes made to the DBF file.
674    
675          * Thuban/UI/mainwindow.py (make_check_current_tool)          * Thuban/UI/mainwindow.py (make_check_current_tool)
676          (_tool_command): Put the code that generates the "checked"          (_tool_command): Put the code that generates the "checked"
677          callback into a separate function so that we can reuse it          callback into a separate function so that we can reuse it
# Line 29  Line 701 
701          * setup.py (ThubanInstall.run): Don't repr install_lib_orig          * setup.py (ThubanInstall.run): Don't repr install_lib_orig
702          because thubaninit_contents will do it for us.          because thubaninit_contents will do it for us.
703    
704  2002-08-16      Jan-Oliver Wagner <[email protected]>  2002-08-16  Jan-Oliver Wagner <[email protected]>
705    
706          * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if          * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
707          tree window already open          tree window already open
# Line 157  Line 829 
829          * 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
830          CHANGED channel to be informed of changes.          CHANGED channel to be informed of changes.
831          (SessionTreeCtrl.session_channels): Not needed any longer.          (SessionTreeCtrl.session_channels): Not needed any longer.
832          (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):          (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
833          Only have to (un)subscribe CHANGED          Only have to (un)subscribe CHANGED
834    
835          * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.          * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
# Line 218  Line 890 
890          * Thuban/Model/layer.py (Layer.TreeInfo),          * Thuban/Model/layer.py (Layer.TreeInfo),
891          Thuban/Model/extension.py (Extension.TreeInfo),          Thuban/Model/extension.py (Extension.TreeInfo),
892          Thuban/Model/map.py (Map.TreeInfo),          Thuban/Model/map.py (Map.TreeInfo),
893          Thuban/Model/session.py (Session.TreeInfo):          Thuban/Model/session.py (Session.TreeInfo):
894          Add TreeInfo methods to implement the new tree view update scheme          Add TreeInfo methods to implement the new tree view update scheme
895    
896  2002-07-16  Bernhard Herzog  <[email protected]>  2002-07-16  Bernhard Herzog  <[email protected]>
# Line 299  Line 971 
971          * setup.py: In the setup call, make sure that the library          * setup.py: In the setup call, make sure that the library
972          directories are under $prefix/lib not directly under $prefix.          directories are under $prefix/lib not directly under $prefix.
973    
974  2002-06-20      Jan-Oliver Wagner <[email protected]>  2002-06-20  Jan-Oliver Wagner <[email protected]>
975    
976          * Thuban/Model/extension.py: new module to handle extension objects.          * Thuban/Model/extension.py: new module to handle extension objects.
977          * Thuban/Model/messages.py: new messages for extensions.          * Thuban/Model/messages.py: new messages for extensions.
# Line 528  Line 1200 
1200          * Thuban/UI/messages.py (VIEW_POSITION): New message for the          * Thuban/UI/messages.py (VIEW_POSITION): New message for the
1201          position in the statusbar          position in the statusbar
1202    
1203  2002-04-26      Frank Koormann <[email protected]>  2002-04-26  Frank Koormann <[email protected]>
1204    
1205          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
1206    
1207  2002-04-24      Frank Koormann <[email protected]>  2002-04-24  Frank Koormann <[email protected]>
1208            
1209          * Resources/Bitmaps/identify.xpm: shadow added          * Resources/Bitmaps/identify.xpm: shadow added
1210    
1211          * Resources/Bitmaps/fullextent.xpm: new          * Resources/Bitmaps/fullextent.xpm: new
           
 2002-04-22      Jan-Oliver Wagner <[email protected]>  
1212    
1213          * Thuban/UI/tree.py (update_tree): added test for None on map bounding box  2002-04-22  Jan-Oliver Wagner <[email protected]>
1214    
1215            * Thuban/UI/tree.py (update_tree): added test for None on map bounding
1216            box
1217    
1218  2002-04-21      Jan-Oliver Wagner <[email protected]>  2002-04-21  Jan-Oliver Wagner <[email protected]>
1219    
1220          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
1221    
1222          * Thuban/UI/tree.py (update_tree): added added map extent          * Thuban/UI/tree.py (update_tree): added added map extent
1223    
1224          * Thuban/UI/mainwindow.py (_method_command): extended by parameter          * Thuban/UI/mainwindow.py (_method_command): extended by parameter
1225          icon; added map_full_extend as tool          icon; added map_full_extend as tool
1226    
1227  2002-04-19      Jan-Oliver Wagner <[email protected]>  2002-04-19  Jan-Oliver Wagner <[email protected]>
1228    
1229          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
1230          saving _new_ sessions          saving _new_ sessions
# Line 653  Line 1326 
1326    
1327          * setup.py: increase version number to 0.1          * setup.py: increase version number to 0.1
1328          (data_dist): New command class for data distribution          (data_dist): New command class for data distribution
           
1329    
1330  2001-09-14  Bernhard Herzog  <[email protected]>  2001-09-14  Bernhard Herzog  <[email protected]>
1331    
1332          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
1333          Handle the case of no layer (i.e. layer is None) properly.          Handle the case of no layer (i.e. layer is None) properly.
1334    
1335          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
1336          Set the initial selection of the combo boxes to reflect the          Set the initial selection of the combo boxes to reflect the
1337          projection we're starting with in a way that works on windows,          projection we're starting with in a way that works on windows,
1338          too.          too.
# Line 770  Line 1442 
1442          (MainWindow.identify_view_on_demand): Store the interactor in an          (MainWindow.identify_view_on_demand): Store the interactor in an
1443          instvar and use that reference instead of going through main.app          instvar and use that reference instead of going through main.app
1444    
1445          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
1446          * Thuban/UI/application.py (ThubanApplication.OnInit):          * Thuban/UI/application.py (ThubanApplication.OnInit):
1447          * Thuban/UI/main.py (main): Create the session tree view in main          * Thuban/UI/main.py (main): Create the session tree view in main
1448          with the new mainwindow method ShowSessionTree and not directly          with the new mainwindow method ShowSessionTree and not directly
1449          the application's OnInit method          the application's OnInit method
# Line 787  Line 1459 
1459          layer to the tableview dialog.          layer to the tableview dialog.
1460    
1461          * Thuban/UI/tableview.py: Add some doc-strings          * Thuban/UI/tableview.py: Add some doc-strings
1462          (TableGrid):          (TableGrid):
1463          (TableGrid.OnRangeSelect):          (TableGrid.OnRangeSelect):
1464          (TableGrid.OnSelectCell):          (TableGrid.OnSelectCell):
1465          (TableFrame.__init__):          (TableFrame.__init__):
# Line 854  Line 1526 
1526  2001-09-05  Bernhard Herzog  <[email protected]>  2001-09-05  Bernhard Herzog  <[email protected]>
1527    
1528          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.
1529            
1530          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument
1531          interactor to pass through to the MapCanvas          interactor to pass through to the MapCanvas
1532            
1533          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new
1534          argument to the MainWindow constructor to get rid of the ugly hack          argument to the MainWindow constructor to get rid of the ugly hack
1535          that made main.app available early just so that the mapcanvas          that made main.app available early just so that the mapcanvas
# Line 904  Line 1576 
1576          (ThubanInstall.run): Remove the leading install root from the          (ThubanInstall.run): Remove the leading install root from the
1577          script filename if an install root was specified and use the new          script filename if an install root was specified and use the new
1578          link_file method          link_file method
1579            
1580          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to
1581          the window when the first layer is added to the map.          the window when the first layer is added to the map.
1582    
# Line 941  Line 1613 
1613          (InnoIconItem): Helper class for bdist_inno          (InnoIconItem): Helper class for bdist_inno
1614          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
1615          this together with the appropriate parameters, to the setup call.          this together with the appropriate parameters, to the setup call.
1616            
1617          * setup.cfg (bdist_inno): added new section for the inno setup          * setup.cfg (bdist_inno): added new section for the inno setup
1618          installer          installer
1619    

Legend:
Removed from v.271  
changed lines
  Added in v.490

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26