/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 458 by bh, Tue Mar 4 13:43:16 2003 UTC revision 569 by jonathan, Fri Mar 28 17:06:11 2003 UTC
# Line 1  Line 1 
1    2003-03-28  Jonathan Coles   <[email protected]>
2    
3            * Thuban/UI/classifier.py: Support for highlighting a specific
4            group within the grid when the classification dialog is opened.
5            Also contains a lot of debugging printouts which will later
6            be removed.
7    
8            * Thuban/UI/dock.py: Complete rework on the dock code so that
9            that it is fairly removed from the rest of the Thuban application.
10            It is easy to add new docks which the rest of the program having
11            to be aware of them.
12    
13            * Thuban/UI/legend.py: Modifications to support selecting a
14            specific group in the classification dialog. Changed how layers
15            are drawn when the layer is visible/invisible.
16    
17            * Thuban/UI/mainwindow.py: Removed legend specific code and
18            replaced it with calls to the new dock code.
19    
20            * Thuban/UI/renderer.py (MapRenderer.__init__): Added assert
21            to check if scale > 0. Trying to track down a divide by zero.
22    
23    2003-03-26  Jonathan Coles   <[email protected]>
24    
25            * Thuban/UI/legend.py: Removed unnecessary LegendDialog class.
26            (LegendPanel): Removed _OnDock()/_OnUnDock() methods which are
27            now part of DockableWindow.
28            (LegendPanel.DoOnSelChanged): Select the current layer in the
29            map.
30            (LegendTree._OnSelChanged): Call LegendPanel.DoOnSelChanged()
31            with the selected layer and/or group.
32    
33    2003-03-26  Jonathan Coles   <[email protected]>
34    
35            This putback contains the code for dockable windows. There is
36            no support in wxWindows as of this date for windows that can
37            attach themselves to other windows.
38    
39            The current model contains a DockableWindow which has a parent
40            window for when it is detached and a dock window that it puts
41            its contents in when it is docked. The contents of a DockableWindow
42            must be a DockPanel. DockPanel itself derives from wxPanel.
43    
44            * Thuban/Model/layer.py (Layer.ClassChanged): Send a LAYER_CHANGED
45            message, not a LAYER_LEGEND_CHANGED message.
46    
47            * Thuban/Model/map.py (Map): Forward LAYER_CHANGED messages.
48    
49            * Thuban/UI/classifier.py (Classifier.__init__): Use wxADJUST_MINSIZE
50            as one of the style properties for the fieldTypeText item to
51            be sure that its size is correct when the text changes.
52    
53            * Thuban/UI/dock.py: New. Classes for the DockPanel and
54            DockableWindow.
55    
56            * Thuban/UI/legend.py: Added some more buttons and made the
57            LegendPanel a DockPanel.
58    
59            * Thuban/UI/mainwindow.py: Added sash windows to the main window
60            and supporting functions for manipulating the sashes.
61            (MainWindow.ShowLegend): Create a DockableWindow with the
62            LegendPanel as the contents.
63    
64            * Thuban/UI/messages.py: Added DOCKABLE_* messages
65    
66            * Thuban/UI/view.py (MapCanves.SetMap): Listen for LAYER_CHANGED,
67            not LAYER_LEGEND_CHANGED, messages.
68    
69    2003-03-25  Jonathan Coles   <[email protected]>
70    
71            * setup.py: Added custom script bdist_rpm_build_script so that
72            when the rpm is built the path to wx-config is correct.
73    
74            * setup.cfg: Added line saying to use the custom build script
75    
76    2003-03-20  Jonathan Coles   <[email protected]>
77    
78            Initial implementation of the Legend.
79    
80            * Thuban/UI/legend.py: New. Creates a window that shows the map's
81            Legend information and allows the user to add/modify classifications
82            and how the layers are drawn on the map.
83    
84            * setup.py: New command 'build_docs' which currently uses
85            happydoc to generate html documentation for Thuban.
86    
87            * Thuban/Model/classification.py (ClassGroup.GetDisplayText): New.
88            Returns a string which is appropriately describes the group.
89    
90            * Thuban/Model/layer.py (Layer.SetClassification): Generate a
91            LAYER_CHANGED event instead of a LAYER_LEGEND_CHANGED event.
92    
93            * Thuban/Model/map.py (Map): Rename messages and use new, more
94            specific, messages.
95    
96            * Thuban/Model/messages.py: New message to indicate that a layer's
97            data has changed (LAYER_CHANGED). New map messages to indicate
98            when layers have been added/removed/changed or if the stacking order
99            of the layers has changed.
100    
101            * Thuban/Model/session.py: Rename and use new messages.
102    
103            * Thuban/UI/classifier.py: Remember if any changes have actually
104            been applied so that if the dialog is cancelled without an application
105            of changes we don't have to set a new classification.
106            (ClassDataPreviewer): Pulled out the window specific code and put it
107            ClassDataPreviewWindow. ClassDataPreviewer can then be used to draw
108            symbols on any DC.
109            
110            * Thuban/UI/mainwindow.py: New code to open the legend.
111    
112            * Thuban/UI/view.py: Use new message names.
113    
114    2003-03-19  Jonathan Coles   <[email protected]>
115    
116            * Thuban/UI/main.py (verify_versions): New. Checks the versions
117            of Python, wxPython, and some other libraries.
118    
119            * extensions/thuban/wxproj.cpp (check_version): Checks the given
120            version against what wxproj was compiled with.
121            (check_version_gtk): If wxproj was compiled with gtk then check
122            the given version against the version of the gtk library
123            currently being used.
124    
125    2003-03-14  Bernhard Herzog  <[email protected]>
126    
127            * test/test_command.py: Run the tests when the module is run as a
128            script
129    
130    2003-03-14  Bernhard Herzog  <[email protected]>
131    
132            Implement selection of multiple selected shapes in the same layer:
133    
134            - Introduce a new class to hold the selection. This basically
135              replaces the interactor which was nothing more than the
136              selection anyway. A major difference is of course that the new
137              selection class supports multiple selected shapes in one layer
138            
139            - Move the object that represents the selection from the
140              application to the canvas. The canvas is a better place than the
141              application because the selection represents which shapes and
142              layer of the map displayed by the canvas are selected and
143              affects how the map is drawn.
144    
145            - Make the selection and its messages publicly available through
146              the mainwindow.
147    
148            - The non-modal dialogs do not get a reference to the interactor
149              anymore as they can simply refer to their parent, the
150              mainwindow, for the what the interactor had to offer.
151    
152            * Thuban/UI/selection.py: New module with a class to represent the
153            selection.
154    
155            * Thuban/UI/messages.py (SELECTED_TABLE, SELECTED_MAP): Remove
156            these unused messages
157    
158            * Thuban/UI/application.py (ThubanApplication.OnInit)
159            (ThubanApplication.OnExit, ThubanApplication.SetSession): The
160            interactor is gone now.
161            (ThubanApplication.CreateMainWindow): There is no interactor
162            anymore so we pass None as the interactor argument for now for
163            compatibility.
164    
165            * Thuban/UI/view.py (MapCanvas.delegated_messages)
166            (MapCanvas.Subscribe, MapCanvas.Unsubscribe): In Subscribe and
167            Unsubscribe, delegate messages according to the delegated_messages
168            class variable.
169            (MapCanvas.__getattr__, MapCanvas.delegated_methods): Get some
170            attributes from instance variables as described with the
171            delegated_methods class variable.
172            (MapCanvas.__init__): New instance variable selection holding the
173            current selection
174            (MapCanvas.do_redraw): Deal with multiple selected shapes. Simply
175            pass them on to the renderer
176            (MapCanvas.SetMap): Clear the selection when a different map is
177            selected.
178            (MapCanvas.shape_selected): Simple force a complete redraw. The
179            selection class now takes care of only issueing SHAPES_SELECTED
180            messages when the set of selected shapes actually does change.
181            (MapCanvas.SelectShapeAt): The selection is now managed in
182            self.selection
183    
184            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages)
185            (MainWindow.Subscribe, MainWindow.Unsubscribe): In Subscribe and
186            Unsubscribe, delegate messages according to the delegated_messages
187            class variable.
188            (MainWindow.delegated_methods, MainWindow.__getattr__): Get some
189            attributes from instance variables as described with the
190            delegated_methods class variable.
191            (MainWindow.__init__): The interactor as ivar is gone. The
192            parameter is still there for compatibility. The selection messages
193            now come from the canvas.
194            (MainWindow.current_layer, MainWindow.has_selected_layer):
195            Delegate to the the canvas.
196            (MainWindow.LayerShowTable, MainWindow.Classify)
197            (MainWindow.identify_view_on_demand): The dialogs don't need the
198            interactor parameter anymore.
199    
200            * Thuban/UI/tableview.py (TableFrame.__init__)
201            (LayerTableFrame.__init__, LayerTableFrame.OnClose)
202            (LayerTableFrame.row_selected): The interactor is gone. It's job
203            from the dialog's point of view is now done by the mainwindow,
204            i.e. the parent. Subscribe to SHAPES_SELECTED instead
205            of SELECTED_SHAPE
206            
207            * Thuban/UI/dialogs.py (NonModalDialog.__init__): The interactor
208            is gone. It's job from the dialog's point of view is now done by
209            the mainwindow, i.e. the parent.
210            
211            * Thuban/UI/classifier.py (Classifier.__init__): The interactor is
212            gone. It's job from the dialog's point of view is now done by the
213            mainwindow, i.e. the parent.
214    
215            * Thuban/UI/tree.py (SessionTreeView.__init__): The interactor is
216            gone. It's job from the dialog's point of view is now done by the
217            mainwindow, i.e. the parent.
218            (SessionTreeCtrl.__init__): New parameter mainwindow which is
219            stored as self.mainwindow. The mainwindow is need so that the tree
220            can still subscribe to the selection messages.
221            (SessionTreeCtrl.__init__, SessionTreeCtrl.unsubscribe_all)
222            (SessionTreeCtrl.update_tree, SessionTreeCtrl.OnSelChanged): The
223            selection is now accessible through the mainwindow. Subscribe to
224            SHAPES_SELECTED instead of SELECTED_SHAPE
225    
226            * Thuban/UI/identifyview.py (IdentifyView.__init__): Use the
227            SHAPES_SELECTED message now.
228            (IdentifyView.selected_shape): Now subscribed to SHAPES_SELECTED,
229            so deal with multiple shapes
230            (IdentifyView.__init__, IdentifyView.OnClose): The interactor is
231            gone. It's job from the dialog's point of view is now done by the
232            mainwindow, i.e. the parent.
233    
234            * Thuban/UI/controls.py (RecordListCtrl.fill_list): The second
235            parameter is now a list of shape ids.
236            (RecordTable.SetTable): The second parameter is now a list of
237            indices.
238    
239            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Rename the
240            selected_shape parameter and ivar to selected_shapes. It's now a
241            list of shape ids.
242            (MapRenderer.draw_label_layer): Deal with multiple selected
243            shapes. Rearrange the code a bit so that the setup and shape type
244            distinctions are only executed once.
245    
246            * test/test_selection.py: Test cases for the selection class
247    
248    2003-03-11  Jonathan Coles   <[email protected]>
249    
250            * Thuban/Model/load.py: Temporary fix so that the xml reader
251            doesn't cause Thuban to crash.
252    
253            * Thuban/Model/layer.py: Handle the cyclic references between
254            a layer and its classification better, and be sure to disconnect
255            the classification from the layer when the layer is destroyed
256            so that we don't maintain a cyclic reference that may not be
257            garbage collected.
258    
259            * Thuban/Model/classification.py: See comment for layer.py.
260    
261    2003-03-12  Jan-Oliver Wagner <[email protected]>
262    
263            * HOWTO-Release: New. Information on the steps for releasing
264            a new version of Thuban.
265    
266    2003-03-11  Jonathan Coles   <[email protected]>
267    
268            * Thuban/UI/classifier.py: Add normal border to SelectPropertiesDialog.
269            Use True instead of true.
270            (Classifier): Should have a single panel in which all the controls lie.
271    
272            * Thuban/UI/proj4dialog.py: Add normal border.
273    
274            * Thuban/UI/tree.py: Fixed problem with bad item images under Windows.
275    
276            * Thuban/UI/mainwindow.py: Use True instead of true.
277    
278            * setup.py: Update some definitions to use wxWindows2.4 files
279    
280            * Data/iceland_sample_class.thuban: Fixed file so that the
281            field_type information is present.
282    
283    2003-03-10  Jonathan Coles   <[email protected]>
284    
285            * Thuban/UI/classifier.py (Classifier.__init__): Make the
286            field type label grow so that when the text changes the
287            size is updated correctly. This may be a wxWindows bug.
288    
289    2003-03-10  Jonathan Coles   <[email protected]>
290    
291            * Thuban/UI/application.py: Changed SESSION_CHANGED to
292            SESSION_REPLACED.
293    
294            * Thuban/UI/classifier.py: Wrap text with _().
295            (ClassGrid.CreateTable): Set dimensions and size hints here,
296            instead of in Reset, so we only set the size once.
297    
298            * Thuban/UI/dialogs.py: Don't need Shutdown(); just use Close()!
299    
300            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
301            Call Close() instead of Shutdown().
302    
303            * Thuban/UI/messages.py: Changed SESSION_CHANGED to SESSION_REPLACED.
304    
305            * Thuban/UI/tree.py: Changed SESSION_CHANGED to SESSION_REPLACED.
306            Go back to using OnClose() instead of Shutdown().
307    
308    2003-03-10  Jonathan Coles   <[email protected]>
309    
310            * Thuban/UI/classifier.py (Classifier): SelectField() needed
311            to know the old field index as well as the new one.
312    
313    2003-03-10  Jonathan Coles   <[email protected]>
314    
315            * Thuban/UI/classifier.py (Classifier): Use __SelectField()
316            to correctly set the table information and call this from
317            __init__ and from _OnFieldSelect so that all the information
318            is up to date when the dialog opens and when a field is changed.
319    
320    2003-03-10  Jonathan Coles   <[email protected]>
321    
322            * Thuban/Model/classification.py (Classification): Don't use
323            layer's message function directly, use the ClassChanged() method
324            when then classification changes. SetField/SetFieldType/SetLayer
325            must keep the information about field name and field type in
326            sync when an owning layer is set or removed.
327    
328            * Thuban/Model/layer.py: Added ClassChanged() so that the
329            classification can tell the layer when its data has changed.
330            (Layer.SetClassification): Accepts None as an arguement to
331            remove the current classification and correctly handles
332            adding a new classification.
333    
334            * Thuban/Model/load.py: Comment out print statement
335    
336            * test/test_classification.py, test/test_save.py: New and
337            improved tests.
338    
339    2003-03-07  Jonathan Coles   <[email protected]>
340    
341            * Thuban/Model/classification.py: Implemented __copy__ and
342            __deepcopy__ for ClassGroup* and ClassGroupProperites so
343            they can easily be copied by the classifier dialog.
344            (ClassGroupProperites.__init__): The default line color should
345            have been Color.Black.
346    
347            * Thuban/UI/classifier.py: Setting and Getting table values now
348            uses a consistent set of functions.
349            (Classifier): Now non-modal. Has field type label which changes
350            as the field changes. Keep track of buttons in a list so that
351            we can enable/disable the buttons when the None field is selected.
352            (SelectPropertiesDialog): Add buttons to make the colors transparent.
353    
354            * Thuban/UI/dialogs.py (NonModalDialog.Shutdown): New method which
355            does what OnClose did, but can be called by the application to
356            close a window. Needed when a session changes, and we have to
357            close the classifier windows.
358    
359            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
360            Shuts down open dialogs. Used when a new session is created
361            or a session is opened.
362            (MainWindow.SaveSession): Should only call application.SaveSession()
363            if we don't call SaveSessionAs first.
364            (MainWindow.Classify): Allow different classifier dialogs for
365            different layers.
366    
367            * Thuban/UI/tree.py (SessionTreeView): Remove OnClose and let
368            the parent class handle it. Add Shutdown() to unsubscibe from
369            event notification and call the parent Shutdown(). This was
370            necessary so the application can close the tree window.
371    
372    2003-03-06  Jonathan Coles   <[email protected]>
373    
374            * Thuban/Model/classification.py: Minor documentation changes,
375            Addition of __eq__ and __ne__ methods.
376            (Classification.SetLayer): prevent recursion between this method
377            and Layer.SetClassification().
378    
379            * Thuban/Model/color.py: Addition of __eq__ and __ne__ methods.
380    
381            * Thuban/Model/layer.py (SetClassification): prevent recursion
382            between this method and Classification.SetLayer().
383    
384            * test/test_classification.py, test/test_load.py,
385            test/test_session.py: Fixed and added tests for the classification
386            classes.
387    
388    2003-03-06  Bernhard Herzog  <[email protected]>
389    
390            * Thuban/UI/classifier.py (ClassGrid.__init__)
391            (ClassGrid.CreateTable): Move the SetSelectionMode call to
392            CreateTable because otherwise it triggers an assertion in
393            wxPython/wxGTK 2.4.
394    
395    2003-03-05  Jonathan Coles   <[email protected]>
396    
397            * Thuban/common.py: Move FIELDTYPE constants back to table.py.
398    
399            * Thuban/Model/load.py: import FIELDTYPE constants from table.
400    
401            * Thuban/UI/classifier.py: import FIELDTYPE constants from table.
402    
403            * Thuban/Model/table.py: Put FIELDTYPE constants back.
404    
405    2003-03-05  Jonathan Coles   <[email protected]>
406    
407            * Thuban/UI/classifier.py: Added class documentation.
408            Fixed RTbug #1713, #1714. Added Move[Up|Down] buttons.
409            Store just the groups in the table and generate the other
410            column information when it is requested. Add "None" field
411            to pull-down to select no classification.
412    
413            * Thuban/common.py: Moved FIELDTYPE constants from table.py
414            (Str2Num): Only catch ValueError exceptions.
415    
416            * Thuban/Model/classification.py: Class documentation. Renaming
417            of methods with Stroke to Line. Groups are stored in a single
418            list with the default as the first element. Groups are searched
419            in the order they appear in the list.
420    
421            * Thuban/Model/color.py: Documentation.
422    
423            * Thuban/Model/layer.py (Layer): Add GetFieldType to retreive
424            the kind of data represented by a field.
425    
426            * Thuban/Model/load.py (ProcessSession): Use proper string
427            conversion function; fixes RTbug #1713.
428    
429            * Thuban/Model/save.py (Saver): Store field type information.
430    
431            * Thuban/Model/table.py: Put FIELDTYPE constants in common.py.
432            (Table): Add field_info_by_name() to retrieve field information
433            by specifying the field name, not the number.
434    
435            * Thuban/UI/mainwindow.py: Function name changes.
436    
437            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Only
438            get the layer classification once. Don't try to classify
439            values when the field is None: just use the default properties.
440    
441            * Thuban/UI/view.py: Function name changes.
442    
443            * Doc/thuban.dtd: Add field_type attribute to a classification.
444    
445  2003-03-04  Bernhard Herzog  <[email protected]>  2003-03-04  Bernhard Herzog  <[email protected]>
446    
447          * Doc/thuban.dtd: Use correct syntax for optional attributes. Make          * Doc/thuban.dtd: Use correct syntax for optional attributes. Make

Legend:
Removed from v.458  
changed lines
  Added in v.569

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26