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

Legend:
Removed from v.1077  
changed lines
  Added in v.1169

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26