/[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 924 by frank, Mon May 19 09:12:42 2003 UTC revision 1191 by jonathan, Thu Jun 12 17:01:45 2003 UTC
# Line 1  Line 1 
1    2003-06-12  Jonathan Coles   <[email protected]>
2    
3            * Thuban/Lib/fileutil.py: As is done under Windows, create the
4            user directory if it doesn't exist on a posix system.
5    
6            * Thuban/Model/resource.py (get_user_proj_files): Moved the
7            called to get_application_dir here, so that the directory
8            will only be called if this method is invoked.
9    
10            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): Clear
11            the projfilepath if no projection is selected.
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            * Thuban/Model/resource.py: Fix missed proj functions that
23            needed to be renamed.
24    
25    2003-06-12  Jonathan Coles   <[email protected]>
26    
27            * Thuban/Model/classification.py: Removed assert statements that
28            tested if the variable was an instance of Color.
29    
30            * Thuban/Model/color.py (Color): Remove commented code that isn't
31            used.
32            (Transparent): Renamed from NoColor. Doesn't inherit from Color.
33            Fixes RTbug #1835.
34            (Transparent.__eq__, Transparent.__ne, Transparent.__repr): New.
35            Needed now that the class doesn't inherit from Color.
36    
37    2003-06-12  Jonathan Coles   <[email protected]>
38    
39            * test/test_save.py (XMLWriterTest.testEncode): Explicitly
40            check unicode strings.
41    
42            * test/test_layer.py: Check for existence of gdal.
43    
44    2003-06-12  Jonathan Coles   <[email protected]>
45        
46            * Thuban/Model/xmlreader.py: New. Contains the XMLReader class
47            that was in load.py
48    
49            * Thuban/Model/xmlwriter.py: New. Contains the XMLWriter class
50            that was in save.py
51    
52    2003-06-12  Jonathan Coles   <[email protected]>
53    
54            This is largely a collection of bug fixes. We also handle the
55            case where gdal is not on the system. The XMLReader and XMLWriter
56            classes were moved into there own files to resolve some circular
57            import references and because they shouldn't really be in the
58            file that is dediciated to reading/writing session files since
59            they are also used elsewhere.
60    
61            * Thuban/Model/classgen.py: Renamed functions to follow the
62            function_names_with_underscores style. Fixes RTbug #1903.
63            (calculate_quantiles): Raise ValueError if 'percents' is invalid.
64    
65            * Thuban/Model/layer.py: Import gdal only if it available.
66            (RasterLayer): Handle the case where the gdal library is unavailable.
67            Addresses RTbug #1877.
68    
69            * Thuban/Model/load.py (XMLReader): Moved into seperate file
70            xmlreader.py.
71    
72    2003-06-12  Jonathan Coles   <[email protected]>
73    
74            This is largely a collection of bug fixes. We also handle the
75            case where gdal is not on the system. The XMLReader and XMLWriter
76            classes were moved into there own files to resolve some circular
77            import references and because they shouldn't really be in the
78            file that is dediciated to reading/writing session files since
79            they are also used elsewhere.
80    
81            * Thuban/Model/classgen.py: Renamed functions to follow the
82            function_names_with_underscores style. Fixes RTbug #1903.
83            (calculate_quantiles): Raise ValueError if 'percents' is invalid.
84    
85            * Thuban/Model/layer.py: Import gdal only if it available.
86            (RasterLayer): Handle the case where the gdal library is unavailable.
87            Addresses RTbug #1877.
88    
89            * Thuban/Model/load.py (XMLReader): Moved into seperate file
90            xmlreader.py.
91    
92            * Thuban/Model/save.py (escape, XMLWriter): Moved into seperate
93            file xmlwriter.py.
94    
95            * Thuban/Model/resource.py: Renamed functions to following the
96            function_names_with_underscores style.
97            (has_gdal_support): New function that returns true if the gdal
98            library is available. Addresses RTbug #1877.
99    
100            * Thuban/UI/application.py (ThubanApplication.OpenSession):
101            Display a message box if the gdal library is not available, but
102            only if there are any layers that would use it. Addresses RTbug #1877.
103    
104            * Thuban/UI/classgen.py: Use renamed projection resource functions.
105            (GenUniformPanel.__CalcStepping): Fix a slight discrepency
106            when using integers versus floats.
107    
108            * Thuban/UI/mainwindow.py (_has_gdal_support): New. Used to
109            determine if the "Add Image Layer" menu option should be
110            greyed out or not. Addresses RTbug #1877.
111    
112            * Thuban/UI/projdialog.py: Use renamed projection resource functions.
113    
114            * Thuban/UI/renderer.py (MapRenderer.render_map): Only try to
115            optimize if a raster layer is visible. Fixes RTbug #1931.
116            Only draw the raster layer if the gdal library is available.
117            Addresses RTbug #1877.
118    
119            * test/test_classgen.py: Add tests for generate_singletons,
120            generate_uniform_distribution, generate_quantiles. Fixes RTbug #1903.
121            (test_calculate_quantiles): Fix some tests to catch the new
122            ValueError that is raised.
123    
124            * test/test_proj.py: Use renamed projection resource functions.
125    
126            * test/test_save.py (SaveSessionTest.testClassifiedLayer): New
127            test for saving classified layers. Fixes RTbug #1902.
128            (XMLWriterTest): New. Tests the XMLWriter class. Fixes RTbug #1851.
129    
130    2003-06-12  Jan-Oliver Wagner <[email protected]>
131    
132            Fix for http://intevation.de/rt/webrt?serial_num=1900.
133    
134            * Thuban/UI/multiplechoicedialog.py: New. A multiple choice dialog.
135    
136            * Thuban/UI/mainwindow.py: import wxMultipleChoiceDialog from
137            multiplechoicedialog.py rather than from the wxPython library.
138    
139    2003-06-11  Frank Koormann  <[email protected]>
140    
141            * Thuban/Lib/fileutil.py (get_application_dir): Minor stability
142            update.
143    
144    2003-06-11  Frank Koormann  <[email protected]>
145    
146            * Thuban/Lib/fileutil.py (get_application_dir): New function to
147            determine the absolute .thuban/thuban directory under
148            "posix" (os.expanduser) and "nt" (read AppData registry key).
149    
150            * Thuban/Model/resource.py: Use get_application_dir
151    
152            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
153            Use get_application_dir.
154    
155    2003-06-10  Bernhard Herzog  <[email protected]>
156    
157            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Subscribe to
158            the messages MAP_LAYERS_REMOVED messages
159            (LayerTableFrame.OnClose): Unsubscribe from it.
160            (LayerTableFrame.map_layers_removed): New. Receiver for
161            MAP_LAYERS_REMOVED. Close the dialog when the layer whose the
162            dialog is showing is removed.
163    
164    2003-06-10  Bernhard Herzog  <[email protected]>
165    
166            * Thuban/Lib/connector.py (Connector.Issue): Iterate over a copy
167            of the receivers list so that unsubscribing in a receiver doesn't
168            modify it while iterating over it.
169    
170            * test/test_connector.py
171            (ConnectorTest.test_disconnect_in_receiver): New. Test whether
172            unsubscribing in a receiver works correctly. See docstring for
173            details
174    
175    2003-06-10  Bernhard Herzog  <[email protected]>
176    
177            * Thuban/Model/messages.py (LAYER_SHAPESTORE_REPLACED): New
178            message.
179    
180            * Thuban/Model/layer.py (Layer.SetShapeStore): Send
181            LAYER_SHAPESTORE_REPLACED when the shapestore changes. A
182            LAYER_CHANGED will still be sent if the classification changes.
183    
184            * Thuban/UI/classifier.py (Classifier.__init__): Add the map as
185            parameter so we can subscribe to some of its messages
186            (Classifier.__init__): Subscribe to the map's MAP_LAYERS_REMOVED
187            and the layer's LAYER_SHAPESTORE_REPLACED
188            (Classifier.unsubscribe_messages): New. Unsubscribe from message
189            subscribed to in __init__
190            (Classifier.map_layers_removed)
191            (Classifier.layer_shapestore_replaced): receivers for the messages
192            subscribed to in __init__. Unsubscribe and close the dialog
193    
194            * Thuban/UI/mainwindow.py (MainWindow.OpenLayerProperties): Pass
195            the map to the Classifier dialog
196    
197            * test/test_layer.py (SetShapeStoreTests): Derive from
198            SubscriberMixin as well so we can test messages
199            (SetShapeStoreTests.setUp): Subscribe to some of the layer's
200            messages
201            (SetShapeStoreTests.tearDown): Clear the messages again
202            (SetShapeStoreTests.test_sanity): Expand the doc-string and check
203            for the modified flag too
204            (SetShapeStoreTests.test_set_shape_store_modified_flag): New test
205            to check whether SetShapeStore sets the modified flag
206            (SetShapeStoreTests.test_set_shape_store_different_field_name)
207            (SetShapeStoreTests.test_set_shape_store_same_field)
208            (SetShapeStoreTests.test_set_shape_store_same_field_different_type):
209            Add tests for the messages. This checks both the new
210            LAYER_SHAPESTORE_REPLACED and the older LAYER_CHANGED
211    
212    2003-06-06  Jan-Oliver Wagner <[email protected]>
213    
214            * Thuban/UI/mainwindow.py: Improved and partly added help texts for
215            the menu items.
216    
217    2003-06-05  Frank Koormann  <[email protected]>
218    
219            * Thuban/UI/identifyview.py (IdentifyView.__init__):
220            Layout reimplemented without panel. Make life easier to fit the list
221            in the dialog.
222    
223    2003-06-05  Frank Koormann  <[email protected]>
224    
225            * Thuban/UI/projdialog.py (ProjFrame.__init__): Fill the projchoice
226            once on initialisation (Former implementation resulted in multiple
227            entries for each projection).
228            (ProjFrame.__FillAvailList): selectProj as second optional parameter,
229            if set, select the projection found under the specified name. This
230            overwrites any other selection estimate.
231            Removed projchoice filling from this method.
232            (ProjFrame._OnSave, ProjFrame._OnAddToList):
233            Updated call of ProjFrame.__FillAvailList
234            (LCCPanel._DoLayout): Moved parameter controls in more common order.
235    
236            * Resources/Projections/defaults.proj: Extended defaults representing
237            various common European projections.
238    
239    2003-06-05  Frank Koormann  <[email protected]>
240    
241            * Thuban/UI/identifyview.py (IdentifyView.__init__):
242            Use ListCtrl instead of GridCtrl
243    
244            * Thuban/Model/resource.py:
245            Guess location of .thuban directory from tempdir parent directory.
246    
247            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
248            Guess location of .thuban directory from tempdir parent directory.
249    
250    2003-06-04  Bernhard Herzog  <[email protected]>
251    
252            Do not cache the values returned by the tree widget's
253            GetFirstChild and GetNextChild methods because it led to lots of
254            segfaults. The new way requires more brute force but is more
255            reliable.
256    
257            * Thuban/UI/legend.py (LegendTree.__init__): Remove instance
258            variable layer2id
259            (LegendTree.find_layer): New method to do with brute force what
260            layer2id tried to accomplish
261            (LegendTree._OnMsgLayerChanged)
262            (LegendTree._OnMsgLayerTitleChanged, LegendTree.__ShowHideLayer):
263            Use find_layer instead of layer2id
264            (LegendTree.__RemoveLayer, LegendTree.__AddLayer): No need to
265            update layer2id anymore
266            (LegendTree._OnMsgMapLayersRemoved)
267            (LegendTree._OnMsgMapLayersAdded): Get by without layer2id.
268    
269    2003-06-03  Thomas Koester  <[email protected]>
270    
271            * Thuban/Model/classgen.py (GenQuantiles0): New function.
272    
273    2003-06-02  Bernhard Herzog  <[email protected]>
274    
275            * Thuban/UI/mainwindow.py (layer_rename command, table_rename command):
276            New commands.
277            (main_menu): Add the new commands.
278            (MainWindow.TableRename): New. Implementation of the table_rename
279            command.
280            (MainWindow.RenameLayer): New. Implementation of the layer_rename
281            command.
282    
283            * Thuban/Model/session.py (Session.AddTable): call self.changed to
284            set the modified flag
285    
286            * test/test_session.py (TestSessionSimple.test_add_table): Test
287            whether the modified flag is set properly
288    
289            * Thuban/Model/base.py (TitledObject.SetTitle): Call changed
290            instead of issue so that the modified flags get updated.
291    
292            * test/test_base.py (SomeTitledObject): Derive from Modifiable
293            instead of Publisher to reflect reality better and to accomodate
294            the fact that SetTitle now calls changed instead of issue
295    
296    2003-06-02  Bernhard Herzog  <[email protected]>
297    
298            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Resource
299            acquisition has to happen before the try in a try-finally.
300    
301    2003-06-02  Bernhard Herzog  <[email protected]>
302    
303            * Thuban/UI/legend.py (LegendTree._OnMsgMapLayersRemoved): It's
304            possible that a layer is removed that is not currently selected in
305            the legend so don't check for this.
306    
307    2003-05-30  Bernhard Herzog  <[email protected]>
308    
309            * Thuban/Model/layer.py (Layer.Destroy): Set all instance
310            variables to None that have direct or indirect references to
311            shapefiles or dbf files to make sure that they do go away and the
312            files are closed.
313    
314    2003-05-30  Bernhard Herzog  <[email protected]>
315    
316            * Thuban/UI/legend.py (LegendTree.GetRootItem): Reset
317            availImgListIndices when a new image list is created
318            
319    2003-05-30  Bernhard Herzog  <[email protected]>
320    
321            * Thuban/UI/legend.py (LegendTree.__init__): New instance variable
322            changing_selection to indicate whether the LegendTree code itself
323            is currently changing the selection
324            (LegendTree.normalize_selection): New method to normalize the
325            selection by selecting the layer item even if the user clicked on
326            the classification.
327            (LegendTree._OnSelChanged): normalize the selection. This works
328            around a bug in wx which doesn't keep track of the selection
329            properly when subtrees are deleted.
330    
331    2003-05-30  Bernhard Herzog  <[email protected]>
332    
333            * Thuban/UI/view.py (MapCanvas.set_view_transform): Limit the
334            maximum and minimum scale factors.
335    
336            * test/test_classgen.py (ClassGenTest.test): Update to reflect the
337            changes in classgen.py
338    
339    2003-05-30  Jonathan Coles   <[email protected]>
340    
341            * Thuban/Model/classgen.py: Remove ClassGenerator class but make
342            all the methods functions. Fixes RTBug #1903.
343    
344            * Thuban/Model/map.py (Map.TopLayer, Map.BottomLayer): Renamed
345            to MoveLayerToTop and MoveLayerToBottom respectively. Fixes
346            RTBug #1907.
347    
348            * Thuban/UI/classgen.py: Use classgen functions that were part
349            of the ClassGenerator class. Put try/finally blocks around
350            code that uses wxBeginBusyCursor()/wxEndBusyCursor(). Fixes
351            RTBug #1904.
352    
353            * Thuban/UI/classifier.py: Remove unused import of ClassGenerator.
354    
355            * Thuban/UI/legend.py: The legend was cleared and repopulated any
356            time something changed which caused some state to be lost such
357            as which children were expanded or collapsed. Fixes RTBug #1901.
358            (LegendTree._OnMsgMapLayersAdded): Add only new layers.
359            (LegendTree.__OnMsgMapLayersRemoved): Remove layers that exist in
360            the legend but not in the map.
361            (LegendTree.__FillTree): Move main functionality out into smaller
362            methods that can be used by other methods.
363            (LegendTree.__FillTreeLayer): Reuse old slots in the image list
364            if they are available.
365            (LegendTree.DeleteAllItems): Renamed from __DeleteAllItems so
366            that we override the wxTreeCtrl method. Iterate over children
367            and call __RemoveLayer.
368            (LegendTree.__AddLayer): New. Add a new layer to the legend.
369            (LegendTree.__RemoveLayer): Remove a layer from the legend.
370            (LegendTree.DeleteChildren): New, overrides wxTreeCtrl method.
371            Should only be called with the id of a layer branch.
372            (LegendTree.GetRootItem): New, overrides wxTreeCtrl method.
373            Returns the root item or creates one if necessary.
374    
375            * Thuban/UI/renderer.py (MapRenderer.draw_raster_layer): Call
376            ProjectRasterFile with tuple arguments instead of strings.
377    
378            * Thuban/UI/tableview.py (QueryTableFrame.OnQuery): Wrap code
379            with try/finally. Fixes RTBug #1904.
380    
381            * Thuban/UI/view.py (MapCanvas.OnPaint): Wrap code
382            with try/finally. Fixes RTBug #1904.
383            (MapCanvas.FitSelectedToWindow): If a single point is selected
384            simply center it on the display. Fixes RTBug #1849.
385    
386            * extensions/thuban/gdalwarp.cpp: Removed code that allowed gdalwarp
387            to be compiled as a standalone app. Now the code can only be
388            called from Python which simplifies the parameter passing.
389            (ProjectRasterFile): Handle Python arguments. Remove code that
390            checks for a destination dataset. Add more clean up code.
391    
392            * test/test_map.py (TestMapWithContents.test_raise_layer_top,
393            TestMapWithContents.test_lower_layer_bottom):
394            Test Map.MoveLayerToTop() and Map.MoveLayerToBottom() respectively.
395            Fixes RTBug #1907.
396    
397            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Apply a full
398            extent to the map when the legend is toggled. Fixes RTBug #1881.
399    
400    2003-05-29  Jan-Oliver Wagner <[email protected]>
401    
402            * Thuban/UI/tableview.py (LayerTableFrame.OnClose): Bug-fix: Now
403            unsubscribes all that is subcribed in __init__.
404    
405    2003-05-28  Bernhard Herzog  <[email protected]>
406    
407            * Thuban/UI/mainwindow.py (MainWindow.DuplicateLayer)
408            (MainWindow.CanDuplicateLayer): New methods to implement the
409            Layer/Duplicate command.
410            (layer_duplicate command): New.
411            (main_menu): Add layer_duplicate to the Layer menu.
412    
413    2003-05-28  Bernhard Herzog  <[email protected]>
414    
415            * Thuban/UI/tableview.py (NullRenderer.Draw): New. Our own
416            renderer so that NULL/None values get displayed differently (by a
417            gray rectangle).
418            (TableGrid.__init__): Override the default renderers
419    
420    2003-05-28  Bernhard Herzog  <[email protected]>
421    
422            * Thuban/Model/layer.py (Layer.SetShapeStore): Set the
423            classification to "None" if the type of the field has changed.
424    
425            * test/test_layer.py (SetShapeStoreTests): New. Class with a few
426            test for the Layer.SetShapeStore method
427    
428    2003-05-28  Jan-Oliver Wagner <[email protected]>
429    
430            * Thuban/Model/layer.py (Layer.TreeInfo): Fixed a bug (a layer
431            does not necessarily have a filename).
432    
433    2003-05-28  Jan-Oliver Wagner <[email protected]>
434    
435            * Thuban/UI/mainwindow.py (MainWindow.TableClose, MainWindow.TableShow):
436            sort the selection list for the dialog.
437    
438    2003-05-28  Frank Koormann  <[email protected]>
439    
440            * extensions/thuban/wxproj.cpp
441            (project_point): Removed cast to int for projected point coordinates.
442            (shape_centroid): Return last point if all polygon vertices fall
443            to one point.
444    
445    2003-05-28  Bernhard Herzog  <[email protected]>
446    
447            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
448            with layers that don't have shapestores, i.e. raster layers.
449    
450    2003-05-28  Bernhard Herzog  <[email protected]>
451    
452            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
453            when determining the title from the filename.
454    
455            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
456            reflect changes in the way the title is derived from the filename
457    
458    2003-05-28  Frank Koormann  <[email protected]>
459    
460            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
461            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
462    
463    2003-05-27  Bernhard Herzog  <[email protected]>
464    
465            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
466            delegate SelectedLayer.
467            (MainWindow.LayerUnjoinTable): Implement.
468            (_can_unjoin): New. Helper function for the sensitivity of the
469            layer/unjoin command.
470    
471            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
472            (DerivedShapeStore.OrigShapeStore): New. Return the original
473            shapestore. Used to figure out how to unjoin.
474            (DerivedShapeStore.Shapefile): Fix a typo.
475    
476    2003-05-27  Bernhard Herzog  <[email protected]>
477    
478            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
479            well
480            (JoinDialog.__init__): Use the layer parameter and only build the
481            left choice when a layer is given
482            (JoinDialog.OnJoin): Handle layer joins as well
483            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
484            that the user selects the "Select..." item. The sensitivitly
485            updating is now in update_sensitivity
486            (JoinDialog.y): New method to refactor the sensitivity update of
487            the join button into its own method.
488    
489            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
490    
491    2003-05-27  Bernhard Herzog  <[email protected]>
492    
493            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
494            iff there are unreferenced tables in the session
495    
496    2003-05-27  Bernhard Herzog  <[email protected]>
497    
498            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
499    
500            * Thuban/Model/session.py (Session.UnreferencedTables): New method
501            to return tables that are not referenced by other tables or shape
502            stores and can be removed.
503            (Session.RemoveTable): Issue a TABLE_REMOVED message after
504            removing the table
505    
506            * Thuban/UI/mainwindow.py: Remove unused imports
507            (MainWindow.TableClose): Implement.
508    
509            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
510            messages so that the frame will be automatically closed when a new
511            session is opened or the table is removed.
512            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
513            __init__
514            (TableFrame.close_on_session_replaced)
515            (TableFrame.close_on_table_removed): New. Subscribers that close
516            the window
517    
518            * test/test_session.py (TestSessionMessages.test_remove_table)
519            (TestSessionSimple.test_remove_table): Move the test to
520            TestSessionSimple and add test for the TABLE_REMOVED message
521            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
522            (TestSessionSimple.test_unreferenced_tables) New. Test for the
523            UnreferencedTables method.
524            (UnreferencedTablesTests): New. Class with some more sophisticated
525            tests for UnreferencedTables.
526    
527    2003-05-27  Frank Koormann  <[email protected]>
528    
529            * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
530            display has some unwanted side effects. Removed again.
531    
532    2003-05-27  Frank Koormann  <[email protected]>
533    
534            * Resources/Bitmaps/legend_icon_layer.xpm: New, icon for legend.
535    
536            * Thuban/UI/legend.py (LegendTree.__FillTree): Use "legend_icon_layer"
537    
538    2003-05-27  Jan-Oliver Wagner <[email protected]>
539    
540            * test/test_menu.py (MenuTest.test): Added test for
541            Menu.RemoveItem().
542    
543            * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
544            the menu.
545    
546    2003-05-27  Frank Koormann  <[email protected]>
547            
548            Nonmodal dialogs without parent (i.e. they can fall behind the main
549            window)
550    
551            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Explicitly destroy
552            all dialogs in the dialogs dictionary and the canvas.
553    
554            * Thuban/UI/dialogs.py (NonModalNonParentDialog): New class, without
555            parent, i.e. can fall behind other windows.
556            (NonModalDialog.OnClose): Check is dialog is in mainwindow.dialog
557            dictionary before removing it.
558    
559            * Thuban/UI/classifier.py: Dialog derived from NonModalNonParentDialog
560    
561            * Thuban/UI/projdialog.py: Dialog derived from NonModalNonParentDialog
562            * Thuban/UI/tableview.py: Dialog derived from NonModalNonParentDialog
563            * Thuban/UI/tree.py: Dialog derived from NonModalNonParentDialog
564    
565    2003-05-27  Bernhard Herzog  <[email protected]>
566    
567            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): New. Open a
568            tableview dialog
569            (MainWindow.TableShow): Use ShowTableView to open the dialogs.
570            Also, don't use the table's titles as the dialog names. The titles
571            aren't guaranteed to be unique.
572            (MainWindow.TableOpen): Open a table view dialog after opening the
573            table
574    
575    2003-05-27  Bernhard Herzog  <[email protected]>
576    
577            * Thuban/UI/mainwindow.py: Remove the Table/Hide menu item. Its
578            effect can be achieved by simply closing the window showing the
579            table.
580            (MainWindow.TableHide): Removed.
581            (main_menu): Removed "table_hide"
582    
583    2003-05-27  Frank Koormann  <[email protected]>
584    
585            Fix legend tree display problems under Win32
586    
587            * Thuban/UI/legend.py:  BMP_SIZE_W = 15
588            (LegendTree.__FillTree): Display "legend_icon_map.xpm" with layer title.
589            (LegendTree.__FillTreeLayer): Explicitely set SelectedImage.
590    
591            * Resources/Bitmaps/legend_icon_map.xpm: New icon for legend.
592    
593    2003-05-27  Jan-Oliver Wagner <[email protected]>
594    
595            * Thuban/UI/menu.py (Menu.InsertSeparator): Additional optional parameter
596            'after' now allows to insert separators almost anywhere in the menu.
597    
598    2003-05-27  Frank Koormann  <[email protected]>
599    
600            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Underline the
601            "S" of selection box label to hint on hot key (Alt-S). Works under
602            Win32 but is ignored under GTK.
603    
604    2003-05-26  Frank Koormann  <[email protected]>
605    
606            * Thuban/UI/projdialog.py (ProjFrame.__do_layout, ProjPanel._DoLayout):
607            Center Choices.
608    
609    2003-05-26  Bernhard Herzog  <[email protected]>
610    
611            Remove the Precision methods again. They're too DBF specific to be
612            part of the table interface and they're only used in table_to_dbf
613            anyway.
614            
615            * Thuban/Model/transientdb.py (TransientTableBase.Width):Use a
616            fixed precision of 12 for doubles.
617            (TransientTableBase.Precision): Removed
618            (AutoTransientTable.Width): Delegate to self.table.
619    
620            * Thuban/Model/table.py (DBFTable.Precision)
621            (MemoryTable.Precision): Removed.
622            (MemoryTable.Width): Use a fixed precision of 12 for doubles.
623            (table_to_dbf): Use a fixed precision of 12 for floats unless the
624            column object specifies something else.
625    
626            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): New.
627            test for table_to_dbf
628    
629    2003-05-26  Bernhard Herzog  <[email protected]>
630    
631            * test/test_transientdb.py
632            (TestTransientTable.run_iceland_political_tests): Fix a comment.
633    
634    2003-05-26  Bernhard Herzog  <[email protected]>
635    
636            * Thuban/UI/mainwindow.py (MainWindow.TableOpen): Real
637            implementation. Mark parts of the file format strings for
638            localization.
639    
640            * Thuban/Model/session.py (Session.OpenTableFile): New. Open a dbf
641            file and add the table to the tables managed by the session
642    
643            * test/test_session.py (TestSessionSimple.test_open_table_file):
644            New. test case for OpenTableFile
645    
646    2003-05-26  Jan-Oliver Wagner <[email protected]>
647    
648            * Thuban/UI/controls.py, Thuban/UI/identifyview.py, Thuban/UI/join.py,
649            Thuban/UI/labeldialog.py, Thuban/UI/mainwindow.py,
650            Thuban/UI/proj4dialog.py, Thuban/UI/tableview.py, Thuban/UI/view.py:
651            Replace the true/false of wxWindows by True/False of Python 2.2.1.
652    
653    2003-05-26  Jan-Oliver Wagner <[email protected]>
654    
655            * Thuban/UI/tableview.py (LayerTableFrame.__init__): If there is
656            already a selection present, update the grid accordingly.
657    
658            * Thuban/UI/mainwindow.py (MainWindow.TableShow): Make the dialog
659            resizeable and increase its initial size.
660    
661    2003-05-26  Frank Koormann  <[email protected]>
662    
663            Table export functionality
664    
665            * Thuban/Model/table.py (DBFTable.Width, MemoryTable.Width):
666            Return width (in characters) for a column.
667            (DBFTable.Precision, MemoryTable.Precision): Return decimal precision.
668            (table_to_dbf): Write table to dbf file.
669            (table_to_csv): Write table to csv file.
670    
671            * Thuban/Model/transientdb.py (TransientTableBase.Width,
672            TransientTableBase.Precision): Return column width and precision.
673    
674            * Thuban/UI/tableview.py (QueryTableFrame.OnSaveAs): Call table_to_dbf
675            or table_to_csv depending on file selection.
676    
677            * test/test_dbf_table.py:
678            Test table_to_dbf (extension of former part of test).
679    
680            * test/test_csv_table.py:
681            Test table_to_csv.
682    
683    2003-05-23  Jan-Oliver Wagner <[email protected]>
684    
685            * Thuban/UI/join.py (JoinDialog.OnJoin): Use _() for strings.
686            Use QueryTableFrame instead of TableFrame.
687    
688            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Prefix the
689            table window with 'Layer Table:' instead of 'Table:'.
690    
691    2003-05-23  Jan-Oliver Wagner <[email protected]>
692    
693            Give all tables a title via mix-in TitledObject.LayerShowTable
694    
695            * Thuban/Model/base.py (TitledObject.SetTitle): Call method 'issue'
696            only if it exists.
697    
698            * Thuban/Model/table.py (DBFTable, MemoryTable): mix-in TitledObject
699            and call its init-method with a default title. Remove Title() method.
700    
701            * Thuban/Model/transientdb.py (TransientTable, TransientJoinedTable,
702            AutoTransientTable): mix-in TitledObject and call its init-method with
703            a default title. Remove Title() method.
704    
705    2003-05-23  Bernhard Herzog  <[email protected]>
706    
707            * Thuban/Model/session.py (Session.AddShapeStore): Define
708            AddShapeStore analogously to AddTable.
709    
710            * test/test_session.py (TestSessionSimple.test_add_shapestore):
711            New. Test for AddShapeStore
712    
713    2003-05-23  Jan-Oliver Wagner <[email protected]>
714    
715            Introducing QueryTableFrame and a very coarse ShowTable implementation.
716    
717            * Thuban/UI/tableview.py (LayerTableFrame, QueryTableFrame): Split the
718            class LayerTableFrame into two classes, LayerTableFrame and QueryTableFrame.
719            The latter implements the selection GUI without dependency on a layer.
720            LayerTableFrame now is derived from QueryTableFrame and connects
721            to a layer.
722    
723            * Thuban/UI/mainwindow.py (MainWindow.TableShow): A very coarse
724            implementation that still needs work.
725    
726            * Thuban/Model/layer.py (Layer.TreeInfo): Added filename.
727    
728    2003-05-22  Frank Koormann  <[email protected]>
729    
730            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
731            Added "outer_join = False" as optional parameter.
732            (TransientJoinedTable.create): If outer join is true, perform a
733            "LEFT OUTER JOIN" instead of "JOIN", which preserves all records of
734            the left table. Records not matching are filled with 0 / None.
735    
736            * Thuban/UI/join.py (JoinDialog.__init__): Checkbox for outer join.
737            (JoinDialog.OnJoin): Consider outer join check box.
738    
739    2003-05-22  Bernhard Herzog  <[email protected]>
740    
741            * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a
742            somewhat safer way. Storing the traceback in a local variable can
743            lead to memory leaks
744    
745    2003-05-22  Bernhard Herzog  <[email protected]>
746    
747            * Thuban/UI/join.py (JoinDialog.OnJoin): Make sure to really call
748            the wxMessageDialog's Destroy() method.
749    
750    2003-05-22  Frank Koormann  <[email protected]>
751    
752            * Thuban/UI/join.py (JoinDialog.__init__): Make use of
753            TransientTable.Title()
754    
755    2003-05-22  Frank Koormann  <[email protected]>
756    
757            Join Dialog, initial version.
758    
759            * Thuban/UI/mainwindow.py (MainWindow.TableJoin): Removed print.
760    
761            * Thuban/UI/join.py (JoinDialog): Functional implementation of
762            former framework. Renamed Table1/Table2 to LeftTable/RightTable
763            in all occurences.
764    
765            * Thuban/Model/transientdb.py (TransientJoinedTable.__doc__):
766            Typo fixed.
767    
768    2003-05-22  Bernhard Herzog  <[email protected]>
769    
770            Give the tables titles so that the GUI can display more meaningful
771            names. For now the titles are fixed but depend on e.g. filenames
772            or the titles of the joined tables.
773    
774            * Thuban/Model/transientdb.py (TransientTable.Title)
775            (TransientJoinedTable.Title, AutoTransientTable.Title): New.
776    
777            * Thuban/Model/table.py (DBFTable.Title, MemoryTable.Title): New.
778    
779            * test/test_transientdb.py
780            (TestTransientTable.test_auto_transient_table_title): New. Test
781            for the Title method
782            (TestTransientTable.test_transient_joined_table)
783            (TestTransientTable.test_transient_table): Add test for the Title
784            methods
785    
786            * test/test_memory_table.py (TestMemoryTable.test_title): New.
787            Test for the Title method
788    
789            * test/test_dbf_table.py (TestDBFTable.test_title): New. Test for
790            the Title method
791    
792    2003-05-22  Bernhard Herzog  <[email protected]>
793    
794            * test/test_layer.py (TestLayer.setUp, TestLayer.tearDown):
795            Provide a better way to destroy the layers
796            (TestLayer.test_base_layer, TestLayer.test_arc_layer)
797            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
798            (TestLayer.test_polygon_layer, TestLayer.test_get_field_type): Use
799            the new way to destroy the layers.
800            (TestLayer.test_derived_store): New. Test for using a layer with a
801            DerivedShapeStore
802    
803            * Thuban/Model/layer.py (Layer.SetShapeStore): Only set the
804            filename if the shape store actually has one.
805    
806    2003-05-22  Bernhard Herzog  <[email protected]>
807    
808            * Thuban/Model/table.py (DBFTable.FileName): New. Accessor method
809            for the filename
810    
811            * test/test_dbf_table.py (TestDBFTable.test_filename): New. Test
812            for the FileName method
813            (TestDBFTableWriting.test_write): Fix spelling of filename
814    
815    2003-05-22  Thomas Koester  <[email protected]>
816    
817            * Thuban/Model/range.py, test/test_range.py: Brought over new Range
818            from SciParam that now really is immutable.
819    
820    2003-05-22  Frank Koormann  <[email protected]>
821    
822            Layer Top/Bottom placement added to legend.
823    
824            * Thuban/UI/legend.py
825            (LegendPanel._OnMoveTop(), LayerPanel._OnMoveBottom): New, methods
826            bound to tool events.
827            (LegendTree.MoveCurrentItemTop(), LegendTree.MoveCurrentItemBottom):
828            New, methods binding the event methods with the map methods.
829    
830            * Thuban/Model/map.py (Map.TopLayer(), Map.BottomLayer()): New, place
831            layer at top/bottom of layer stack.
832    
833            * Resources/Bitmaps/top_layer.xpm: New button icon.
834    
835            * Resources/Bitmaps/bottom_layer.xpm: New button icon.
836    
837    2003-05-22  Bernhard Herzog  <[email protected]>
838    
839            * Thuban/Model/session.py (Session.RemoveTable): New method to
840            remove tables
841    
842            * test/test_session.py (TestSessionSimple.test_remove_table): New.
843            Test for RemoveTable
844    
845    2003-05-22  Thomas Koester  <[email protected]>
846    
847            * Thuban/Model/classgen.py: Added short module doc string and CVS id.
848            (ClassGenerator.GenUniformDistribution): Use new Range __init__, too.
849    
850    2003-05-22  Bernhard Herzog  <[email protected]>
851    
852            Implement a way to discover dependencies between tables and
853            shapestores.
854    
855            * Thuban/Model/transientdb.py (TransientTableBase.Dependencies)
856            (TransientJoinedTable.Dependencies)
857            (AutoTransientTable.SimpleQuery): New. Implement the dependencies
858            interface
859            (TransientJoinedTable.__init__): Keep tack of the original table
860            objects in addition to the corresponding transient tables.
861    
862            * Thuban/Model/table.py (DBFTable.Dependencies)
863            (MemoryTable.Dependencies): New. Implement the dependencies
864            interface
865    
866            * Thuban/Model/data.py (ShapeTable): New. Helper class for
867            ShapefileStore
868            (ShapefileStore.__init__): Use ShapeTable instead of
869            AutoTransientTable
870            (ShapefileStore.Table, ShapefileStore.Shapefile): Add doc-strings
871            (ShapefileStore.FileName, ShapefileStore.FileType): New. Accessor
872            methods for filename and type
873            (ShapefileStore.Dependencies): New. Implement the dependencies
874            interface
875            (DerivedShapeStore): New class to replace SimpleStore. The main
876            difference to SimpleStore is that it depends not on a shapefile
877            but another shapestore which expresses the dependencies a bit
878            better
879            (SimpleStore.__init__): Add deprecation warning.
880    
881            * test/test_dbf_table.py (TestDBFTable.test_dependencies): New.
882            Test for the Dependencies method.
883    
884            * test/test_memory_table.py (TestMemoryTable.test_dependencies):
885            New. Test for the Dependencies method.
886    
887            * test/test_transientdb.py
888            (TestTransientTable.test_auto_transient_table_dependencies): New.
889            Test for the Dependencies method.
890            (TestTransientTable.test_transient_joined_table): Add test for the
891            Dependencies method.
892    
893            * test/test_session.py (TestSessionSimple.setUp)
894            (TestSessionSimple.tearDown): New. Implement a better way to
895            destroy the sessions.
896            (TestSessionSimple.test_initial_state)
897            (TestSessionSimple.test_add_table): Bind session to self.session
898            so that it's destroyed by tearDown
899            (TestSessionSimple.test_open_shapefile): New. Test for
900            OpenShapefile and the object it returns
901    
902    2003-05-22  Bernhard Herzog  <[email protected]>
903    
904            * Thuban/Model/session.py (Session.AddTable): New method to
905            register tables with the session.
906            (Session.Tables): Return the tables registered with AddTable too.
907    
908            * test/test_session.py (TestSessionSimple.test_add_table): New.
909            Test case for the AddTable method
910    
911    2003-05-22  Frank Koormann  <[email protected]>
912    
913            UI polishing updates: Place main buttons (OK, Cancel, etc) in the
914            lower right corner, center labels for selections, initialize controls
915            in reasonable order for keyboard navigation.
916    
917            * Thuban/UI/projdialog.py (ProjFrame.__init__, ProjFrame.__doLayout)
918            (ProjFrame.__DoOnProjAvail): Determine position of current projection
919            using the wxListBox.FindString() method. Still a problem (#1886)
920    
921            * Thuban/UI/classifier.py
922            (Classifier.__init__, SelectPropertiesDialog.__init__)
923    
924            * Thuban/UI/classgen.py (ClassGenDialog.__init__,
925            (ClassGenDialog.__DoOnGenTypeSelect): Moved initialization of the
926            different classification types from here to __init__.
927            (GenUniquePanel.__init__): Set the column width of the first field
928            in the Field ListCtrl to the full width.
929    
930            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Rename 'Save As'
931            Button to 'Export'. Center Buttons in Selection Box, set Focus to
932            Grid.
933            (LayerTableFrame.OnKeyDown()): New, bound to the grid with EVT_KEY_DOWN,
934            changes focus to the Selection when pressing "Alt-S".
935    
936            * Thuban/UI/legend.py (LegendTree.__SetVisibilityStyle): Only gray out
937            the text if not visible. The italic font sometimes exceeds the
938            rendering area.
939    
940    2003-05-21  Jonathan Coles   <[email protected]>
941    
942            * Thuban/UI/dock.py (DockFrame): Rename references to _OnClose
943            to OnClose so that Thuban closes correctly.
944    
945            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Call
946            DockFrame.OnClose, not DockFrame._OnClose.
947    
948    2003-05-21  Jonathan Coles   <[email protected]>
949    
950            * Thuban/Model/classgen.py (ClassGenerator.GenQuantiles): Remove
951            references to 'inf' and use new Range __init__ to pass floats
952            directly rather than converting them to strings first.
953            Fixes RTBug #1876.
954    
955            * Thuban/Model/classification.py (ClassGroupRange.SetRange):
956            Use new Range ___init__ to pass floats.
957    
958            * Thuban/Model/layer.py (RasterLayer.__init__): Test if the
959            filename is a valid image file. Throw IOError otherwise.
960    
961            * Thuban/Model/range.py: Brought over new Range from SciParam that
962            is immutable and has an __init__ which can accept floats.
963    
964            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Move OpenShapefile
965            into try block. AddLayer doesn't throw any exceptions anymore.
966            (MainWindow.AddRasterLayer): Move constructor of RasterLayer into
967            try block.
968    
969            * Thuban/UI/projdialog.py (GeoPanel.__init__): Put Degrees as
970            the first item in choices. Fixes RTBug #1882.
971    
972            * Thuban/UI/renderer.py (MapRenderer.render_map): Check if scale
973            has gone to 0 which is a serious problem. abort.
974            (MapRenderer.draw_raster_layer): Catch IOError seperately and
975            print the error from GDAL.
976    
977            * Thuban/UI/tableview.py (TableGrid.__init__): Call
978            ToggleEventListeners to turn on listening.
979            (TableGrid.ToggleEventListeners): New. Turns event listening on
980            and off so as to prevent excessive messages.
981            (LayerTableFrame.OnQuery): Use TableGrid.ToggleEventListeners
982            to suppress excessive messages when selecting many rows.
983            Fixes RTBug #1880.
984    
985            * Thuban/UI/view.py: Added checks against if scale == 0. This
986            is a serious problem that can occur when an image without
987            geo data is loading and causes the map projection bounds to
988            go to infinity. Right now, the solution is to simply try
989            to recover.
990    
991            * extensions/thuban/cpl_mfile.cpp (MFILEClose): Make sure
992            to set the MFILEReceiver attributes even if the data is NULL.
993    
994            * extensions/thuban/gdalwarp.cpp: Improved the error handling
995            and passed GDAL messages back up to the Python layer. Also
996            tried to fix some memory leaks that were present in the original
997            utility but didn't matter because the program aborted.
998    
999            * test/test_range.py: Copied over tests from SciParam. Removed
1000            tests against importing. Fixes RTBug #1867.
1001    
1002    2003-05-21  Bernhard Herzog  <[email protected]>
1003    
1004            * test/test_load.py: Remove unused imports and restructure the
1005            test code
1006            (LoadSessionTest): Split into one class for each test and turn
1007            LoadSessionTest itself into the base class for all such session
1008            tests.
1009            (ClassificationTest): New base class for load tests that test
1010            classifications
1011            (TestSingleLayer, TestLayerVisibility, TestClassification)
1012            (TestLabels, TestLayerProjection, TestRasterLayer): New classes
1013            for the individual tests
1014    
1015            * test/support.py (FileLoadTestCase.filename): New base class for
1016            file loading tests
1017    
1018    2003-05-21  Jan-Oliver Wagner <[email protected]>
1019    
1020            * Resources/Projections/defaults.proj: Renamed 'Universal Transverse
1021            Mercator' to 'UTM Zone 32' as a more convenient example.
1022            Added 'Gauss Krueger Zone 6'.
1023    
1024            * Data/iceland_sample_raster.thuban: political polygon now
1025            filled transparent to have the raster image visible at once.
1026    
1027    2003-05-21  Frank Koormann  <[email protected]>
1028    
1029            * Thuban/UI/mainwindow.py (MainWindow): Renamed _OnClose() back to
1030            OnClose() to keep in sync with extensions. Internally Thuban
1031            still uses "underscored" names.
1032    
1033    2003-05-20  Jonathan Coles   <[email protected]>
1034    
1035            This puts back Raster layer support. These layers support projections
1036            through the GDAL library. Currently, the CVS version is being used.
1037            There are no Debian packages available although this may change soon.
1038            A GDAL driver was extended to support writing to memory rather to
1039            files.
1040    
1041            There is still some work that needs to be done, such as some error
1042            handling when loading invalid images or when there is a problem
1043            projecting the image. This putback simply checks in the majority
1044            of the work.
1045    
1046            * setup.py: Add gdalwarp library extension.
1047    
1048            * Thuban/Model/layer.py (BaseLayer.HasClassification): New.
1049            Defaults to False, but can be overridden by subclasses if they
1050            support classification.
1051            (RasterLayer): New. Defines a new layer that represents an
1052            image.
1053    
1054            * Thuban/Model/load.py (SessionLoader.__init__): Add rasterlayer
1055            tag handler.
1056            (SessionLoader.start_layer): Encode the filename.
1057            (SessionLoader.start_rasterlayer, SessionLoader.end_rasterlayer):
1058            New. Supports reading a rasterlayer tag.
1059    
1060            * Thuban/Model/map.py (Map.BoundingBox): Fix typo in comment.
1061    
1062            * Thuban/Model/save.py (XMLWriter.encode): Don't assume that we
1063            get a string in Latin1. If we get such as string convert it to
1064            unicode first, otherwise leave if alone before encoding.
1065            (SessionSaver.write_layer): Add support for writing both Layers
1066            and RasterLayers.
1067    
1068            * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):
1069            The right argument may not be a string, it could also be a Column.
1070    
1071            * Thuban/UI/application.py (ThubanApplication.CreateMainWindow):
1072            Make initial window size 600x400. Fixes RTBug #1872.
1073    
1074            * Thuban/UI/classifier.py (Classifier.__init__): Rearrange how
1075            the dialog is constructed so that we can support layers that
1076            do not have classifications.
1077            (Classifier._OnTry): Only build a classification if the layer
1078            supports one.
1079    
1080            * Thuban/UI/legend.py: Change all checks that a layer is an
1081            instance of Layer into checks against BaseLayer.
1082            (LegendTree.__FillTreeLayer): Only add children to a branch if
1083            the layer supports classification.
1084    
1085            * Thuban/UI/mainwindow.py (MainWindow.NewSession,
1086            MainWindow.OpenSession): Don't proceed with an action if the
1087            user chooses Cancel when they are asked to save changes.
1088            (MainWindow.AddRasterLayer): New. Open a dialog to allow the
1089            user to select an image file. Create a new RasterLayer and add
1090            it to the map.
1091    
1092            * Thuban/UI/renderer.py (MapRenderer.render_map): Add support
1093            for rendering RasterLayer layers.
1094            (MapRenderer.draw_raster_layer): Actually method that calls
1095            the GDALWarp python wrapper and constructs an image from the
1096            data returned.
1097    
1098            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Change the
1099            Choices symbols to match those used in the table query method.
1100            Replace deprecated method calls on table with new method names.
1101    
1102            * Thuban/UI/view.py (MapCanvas.set_view_transform): Try to limit
1103            how small the scale can get. This still needs more testing.
1104    
1105            * extensions/thuban/bmpdataset.cpp: New, but copied from GDAL.
1106            Provides a driver to output in .bmp format.
1107    
1108            * extensions/thuban/cpl_mfile.cpp, extensions/thuban/cpl_mfile.h:
1109            New. Provides IO routines which write to memory, rather than a file.
1110    
1111            * extensions/thuban/gdalwarp.cpp: New, but basically a direct copy
1112            of the gdalwarp utility provided in GDAL. Added function calls
1113            that can be accessed from python.
1114    
1115            * Data/iceland_sample_raster.thuban: New. Sample file that uses
1116            a raster layer.
1117    
1118            * Data/iceland/island.tfw, Data/iceland/island.tif: New. Raster
1119            layer image data.
1120    
1121            * Doc/thuban.dtd: Added rasterlayer attribute definition.
1122    
1123            * test/test_layer.py, test/test_load.py, test/test_save.py: Added
1124            tests associated with the raster layer code.
1125    
1126            * test/test_transientdb.py
1127            (TestTransientTable.test_auto_transient_table_query): Added a test
1128            for using a Column object as the "right" parameter to a query.
1129    
1130    2003-05-19  Frank Koormann  <[email protected]>
1131    
1132            * Thuban/version.py (get_changelog_date):
1133            Catch exceptions if ChangeLog does not exist.
1134    
1135            * Thuban/UI/view.py (MapCanvas.Export): Bugfix
1136    
1137  2003-05-19  Frank Koormann  <[email protected]>  2003-05-19  Frank Koormann  <[email protected]>
1138    
1139          Extended version information for Thuban          Extended version information for Thuban

Legend:
Removed from v.924  
changed lines
  Added in v.1191

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26