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

Legend:
Removed from v.505  
changed lines
  Added in v.693

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26