/[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 380 by jonathan, Tue Jan 28 12:55:47 2003 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]>  2003-01-28  Jonathan Coles  <[email protected]>
665    
666          * Thuban/UI/classifier.py (Classifier): resolved merging conflicts.          * Thuban/UI/classifier.py (Classifier): Resolved merging conflicts.
667          Fixed crashing problem on some systems. Dialog box shows          Fixed crashing problem on some systems. Dialog box shows
668          classification data.          classification data.
669    
670  2003-01-27      Jan-Oliver Wagner <[email protected]>          * 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          * Thuban/__init__.py (_): New.  2003-01-27  Jan-Oliver Wagner <[email protected]>
681    
682            * Thuban/__init__.py (_): New.
683    
684          * Thuban/Model/classification.py, Thuban/Model/extension.py,          * Thuban/Model/classification.py, Thuban/Model/extension.py,
685          Thuban/Model/layer.py, Thuban/Model/load.py, Thuban/Model/map.py,          Thuban/Model/layer.py, Thuban/Model/load.py, Thuban/Model/map.py,
686          Thuban/Model/session.py, Thuban/UI/application.py, Thuban/UI/classifier.py,          Thuban/Model/session.py, Thuban/UI/application.py,
687          Thuban/UI/context.py, Thuban/UI/controls.py, Thuban/UI/identifyview.py,          Thuban/UI/classifier.py, Thuban/UI/context.py, Thuban/UI/controls.py,
688          Thuban/UI/labeldialog.py, Thuban/UI/mainwindow.py, Thuban/UI/menu.py,          Thuban/UI/identifyview.py, Thuban/UI/labeldialog.py,
689          Thuban/UI/proj4dialog.py, Thuban/UI/renderer.py, Thuban/UI/tree.py,          Thuban/UI/mainwindow.py, Thuban/UI/menu.py, Thuban/UI/proj4dialog.py,
690          Thuban/Lib/connector.py, Thuban/Lib/fileutil.py:          Thuban/UI/renderer.py, Thuban/UI/tree.py, Thuban/Lib/connector.py,
691          Replace user string by _() for i18n.          Thuban/Lib/fileutil.py: Replace user string by _() for i18n.
692    
693  2003-01-27  Jonathan Coles  <[email protected]>  2003-01-27  Jonathan Coles  <[email protected]>
694    
695    * Thuban/Model/layer.py: Classification initialization calls.          * Thuban/Model/layer.py: Classification initialization calls.
696    
697    * Thuban/Model/classification.py: Created class to encapsulate          * Thuban/Model/classification.py: Created class to encapsulate
698    a layer classification. Supports specific data points and          a layer classification. Supports specific data points and
699    ranges.          ranges.
700    
701    * Thuban/Model/load.py: Added support for loading classification          * Thuban/Model/load.py: Added support for loading classification
702    information.          information.
703    
704    * Thuban/Model/save.py: Added support for saving classification          * Thuban/Model/save.py: Added support for saving classification
705    information.          information.
706    
707    * Thuban/UI/classifier.py: Initial class for a dialog box for          * Thuban/UI/classifier.py: Initial class for a dialog box for
708    specifying classification information.          specifying classification information.
709    
710    * Thuban/UI/mainwindows.py: Support for opening the classifier          * Thuban/UI/mainwindows.py: Support for opening the classifier
711    dialog.          dialog.
712    
713    * Thuban/UI/renderer.py: Support for drawing a layer with the          * Thuban/UI/renderer.py: Support for drawing a layer with the
714    classification information.          classification information.
715    
716    * Data/iceland_sample_class.thuban: iceland_sample with          * Data/iceland_sample_class.thuban: iceland_sample with
717    classification data.          classification data.
718    
719    * test/test_classification: Tests for the Classification class.          * test/test_classification: Tests for the Classification class.
720    
721  2002-12-09  Bernhard Herzog  <[email protected]>  2002-12-09  Bernhard Herzog  <[email protected]>
722    
# Line 79  Line 752 
752          * Thuban/UI/mainwindow.py: Altered the order of tools in the          * Thuban/UI/mainwindow.py: Altered the order of tools in the
753          toolbar: First now are all navigation tools (Zoom In/Out, Pan,          toolbar: First now are all navigation tools (Zoom In/Out, Pan,
754          Full Extent).          Full Extent).
755        
756  2002-10-23  Bernhard Herzog  <[email protected]>  2002-10-23  Bernhard Herzog  <[email protected]>
757    
758          * setup.py (setup call): version now 0.1.3          * setup.py (setup call): version now 0.1.3
# Line 190  Line 863 
863          * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe          * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
864          VIEW_POSITION          VIEW_POSITION
865    
866  2002-09-04  Frank Koormann   <[email protected]>  2002-09-04  Frank Koormann  <[email protected]>
867    
868          * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")          * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
869    
# Line 277  Line 950 
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 315  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 443  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 504  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 585  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 814  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            * 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]>  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 939  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 1056  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 1073  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 1140  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 1190  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 1227  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.380  
changed lines
  Added in v.557

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26