/[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 587 by jonathan, Tue Apr 1 15:57:28 2003 UTC revision 700 by bh, Thu Apr 17 15:20:25 2003 UTC
# Line 1  Line 1 
1    2003-04-17  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/UI/application.py (ThubanApplication.MainLoop): Removed.
4            In wxPython 2.4 there's no need to extend MainLoop anymore since
5            wxPython itself makes sure OnExit is called.
6    
7    2003-04-16  Jonathan Coles   <[email protected]>
8    
9            Initial putback of projection management code. Includes new
10            classes to read and write projection files. The current load
11            and save classes were abstracted a bit so they could be reused.
12            The Projection class was extended to provide new methods and
13            have a name.
14    
15            * Thuban/Model/load.py (XMLProcessor): New. Contains all the
16            general XML reading methods that were part of ProcessSession.
17    
18            * Thuban/Model/proj.py (Projection.__init__): Accepts an optional
19            name.
20            (ProjFile): New. Represents a file that contains projection
21            information.
22    
23            * Thuban/Model/resource.py: New. Contains general utilities
24            for read and writing projection files.
25    
26            * Thuban/Model/save.py (XMLSaver): New. Contains all the
27            general XML writing methods that were part of SessionSaver.
28            (SessionSaver): Renamed from Saver.
29    
30            * test/test_proj.py: New test cases for the projection
31            file read and write functions.
32    
33    2003-04-16  Jonathan Coles   <[email protected]>
34    
35            * Thuban/Model/classification.py: Use repr() around values
36            in the ClassGroup*.__repr__() methods so it is clearer when
37            a value is a string and when it is a number.
38    
39            * test/test_load.py: Rework the classification test to test
40            that we can load old files.
41            (testLabels): Test a file where the groups have labels.
42    
43    2003-04-16  Bernhard Herzog  <[email protected]>
44    
45            Safer implementation of the performance enhancements of the
46            low-level renderer:
47            
48            * extensions/thuban/wxproj.cpp (extract_projection)
49            (extract_pointer): Rename extract_projection to extract_pointer
50            and redefine its purpose to return the pointer stored in a CObject
51            returned by the object's cobject method. Update all callers.
52            (s_draw_info, free_draw_info, draw_polygon_init): Implement the
53            handling of these low-level parameters so that each s_draw_info
54            instance is handled as a CObject at python level that also
55            contains real references to the actual python objects which
56            contain the values in the struct. Add free_draw_info as the
57            destructor.
58            (draw_polygon_shape): Add the py_draw_info parameter which must a
59            cobject containing an s_draw_info pointer.
60    
61            * Thuban/UI/renderer.py (MapRenderer.polygon_render_param): New
62            method to instantiat the low-level render parameter
63            (MapRenderer.draw_shape_layer): Use the new method. Remove some
64            commented out code.
65            (MapRenderer.draw_polygon_shape): Make the first parameter not the
66            layer but the low-level render parameter
67            (ScreenRenderer.draw_shape_layer): Use the low-level render
68            parameter.
69    
70    2003-04-15  Jonathan Coles   <[email protected]>
71    
72            * Thuban/Model/classification.py: Implemented __repr__ for
73            the ClassGroup* classes to make debugging a bit easier.
74            (ClassGroup.SetLabel): Check that the string is an instance
75            of StringTypes not StringType. Accounts for Unicode strings.
76    
77            * Thuban/Model/color.py: Implemented __repr__ to make
78            debugging a bit easier.
79    
80            * Thuban/Model/save.py (Saver.write_classification): Need to
81            save the group label.
82    
83            * test/test_load.py (testClassification): New. Loads the
84            iceland_sample_test.thuban file and checks if it was loaded
85            correctly.
86    
87    2003-04-15  Jonathan Coles   <[email protected]>
88    
89            * extensions/thuban/wxproj.cpp (draw_polygon_init): New. Used
90            to improve rendering performance by initializing the variables
91            that are not change each time draw_polygon_shape() is called.
92            The values are stored in a global struct draw_info.
93            (draw_polygon_shape): Removed initialization code that is
94            now in draw_polygon_init().
95    
96            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Make
97            drawing initialization call to draw_polygon_init()
98            (MapRenderer.draw_polygon_shape): Use new signature of
99            draw_polygon_shape.
100    
101            * Thuban/UI/classgen.py (GenUniformPanel): Fix spin control
102            weirdness by setting the range to (1, maxint).
103    
104            * Thuban/Model/classification.py (ClassGroupProperties): Make
105            instance variables private and optimize comparison operator
106            by first checking if the color references are the same.
107            (ClassGroupSingleton): Make instance variables private.
108            (ClassGroupRange): Make instance variables private.
109    
110            * HOWTO-Release: Filled in missing steps for releasing packages.
111    
112    2003-04-15  Bernhard Herzog  <[email protected]>
113    
114            First stab at internationalized messages:
115    
116            * Thuban/__init__.py (_): Implement the translation function for
117            real using the python gettext module.
118    
119            * Thuban/UI/classifier.py (ClassTable.GetRowLabelValue): Don't
120            translate empty strings.
121    
122            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
123            Add a missing space to a warning message
124    
125            * po/README: New. Notes about the management of the translation
126            files.
127    
128            * po/Makefile: New. Makefile to help manage the translation files.
129    
130            * po/es.po: New. Spanish translation by Daniel Calvelo Aros
131    
132            * MANIFEST.in: Include the *.mo files in Resources/Locale and the
133            translations and support files in po/
134    
135            * setup.py (data_files): Add the *.mo files to the data_files too
136    
137            * README: Add note about the translations when building from CVS
138    
139    2003-04-14  Jonathan Coles   <[email protected]>
140    
141            * Thuban/UI/dock.py: Fixes some window resizing problems most
142            noticable under windows. Always assume the button bitmaps will
143            be there. Code clean up.
144            (DockabelWindow.Dock, DockableWindow.UnDock): Force all the
145            images for the dock/undock button to the same images.
146            Work around for RTbug #1801.
147    
148            * Thuban/UI/legend.py (LegendPanel.__init__): The toolbar should
149            be allowed to grow within the sizer. Fixes a bug under Windows
150            where the toolbar wasn't being drawn.
151    
152    2003-04-14  Frank Koormann   <[email protected]>
153    
154            * Resources/Bitmaps/dock_12.xpm, Resources/Bitmaps/undock_12.xpm:
155            Updated design to try to make the button functionality more
156            transparent.
157    
158    2003-04-14  Jonathan Coles   <[email protected]>
159    
160            * Thuban/UI/legend.py (LegendPanel.__init__): Call Create() to
161            finalize the intialization of the panel.
162    
163            * Thuban/UI/dock.py (DockPanel.Create): New. Finalizes the
164            creation of the panel. Should be the last thing called in the
165            initializer of a subclass.
166    
167            * Thuban/UI/classgen.py (ClassGenDialog.__init__): Actively
168            set the current selections in the combo boxes. This is needed
169            under Windows.
170    
171            * Thuban/UI/classifier.py (Classifier.__init__): Add a top
172            level panel to the dialog so that the background colors are
173            consistent under Windows.
174    
175    2003-04-11  Jonathan Coles   <[email protected]>
176    
177            * Thuban/UI/classgen.py: Change color ramps to start at white
178            not black.
179    
180            * Thuban/UI/legend.py: Enable/disable the legend buttons when
181            the legend changes. Fixes RTbug #1793.
182    
183            * test/test_classification.py: Added test for copying of
184            classifications.
185    
186    2003-04-11  Jonathan Coles   <[email protected]>
187    
188            * Thuban/UI/resource.py: New. Centralize the loading of resources
189            such as bitmaps.
190    
191            * Thuban/UI/classgen.py (GenUniquePanel.__init__): Reordered buttons,
192            added images to the move buttons, added 'reverse' button.
193            (CustomRampPanel.__init__): Added images to the move buttons.
194            (GreyRamp): New. Generates a ramp from white to black.
195            (HotToColdRamp): New. Generates a ramp from cold to hot colors.
196    
197            * Thuban/UI/classifier.py: Refactored ID's from ID_CLASSIFY_* to
198            ID_PROPERTY_*.
199            (Classifier.__init__): Minor changes to the layout.
200            (Classifier._OnTitleChanged): Listen for when the user edits the
201            title and update the dialog's title and the layer's title.
202    
203            * Thuban/UI/dock.py: Use new bitmaps for the control buttons.
204    
205            * Thuban/UI/legend.py: Use new bitmaps for the control buttons.
206            (LegendTree._OnMsgLayerTitleChanged): Change the displayed title
207            if the layer's title changes.
208    
209            * Thuban/UI/mainwindow.py: Added new menu item and associated code
210            to open a dialog to rename the map.
211            (MainWindow): Use new resource class to import bitmaps.
212    
213    2003-04-11  Jonathan Coles   <[email protected]>
214    
215            * Resources/Bitmaps/close_12.xpm, Resources/Bitmaps/dock_12.xpm,
216            Resources/Bitmaps/group_use.xpm, Resources/Bitmaps/group_use_all.xpm,
217            Resources/Bitmaps/group_use_none.xpm,
218            Resources/Bitmaps/group_use_not.xpm,
219            Resources/Bitmaps/hide_layer.xpm,
220            Resources/Bitmaps/layer_properties.xpm,
221            Resources/Bitmaps/lower_layer.xpm, Resources/Bitmaps/raise_layer.xpm,
222            Resources/Bitmaps/show_layer.xpm, Resources/Bitmaps/undock_12.xpm:
223            New.
224    
225    2003-04-10  Jonathan Coles   <[email protected]>
226    
227            * Thuban/Model/classification.py: (ClassGroupRange.__init__):
228            Should pass group to ClassGroup constructor.
229    
230    2003-04-10  Jonathan Coles   <[email protected]>
231    
232            * Thuban/Model/classification.py: (ClassGroup): Move all the common
233            methods of the derived classes ([Set|Get]Properties(), __eq__, __ne__)
234            here. Implement SetVisible(), IsVisible().
235            (ClassGroup.__init__): Add group parameter which acts as a copy
236            constructor.
237    
238            * Thuban/UI/classifier.py (ClassTable): Add a new column for the
239            "Visible" check boxes.
240            (Classifier): Rename the buttons and refactor the code to match
241            the new labels.
242    
243            * Thuban/UI/legend.py: Classify button is now called "Properties".
244            Refactored the code to change variable names.
245            (LegendTree.__FillTreeLayer): Only list a group if it is visible.
246    
247            * Thuban/UI/mainwindow.py: MainWindow.OpenClassifier renamed to
248            MainWindow.OpenLayerProperties. MainWindow.LayerEditProperties
249            renamed to MainWindow.LayerEditProperties.
250            (MainWindow.ToggleLegend): Don't include map name in legend title.
251            (MainWindow.SetMap): Added the map name to the window title.
252            (MainWindow.LayerFillColor, MainWindow.LayerTransparentFill,
253            MainWindow.LayerOutlineColor, MainWindow.LayerNoOutline): Removed.
254            Functionality is found in the layer properties dialog.
255    
256            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Only
257            draw visible groups.
258    
259    2003-04-09  Jonathan Coles   <[email protected]>
260    
261            * Thuban/UI/classgen.py: Modifications to allow simple
262            addition and selection of new color schemes.
263            (MonochromaticRamp): New. Generates a ramp between two colors.
264            (RedRamp): New. Generates a ramp of all red.
265            (GreenRamp): New. Generates a ramp of all green.
266            (BlueRamp): New. Generates a ramp of all blue.
267    
268    2003-04-09  Jonathan Coles   <[email protected]>
269    
270            * Thuban/Model/classification.py (Classification.__deepcopy__):
271            Need to copy over field and fieldType attributes.
272    
273            * Thuban/Model/table.py (Table.field_range): New. Retrive the
274            maximum and minimum values over the entire table for a given
275            field.
276            (Table.GetUniqueValues): New. Retrieve all the unique values
277            in the table for a given field.
278    
279            * Thuban/UI/classgen.py: Renamed GenRangePanel to GenUniformPanel.
280            (GenUniquePanel): New. Controls to allow the user to select
281            which unique field values they would like in the classification.
282            (CustomRampPanel): Code that was in ClassGenDialog that allows
283            the user to select the properties for a custom ramp.
284            (ClassGenerator.GenUniformDistribution): Was called GenerateRanges.
285    
286            * Thuban/UI/classifier.py: Removed a lot of debugging code.
287            (Classifier._SetClassification): Callback method so that the
288            class generator can set the classification in the grid.
289            (ClassGroupPropertiesCtrl): New. Encapsulates the drawing and
290            editing of a group properties class into a wxWindows control.
291    
292            * Thuban/UI/dock.py: It was decided that if the user closes
293            a dockable window the window should simply hide itself. That
294            way if the user wants to show the dock again it appears in the
295            same place as it was when it was closed.
296            (DockableWindow.Destroy): Call renamed method OnDockDestroy().
297            (DockableWindow._OnButtonClose): Hide the window instead of
298            destroying it.
299            (DockableWindow._OnClose): Hide the window instead of
300            destroying it.
301    
302            * Thuban/UI/legend.py (LegendTree): Use a private method to
303            consistently set the font and style of the text. Fixes RTbug #1786.
304    
305            * Thuban/UI/mainwindow.py: Import just the Classifier class.
306    
307    2003-04-07  Bernhard Herzog  <[email protected]>
308    
309            * Thuban/UI/mainwindow.py (main_menu): Move the toggle_legend item
310            to the map module
311    
312    2003-04-07  Bernhard Herzog  <[email protected]>
313    
314            * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree): Removed in
315            favor of ToggleSessionTree
316            (MainWindow.ToggleSessionTree): New method to toggle visibility of
317            the session tree.
318            (MainWindow.SessionTreeShown): New method to return whether the
319            session tree is currently shown.
320            (MainWindow.ToggleLegend): New method to toggle visibility of the
321            legend
322            (MainWindow.ShowLegend): Implement in terms of ToggleLegend and
323            LegendShown
324            (MainWindow.LegendShown): New method to return whether the legend
325            is currently shown.
326            (_method_command): Add checked parameter so we can define check
327            menu items
328            (_has_tree_window_shown, _has_legend_shown): Use the appropriate
329            mainwindow methods.
330            (show_session_tree, show_legend commands): Removed.
331            (toggle_session_tree, toggle_legend commands): New commands to
332            toggle the visibility of the dialogs
333    
334    2003-04-07  Jonathan Coles   <[email protected]>
335    
336            * Thuban/UI/classgen.py: Fix Windows problem.
337    
338            * Thuban/UI/dock.py: Fix Windows problem.
339    
340            * Thuban/UI/mainwindow.py: Use False instead of false.
341            (MainWindow.ShowLegend): Remove unnecessary switch parameter.
342    
343    2003-04-07  Jonathan Coles   <[email protected]>
344    
345            Since we now say that the order of the groups in a classification
346            matters, it makes sense to be able to manipulate that order. Most
347            of the changes to Thuban/Model/classification.py are to that end.
348    
349            * Thuban/Model/classification.py (Classification.AppendGroup,
350            Classification.InsertGroup, Classification.ReplaceGroup,
351            Classification.RemoveGroup, Classification.GetGroup): Do as the
352            names imply.
353            (Classification.FindGroup): This was called GetGroup, but GetGroup
354            takes an index, while FindGroup takes a value.
355            (Classification.__deepcopy__): Copy all the groups, BUT NOT THE LAYER
356            REFERENCE. Currently there is a cyclic reference between the layer
357            and its classification. If the classification doesn't need to know
358            its owning layer we can change this, since it may make sense to be
359            able to use the same classification with different layers.
360    
361            * Thuban/Model/load.py: Use Classification.AppendGroup(), not AddGroup()
362    
363            * Thuban/UI/classgen.py: Use Classification.AppendGroup(),
364            not AddGroup()
365    
366            * Thuban/UI/classifier.py: Now that we can depend on the order in
367            a Classification and have methods to manipulate that order we don't
368            need to use our own data structures in the grid. We can simply make
369            the grid/table access the information they need from a copy of
370            the classification object.
371            (Classifier._OnCloseBtn): Event handler for when the user clicks
372            'Close'. This is needed so if the user applies changes and then
373            continues to change the table the user has the option of discarding
374            the most recent changes and keeping what they applied.
375    
376            * Thuban/UI/mainwindow.py: Put "Show Legend" and "Show Session Tree"
377            into the same group.
378    
379            * extensions/thuban/wxproj.cpp (check_version): If Thuban is compiled
380            with a really old version of proj, PJ_VERSION won't even be defined.
381            If it isn't defined then just compile so that the function always
382            returns Py_False.
383    
384            * test/test_classification.py: Fix tests to use the renamed methods.
385            Still need to write tests for the new methods.
386    
387    2003-04-04  Jonathan Coles   <[email protected]>
388    
389            * Thuban/UI/classifier.py (Classifier.__SelectField): Move the
390            call to SetSelection out of the method and before the call
391            to __SelectField in __init__. This prevents a recursion of events
392            when _OnFieldSelect is triggered by the user.
393    
394    2003-04-04  Jonathan Coles   <[email protected]>
395    
396            * Thuban/Model/classification.py: Rename Color.None to
397            Color.Transparent.
398            (ClassGroupProperties.SetLineColori, ClassGroupProperties.SetFill):
399            Don't bother copying the color, since Colors are immutable.
400    
401            * Thuban/Model/color.py, Thuban/Model/layer.py, Thuban/Model/load.py,
402            Thuban/UI/classifier.py, Thuban/UI/mainwindow.py,
403            Thuban/UI/renderer.py, Thuban/UI/view.py:
404            Rename Color.None to Color.Transparent.
405        
406            * test/test_classification.py, test/test_load.py: Rename Color.None
407            to Color.Transparent.
408    
409    2003-04-04  Jonathan Coles   <[email protected]>
410    
411            * Thuban/Model/classification.py: Fix assert calls.
412            (ClassGroupProperties.SetLineColor, ClassGroupProperties.SetFill):
413            Copy the color parameter rather than hold onto a reference.
414    
415            * Thuban/Model/color.py (Color.__copy__, Color.__deepcopy): Copy
416            the color object.
417            (NoColor.__copy__, NoColor.__deepcopy): Return 'self' so that we
418            are sure there exists only one refernce to Color.None in the system.
419            This allows us to use 'is' rather than the comparision functions.
420            
421            * Thuban/Model/save.py: Fix assert calls.
422            
423            * Thuban/UI/classifier.py: Fix assert calls.
424            (ClassGrid._OnCellDClick): Call up to the classifier to open the
425            dialog to edit the groups properties.
426            (ClassGrid._OnCellResize): Make sure that the scollbars are drawn
427            correctly if a cell is resized.
428            (ClassTable.SetClassification): New. Changes the classification
429            that is in the table.
430            (ClassTable.__SetRow): Allow groups to be prepended.
431            (Classifier): New code for opening the EditProperties and
432            GenerateRanges dialogs.
433            (SelectPropertiesDialog.__GetColor): Only set the color in the
434            color dialog if the current color is not None.
435            
436            * Thuban/UI/dock.py: Fix assert calls.
437            
438            * Thuban/UI/legend.py: Fix assert calls.
439            
440            * Thuban/UI/renderer.py: Fix assert calls.
441            
442            * Thuban/UI/classgen.py (ClassGenDialog): Dialog for generating
443            classifications.
444            (GenRangePanel): Panel specific to range generation.
445            (GenSingletonPanel): Panel specific to singleton generation.
446            (ClassGenerator): Class responsible for actually generating
447            the classification from the data gathered in the dialog box.
448            (PropertyRamp): Generates properties whose values range from
449            a starting property to an ending property.
450    
451    2003-04-03  Bernhard Herzog  <[email protected]>
452    
453            * test/support.py (print_garbage_information): New function that
454            prints information about still connected messages and memory
455            leaks.
456            (run_suite): Removed.
457            (run_tests): New function for use as a replacement of
458            unittest.main in the test_* files. This one calls
459            print_garbage_information at the end.
460    
461            * test/runtests.py (main): Use support.print_garbage_information
462    
463            * test/test_layer.py: Use support.run_tests instead of
464            unittest.main so we get memory leak information
465            (TestLayer.test_arc_layer, TestLayer.test_polygon_layer)
466            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
467            (TestLayerLegend.test_visibility): Call the layer's Destroy method
468            to fix a memory leak.
469    
470            * test/test_classification.py: Use support.run_tests instead of
471            unittest.main so we get memory leak information
472            (TestClassification.test_classification): Call the layer's Destroy
473            method to fix a memory leak.
474    
475    2003-04-02  Bernhard Herzog  <[email protected]>
476    
477            * extensions/thuban/wxproj.cpp (check_version, check_version_gtk):
478            Handle the reference counts of the return value and errors in
479            PyArg_ParseTuple correctly.
480    
481            * Thuban/UI/application.py (ThubanApplication.OpenSession): Make
482            sure the filename is absolute to avoid problems when saving the
483            session again
484    
485            * Thuban/Model/table.py: Remove unnecessary import. Fix a typo.
486    
487  2003-04-01  Jonathan Coles   <[email protected]>  2003-04-01  Jonathan Coles   <[email protected]>
488    
489          *  Thuban/UI/renderer.pyi (MapRenderer.draw_point_shape): Check          *  Thuban/UI/renderer.py (MapRenderer.draw_point_shape): Check
490          that there actually are points in the returned list of points          that there actually are points in the returned list of points
491          before trying to index into the list. The list may be empty if          before trying to index into the list. The list may be empty if
492          the shape is a Null Shape.          the shape is a Null Shape.

Legend:
Removed from v.587  
changed lines
  Added in v.700

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26