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

Legend:
Removed from v.483  
changed lines
  Added in v.673

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26