/[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 586 by bh, Tue Apr 1 10:41:16 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]>  2003-04-01  Bernhard Herzog  <[email protected]>
489    
490          * test/test_map.py: Don't use from <module> import *          * test/test_map.py: Don't use from <module> import *

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26