/[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 447 by jonathan, Thu Feb 27 16:05:51 2003 UTC revision 626 by jonathan, Wed Apr 9 10:08:27 2003 UTC
# Line 1  Line 1 
1    2003-04-09  Jonathan Coles   <[email protected]>
2    
3            * Thuban/Model/classification.py (Classification.__deepcopy__):
4            Need to copy over field and fieldType attributes.
5    
6            * Thuban/Model/table.py (Table.field_range): New. Retrive the
7            maximum and minimum values over the entire table for a given
8            field.
9            (Table.GetUniqueValues): New. Retrieve all the unique values
10            in the table for a given field.
11    
12            * Thuban/UI/classgen.py: Renamed GenRangePanel to GenUniformPanel.
13            (GenUniquePanel): New. Controls to allow the user to select
14            which unique field values they would like in the classification.
15            (CustomRampPanel): Code that was in ClassGenDialog that allows
16            the user to select the properties for a custom ramp.
17            (ClassGenerator.GenUniformDistribution): Was called GenerateRanges.
18    
19            * Thuban/UI/classifier.py: Removed a lot of debugging code.
20            (Classifier._SetClassification): Callback method so that the
21            class generator can set the classification in the grid.
22            (ClassGroupPropertiesCtrl): New. Encapsulates the drawing and
23            editing of a group properties class into a wxWindows control.
24    
25            * Thuban/UI/dock.py: It was decided that if the user closes
26            a dockable window the window should simply hide itself. That
27            way if the user wants to show the dock again it appears in the
28            same place as it was when it was closed.
29            (DockableWindow.Destroy): Call renamed method OnDockDestroy().
30            (DockableWindow._OnButtonClose): Hide the window instead of
31            destroying it.
32            (DockableWindow._OnClose): Hide the window instead of
33            destroying it.
34    
35            * Thuban/UI/legend.py (LegendTree): Use a private method to
36            consistently set the font and style of the text. Fixes RTbug #1786.
37    
38            * Thuban/UI/mainwindow.py: Import just the Classifier class.
39    
40    2003-04-07  Bernhard Herzog  <[email protected]>
41    
42            * Thuban/UI/mainwindow.py (main_menu): Move the toggle_legend item
43            to the map module
44    
45    2003-04-07  Bernhard Herzog  <[email protected]>
46    
47            * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree): Removed in
48            favor of ToggleSessionTree
49            (MainWindow.ToggleSessionTree): New method to toggle visibility of
50            the session tree.
51            (MainWindow.SessionTreeShown): New method to return whether the
52            session tree is currently shown.
53            (MainWindow.ToggleLegend): New method to toggle visibility of the
54            legend
55            (MainWindow.ShowLegend): Implement in terms of ToggleLegend and
56            LegendShown
57            (MainWindow.LegendShown): New method to return whether the legend
58            is currently shown.
59            (_method_command): Add checked parameter so we can define check
60            menu items
61            (_has_tree_window_shown, _has_legend_shown): Use the appropriate
62            mainwindow methods.
63            (show_session_tree, show_legend commands): Removed.
64            (toggle_session_tree, toggle_legend commands): New commands to
65            toggle the visibility of the dialogs
66    
67    2003-04-07  Jonathan Coles   <[email protected]>
68    
69            * Thuban/UI/classgen.py: Fix Windows problem.
70    
71            * Thuban/UI/dock.py: Fix Windows problem.
72    
73            * Thuban/UI/mainwindow.py: Use False instead of false.
74            (MainWindow.ShowLegend): Remove unnecessary switch parameter.
75    
76    2003-04-07  Jonathan Coles   <[email protected]>
77    
78            Since we now say that the order of the groups in a classification
79            matters, it makes sense to be able to manipulate that order. Most
80            of the changes to Thuban/Model/classification.py are to that end.
81    
82            * Thuban/Model/classification.py (Classification.AppendGroup,
83            Classification.InsertGroup, Classification.ReplaceGroup,
84            Classification.RemoveGroup, Classification.GetGroup): Do as the
85            names imply.
86            (Classification.FindGroup): This was called GetGroup, but GetGroup
87            takes an index, while FindGroup takes a value.
88            (Classification.__deepcopy__): Copy all the groups, BUT NOT THE LAYER
89            REFERENCE. Currently there is a cyclic reference between the layer
90            and its classification. If the classification doesn't need to know
91            its owning layer we can change this, since it may make sense to be
92            able to use the same classification with different layers.
93    
94            * Thuban/Model/load.py: Use Classification.AppendGroup(), not AddGroup()
95    
96            * Thuban/UI/classgen.py: Use Classification.AppendGroup(),
97            not AddGroup()
98    
99            * Thuban/UI/classifier.py: Now that we can depend on the order in
100            a Classification and have methods to manipulate that order we don't
101            need to use our own data structures in the grid. We can simply make
102            the grid/table access the information they need from a copy of
103            the classification object.
104            (Classifier._OnCloseBtn): Event handler for when the user clicks
105            'Close'. This is needed so if the user applies changes and then
106            continues to change the table the user has the option of discarding
107            the most recent changes and keeping what they applied.
108    
109            * Thuban/UI/mainwindow.py: Put "Show Legend" and "Show Session Tree"
110            into the same group.
111    
112            * extensions/thuban/wxproj.cpp (check_version): If Thuban is compiled
113            with a really old version of proj, PJ_VERSION won't even be defined.
114            If it isn't defined then just compile so that the function always
115            returns Py_False.
116    
117            * test/test_classification.py: Fix tests to use the renamed methods.
118            Still need to write tests for the new methods.
119    
120    2003-04-04  Jonathan Coles   <[email protected]>
121    
122            * Thuban/UI/classifier.py (Classifier.__SelectField): Move the
123            call to SetSelection out of the method and before the call
124            to __SelectField in __init__. This prevents a recursion of events
125            when _OnFieldSelect is triggered by the user.
126    
127    2003-04-04  Jonathan Coles   <[email protected]>
128    
129            * Thuban/Model/classification.py: Rename Color.None to
130            Color.Transparent.
131            (ClassGroupProperties.SetLineColori, ClassGroupProperties.SetFill):
132            Don't bother copying the color, since Colors are immutable.
133    
134            * Thuban/Model/color.py, Thuban/Model/layer.py, Thuban/Model/load.py,
135            Thuban/UI/classifier.py, Thuban/UI/mainwindow.py,
136            Thuban/UI/renderer.py, Thuban/UI/view.py:
137            Rename Color.None to Color.Transparent.
138        
139            * test/test_classification.py, test/test_load.py: Rename Color.None
140            to Color.Transparent.
141    
142    2003-04-04  Jonathan Coles   <[email protected]>
143    
144            * Thuban/Model/classification.py: Fix assert calls.
145            (ClassGroupProperties.SetLineColor, ClassGroupProperties.SetFill):
146            Copy the color parameter rather than hold onto a reference.
147    
148            * Thuban/Model/color.py (Color.__copy__, Color.__deepcopy): Copy
149            the color object.
150            (NoColor.__copy__, NoColor.__deepcopy): Return 'self' so that we
151            are sure there exists only one refernce to Color.None in the system.
152            This allows us to use 'is' rather than the comparision functions.
153            
154            * Thuban/Model/save.py: Fix assert calls.
155            
156            * Thuban/UI/classifier.py: Fix assert calls.
157            (ClassGrid._OnCellDClick): Call up to the classifier to open the
158            dialog to edit the groups properties.
159            (ClassGrid._OnCellResize): Make sure that the scollbars are drawn
160            correctly if a cell is resized.
161            (ClassTable.SetClassification): New. Changes the classification
162            that is in the table.
163            (ClassTable.__SetRow): Allow groups to be prepended.
164            (Classifier): New code for opening the EditProperties and
165            GenerateRanges dialogs.
166            (SelectPropertiesDialog.__GetColor): Only set the color in the
167            color dialog if the current color is not None.
168            
169            * Thuban/UI/dock.py: Fix assert calls.
170            
171            * Thuban/UI/legend.py: Fix assert calls.
172            
173            * Thuban/UI/renderer.py: Fix assert calls.
174            
175            * Thuban/UI/classgen.py (ClassGenDialog): Dialog for generating
176            classifications.
177            (GenRangePanel): Panel specific to range generation.
178            (GenSingletonPanel): Panel specific to singleton generation.
179            (ClassGenerator): Class responsible for actually generating
180            the classification from the data gathered in the dialog box.
181            (PropertyRamp): Generates properties whose values range from
182            a starting property to an ending property.
183    
184    2003-04-03  Bernhard Herzog  <[email protected]>
185    
186            * test/support.py (print_garbage_information): New function that
187            prints information about still connected messages and memory
188            leaks.
189            (run_suite): Removed.
190            (run_tests): New function for use as a replacement of
191            unittest.main in the test_* files. This one calls
192            print_garbage_information at the end.
193    
194            * test/runtests.py (main): Use support.print_garbage_information
195    
196            * test/test_layer.py: Use support.run_tests instead of
197            unittest.main so we get memory leak information
198            (TestLayer.test_arc_layer, TestLayer.test_polygon_layer)
199            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
200            (TestLayerLegend.test_visibility): Call the layer's Destroy method
201            to fix a memory leak.
202    
203            * test/test_classification.py: Use support.run_tests instead of
204            unittest.main so we get memory leak information
205            (TestClassification.test_classification): Call the layer's Destroy
206            method to fix a memory leak.
207    
208    2003-04-02  Bernhard Herzog  <[email protected]>
209    
210            * extensions/thuban/wxproj.cpp (check_version, check_version_gtk):
211            Handle the reference counts of the return value and errors in
212            PyArg_ParseTuple correctly.
213    
214            * Thuban/UI/application.py (ThubanApplication.OpenSession): Make
215            sure the filename is absolute to avoid problems when saving the
216            session again
217    
218            * Thuban/Model/table.py: Remove unnecessary import. Fix a typo.
219    
220    2003-04-01  Jonathan Coles   <[email protected]>
221    
222            *  Thuban/UI/renderer.py (MapRenderer.draw_point_shape): Check
223            that there actually are points in the returned list of points
224            before trying to index into the list. The list may be empty if
225            the shape is a Null Shape.
226    
227    2003-04-01  Bernhard Herzog  <[email protected]>
228    
229            * test/test_map.py: Don't use from <module> import *
230    
231    2003-04-01  Jonathan Coles   <[email protected]>
232    
233            * Thuban/Model/session.py: Use LAYER_CHANGED instead of
234            LAYER_LEGEND_CHANGED
235    
236            * Thuban/UI/dock.py (DockableWindow._OnButtonClose): Call
237            self.Destroy() to close the window after yesterday's changes.
238    
239            * test/test_map.py, test/test_session.py: Fix messages that
240            are sent from maps and layers.
241    
242    2003-03-31  Jonathan Coles   <[email protected]>
243    
244            * Thuban/UI/classifier.py: Commented out some debugging statements.
245            (ClassDataPreviewer.Draw): Draw rectangles for polygon layers per
246            RTbug #1769.
247    
248            * Thuban/UI/dock.py (DockableWindow.UnDock): Restore size and
249            position (although position doesn't work yet under GTK).
250            (DockableWindow.Destroy): New. Called when the window must be
251            closed. Namely needed when the DockFrame closes and must close
252            its children.
253            (DockFrame): Listen for EVT_CLOSE and destroy all children.
254    
255            * Thuban/UI/legend.py (LegendPanel.Destroy): New. Cleans up
256            when then window is told to close.
257            (LegendTree._OnMsgLayerChanged): Fixes a seg fault bug. See
258            comment in source for more info.
259    
260            * Thuban/UI/main.py: Show the legend by default when Thuban starts.
261    
262            * Thuban/UI/mainwindow.py: Renamed OnClose to _OnClose for
263            symmetry with other such methods.
264            (MainWindow.ShowLegend): Show the legend docked by default.
265    
266    2003-03-28  Jonathan Coles   <[email protected]>
267    
268            * Thuban/UI/classifier.py: Support for highlighting a specific
269            group within the grid when the classification dialog is opened.
270            Also contains a lot of debugging printouts which will later
271            be removed.
272    
273            * Thuban/UI/dock.py: Complete rework on the dock code so that
274            that it is fairly removed from the rest of the Thuban application.
275            It is easy to add new docks which the rest of the program having
276            to be aware of them.
277    
278            * Thuban/UI/legend.py: Modifications to support selecting a
279            specific group in the classification dialog. Changed how layers
280            are drawn when the layer is visible/invisible.
281    
282            * Thuban/UI/mainwindow.py: Removed legend specific code and
283            replaced it with calls to the new dock code.
284    
285            * Thuban/UI/renderer.py (MapRenderer.__init__): Added assert
286            to check if scale > 0. Trying to track down a divide by zero.
287    
288    2003-03-26  Jonathan Coles   <[email protected]>
289    
290            * Thuban/UI/legend.py: Removed unnecessary LegendDialog class.
291            (LegendPanel): Removed _OnDock()/_OnUnDock() methods which are
292            now part of DockableWindow.
293            (LegendPanel.DoOnSelChanged): Select the current layer in the
294            map.
295            (LegendTree._OnSelChanged): Call LegendPanel.DoOnSelChanged()
296            with the selected layer and/or group.
297    
298    2003-03-26  Jonathan Coles   <[email protected]>
299    
300            This putback contains the code for dockable windows. There is
301            no support in wxWindows as of this date for windows that can
302            attach themselves to other windows.
303    
304            The current model contains a DockableWindow which has a parent
305            window for when it is detached and a dock window that it puts
306            its contents in when it is docked. The contents of a DockableWindow
307            must be a DockPanel. DockPanel itself derives from wxPanel.
308    
309            * Thuban/Model/layer.py (Layer.ClassChanged): Send a LAYER_CHANGED
310            message, not a LAYER_LEGEND_CHANGED message.
311    
312            * Thuban/Model/map.py (Map): Forward LAYER_CHANGED messages.
313    
314            * Thuban/UI/classifier.py (Classifier.__init__): Use wxADJUST_MINSIZE
315            as one of the style properties for the fieldTypeText item to
316            be sure that its size is correct when the text changes.
317    
318            * Thuban/UI/dock.py: New. Classes for the DockPanel and
319            DockableWindow.
320    
321            * Thuban/UI/legend.py: Added some more buttons and made the
322            LegendPanel a DockPanel.
323    
324            * Thuban/UI/mainwindow.py: Added sash windows to the main window
325            and supporting functions for manipulating the sashes.
326            (MainWindow.ShowLegend): Create a DockableWindow with the
327            LegendPanel as the contents.
328    
329            * Thuban/UI/messages.py: Added DOCKABLE_* messages
330    
331            * Thuban/UI/view.py (MapCanves.SetMap): Listen for LAYER_CHANGED,
332            not LAYER_LEGEND_CHANGED, messages.
333    
334    2003-03-25  Jonathan Coles   <[email protected]>
335    
336            * setup.py: Added custom script bdist_rpm_build_script so that
337            when the rpm is built the path to wx-config is correct.
338    
339            * setup.cfg: Added line saying to use the custom build script
340    
341    2003-03-20  Jonathan Coles   <[email protected]>
342    
343            Initial implementation of the Legend.
344    
345            * Thuban/UI/legend.py: New. Creates a window that shows the map's
346            Legend information and allows the user to add/modify classifications
347            and how the layers are drawn on the map.
348    
349            * setup.py: New command 'build_docs' which currently uses
350            happydoc to generate html documentation for Thuban.
351    
352            * Thuban/Model/classification.py (ClassGroup.GetDisplayText): New.
353            Returns a string which is appropriately describes the group.
354    
355            * Thuban/Model/layer.py (Layer.SetClassification): Generate a
356            LAYER_CHANGED event instead of a LAYER_LEGEND_CHANGED event.
357    
358            * Thuban/Model/map.py (Map): Rename messages and use new, more
359            specific, messages.
360    
361            * Thuban/Model/messages.py: New message to indicate that a layer's
362            data has changed (LAYER_CHANGED). New map messages to indicate
363            when layers have been added/removed/changed or if the stacking order
364            of the layers has changed.
365    
366            * Thuban/Model/session.py: Rename and use new messages.
367    
368            * Thuban/UI/classifier.py: Remember if any changes have actually
369            been applied so that if the dialog is cancelled without an application
370            of changes we don't have to set a new classification.
371            (ClassDataPreviewer): Pulled out the window specific code and put it
372            ClassDataPreviewWindow. ClassDataPreviewer can then be used to draw
373            symbols on any DC.
374            
375            * Thuban/UI/mainwindow.py: New code to open the legend.
376    
377            * Thuban/UI/view.py: Use new message names.
378    
379    2003-03-19  Jonathan Coles   <[email protected]>
380    
381            * Thuban/UI/main.py (verify_versions): New. Checks the versions
382            of Python, wxPython, and some other libraries.
383    
384            * extensions/thuban/wxproj.cpp (check_version): Checks the given
385            version against what wxproj was compiled with.
386            (check_version_gtk): If wxproj was compiled with gtk then check
387            the given version against the version of the gtk library
388            currently being used.
389    
390    2003-03-14  Bernhard Herzog  <[email protected]>
391    
392            * test/test_command.py: Run the tests when the module is run as a
393            script
394    
395    2003-03-14  Bernhard Herzog  <[email protected]>
396    
397            Implement selection of multiple selected shapes in the same layer:
398    
399            - Introduce a new class to hold the selection. This basically
400              replaces the interactor which was nothing more than the
401              selection anyway. A major difference is of course that the new
402              selection class supports multiple selected shapes in one layer
403            
404            - Move the object that represents the selection from the
405              application to the canvas. The canvas is a better place than the
406              application because the selection represents which shapes and
407              layer of the map displayed by the canvas are selected and
408              affects how the map is drawn.
409    
410            - Make the selection and its messages publicly available through
411              the mainwindow.
412    
413            - The non-modal dialogs do not get a reference to the interactor
414              anymore as they can simply refer to their parent, the
415              mainwindow, for the what the interactor had to offer.
416    
417            * Thuban/UI/selection.py: New module with a class to represent the
418            selection.
419    
420            * Thuban/UI/messages.py (SELECTED_TABLE, SELECTED_MAP): Remove
421            these unused messages
422    
423            * Thuban/UI/application.py (ThubanApplication.OnInit)
424            (ThubanApplication.OnExit, ThubanApplication.SetSession): The
425            interactor is gone now.
426            (ThubanApplication.CreateMainWindow): There is no interactor
427            anymore so we pass None as the interactor argument for now for
428            compatibility.
429    
430            * Thuban/UI/view.py (MapCanvas.delegated_messages)
431            (MapCanvas.Subscribe, MapCanvas.Unsubscribe): In Subscribe and
432            Unsubscribe, delegate messages according to the delegated_messages
433            class variable.
434            (MapCanvas.__getattr__, MapCanvas.delegated_methods): Get some
435            attributes from instance variables as described with the
436            delegated_methods class variable.
437            (MapCanvas.__init__): New instance variable selection holding the
438            current selection
439            (MapCanvas.do_redraw): Deal with multiple selected shapes. Simply
440            pass them on to the renderer
441            (MapCanvas.SetMap): Clear the selection when a different map is
442            selected.
443            (MapCanvas.shape_selected): Simple force a complete redraw. The
444            selection class now takes care of only issueing SHAPES_SELECTED
445            messages when the set of selected shapes actually does change.
446            (MapCanvas.SelectShapeAt): The selection is now managed in
447            self.selection
448    
449            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages)
450            (MainWindow.Subscribe, MainWindow.Unsubscribe): In Subscribe and
451            Unsubscribe, delegate messages according to the delegated_messages
452            class variable.
453            (MainWindow.delegated_methods, MainWindow.__getattr__): Get some
454            attributes from instance variables as described with the
455            delegated_methods class variable.
456            (MainWindow.__init__): The interactor as ivar is gone. The
457            parameter is still there for compatibility. The selection messages
458            now come from the canvas.
459            (MainWindow.current_layer, MainWindow.has_selected_layer):
460            Delegate to the the canvas.
461            (MainWindow.LayerShowTable, MainWindow.Classify)
462            (MainWindow.identify_view_on_demand): The dialogs don't need the
463            interactor parameter anymore.
464    
465            * Thuban/UI/tableview.py (TableFrame.__init__)
466            (LayerTableFrame.__init__, LayerTableFrame.OnClose)
467            (LayerTableFrame.row_selected): The interactor is gone. It's job
468            from the dialog's point of view is now done by the mainwindow,
469            i.e. the parent. Subscribe to SHAPES_SELECTED instead
470            of SELECTED_SHAPE
471            
472            * Thuban/UI/dialogs.py (NonModalDialog.__init__): The interactor
473            is gone. It's job from the dialog's point of view is now done by
474            the mainwindow, i.e. the parent.
475            
476            * Thuban/UI/classifier.py (Classifier.__init__): The interactor is
477            gone. It's job from the dialog's point of view is now done by the
478            mainwindow, i.e. the parent.
479    
480            * Thuban/UI/tree.py (SessionTreeView.__init__): The interactor is
481            gone. It's job from the dialog's point of view is now done by the
482            mainwindow, i.e. the parent.
483            (SessionTreeCtrl.__init__): New parameter mainwindow which is
484            stored as self.mainwindow. The mainwindow is need so that the tree
485            can still subscribe to the selection messages.
486            (SessionTreeCtrl.__init__, SessionTreeCtrl.unsubscribe_all)
487            (SessionTreeCtrl.update_tree, SessionTreeCtrl.OnSelChanged): The
488            selection is now accessible through the mainwindow. Subscribe to
489            SHAPES_SELECTED instead of SELECTED_SHAPE
490    
491            * Thuban/UI/identifyview.py (IdentifyView.__init__): Use the
492            SHAPES_SELECTED message now.
493            (IdentifyView.selected_shape): Now subscribed to SHAPES_SELECTED,
494            so deal with multiple shapes
495            (IdentifyView.__init__, IdentifyView.OnClose): The interactor is
496            gone. It's job from the dialog's point of view is now done by the
497            mainwindow, i.e. the parent.
498    
499            * Thuban/UI/controls.py (RecordListCtrl.fill_list): The second
500            parameter is now a list of shape ids.
501            (RecordTable.SetTable): The second parameter is now a list of
502            indices.
503    
504            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Rename the
505            selected_shape parameter and ivar to selected_shapes. It's now a
506            list of shape ids.
507            (MapRenderer.draw_label_layer): Deal with multiple selected
508            shapes. Rearrange the code a bit so that the setup and shape type
509            distinctions are only executed once.
510    
511            * test/test_selection.py: Test cases for the selection class
512    
513    2003-03-11  Jonathan Coles   <[email protected]>
514    
515            * Thuban/Model/load.py: Temporary fix so that the xml reader
516            doesn't cause Thuban to crash.
517    
518            * Thuban/Model/layer.py: Handle the cyclic references between
519            a layer and its classification better, and be sure to disconnect
520            the classification from the layer when the layer is destroyed
521            so that we don't maintain a cyclic reference that may not be
522            garbage collected.
523    
524            * Thuban/Model/classification.py: See comment for layer.py.
525    
526    2003-03-12  Jan-Oliver Wagner <[email protected]>
527    
528            * HOWTO-Release: New. Information on the steps for releasing
529            a new version of Thuban.
530    
531    2003-03-11  Jonathan Coles   <[email protected]>
532    
533            * Thuban/UI/classifier.py: Add normal border to SelectPropertiesDialog.
534            Use True instead of true.
535            (Classifier): Should have a single panel in which all the controls lie.
536    
537            * Thuban/UI/proj4dialog.py: Add normal border.
538    
539            * Thuban/UI/tree.py: Fixed problem with bad item images under Windows.
540    
541            * Thuban/UI/mainwindow.py: Use True instead of true.
542    
543            * setup.py: Update some definitions to use wxWindows2.4 files
544    
545            * Data/iceland_sample_class.thuban: Fixed file so that the
546            field_type information is present.
547    
548    2003-03-10  Jonathan Coles   <[email protected]>
549    
550            * Thuban/UI/classifier.py (Classifier.__init__): Make the
551            field type label grow so that when the text changes the
552            size is updated correctly. This may be a wxWindows bug.
553    
554    2003-03-10  Jonathan Coles   <[email protected]>
555    
556            * Thuban/UI/application.py: Changed SESSION_CHANGED to
557            SESSION_REPLACED.
558    
559            * Thuban/UI/classifier.py: Wrap text with _().
560            (ClassGrid.CreateTable): Set dimensions and size hints here,
561            instead of in Reset, so we only set the size once.
562    
563            * Thuban/UI/dialogs.py: Don't need Shutdown(); just use Close()!
564    
565            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
566            Call Close() instead of Shutdown().
567    
568            * Thuban/UI/messages.py: Changed SESSION_CHANGED to SESSION_REPLACED.
569    
570            * Thuban/UI/tree.py: Changed SESSION_CHANGED to SESSION_REPLACED.
571            Go back to using OnClose() instead of Shutdown().
572    
573    2003-03-10  Jonathan Coles   <[email protected]>
574    
575            * Thuban/UI/classifier.py (Classifier): SelectField() needed
576            to know the old field index as well as the new one.
577    
578    2003-03-10  Jonathan Coles   <[email protected]>
579    
580            * Thuban/UI/classifier.py (Classifier): Use __SelectField()
581            to correctly set the table information and call this from
582            __init__ and from _OnFieldSelect so that all the information
583            is up to date when the dialog opens and when a field is changed.
584    
585    2003-03-10  Jonathan Coles   <[email protected]>
586    
587            * Thuban/Model/classification.py (Classification): Don't use
588            layer's message function directly, use the ClassChanged() method
589            when then classification changes. SetField/SetFieldType/SetLayer
590            must keep the information about field name and field type in
591            sync when an owning layer is set or removed.
592    
593            * Thuban/Model/layer.py: Added ClassChanged() so that the
594            classification can tell the layer when its data has changed.
595            (Layer.SetClassification): Accepts None as an arguement to
596            remove the current classification and correctly handles
597            adding a new classification.
598    
599            * Thuban/Model/load.py: Comment out print statement
600    
601            * test/test_classification.py, test/test_save.py: New and
602            improved tests.
603    
604    2003-03-07  Jonathan Coles   <[email protected]>
605    
606            * Thuban/Model/classification.py: Implemented __copy__ and
607            __deepcopy__ for ClassGroup* and ClassGroupProperites so
608            they can easily be copied by the classifier dialog.
609            (ClassGroupProperites.__init__): The default line color should
610            have been Color.Black.
611    
612            * Thuban/UI/classifier.py: Setting and Getting table values now
613            uses a consistent set of functions.
614            (Classifier): Now non-modal. Has field type label which changes
615            as the field changes. Keep track of buttons in a list so that
616            we can enable/disable the buttons when the None field is selected.
617            (SelectPropertiesDialog): Add buttons to make the colors transparent.
618    
619            * Thuban/UI/dialogs.py (NonModalDialog.Shutdown): New method which
620            does what OnClose did, but can be called by the application to
621            close a window. Needed when a session changes, and we have to
622            close the classifier windows.
623    
624            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
625            Shuts down open dialogs. Used when a new session is created
626            or a session is opened.
627            (MainWindow.SaveSession): Should only call application.SaveSession()
628            if we don't call SaveSessionAs first.
629            (MainWindow.Classify): Allow different classifier dialogs for
630            different layers.
631    
632            * Thuban/UI/tree.py (SessionTreeView): Remove OnClose and let
633            the parent class handle it. Add Shutdown() to unsubscibe from
634            event notification and call the parent Shutdown(). This was
635            necessary so the application can close the tree window.
636    
637    2003-03-06  Jonathan Coles   <[email protected]>
638    
639            * Thuban/Model/classification.py: Minor documentation changes,
640            Addition of __eq__ and __ne__ methods.
641            (Classification.SetLayer): prevent recursion between this method
642            and Layer.SetClassification().
643    
644            * Thuban/Model/color.py: Addition of __eq__ and __ne__ methods.
645    
646            * Thuban/Model/layer.py (SetClassification): prevent recursion
647            between this method and Classification.SetLayer().
648    
649            * test/test_classification.py, test/test_load.py,
650            test/test_session.py: Fixed and added tests for the classification
651            classes.
652    
653    2003-03-06  Bernhard Herzog  <[email protected]>
654    
655            * Thuban/UI/classifier.py (ClassGrid.__init__)
656            (ClassGrid.CreateTable): Move the SetSelectionMode call to
657            CreateTable because otherwise it triggers an assertion in
658            wxPython/wxGTK 2.4.
659    
660    2003-03-05  Jonathan Coles   <[email protected]>
661    
662            * Thuban/common.py: Move FIELDTYPE constants back to table.py.
663    
664            * Thuban/Model/load.py: import FIELDTYPE constants from table.
665    
666            * Thuban/UI/classifier.py: import FIELDTYPE constants from table.
667    
668            * Thuban/Model/table.py: Put FIELDTYPE constants back.
669    
670    2003-03-05  Jonathan Coles   <[email protected]>
671    
672            * Thuban/UI/classifier.py: Added class documentation.
673            Fixed RTbug #1713, #1714. Added Move[Up|Down] buttons.
674            Store just the groups in the table and generate the other
675            column information when it is requested. Add "None" field
676            to pull-down to select no classification.
677    
678            * Thuban/common.py: Moved FIELDTYPE constants from table.py
679            (Str2Num): Only catch ValueError exceptions.
680    
681            * Thuban/Model/classification.py: Class documentation. Renaming
682            of methods with Stroke to Line. Groups are stored in a single
683            list with the default as the first element. Groups are searched
684            in the order they appear in the list.
685    
686            * Thuban/Model/color.py: Documentation.
687    
688            * Thuban/Model/layer.py (Layer): Add GetFieldType to retreive
689            the kind of data represented by a field.
690    
691            * Thuban/Model/load.py (ProcessSession): Use proper string
692            conversion function; fixes RTbug #1713.
693    
694            * Thuban/Model/save.py (Saver): Store field type information.
695    
696            * Thuban/Model/table.py: Put FIELDTYPE constants in common.py.
697            (Table): Add field_info_by_name() to retrieve field information
698            by specifying the field name, not the number.
699    
700            * Thuban/UI/mainwindow.py: Function name changes.
701    
702            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Only
703            get the layer classification once. Don't try to classify
704            values when the field is None: just use the default properties.
705    
706            * Thuban/UI/view.py: Function name changes.
707    
708            * Doc/thuban.dtd: Add field_type attribute to a classification.
709    
710    2003-03-04  Bernhard Herzog  <[email protected]>
711    
712            * Doc/thuban.dtd: Use correct syntax for optional attributes. Make
713            the fill and stroke layer attributes optional with suitable
714            default values. Add the stroke_width layer attribute. Use correct
715            syntax for empty elements. Make the attribute list for labels
716            refer to the label element.
717    
718    2003-03-04  Bernhard Herzog  <[email protected]>
719    
720            * setup.py (thuban_build_py.build): Add a comment about distutils in
721            Python 2.3 containing some of the functionality we implement in
722            setup.py ourselves.
723    
724            * Thuban/UI/classifier.py (ClassGrid.__init__): Set the table
725            before the selection mode. Doing it the other way round triggers
726            an assertion in wxWindows.
727    
728            * Thuban/Model/save.py (escape): Fix typo in doc-string
729    
730            * Thuban/Model/classification.py: Remove unnecessary wxPython
731            import
732    
733    2003-03-04  Jonathan Coles   <[email protected]>
734    
735            * Thuban/Model/classification.py (ClassGroupRange.GetProperties):
736            Parameter 'value' should default to None.
737    
738            * Thuban/UI/mainwindow.py: Use Layer.GetClassification() since
739            the class attribute __classification is now private.
740    
741            * Thuban/UI/classifier.py (ClassGrid): Moved OnCellDClick() from
742            Classifier to ClassGrid. Added support for removing selected rows,
743            which including code for keeping track of when cells are selected,
744            and deselected.
745            (ClassTable): Support for added/removing rows. Fixed a problem
746            with __ParseInput whereby it would not allow strings (only numbers)
747            to be entered.
748            (Classifier): Added button and supporting code for removing
749            selected rows.
750    
751  2003-02-27  Jonathan Coles   <[email protected]>  2003-02-27  Jonathan Coles   <[email protected]>
752    
753          * Thuban/common.py: Moved color conversion functions into          * Thuban/common.py: Moved color conversion functions into

Legend:
Removed from v.447  
changed lines
  Added in v.626

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26