/[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

trunk/thuban/ChangeLog revision 1053 by bh, Tue May 27 09:34:40 2003 UTC branches/greater-ms3/thuban/ChangeLog revision 1197 by bh, Fri Jun 13 13:13:14 2003 UTC
# Line 1  Line 1 
1    2003-06-13  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/UI/identifyview.py (IdentifyView.__init__): Call
4            self.selected_shape with the current selection to make sure the
5            contents of the dialog are up to date when it's shown for the
6            first time.
7            The dialog used to work without this by luck. The recent fix to
8            the connector module 'broke' a 'feature' the identify view was
9            relying on, i.e that subscribing to a message in response to
10            receiving a message of that type would mean that the new
11            subscriber would also be called for the same message.
12    
13    2003-06-12  Jonathan Coles   <[email protected]>
14    
15            * Thuban/UI/legend.py (ScaleBarBitmap.__SetScale): Don't draw
16            the scalebar if the current map has no projection set.
17    
18            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): Set the
19            projfilepath label to just the basename of the projection file
20            rather than include the entire path.
21    
22    2003-06-11  Frank Koormann  <[email protected]>
23    
24            * Thuban/Lib/fileutil.py (get_application_dir): Minor stability
25            update.
26    
27    2003-06-11  Frank Koormann  <[email protected]>
28    
29            * Thuban/Lib/fileutil.py (get_application_dir): New function to
30            determine the absolute .thuban/thuban directory under
31            "posix" (os.expanduser) and "nt" (read AppData registry key).
32    
33            * Thuban/Model/resource.py: Use get_application_dir
34    
35            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
36            Use get_application_dir.
37    
38    2003-06-10  Bernhard Herzog  <[email protected]>
39    
40            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Subscribe to
41            the messages MAP_LAYERS_REMOVED messages
42            (LayerTableFrame.OnClose): Unsubscribe from it.
43            (LayerTableFrame.map_layers_removed): New. Receiver for
44            MAP_LAYERS_REMOVED. Close the dialog when the layer whose the
45            dialog is showing is removed.
46    
47    2003-06-10  Bernhard Herzog  <[email protected]>
48    
49            * Thuban/Lib/connector.py (Connector.Issue): Iterate over a copy
50            of the receivers list so that unsubscribing in a receiver doesn't
51            modify it while iterating over it.
52    
53            * test/test_connector.py
54            (ConnectorTest.test_disconnect_in_receiver): New. Test whether
55            unsubscribing in a receiver works correctly. See docstring for
56            details
57    
58    2003-06-10  Bernhard Herzog  <[email protected]>
59    
60            * Thuban/Model/messages.py (LAYER_SHAPESTORE_REPLACED): New
61            message.
62    
63            * Thuban/Model/layer.py (Layer.SetShapeStore): Send
64            LAYER_SHAPESTORE_REPLACED when the shapestore changes. A
65            LAYER_CHANGED will still be sent if the classification changes.
66    
67            * Thuban/UI/classifier.py (Classifier.__init__): Add the map as
68            parameter so we can subscribe to some of its messages
69            (Classifier.__init__): Subscribe to the map's MAP_LAYERS_REMOVED
70            and the layer's LAYER_SHAPESTORE_REPLACED
71            (Classifier.unsubscribe_messages): New. Unsubscribe from message
72            subscribed to in __init__
73            (Classifier.map_layers_removed)
74            (Classifier.layer_shapestore_replaced): receivers for the messages
75            subscribed to in __init__. Unsubscribe and close the dialog
76    
77            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): Pass
78            the map to the Classifier dialog
79    
80            * test/test_layer.py (SetShapeStoreTests): Derive from
81            SubscriberMixin as well so we can test messages
82            (SetShapeStoreTests.setUp): Subscribe to some of the layer's
83            messages
84            (SetShapeStoreTests.tearDown): Clear the messages again
85            (SetShapeStoreTests.test_sanity): Expand the doc-string and check
86            for the modified flag too
87            (SetShapeStoreTests.test_set_shape_store_modified_flag): New test
88            to check whether SetShapeStore sets the modified flag
89            (SetShapeStoreTests.test_set_shape_store_different_field_name)
90            (SetShapeStoreTests.test_set_shape_store_same_field)
91            (SetShapeStoreTests.test_set_shape_store_same_field_different_type):
92            Add tests for the messages. This checks both the new
93            LAYER_SHAPESTORE_REPLACED and the older LAYER_CHANGED
94    
95    2003-06-06  Jan-Oliver Wagner <[email protected]>
96    
97            * Thuban/UI/mainwindow.py: Improved and partly added help texts for
98            the menu items.
99    
100    2003-06-05  Frank Koormann  <[email protected]>
101    
102            * Thuban/UI/identifyview.py (IdentifyView.__init__):
103            Layout reimplemented without panel. Make life easier to fit the list
104            in the dialog.
105    
106    2003-06-05  Frank Koormann  <[email protected]>
107    
108            * Thuban/UI/projdialog.py (ProjFrame.__init__): Fill the projchoice
109            once on initialisation (Former implementation resulted in multiple
110            entries for each projection).
111            (ProjFrame.__FillAvailList): selectProj as second optional parameter,
112            if set, select the projection found under the specified name. This
113            overwrites any other selection estimate.
114            Removed projchoice filling from this method.
115            (ProjFrame._OnSave, ProjFrame._OnAddToList):
116            Updated call of ProjFrame.__FillAvailList
117            (LCCPanel._DoLayout): Moved parameter controls in more common order.
118    
119            * Resources/Projections/defaults.proj: Extended defaults representing
120            various common European projections.
121    
122    2003-06-05  Frank Koormann  <[email protected]>
123    
124            * Thuban/UI/identifyview.py (IdentifyView.__init__):
125            Use ListCtrl instead of GridCtrl
126    
127            * Thuban/Model/resource.py:
128            Guess location of .thuban directory from tempdir parent directory.
129    
130            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
131            Guess location of .thuban directory from tempdir parent directory.
132    
133    2003-06-04  Bernhard Herzog  <[email protected]>
134    
135            Do not cache the values returned by the tree widget's
136            GetFirstChild and GetNextChild methods because it led to lots of
137            segfaults. The new way requires more brute force but is more
138            reliable.
139    
140            * Thuban/UI/legend.py (LegendTree.__init__): Remove instance
141            variable layer2id
142            (LegendTree.find_layer): New method to do with brute force what
143            layer2id tried to accomplish
144            (LegendTree._OnMsgLayerChanged)
145            (LegendTree._OnMsgLayerTitleChanged, LegendTree.__ShowHideLayer):
146            Use find_layer instead of layer2id
147            (LegendTree.__RemoveLayer, LegendTree.__AddLayer): No need to
148            update layer2id anymore
149            (LegendTree._OnMsgMapLayersRemoved)
150            (LegendTree._OnMsgMapLayersAdded): Get by without layer2id.
151    
152    2003-06-03  Thomas Koester  <[email protected]>
153    
154            * Thuban/Model/classgen.py (GenQuantiles0): New function.
155    
156    2003-06-02  Bernhard Herzog  <[email protected]>
157    
158            * Thuban/UI/mainwindow.py (layer_rename command, table_rename command):
159            New commands.
160            (main_menu): Add the new commands.
161            (MainWindow.TableRename): New. Implementation of the table_rename
162            command.
163            (MainWindow.RenameLayer): New. Implementation of the layer_rename
164            command.
165    
166            * Thuban/Model/session.py (Session.AddTable): call self.changed to
167            set the modified flag
168    
169            * test/test_session.py (TestSessionSimple.test_add_table): Test
170            whether the modified flag is set properly
171    
172            * Thuban/Model/base.py (TitledObject.SetTitle): Call changed
173            instead of issue so that the modified flags get updated.
174    
175            * test/test_base.py (SomeTitledObject): Derive from Modifiable
176            instead of Publisher to reflect reality better and to accomodate
177            the fact that SetTitle now calls changed instead of issue
178    
179    2003-06-02  Bernhard Herzog  <[email protected]>
180    
181            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Resource
182            acquisition has to happen before the try in a try-finally.
183    
184    2003-06-02  Bernhard Herzog  <[email protected]>
185    
186            * Thuban/UI/legend.py (LegendTree._OnMsgMapLayersRemoved): It's
187            possible that a layer is removed that is not currently selected in
188            the legend so don't check for this.
189    
190    2003-05-30  Bernhard Herzog  <[email protected]>
191    
192            * Thuban/Model/layer.py (Layer.Destroy): Set all instance
193            variables to None that have direct or indirect references to
194            shapefiles or dbf files to make sure that they do go away and the
195            files are closed.
196    
197    2003-05-30  Bernhard Herzog  <[email protected]>
198    
199            * Thuban/UI/legend.py (LegendTree.GetRootItem): Reset
200            availImgListIndices when a new image list is created
201            
202    2003-05-30  Bernhard Herzog  <[email protected]>
203    
204            * Thuban/UI/legend.py (LegendTree.__init__): New instance variable
205            changing_selection to indicate whether the LegendTree code itself
206            is currently changing the selection
207            (LegendTree.normalize_selection): New method to normalize the
208            selection by selecting the layer item even if the user clicked on
209            the classification.
210            (LegendTree._OnSelChanged): normalize the selection. This works
211            around a bug in wx which doesn't keep track of the selection
212            properly when subtrees are deleted.
213    
214    2003-05-30  Bernhard Herzog  <[email protected]>
215    
216            * Thuban/UI/view.py (MapCanvas.set_view_transform): Limit the
217            maximum and minimum scale factors.
218    
219            * test/test_classgen.py (ClassGenTest.test): Update to reflect the
220            changes in classgen.py
221    
222    2003-05-30  Jonathan Coles   <[email protected]>
223    
224            * Thuban/Model/classgen.py: Remove ClassGenerator class but make
225            all the methods functions. Fixes RTBug #1903.
226    
227            * Thuban/Model/map.py (Map.TopLayer, Map.BottomLayer): Renamed
228            to MoveLayerToTop and MoveLayerToBottom respectively. Fixes
229            RTBug #1907.
230    
231            * Thuban/UI/classgen.py: Use classgen functions that were part
232            of the ClassGenerator class. Put try/finally blocks around
233            code that uses wxBeginBusyCursor()/wxEndBusyCursor(). Fixes
234            RTBug #1904.
235    
236            * Thuban/UI/classifier.py: Remove unused import of ClassGenerator.
237    
238            * Thuban/UI/legend.py: The legend was cleared and repopulated any
239            time something changed which caused some state to be lost such
240            as which children were expanded or collapsed. Fixes RTBug #1901.
241            (LegendTree._OnMsgMapLayersAdded): Add only new layers.
242            (LegendTree.__OnMsgMapLayersRemoved): Remove layers that exist in
243            the legend but not in the map.
244            (LegendTree.__FillTree): Move main functionality out into smaller
245            methods that can be used by other methods.
246            (LegendTree.__FillTreeLayer): Reuse old slots in the image list
247            if they are available.
248            (LegendTree.DeleteAllItems): Renamed from __DeleteAllItems so
249            that we override the wxTreeCtrl method. Iterate over children
250            and call __RemoveLayer.
251            (LegendTree.__AddLayer): New. Add a new layer to the legend.
252            (LegendTree.__RemoveLayer): Remove a layer from the legend.
253            (LegendTree.DeleteChildren): New, overrides wxTreeCtrl method.
254            Should only be called with the id of a layer branch.
255            (LegendTree.GetRootItem): New, overrides wxTreeCtrl method.
256            Returns the root item or creates one if necessary.
257    
258            * Thuban/UI/renderer.py (MapRenderer.draw_raster_layer): Call
259            ProjectRasterFile with tuple arguments instead of strings.
260    
261            * Thuban/UI/tableview.py (QueryTableFrame.OnQuery): Wrap code
262            with try/finally. Fixes RTBug #1904.
263    
264            * Thuban/UI/view.py (MapCanvas.OnPaint): Wrap code
265            with try/finally. Fixes RTBug #1904.
266            (MapCanvas.FitSelectedToWindow): If a single point is selected
267            simply center it on the display. Fixes RTBug #1849.
268    
269            * extensions/thuban/gdalwarp.cpp: Removed code that allowed gdalwarp
270            to be compiled as a standalone app. Now the code can only be
271            called from Python which simplifies the parameter passing.
272            (ProjectRasterFile): Handle Python arguments. Remove code that
273            checks for a destination dataset. Add more clean up code.
274    
275            * test/test_map.py (TestMapWithContents.test_raise_layer_top,
276            TestMapWithContents.test_lower_layer_bottom):
277            Test Map.MoveLayerToTop() and Map.MoveLayerToBottom() respectively.
278            Fixes RTBug #1907.
279    
280            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Apply a full
281            extent to the map when the legend is toggled. Fixes RTBug #1881.
282    
283    2003-05-29  Jan-Oliver Wagner <[email protected]>
284    
285            * Thuban/UI/tableview.py (LayerTableFrame.OnClose): Bug-fix: Now
286            unsubscribes all that is subcribed in __init__.
287    
288    2003-05-28  Bernhard Herzog  <[email protected]>
289    
290            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer)
291            (MainWindow.CanDuplicateLayer): New methods to implement the
292            Layer/Duplicate command.
293            (layer_duplicate command): New.
294            (main_menu): Add layer_duplicate to the Layer menu.
295    
296    2003-05-28  Bernhard Herzog  <[email protected]>
297    
298            * Thuban/UI/tableview.py (NullRenderer.Draw): New. Our own
299            renderer so that NULL/None values get displayed differently (by a
300            gray rectangle).
301            (TableGrid.__init__): Override the default renderers
302    
303    2003-05-28  Bernhard Herzog  <[email protected]>
304    
305            * Thuban/Model/layer.py (Layer.SetShapeStore): Set the
306            classification to "None" if the type of the field has changed.
307    
308            * test/test_layer.py (SetShapeStoreTests): New. Class with a few
309            test for the Layer.SetShapeStore method
310    
311    2003-05-28  Jan-Oliver Wagner <[email protected]>
312    
313            * Thuban/Model/layer.py (Layer.TreeInfo): Fixed a bug (a layer
314            does not necessarily have a filename).
315    
316    2003-05-28  Jan-Oliver Wagner <[email protected]>
317    
318            * Thuban/UI/mainwindow.py (MainWindow.TableClose, MainWindow.TableShow):
319            sort the selection list for the dialog.
320    
321    2003-05-28  Frank Koormann  <[email protected]>
322    
323            * extensions/thuban/wxproj.cpp
324            (project_point): Removed cast to int for projected point coordinates.
325            (shape_centroid): Return last point if all polygon vertices fall
326            to one point.
327    
328    2003-05-28  Bernhard Herzog  <[email protected]>
329    
330            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
331            with layers that don't have shapestores, i.e. raster layers.
332    
333    2003-05-28  Bernhard Herzog  <[email protected]>
334    
335            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
336            when determining the title from the filename.
337    
338            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
339            reflect changes in the way the title is derived from the filename
340    
341    2003-05-28  Frank Koormann  <[email protected]>
342    
343            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
344            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
345    
346    2003-05-27  Bernhard Herzog  <[email protected]>
347    
348            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
349            delegate SelectedLayer.
350            (MainWindow.LayerUnjoinTable): Implement.
351            (_can_unjoin): New. Helper function for the sensitivity of the
352            layer/unjoin command.
353    
354            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
355            (DerivedShapeStore.OrigShapeStore): New. Return the original
356            shapestore. Used to figure out how to unjoin.
357            (DerivedShapeStore.Shapefile): Fix a typo.
358    
359    2003-05-27  Bernhard Herzog  <[email protected]>
360    
361            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
362            well
363            (JoinDialog.__init__): Use the layer parameter and only build the
364            left choice when a layer is given
365            (JoinDialog.OnJoin): Handle layer joins as well
366            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
367            that the user selects the "Select..." item. The sensitivitly
368            updating is now in update_sensitivity
369            (JoinDialog.y): New method to refactor the sensitivity update of
370            the join button into its own method.
371    
372            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
373    
374    2003-05-27  Bernhard Herzog  <[email protected]>
375    
376            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
377            iff there are unreferenced tables in the session
378    
379    2003-05-27  Bernhard Herzog  <[email protected]>
380    
381            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
382    
383            * Thuban/Model/session.py (Session.UnreferencedTables): New method
384            to return tables that are not referenced by other tables or shape
385            stores and can be removed.
386            (Session.RemoveTable): Issue a TABLE_REMOVED message after
387            removing the table
388    
389            * Thuban/UI/mainwindow.py: Remove unused imports
390            (MainWindow.TableClose): Implement.
391    
392            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
393            messages so that the frame will be automatically closed when a new
394            session is opened or the table is removed.
395            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
396            __init__
397            (TableFrame.close_on_session_replaced)
398            (TableFrame.close_on_table_removed): New. Subscribers that close
399            the window
400    
401            * test/test_session.py (TestSessionMessages.test_remove_table)
402            (TestSessionSimple.test_remove_table): Move the test to
403            TestSessionSimple and add test for the TABLE_REMOVED message
404            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
405            (TestSessionSimple.test_unreferenced_tables) New. Test for the
406            UnreferencedTables method.
407            (UnreferencedTablesTests): New. Class with some more sophisticated
408            tests for UnreferencedTables.
409    
410    2003-05-27  Frank Koormann  <[email protected]>
411    
412            * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
413            display has some unwanted side effects. Removed again.
414    
415    2003-05-27  Frank Koormann  <[email protected]>
416    
417            * Resources/Bitmaps/legend_icon_layer.xpm: New, icon for legend.
418    
419            * Thuban/UI/legend.py (LegendTree.__FillTree): Use "legend_icon_layer"
420    
421    2003-05-27  Jan-Oliver Wagner <[email protected]>
422    
423            * test/test_menu.py (MenuTest.test): Added test for
424            Menu.RemoveItem().
425    
426            * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
427            the menu.
428    
429    2003-05-27  Frank Koormann  <[email protected]>
430            
431            Nonmodal dialogs without parent (i.e. they can fall behind the main
432            window)
433    
434            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Explicitly destroy
435            all dialogs in the dialogs dictionary and the canvas.
436    
437            * Thuban/UI/dialogs.py (NonModalNonParentDialog): New class, without
438            parent, i.e. can fall behind other windows.
439            (NonModalDialog.OnClose): Check is dialog is in mainwindow.dialog
440            dictionary before removing it.
441    
442            * Thuban/UI/classifier.py: Dialog derived from NonModalNonParentDialog
443    
444            * Thuban/UI/projdialog.py: Dialog derived from NonModalNonParentDialog
445            * Thuban/UI/tableview.py: Dialog derived from NonModalNonParentDialog
446            * Thuban/UI/tree.py: Dialog derived from NonModalNonParentDialog
447    
448    2003-05-27  Bernhard Herzog  <[email protected]>
449    
450            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): New. Open a
451            tableview dialog
452            (MainWindow.TableShow): Use ShowTableView to open the dialogs.
453            Also, don't use the table's titles as the dialog names. The titles
454            aren't guaranteed to be unique.
455            (MainWindow.TableOpen): Open a table view dialog after opening the
456            table
457    
458  2003-05-27  Bernhard Herzog  <[email protected]>  2003-05-27  Bernhard Herzog  <[email protected]>
459    
460          * Thuban/UI/mainwindow.py: Remove the Table/Hide menu item. Its          * Thuban/UI/mainwindow.py: Remove the Table/Hide menu item. Its

Legend:
Removed from v.1053  
changed lines
  Added in v.1197

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26