/[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 275 by bh, Thu Aug 22 16:26:05 2002 UTC revision 557 by jonathan, Wed Mar 26 11:04:57 2003 UTC
# Line 1  Line 1 
1    2003-03-26  Jonathan Coles   <[email protected]>
2    
3            This putback contains the code for dockable windows. There is
4            no support in wxWindows as of this date for windows that can
5            attach themselves to other windows.
6    
7            The current model contains a DockableWindow which has a parent
8            window for when it is detached and a dock window that it puts
9            its contents in when it is docked. The contents of a DockableWindow
10            must be a DockPanel. DockPanel itself derives from wxPanel.
11    
12            * Thuban/Model/layer.py (Layer.ClassChanged): Send a LAYER_CHANGED
13            message, not a LAYER_LEGEND_CHANGED message.
14    
15            * Thuban/Model/map.py (Map): Forward LAYER_CHANGED messages.
16    
17            * Thuban/UI/classifier.py (Classifier.__init__): Use wxADJUST_MINSIZE
18            as one of the style properties for the fieldTypeText item to
19            be sure that its size is correct when the text changes.
20    
21            * Thuban/UI/dock.py: New. Classes for the DockPanel and
22            DockableWindow.
23    
24            * Thuban/UI/legend.py: Added some more buttons and made the
25            LegendPanel a DockPanel.
26    
27            * Thuban/UI/mainwindow.py: Added sash windows to the main window
28            and supporting functions for manipulating the sashes.
29            (MainWindow.ShowLegend): Create a DockableWindow with the
30            LegendPanel as the contents.
31    
32            * Thuban/UI/messages.py: Added DOCKABLE_* messages
33    
34            * Thuban/UI/view.py (MapCanves.SetMap): Listen for LAYER_CHANGED,
35            not LAYER_LEGEND_CHANGED, messages.
36    
37    2003-03-25  Jonathan Coles   <[email protected]>
38    
39            * setup.py: Added custom script bdist_rpm_build_script so that
40            when the rpm is built the path to wx-config is correct.
41    
42            * setup.cfg: Added line saying to use the custom build script
43    
44    2003-03-20  Jonathan Coles   <[email protected]>
45    
46            Initial implementation of the Legend.
47    
48            * Thuban/UI/legend.py: New. Creates a window that shows the map's
49            Legend information and allows the user to add/modify classifications
50            and how the layers are drawn on the map.
51    
52            * setup.py: New command 'build_docs' which currently uses
53            happydoc to generate html documentation for Thuban.
54    
55            * Thuban/Model/classification.py (ClassGroup.GetDisplayText): New.
56            Returns a string which is appropriately describes the group.
57    
58            * Thuban/Model/layer.py (Layer.SetClassification): Generate a
59            LAYER_CHANGED event instead of a LAYER_LEGEND_CHANGED event.
60    
61            * Thuban/Model/map.py (Map): Rename messages and use new, more
62            specific, messages.
63    
64            * Thuban/Model/messages.py: New message to indicate that a layer's
65            data has changed (LAYER_CHANGED). New map messages to indicate
66            when layers have been added/removed/changed or if the stacking order
67            of the layers has changed.
68    
69            * Thuban/Model/session.py: Rename and use new messages.
70    
71            * Thuban/UI/classifier.py: Remember if any changes have actually
72            been applied so that if the dialog is cancelled without an application
73            of changes we don't have to set a new classification.
74            (ClassDataPreviewer): Pulled out the window specific code and put it
75            ClassDataPreviewWindow. ClassDataPreviewer can then be used to draw
76            symbols on any DC.
77            
78            * Thuban/UI/mainwindow.py: New code to open the legend.
79    
80            * Thuban/UI/view.py: Use new message names.
81    
82    2003-03-19  Jonathan Coles   <[email protected]>
83    
84            * Thuban/UI/main.py (verify_versions): New. Checks the versions
85            of Python, wxPython, and some other libraries.
86    
87            * extensions/thuban/wxproj.cpp (check_version): Checks the given
88            version against what wxproj was compiled with.
89            (check_version_gtk): If wxproj was compiled with gtk then check
90            the given version against the version of the gtk library
91            currently being used.
92    
93    2003-03-14  Bernhard Herzog  <[email protected]>
94    
95            * test/test_command.py: Run the tests when the module is run as a
96            script
97    
98    2003-03-14  Bernhard Herzog  <[email protected]>
99    
100            Implement selection of multiple selected shapes in the same layer:
101    
102            - Introduce a new class to hold the selection. This basically
103              replaces the interactor which was nothing more than the
104              selection anyway. A major difference is of course that the new
105              selection class supports multiple selected shapes in one layer
106            
107            - Move the object that represents the selection from the
108              application to the canvas. The canvas is a better place than the
109              application because the selection represents which shapes and
110              layer of the map displayed by the canvas are selected and
111              affects how the map is drawn.
112    
113            - Make the selection and its messages publicly available through
114              the mainwindow.
115    
116            - The non-modal dialogs do not get a reference to the interactor
117              anymore as they can simply refer to their parent, the
118              mainwindow, for the what the interactor had to offer.
119    
120            * Thuban/UI/selection.py: New module with a class to represent the
121            selection.
122    
123            * Thuban/UI/messages.py (SELECTED_TABLE, SELECTED_MAP): Remove
124            these unused messages
125    
126            * Thuban/UI/application.py (ThubanApplication.OnInit)
127            (ThubanApplication.OnExit, ThubanApplication.SetSession): The
128            interactor is gone now.
129            (ThubanApplication.CreateMainWindow): There is no interactor
130            anymore so we pass None as the interactor argument for now for
131            compatibility.
132    
133            * Thuban/UI/view.py (MapCanvas.delegated_messages)
134            (MapCanvas.Subscribe, MapCanvas.Unsubscribe): In Subscribe and
135            Unsubscribe, delegate messages according to the delegated_messages
136            class variable.
137            (MapCanvas.__getattr__, MapCanvas.delegated_methods): Get some
138            attributes from instance variables as described with the
139            delegated_methods class variable.
140            (MapCanvas.__init__): New instance variable selection holding the
141            current selection
142            (MapCanvas.do_redraw): Deal with multiple selected shapes. Simply
143            pass them on to the renderer
144            (MapCanvas.SetMap): Clear the selection when a different map is
145            selected.
146            (MapCanvas.shape_selected): Simple force a complete redraw. The
147            selection class now takes care of only issueing SHAPES_SELECTED
148            messages when the set of selected shapes actually does change.
149            (MapCanvas.SelectShapeAt): The selection is now managed in
150            self.selection
151    
152            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages)
153            (MainWindow.Subscribe, MainWindow.Unsubscribe): In Subscribe and
154            Unsubscribe, delegate messages according to the delegated_messages
155            class variable.
156            (MainWindow.delegated_methods, MainWindow.__getattr__): Get some
157            attributes from instance variables as described with the
158            delegated_methods class variable.
159            (MainWindow.__init__): The interactor as ivar is gone. The
160            parameter is still there for compatibility. The selection messages
161            now come from the canvas.
162            (MainWindow.current_layer, MainWindow.has_selected_layer):
163            Delegate to the the canvas.
164            (MainWindow.LayerShowTable, MainWindow.Classify)
165            (MainWindow.identify_view_on_demand): The dialogs don't need the
166            interactor parameter anymore.
167    
168            * Thuban/UI/tableview.py (TableFrame.__init__)
169            (LayerTableFrame.__init__, LayerTableFrame.OnClose)
170            (LayerTableFrame.row_selected): The interactor is gone. It's job
171            from the dialog's point of view is now done by the mainwindow,
172            i.e. the parent. Subscribe to SHAPES_SELECTED instead
173            of SELECTED_SHAPE
174            
175            * Thuban/UI/dialogs.py (NonModalDialog.__init__): The interactor
176            is gone. It's job from the dialog's point of view is now done by
177            the mainwindow, i.e. the parent.
178            
179            * Thuban/UI/classifier.py (Classifier.__init__): The interactor is
180            gone. It's job from the dialog's point of view is now done by the
181            mainwindow, i.e. the parent.
182    
183            * Thuban/UI/tree.py (SessionTreeView.__init__): The interactor is
184            gone. It's job from the dialog's point of view is now done by the
185            mainwindow, i.e. the parent.
186            (SessionTreeCtrl.__init__): New parameter mainwindow which is
187            stored as self.mainwindow. The mainwindow is need so that the tree
188            can still subscribe to the selection messages.
189            (SessionTreeCtrl.__init__, SessionTreeCtrl.unsubscribe_all)
190            (SessionTreeCtrl.update_tree, SessionTreeCtrl.OnSelChanged): The
191            selection is now accessible through the mainwindow. Subscribe to
192            SHAPES_SELECTED instead of SELECTED_SHAPE
193    
194            * Thuban/UI/identifyview.py (IdentifyView.__init__): Use the
195            SHAPES_SELECTED message now.
196            (IdentifyView.selected_shape): Now subscribed to SHAPES_SELECTED,
197            so deal with multiple shapes
198            (IdentifyView.__init__, IdentifyView.OnClose): The interactor is
199            gone. It's job from the dialog's point of view is now done by the
200            mainwindow, i.e. the parent.
201    
202            * Thuban/UI/controls.py (RecordListCtrl.fill_list): The second
203            parameter is now a list of shape ids.
204            (RecordTable.SetTable): The second parameter is now a list of
205            indices.
206    
207            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Rename the
208            selected_shape parameter and ivar to selected_shapes. It's now a
209            list of shape ids.
210            (MapRenderer.draw_label_layer): Deal with multiple selected
211            shapes. Rearrange the code a bit so that the setup and shape type
212            distinctions are only executed once.
213    
214            * test/test_selection.py: Test cases for the selection class
215    
216    2003-03-11  Jonathan Coles   <[email protected]>
217    
218            * Thuban/Model/load.py: Temporary fix so that the xml reader
219            doesn't cause Thuban to crash.
220    
221            * Thuban/Model/layer.py: Handle the cyclic references between
222            a layer and its classification better, and be sure to disconnect
223            the classification from the layer when the layer is destroyed
224            so that we don't maintain a cyclic reference that may not be
225            garbage collected.
226    
227            * Thuban/Model/classification.py: See comment for layer.py.
228    
229    2003-03-12  Jan-Oliver Wagner <[email protected]>
230    
231            * HOWTO-Release: New. Information on the steps for releasing
232            a new version of Thuban.
233    
234    2003-03-11  Jonathan Coles   <[email protected]>
235    
236            * Thuban/UI/classifier.py: Add normal border to SelectPropertiesDialog.
237            Use True instead of true.
238            (Classifier): Should have a single panel in which all the controls lie.
239    
240            * Thuban/UI/proj4dialog.py: Add normal border.
241    
242            * Thuban/UI/tree.py: Fixed problem with bad item images under Windows.
243    
244            * Thuban/UI/mainwindow.py: Use True instead of true.
245    
246            * setup.py: Update some definitions to use wxWindows2.4 files
247    
248            * Data/iceland_sample_class.thuban: Fixed file so that the
249            field_type information is present.
250    
251    2003-03-10  Jonathan Coles   <[email protected]>
252    
253            * Thuban/UI/classifier.py (Classifier.__init__): Make the
254            field type label grow so that when the text changes the
255            size is updated correctly. This may be a wxWindows bug.
256    
257    2003-03-10  Jonathan Coles   <[email protected]>
258    
259            * Thuban/UI/application.py: Changed SESSION_CHANGED to
260            SESSION_REPLACED.
261    
262            * Thuban/UI/classifier.py: Wrap text with _().
263            (ClassGrid.CreateTable): Set dimensions and size hints here,
264            instead of in Reset, so we only set the size once.
265    
266            * Thuban/UI/dialogs.py: Don't need Shutdown(); just use Close()!
267    
268            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
269            Call Close() instead of Shutdown().
270    
271            * Thuban/UI/messages.py: Changed SESSION_CHANGED to SESSION_REPLACED.
272    
273            * Thuban/UI/tree.py: Changed SESSION_CHANGED to SESSION_REPLACED.
274            Go back to using OnClose() instead of Shutdown().
275    
276    2003-03-10  Jonathan Coles   <[email protected]>
277    
278            * Thuban/UI/classifier.py (Classifier): SelectField() needed
279            to know the old field index as well as the new one.
280    
281    2003-03-10  Jonathan Coles   <[email protected]>
282    
283            * Thuban/UI/classifier.py (Classifier): Use __SelectField()
284            to correctly set the table information and call this from
285            __init__ and from _OnFieldSelect so that all the information
286            is up to date when the dialog opens and when a field is changed.
287    
288    2003-03-10  Jonathan Coles   <[email protected]>
289    
290            * Thuban/Model/classification.py (Classification): Don't use
291            layer's message function directly, use the ClassChanged() method
292            when then classification changes. SetField/SetFieldType/SetLayer
293            must keep the information about field name and field type in
294            sync when an owning layer is set or removed.
295    
296            * Thuban/Model/layer.py: Added ClassChanged() so that the
297            classification can tell the layer when its data has changed.
298            (Layer.SetClassification): Accepts None as an arguement to
299            remove the current classification and correctly handles
300            adding a new classification.
301    
302            * Thuban/Model/load.py: Comment out print statement
303    
304            * test/test_classification.py, test/test_save.py: New and
305            improved tests.
306    
307    2003-03-07  Jonathan Coles   <[email protected]>
308    
309            * Thuban/Model/classification.py: Implemented __copy__ and
310            __deepcopy__ for ClassGroup* and ClassGroupProperites so
311            they can easily be copied by the classifier dialog.
312            (ClassGroupProperites.__init__): The default line color should
313            have been Color.Black.
314    
315            * Thuban/UI/classifier.py: Setting and Getting table values now
316            uses a consistent set of functions.
317            (Classifier): Now non-modal. Has field type label which changes
318            as the field changes. Keep track of buttons in a list so that
319            we can enable/disable the buttons when the None field is selected.
320            (SelectPropertiesDialog): Add buttons to make the colors transparent.
321    
322            * Thuban/UI/dialogs.py (NonModalDialog.Shutdown): New method which
323            does what OnClose did, but can be called by the application to
324            close a window. Needed when a session changes, and we have to
325            close the classifier windows.
326    
327            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
328            Shuts down open dialogs. Used when a new session is created
329            or a session is opened.
330            (MainWindow.SaveSession): Should only call application.SaveSession()
331            if we don't call SaveSessionAs first.
332            (MainWindow.Classify): Allow different classifier dialogs for
333            different layers.
334    
335            * Thuban/UI/tree.py (SessionTreeView): Remove OnClose and let
336            the parent class handle it. Add Shutdown() to unsubscibe from
337            event notification and call the parent Shutdown(). This was
338            necessary so the application can close the tree window.
339    
340    2003-03-06  Jonathan Coles   <[email protected]>
341    
342            * Thuban/Model/classification.py: Minor documentation changes,
343            Addition of __eq__ and __ne__ methods.
344            (Classification.SetLayer): prevent recursion between this method
345            and Layer.SetClassification().
346    
347            * Thuban/Model/color.py: Addition of __eq__ and __ne__ methods.
348    
349            * Thuban/Model/layer.py (SetClassification): prevent recursion
350            between this method and Classification.SetLayer().
351    
352            * test/test_classification.py, test/test_load.py,
353            test/test_session.py: Fixed and added tests for the classification
354            classes.
355    
356    2003-03-06  Bernhard Herzog  <[email protected]>
357    
358            * Thuban/UI/classifier.py (ClassGrid.__init__)
359            (ClassGrid.CreateTable): Move the SetSelectionMode call to
360            CreateTable because otherwise it triggers an assertion in
361            wxPython/wxGTK 2.4.
362    
363    2003-03-05  Jonathan Coles   <[email protected]>
364    
365            * Thuban/common.py: Move FIELDTYPE constants back to table.py.
366    
367            * Thuban/Model/load.py: import FIELDTYPE constants from table.
368    
369            * Thuban/UI/classifier.py: import FIELDTYPE constants from table.
370    
371            * Thuban/Model/table.py: Put FIELDTYPE constants back.
372    
373    2003-03-05  Jonathan Coles   <[email protected]>
374    
375            * Thuban/UI/classifier.py: Added class documentation.
376            Fixed RTbug #1713, #1714. Added Move[Up|Down] buttons.
377            Store just the groups in the table and generate the other
378            column information when it is requested. Add "None" field
379            to pull-down to select no classification.
380    
381            * Thuban/common.py: Moved FIELDTYPE constants from table.py
382            (Str2Num): Only catch ValueError exceptions.
383    
384            * Thuban/Model/classification.py: Class documentation. Renaming
385            of methods with Stroke to Line. Groups are stored in a single
386            list with the default as the first element. Groups are searched
387            in the order they appear in the list.
388    
389            * Thuban/Model/color.py: Documentation.
390    
391            * Thuban/Model/layer.py (Layer): Add GetFieldType to retreive
392            the kind of data represented by a field.
393    
394            * Thuban/Model/load.py (ProcessSession): Use proper string
395            conversion function; fixes RTbug #1713.
396    
397            * Thuban/Model/save.py (Saver): Store field type information.
398    
399            * Thuban/Model/table.py: Put FIELDTYPE constants in common.py.
400            (Table): Add field_info_by_name() to retrieve field information
401            by specifying the field name, not the number.
402    
403            * Thuban/UI/mainwindow.py: Function name changes.
404    
405            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Only
406            get the layer classification once. Don't try to classify
407            values when the field is None: just use the default properties.
408    
409            * Thuban/UI/view.py: Function name changes.
410    
411            * Doc/thuban.dtd: Add field_type attribute to a classification.
412    
413    2003-03-04  Bernhard Herzog  <[email protected]>
414    
415            * Doc/thuban.dtd: Use correct syntax for optional attributes. Make
416            the fill and stroke layer attributes optional with suitable
417            default values. Add the stroke_width layer attribute. Use correct
418            syntax for empty elements. Make the attribute list for labels
419            refer to the label element.
420    
421    2003-03-04  Bernhard Herzog  <[email protected]>
422    
423            * setup.py (thuban_build_py.build): Add a comment about distutils in
424            Python 2.3 containing some of the functionality we implement in
425            setup.py ourselves.
426    
427            * Thuban/UI/classifier.py (ClassGrid.__init__): Set the table
428            before the selection mode. Doing it the other way round triggers
429            an assertion in wxWindows.
430    
431            * Thuban/Model/save.py (escape): Fix typo in doc-string
432    
433            * Thuban/Model/classification.py: Remove unnecessary wxPython
434            import
435    
436    2003-03-04  Jonathan Coles   <[email protected]>
437    
438            * Thuban/Model/classification.py (ClassGroupRange.GetProperties):
439            Parameter 'value' should default to None.
440    
441            * Thuban/UI/mainwindow.py: Use Layer.GetClassification() since
442            the class attribute __classification is now private.
443    
444            * Thuban/UI/classifier.py (ClassGrid): Moved OnCellDClick() from
445            Classifier to ClassGrid. Added support for removing selected rows,
446            which including code for keeping track of when cells are selected,
447            and deselected.
448            (ClassTable): Support for added/removing rows. Fixed a problem
449            with __ParseInput whereby it would not allow strings (only numbers)
450            to be entered.
451            (Classifier): Added button and supporting code for removing
452            selected rows.
453    
454    2003-02-27  Jonathan Coles   <[email protected]>
455    
456            * Thuban/common.py: Moved color conversion functions into
457            Thuban/UI/common.py.
458            (Str2Num): Now converts the float (not the string) to a long/int
459            so that an exception isn't thrown.
460    
461            * Thuban/UI/common.py: Common functions used in several UI modules
462    
463            * Thuban/Model/classification.py: Changed the class hierarchy
464            so that a Classification consists of Groups which return
465            Properties when a value matches a Group.
466    
467            * Thuban/Model/layer.py: Fixed name resolution problem.
468    
469            * Thuban/Model/load.py: Use new Classification and Group functions.
470    
471            * Thuban/Model/save.py (Saver.write_attribs): Fixes a test case
472            failure.
473            (Saver.write_classification): Use new Classification and Group
474            functions.
475    
476            * Thuban/UI/classifier.py: Changes to use new Classification and Group
477            functions. Fix to create a tuple with a single value instead of
478            simply returning the value.
479    
480            * Thuban/UI/renderer.py: Use new Classification and Group functions.
481            Use common.py functions.
482    
483            * Thuban/UI/tree.py: Use common.py functions.
484            
485            * test/test_classification.py: Use new Classification and Group
486            classes.
487    
488    2003-02-24  Jonathan Coles   <[email protected]>
489    
490            * Thuban/common.py (Color2wxColour, wxColour2Color): Conversion
491            functions from Thuban color objects to wxWindow colour objects.
492    
493            * Thuban/Model/classification.py (Classification): Renamed
494            GetProperties() to GetClassData(). Used the new iterator
495            in TreeInfo().
496            (ClassIterator): Iterator implementation to iterate over the
497            ClassData objects in a classification object.
498    
499            * Thuban/Model/save.py (Saver.write_classificaton): Uses
500            the new iterator to save the classification information.
501    
502            * Thuban/UI/classifier.py (SelectPropertiesDialog): Support
503            for changing the stroke and fill colors and previewing the
504            changes.
505    
506            * Thuban/UI/mainwindow.py (MainWindow.OpenSession,
507            MainWindow.SaveSessionAs): Text string changes so the dialogs
508            have more meaningful titles.
509    
510            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Change
511            Classification method name from GetProperties to GetClassData.
512    
513            * Thuban/UI/view.py (MapCanvas.find_shape_at): Use method calls
514            instead of accessing now non-existent class variables.
515    
516    2003-02-24  Bernhard Herzog  <[email protected]>
517    
518            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Remove
519            unneeded Shape() call. Rendering is substantially faster without
520            it and it avoids some problems with broken shape files.
521    
522    2003-02-20  Frank Koormann   <[email protected]>
523    
524            Force minimal size of identify and label dialogs. The autosizing
525            looked too ugly.
526    
527            * Thuban/UI/controls.py (RecordListCtrl): Set minimal width for columns.
528            * Thuban/UI/labeldialog.py (LabelDialog.dialog_layout):
529            Set size of listctrl.
530            * Thuban/UI/identifyview.py (IdentifyView.__init__):
531            Set size of dialog.
532    
533    2003-02-19  Jonathan Coles   <[email protected]>
534    
535            * test/test_classification.py, test/test_layer.py,
536            test/test_load.py, test/test_map.py, test/test_session.py:
537            Updated the tests to use the new functions that are in the
538            respective classes.
539    
540            * Thuban/Model/classification.py (Classification):
541            Uses the new ClassData* classes. Modification messages are
542            passed up to the parent layer (if it exists).
543            (ClassData): New class to encapsulate the common data in each
544            classification property.
545            (ClassDataDefault): Represents the Default class. data.
546            (ClassDataPoint): Represents a single class. data point
547            (ClassDataRange): Represents a class. range
548            (ClassDataMap): Represents a class. map (unused).
549    
550            * Thuban/Model/color.py: Added Color.None to represent something
551            with no color. Color.Black represents the color black.
552            (NoColor): Helper class derived from Color to represent something
553            with no color.
554    
555            * Thuban/Model/layer.py (Layer): Removed references to fill, stroke,
556            stroke_width attributes. Made the 'classification' attribute private.
557            New methods for setting/getting the classification.
558    
559            * Thuban/Model/load.py (ProcessSession): Use new methods on Layer
560            to get the classifcation and use the new ClassData* classes to
561            hold the classification data. Use Str2Num to convert numbers
562            properly.
563    
564            * Thuban/Model/save.py (Saver): Use new Color and Classification
565            methods
566    
567            * Thuban/UI/classifier.py (ClassGrid): New class to represent a
568            custom grid.
569            (ClassTable): Support for editing Values and Labels and for
570            changing what type (point or range) of data is stored in each
571            property based on how the user enters the data.
572            (Classifier): Support for saving the new classifications and
573            launching the dialog to edit a property.
574            (SelectPropertiesDialog): New class for editing the visual
575            properties of a classification (stroke color, width, and fill color)
576            (ClassPreviewer): Took the Draw method from ClassRenderer and
577            made most of it into this new class. Intend to use this class in
578            the SelectPropertiesDialog for previewing changes.
579    
580            * Thuban/UI/renderer.py: Use new Color and Classification methods.
581    
582            * Thuban/UI/tree.py: Formatting changes.
583    
584            * Doc/thuban.dtd: Add 'label' element
585    
586            * Thuban/common.py: New. Contains common routines used throughout
587            the code.
588            (Str2Num): Takes a string and converts it to the "best" type of
589            number.
590    
591    2003-02-14  Bernhard Herzog  <[email protected]>
592    
593            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Make sure that the
594            dragging flag is always set to 0 even when the tool implementation
595            raises an exception
596    
597    2003-02-11  Bernhard Herzog  <[email protected]>
598    
599            * Thuban/UI/application.py (ThubanApplication.splash_screen): New
600            method to create a splash screen.
601            (ThubanApplication.ShowMainWindow): New. Show the main window.
602            Needed so the splash screen can display the mainwindow
603            (ThubanApplication.OnInit): Call the
604            new splash_screen method to determine whether the application
605            should display a splash screen. If it displays a splash screen do
606            not immediately show the main window.
607    
608    2003-02-11  Jonathan Coles  <[email protected]>
609    
610            * Thuban/Model/classification.py: Added import line to fix
611            feature conflicts between running on python2.2 and python2.1.
612    
613            * Thuban/UI/classifier.py (ClassTable): Didn't need to hang
614            onto the clinfo parameter, so removed the deepcopy().
615    
616    2003-02-10  Jonathan Coles  <[email protected]>
617    
618            * Thuban/Model/save.py (Saver.open_element, Saver.close_element):
619            Added element_open variable to track opening and closing of tags
620            so that tags that don't span more than one line are closed with
621            /> instead of </tag_name>. Use the GetDefault*() methods of
622            the Classification class.
623    
624            * Thuban/Model/classification.py (Classificaton): Added set and
625            get methods for the default data. The class also takes a layer
626            reference so that modification messages can be sent. Fixed the
627            methods to use the new ClassData class.
628            (ClassData): New class to encapsulate the classification data
629    
630            * Thuban/Model/layer.py (Layer): Remove the
631            Set[Fill|Stroke|StrokeWidth]() methods. Code should call the
632            SetDefault*() methods on the layer's classification object.
633            (Layer.__init__): Use the new SetDefault*() methods in the
634            Classification class.
635    
636            * Thuban/Model/load.py (ProcessSession): Use the new ClassData
637            object instead of a dictionary.
638    
639            * Thuban/UI/classifier.py (ClassRenderer): New class to
640            draw the classifications in the dialog box's table.
641            (Classifier): Modified to use the ClassRenderer class.
642    
643            * Thuban/UI/mainwindow.py (MainWindow): Use the SetDefault*()
644            methods of the Classification class.
645    
646            * Thuban/UI/renderer.py (MapRenderer): Use the Get*() methods
647            of the ClassData class.
648    
649            * test/test_classification.py, test/test_layer.py,
650            test/test_map.py, test/test_session.py: Fix the tests to work
651            with the above code changes.
652    
653    2003-02-03  Jonathan Coles  <[email protected]>
654    
655            * Thuban/Model/classification.py (Classification): Added getNull()
656            to return the NullData reference
657    
658            * Thuban/Model/layer.py (Layer.SetFill, Layer.SetStroke,
659            Layer.SetStrokeWidth): Modified these functions to change the
660            null data in the classification rather than keep these values
661            directly in the Layer class. Menu options to change these values
662            work again.
663    
664    2003-01-28  Jonathan Coles  <[email protected]>
665    
666            * Thuban/UI/classifier.py (Classifier): Resolved merging conflicts.
667            Fixed crashing problem on some systems. Dialog box shows
668            classification data.
669    
670            * Thuban/UI/tree.py (SessionTreeCtrl.add_items): Handle drawing
671            Colors in the tree view.
672    
673            * Thuban/Model/layer.py (Layer.TreeInfo): Added a call to build
674            the tree info for classifications. Commented out unnecessary lines.
675    
676            * Thuban/Model/classification.py (Classification.TreeInfo): New
677            function to add information about the classification into the
678            tree view.
679    
680    2003-01-27  Jan-Oliver Wagner <[email protected]>
681    
682            * Thuban/__init__.py (_): New.
683    
684            * Thuban/Model/classification.py, Thuban/Model/extension.py,
685            Thuban/Model/layer.py, Thuban/Model/load.py, Thuban/Model/map.py,
686            Thuban/Model/session.py, Thuban/UI/application.py,
687            Thuban/UI/classifier.py, Thuban/UI/context.py, Thuban/UI/controls.py,
688            Thuban/UI/identifyview.py, Thuban/UI/labeldialog.py,
689            Thuban/UI/mainwindow.py, Thuban/UI/menu.py, Thuban/UI/proj4dialog.py,
690            Thuban/UI/renderer.py, Thuban/UI/tree.py, Thuban/Lib/connector.py,
691            Thuban/Lib/fileutil.py: Replace user string by _() for i18n.
692    
693    2003-01-27  Jonathan Coles  <[email protected]>
694    
695            * Thuban/Model/layer.py: Classification initialization calls.
696    
697            * Thuban/Model/classification.py: Created class to encapsulate
698            a layer classification. Supports specific data points and
699            ranges.
700    
701            * Thuban/Model/load.py: Added support for loading classification
702            information.
703    
704            * Thuban/Model/save.py: Added support for saving classification
705            information.
706    
707            * Thuban/UI/classifier.py: Initial class for a dialog box for
708            specifying classification information.
709    
710            * Thuban/UI/mainwindows.py: Support for opening the classifier
711            dialog.
712    
713            * Thuban/UI/renderer.py: Support for drawing a layer with the
714            classification information.
715    
716            * Data/iceland_sample_class.thuban: iceland_sample with
717            classification data.
718    
719            * test/test_classification: Tests for the Classification class.
720    
721    2002-12-09  Bernhard Herzog  <[email protected]>
722    
723            * test/test_command.py: New. Tests for the command classes.
724    
725            * Thuban/UI/command.py (ToolCommand): New class for tool commands.
726            (Command.IsTool): New method to distinguish between command
727            switching tools and other commands.
728    
729            * Thuban/UI/view.py (MapCanvas.SelectTool): New method to select
730            the tool to avoid direct assignments to instance variables
731            (MapCanvas.ZoomInTool, MapCanvas.ZoomOutTool, MapCanvas.PanTool)
732            (MapCanvas.IdentifyTool, MapCanvas.LabelTool): Use SelectTool to
733            change the tool
734    
735            * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): If an
736            active tool's command turns insensitive, disable the tool.
737            (_tool_command): Use the new ToolCommand class
738    
739            * Examples/simple_extensions/simple_tool.py (simple_tool): Use the
740            SelectTool method to change the tool
741            (iconfile): Use the ToolCommand class
742    
743    2002-12-03  Bernhard Herzog  <[email protected]>
744    
745            * Thuban/UI/tree.py (SessionTreeCtrl.normalize_selection): Handle
746            the case of selected items that are not children of Layers or Maps
747            properly. Previously this bug would trigger an assertion in
748            wxWindows.
749    
750    2002-11-06  Frank Koormann  <[email protected]>
751    
752            * Thuban/UI/mainwindow.py: Altered the order of tools in the
753            toolbar: First now are all navigation tools (Zoom In/Out, Pan,
754            Full Extent).
755    
756    2002-10-23  Bernhard Herzog  <[email protected]>
757    
758            * setup.py (setup call): version now 0.1.3
759    
760            * MANIFEST.in: Add the files in test/
761    
762            * test/README: Add note about tests requiring the iceland data
763    
764            * Thuban/UI/mainwindow.py (MainWindow.About): Add 2002 to
765            copyright notice.
766    
767    2002-10-18  Bernhard Herzog  <[email protected]>
768    
769            * test/test_map.py
770            (TestMapWithContents.test_projected_bounding_box): Use an explicit
771            epsilon.
772    
773            * test/support.py (FloatComparisonMixin.assertFloatEqual)
774            (FloatComparisonMixin.assertFloatSeqEqual): give a more useful
775            message if the assertion fails and don't return the return value
776            of self.assert_. In assertFloatSeqEqual the return meant that not
777            all items of the sequence were compared.
778    
779    2002-09-20  Bernhard Herzog  <[email protected]>
780    
781            * test/test_fileutil.py: New. Test cases for Thuban.Lib.fileutil
782    
783            * Thuban/Lib/fileutil.py: Fixup some whitespace and typos
784    
785            * test/test_map.py (TestMapWithContents.test_tree_info): Create
786            the string with the bounding box on the fly because of platform
787            differences in the way %g is handled.
788    
789            * test/test_layer.py (TestLayer.test_empty_layer): Create an empty
790            DBFfile too because Thuban layers can't yet cope missing DBF
791            files.
792    
793    2002-09-20  Bernhard Herzog  <[email protected]>
794    
795            * test/test_menu.py: Use initthuban instead of
796            add_thuban_dir_to_path to initialize Thuban.
797    
798            * test/support.py (FloatComparisonMixin.assertFloatEqual): New.
799            Mixin class for float comparisons
800            (SubscriberMixin): New. Mixin class to test messages sent through
801            the Connector class
802    
803            * test/README: Fix a typo and add the -v flag to the command for
804            individual tests
805    
806            * test/test_session.py: New. Test cases for Thuban.Model.session
807    
808            * test/test_proj.py: New. Test cases for Thuban.Model.proj
809    
810            * test/test_map.py: New. Test cases for Thuban.Model.map
811    
812            * test/test_layer.py: New. Test cases for Thuban.Model.layer
813    
814            * test/test_label.py: New. Test cases for Thuban.Model.label
815    
816            * test/test_connector.py: New. Test cases for Thuban.Lib.connector
817    
818            * test/test_color.py: New. Test cases for Thuban.Model.color
819    
820            * test/test_base.py: New. Test cases for Thuban.Model.base
821    
822    2002-09-13  Bernhard Herzog  <[email protected]>
823    
824            * Thuban/Model/session.py (Session.forwarded_channels): Forward
825            the CHANGED channel too.
826    
827            * Thuban/Model/map.py (Map.forwarded_channels): Forward the
828            CHANGED channel too.
829            (Map.__init__): Call the Modifiable constructor as well.
830    
831            * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
832            event if the modified flag changes.
833            (Modifiable.changed): Tweak the doc-string.
834    
835            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
836            (MainWindow.set_position_text): Put the code that puts the text
837            with the mouse position into the status bar into the new method
838            set_position_text so that it can overwritten in derived classes.
839    
840    2002-09-12  Bernhard Herzog  <[email protected]>
841    
842            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
843            message box on the main window.
844    
845    2002-09-11  Bernhard Herzog  <[email protected]>
846    
847            * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
848            the 'E' because it's less likely to interfere with other menu
849            entries.
850            (MainWindow.build_menu): remove an incorrect comment.
851    
852    2002-09-10  Bernhard Herzog  <[email protected]>
853    
854            * Thuban/UI/mainwindow.py (MainWindow.Map): New.
855            (_tool_command): Add sensitive parameter
856            (_has_visible_map): Sensitivity callback to tools and other
857            commands that require a visible map. Use it in map_zoom_in_tool,
858            map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
859            and map_full_extent
860    
861    2002-09-06  Bernhard Herzog  <[email protected]>
862    
863            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
864            VIEW_POSITION
865    
866    2002-09-04  Frank Koormann  <[email protected]>
867    
868            * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
869    
870    2002-09-02  Bernhard Herzog  <[email protected]>
871    
872            * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
873            wxWindows already and our implementation doesn't work correctly
874            with wxGTK 2.3:
875            (MapCanvas.__init__): Remove the instance variable
876            (MapCanvas.OnPaint): Always call do_redraw when there's a map to
877            be drawin
878            (MapCanvas.OnIdle): Removed.
879    
880            * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
881            a parameter to determine the size of the rectangle.
882            (MapCanvas.find_shape_at): Create the box around the point on a
883            layer by layer basis and make the size depend on the shape type.
884            This solves a problem with the selection of point shapes at the
885            border of the layer's bounding box
886    
887    2002-08-30  Bernhard Herzog  <[email protected]>
888    
889            * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
890            for the sensitivity  of remove layer.
891            (_can_remove_layer): New. Sensitivity callback for remove layer
892            (Command layer_remove): Use _can_remove_layer
893    
894            * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
895            determine whether a given layer can be deleted.
896    
897            * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
898            (MapCanvas.do_redraw): Get rid of the unused update_region
899            instance variable
900    
901            * Thuban/UI/view.py: Add/update some doc-strings.
902    
903            * test/: new subdirectory with a bunch of unit tests.
904    
905            * test/README, test/test_table.py, test/test_save.py,
906            test/test_menu.py, test/test_load.py: Initial set of tests and
907            brief instructions on how to run them
908    
909    2002-08-29  Bernhard Herzog  <[email protected]>
910    
911            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
912            arcs with multiple parts.
913    
914            * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
915            Handle degenrate rectangles.
916    
917            * Thuban/Model/table.py: Make writing records work correctly:
918            (Table.__init__): Keep track of whether the DBF is open for
919            writing
920            (Table.write_record): Open the DBF file for writing when necessary
921    
922    2002-08-27  Bernhard Herzog  <[email protected]>
923    
924            * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
925            dbf files only for reading by default. Use a new writable dbf
926            object for writing.
927    
928    2002-08-26  Bernhard Herzog  <[email protected]>
929    
930            * Thuban/UI/mainwindow.py: Refactor the context creation:
931            (MainWindow.Context): New method to return a context
932            (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
933            new method
934    
935            * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
936            layer table specific code from TableGrid into LayerTableGrid
937            (TableFrame, LayerTableFrame): Split the layer table specific code
938            from TableFrame into LayerTableFrame
939            (LayerTableGrid.select_shape): Remove a debug print
940    
941            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
942            LayerTableFrame
943    
944    2002-08-23  Bernhard Herzog  <[email protected]>
945    
946            * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
947            absolute filename.
948    
949  2002-08-22  Bernhard Herzog  <[email protected]>  2002-08-22  Bernhard Herzog  <[email protected]>
950    
951          * Thuban/Model/table.py (Table.write_record): New method to write          * Thuban/Model/table.py (Table.write_record): New method to write
952          records.          records.
953          (Table.__init__): Open the DBF file for writing too.          (Table.__init__): Open the DBF file for writing too.
954    
955          * Thuban/UI/controls.py (RecordTable.SetValue): Write the value          * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
956          into the underlying table.          into the underlying table.
# Line 40  Line 988 
988          * setup.py (ThubanInstall.run): Don't repr install_lib_orig          * setup.py (ThubanInstall.run): Don't repr install_lib_orig
989          because thubaninit_contents will do it for us.          because thubaninit_contents will do it for us.
990    
991  2002-08-16      Jan-Oliver Wagner <[email protected]>  2002-08-16  Jan-Oliver Wagner <[email protected]>
992    
993          * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if          * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
994          tree window already open          tree window already open
# Line 168  Line 1116 
1116          * 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
1117          CHANGED channel to be informed of changes.          CHANGED channel to be informed of changes.
1118          (SessionTreeCtrl.session_channels): Not needed any longer.          (SessionTreeCtrl.session_channels): Not needed any longer.
1119          (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):          (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
1120          Only have to (un)subscribe CHANGED          Only have to (un)subscribe CHANGED
1121    
1122          * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.          * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
# Line 229  Line 1177 
1177          * Thuban/Model/layer.py (Layer.TreeInfo),          * Thuban/Model/layer.py (Layer.TreeInfo),
1178          Thuban/Model/extension.py (Extension.TreeInfo),          Thuban/Model/extension.py (Extension.TreeInfo),
1179          Thuban/Model/map.py (Map.TreeInfo),          Thuban/Model/map.py (Map.TreeInfo),
1180          Thuban/Model/session.py (Session.TreeInfo):          Thuban/Model/session.py (Session.TreeInfo):
1181          Add TreeInfo methods to implement the new tree view update scheme          Add TreeInfo methods to implement the new tree view update scheme
1182    
1183  2002-07-16  Bernhard Herzog  <[email protected]>  2002-07-16  Bernhard Herzog  <[email protected]>
# Line 310  Line 1258 
1258          * setup.py: In the setup call, make sure that the library          * setup.py: In the setup call, make sure that the library
1259          directories are under $prefix/lib not directly under $prefix.          directories are under $prefix/lib not directly under $prefix.
1260    
1261  2002-06-20      Jan-Oliver Wagner <[email protected]>  2002-06-20  Jan-Oliver Wagner <[email protected]>
1262    
1263          * Thuban/Model/extension.py: new module to handle extension objects.          * Thuban/Model/extension.py: new module to handle extension objects.
1264          * Thuban/Model/messages.py: new messages for extensions.          * Thuban/Model/messages.py: new messages for extensions.
# Line 539  Line 1487 
1487          * Thuban/UI/messages.py (VIEW_POSITION): New message for the          * Thuban/UI/messages.py (VIEW_POSITION): New message for the
1488          position in the statusbar          position in the statusbar
1489    
1490  2002-04-26      Frank Koormann <[email protected]>  2002-04-26  Frank Koormann <[email protected]>
1491    
1492          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
1493    
1494  2002-04-24      Frank Koormann <[email protected]>  2002-04-24  Frank Koormann <[email protected]>
1495            
1496          * Resources/Bitmaps/identify.xpm: shadow added          * Resources/Bitmaps/identify.xpm: shadow added
1497    
1498          * Resources/Bitmaps/fullextent.xpm: new          * Resources/Bitmaps/fullextent.xpm: new
           
 2002-04-22      Jan-Oliver Wagner <[email protected]>  
1499    
1500          * Thuban/UI/tree.py (update_tree): added test for None on map bounding box  2002-04-22  Jan-Oliver Wagner <[email protected]>
1501    
1502  2002-04-21      Jan-Oliver Wagner <[email protected]>          * Thuban/UI/tree.py (update_tree): added test for None on map bounding
1503            box
1504    
1505    2002-04-21  Jan-Oliver Wagner <[email protected]>
1506    
1507          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
1508    
1509          * Thuban/UI/tree.py (update_tree): added added map extent          * Thuban/UI/tree.py (update_tree): added added map extent
1510    
1511          * Thuban/UI/mainwindow.py (_method_command): extended by parameter          * Thuban/UI/mainwindow.py (_method_command): extended by parameter
1512          icon; added map_full_extend as tool          icon; added map_full_extend as tool
1513    
1514  2002-04-19      Jan-Oliver Wagner <[email protected]>  2002-04-19  Jan-Oliver Wagner <[email protected]>
1515    
1516          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
1517          saving _new_ sessions          saving _new_ sessions
# Line 664  Line 1613 
1613    
1614          * setup.py: increase version number to 0.1          * setup.py: increase version number to 0.1
1615          (data_dist): New command class for data distribution          (data_dist): New command class for data distribution
           
1616    
1617  2001-09-14  Bernhard Herzog  <[email protected]>  2001-09-14  Bernhard Herzog  <[email protected]>
1618    
1619          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
1620          Handle the case of no layer (i.e. layer is None) properly.          Handle the case of no layer (i.e. layer is None) properly.
1621    
1622          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
1623          Set the initial selection of the combo boxes to reflect the          Set the initial selection of the combo boxes to reflect the
1624          projection we're starting with in a way that works on windows,          projection we're starting with in a way that works on windows,
1625          too.          too.
# Line 781  Line 1729 
1729          (MainWindow.identify_view_on_demand): Store the interactor in an          (MainWindow.identify_view_on_demand): Store the interactor in an
1730          instvar and use that reference instead of going through main.app          instvar and use that reference instead of going through main.app
1731    
1732          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
1733          * Thuban/UI/application.py (ThubanApplication.OnInit):          * Thuban/UI/application.py (ThubanApplication.OnInit):
1734          * Thuban/UI/main.py (main): Create the session tree view in main          * Thuban/UI/main.py (main): Create the session tree view in main
1735          with the new mainwindow method ShowSessionTree and not directly          with the new mainwindow method ShowSessionTree and not directly
1736          the application's OnInit method          the application's OnInit method
# Line 798  Line 1746 
1746          layer to the tableview dialog.          layer to the tableview dialog.
1747    
1748          * Thuban/UI/tableview.py: Add some doc-strings          * Thuban/UI/tableview.py: Add some doc-strings
1749          (TableGrid):          (TableGrid):
1750          (TableGrid.OnRangeSelect):          (TableGrid.OnRangeSelect):
1751          (TableGrid.OnSelectCell):          (TableGrid.OnSelectCell):
1752          (TableFrame.__init__):          (TableFrame.__init__):
# Line 865  Line 1813 
1813  2001-09-05  Bernhard Herzog  <[email protected]>  2001-09-05  Bernhard Herzog  <[email protected]>
1814    
1815          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.
1816            
1817          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument
1818          interactor to pass through to the MapCanvas          interactor to pass through to the MapCanvas
1819            
1820          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new
1821          argument to the MainWindow constructor to get rid of the ugly hack          argument to the MainWindow constructor to get rid of the ugly hack
1822          that made main.app available early just so that the mapcanvas          that made main.app available early just so that the mapcanvas
# Line 915  Line 1863 
1863          (ThubanInstall.run): Remove the leading install root from the          (ThubanInstall.run): Remove the leading install root from the
1864          script filename if an install root was specified and use the new          script filename if an install root was specified and use the new
1865          link_file method          link_file method
1866            
1867          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to
1868          the window when the first layer is added to the map.          the window when the first layer is added to the map.
1869    
# Line 952  Line 1900 
1900          (InnoIconItem): Helper class for bdist_inno          (InnoIconItem): Helper class for bdist_inno
1901          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
1902          this together with the appropriate parameters, to the setup call.          this together with the appropriate parameters, to the setup call.
1903            
1904          * setup.cfg (bdist_inno): added new section for the inno setup          * setup.cfg (bdist_inno): added new section for the inno setup
1905          installer          installer
1906    

Legend:
Removed from v.275  
changed lines
  Added in v.557

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26