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

Legend:
Removed from v.1071  
changed lines
  Added in v.1172

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26