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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26