/[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 1083 by frank, Wed May 28 10:04:30 2003 UTC
# Line 1  Line 1 
1    2003-05-28  Frank Koormann  <[email protected]>
2    
3            * extensions/thuban/wxproj.cpp
4            (project_point): Removed cast to int for projected point coordinates.
5            (shape_centroid): Return last point if all polygon vertices fall
6            to one point.
7    
8    2003-05-28  Bernhard Herzog  <[email protected]>
9    
10            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
11            with layers that don't have shapestores, i.e. raster layers.
12    
13    2003-05-28  Bernhard Herzog  <[email protected]>
14    
15            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
16            when determining the title from the filename.
17    
18            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
19            reflect changes in the way the title is derived from the filename
20    
21    2003-05-28  Frank Koormann  <[email protected]>
22    
23            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
24            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
25    
26    2003-05-27  Bernhard Herzog  <[email protected]>
27    
28            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
29            delegate SelectedLayer.
30            (MainWindow.LayerUnjoinTable): Implement.
31            (_can_unjoin): New. Helper function for the sensitivity of the
32            layer/unjoin command.
33    
34            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
35            (DerivedShapeStore.OrigShapeStore): New. Return the original
36            shapestore. Used to figure out how to unjoin.
37            (DerivedShapeStore.Shapefile): Fix a typo.
38    
39    2003-05-27  Bernhard Herzog  <[email protected]>
40    
41            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
42            well
43            (JoinDialog.__init__): Use the layer parameter and only build the
44            left choice when a layer is given
45            (JoinDialog.OnJoin): Handle layer joins as well
46            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
47            that the user selects the "Select..." item. The sensitivitly
48            updating is now in update_sensitivity
49            (JoinDialog.y): New method to refactor the sensitivity update of
50            the join button into its own method.
51    
52            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
53    
54    2003-05-27  Bernhard Herzog  <[email protected]>
55    
56            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
57            iff there are unreferenced tables in the session
58    
59    2003-05-27  Bernhard Herzog  <[email protected]>
60    
61            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
62    
63            * Thuban/Model/session.py (Session.UnreferencedTables): New method
64            to return tables that are not referenced by other tables or shape
65            stores and can be removed.
66            (Session.RemoveTable): Issue a TABLE_REMOVED message after
67            removing the table
68    
69            * Thuban/UI/mainwindow.py: Remove unused imports
70            (MainWindow.TableClose): Implement.
71    
72            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
73            messages so that the frame will be automatically closed when a new
74            session is opened or the table is removed.
75            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
76            __init__
77            (TableFrame.close_on_session_replaced)
78            (TableFrame.close_on_table_removed): New. Subscribers that close
79            the window
80    
81            * test/test_session.py (TestSessionMessages.test_remove_table)
82            (TestSessionSimple.test_remove_table): Move the test to
83            TestSessionSimple and add test for the TABLE_REMOVED message
84            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
85            (TestSessionSimple.test_unreferenced_tables) New. Test for the
86            UnreferencedTables method.
87            (UnreferencedTablesTests): New. Class with some more sophisticated
88            tests for UnreferencedTables.
89    
90    2003-05-27  Frank Koormann  <[email protected]>
91    
92            * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
93            display has some unwanted side effects. Removed again.
94    
95    2003-05-27  Frank Koormann  <[email protected]>
96    
97            * Resources/Bitmaps/legend_icon_layer.xpm: New, icon for legend.
98    
99            * Thuban/UI/legend.py (LegendTree.__FillTree): Use "legend_icon_layer"
100    
101    2003-05-27  Jan-Oliver Wagner <[email protected]>
102    
103            * test/test_menu.py (MenuTest.test): Added test for
104            Menu.RemoveItem().
105    
106            * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
107            the menu.
108    
109    2003-05-27  Frank Koormann  <[email protected]>
110            
111            Nonmodal dialogs without parent (i.e. they can fall behind the main
112            window)
113    
114            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Explicitly destroy
115            all dialogs in the dialogs dictionary and the canvas.
116    
117            * Thuban/UI/dialogs.py (NonModalNonParentDialog): New class, without
118            parent, i.e. can fall behind other windows.
119            (NonModalDialog.OnClose): Check is dialog is in mainwindow.dialog
120            dictionary before removing it.
121    
122            * Thuban/UI/classifier.py: Dialog derived from NonModalNonParentDialog
123    
124            * Thuban/UI/projdialog.py: Dialog derived from NonModalNonParentDialog
125            * Thuban/UI/tableview.py: Dialog derived from NonModalNonParentDialog
126            * Thuban/UI/tree.py: Dialog derived from NonModalNonParentDialog
127    
128    2003-05-27  Bernhard Herzog  <[email protected]>
129    
130            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): New. Open a
131            tableview dialog
132            (MainWindow.TableShow): Use ShowTableView to open the dialogs.
133            Also, don't use the table's titles as the dialog names. The titles
134            aren't guaranteed to be unique.
135            (MainWindow.TableOpen): Open a table view dialog after opening the
136            table
137    
138    2003-05-27  Bernhard Herzog  <[email protected]>
139    
140            * Thuban/UI/mainwindow.py: Remove the Table/Hide menu item. Its
141            effect can be achieved by simply closing the window showing the
142            table.
143            (MainWindow.TableHide): Removed.
144            (main_menu): Removed "table_hide"
145    
146    2003-05-27  Frank Koormann  <[email protected]>
147    
148            Fix legend tree display problems under Win32
149    
150            * Thuban/UI/legend.py:  BMP_SIZE_W = 15
151            (LegendTree.__FillTree): Display "legend_icon_map.xpm" with layer title.
152            (LegendTree.__FillTreeLayer): Explicitely set SelectedImage.
153    
154            * Resources/Bitmaps/legend_icon_map.xpm: New icon for legend.
155    
156    2003-05-27  Jan-Oliver Wagner <[email protected]>
157    
158            * Thuban/UI/menu.py (Menu.InsertSeparator): Additional optional parameter
159            'after' now allows to insert separators almost anywhere in the menu.
160    
161    2003-05-27  Frank Koormann  <[email protected]>
162    
163            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Underline the
164            "S" of selection box label to hint on hot key (Alt-S). Works under
165            Win32 but is ignored under GTK.
166    
167    2003-05-26  Frank Koormann  <[email protected]>
168    
169            * Thuban/UI/projdialog.py (ProjFrame.__do_layout, ProjPanel._DoLayout):
170            Center Choices.
171    
172    2003-05-26  Bernhard Herzog  <[email protected]>
173    
174            Remove the Precision methods again. They're too DBF specific to be
175            part of the table interface and they're only used in table_to_dbf
176            anyway.
177            
178            * Thuban/Model/transientdb.py (TransientTableBase.Width):Use a
179            fixed precision of 12 for doubles.
180            (TransientTableBase.Precision): Removed
181            (AutoTransientTable.Width): Delegate to self.table.
182    
183            * Thuban/Model/table.py (DBFTable.Precision)
184            (MemoryTable.Precision): Removed.
185            (MemoryTable.Width): Use a fixed precision of 12 for doubles.
186            (table_to_dbf): Use a fixed precision of 12 for floats unless the
187            column object specifies something else.
188    
189            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): New.
190            test for table_to_dbf
191    
192    2003-05-26  Bernhard Herzog  <[email protected]>
193    
194            * test/test_transientdb.py
195            (TestTransientTable.run_iceland_political_tests): Fix a comment.
196    
197    2003-05-26  Bernhard Herzog  <[email protected]>
198    
199            * Thuban/UI/mainwindow.py (MainWindow.TableOpen): Real
200            implementation. Mark parts of the file format strings for
201            localization.
202    
203            * Thuban/Model/session.py (Session.OpenTableFile): New. Open a dbf
204            file and add the table to the tables managed by the session
205    
206            * test/test_session.py (TestSessionSimple.test_open_table_file):
207            New. test case for OpenTableFile
208    
209    2003-05-26  Jan-Oliver Wagner <[email protected]>
210    
211            * Thuban/UI/controls.py, Thuban/UI/identifyview.py, Thuban/UI/join.py,
212            Thuban/UI/labeldialog.py, Thuban/UI/mainwindow.py,
213            Thuban/UI/proj4dialog.py, Thuban/UI/tableview.py, Thuban/UI/view.py:
214            Replace the true/false of wxWindows by True/False of Python 2.2.1.
215    
216    2003-05-26  Jan-Oliver Wagner <[email protected]>
217    
218            * Thuban/UI/tableview.py (LayerTableFrame.__init__): If there is
219            already a selection present, update the grid accordingly.
220    
221            * Thuban/UI/mainwindow.py (MainWindow.TableShow): Make the dialog
222            resizeable and increase its initial size.
223    
224    2003-05-26  Frank Koormann  <[email protected]>
225    
226            Table export functionality
227    
228            * Thuban/Model/table.py (DBFTable.Width, MemoryTable.Width):
229            Return width (in characters) for a column.
230            (DBFTable.Precision, MemoryTable.Precision): Return decimal precision.
231            (table_to_dbf): Write table to dbf file.
232            (table_to_csv): Write table to csv file.
233    
234            * Thuban/Model/transientdb.py (TransientTableBase.Width,
235            TransientTableBase.Precision): Return column width and precision.
236    
237            * Thuban/UI/tableview.py (QueryTableFrame.OnSaveAs): Call table_to_dbf
238            or table_to_csv depending on file selection.
239    
240            * test/test_dbf_table.py:
241            Test table_to_dbf (extension of former part of test).
242    
243            * test/test_csv_table.py:
244            Test table_to_csv.
245    
246    2003-05-23  Jan-Oliver Wagner <[email protected]>
247    
248            * Thuban/UI/join.py (JoinDialog.OnJoin): Use _() for strings.
249            Use QueryTableFrame instead of TableFrame.
250    
251            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Prefix the
252            table window with 'Layer Table:' instead of 'Table:'.
253    
254    2003-05-23  Jan-Oliver Wagner <[email protected]>
255    
256            Give all tables a title via mix-in TitledObject.LayerShowTable
257    
258            * Thuban/Model/base.py (TitledObject.SetTitle): Call method 'issue'
259            only if it exists.
260    
261            * Thuban/Model/table.py (DBFTable, MemoryTable): mix-in TitledObject
262            and call its init-method with a default title. Remove Title() method.
263    
264            * Thuban/Model/transientdb.py (TransientTable, TransientJoinedTable,
265            AutoTransientTable): mix-in TitledObject and call its init-method with
266            a default title. Remove Title() method.
267    
268    2003-05-23  Bernhard Herzog  <[email protected]>
269    
270            * Thuban/Model/session.py (Session.AddShapeStore): Define
271            AddShapeStore analogously to AddTable.
272    
273            * test/test_session.py (TestSessionSimple.test_add_shapestore):
274            New. Test for AddShapeStore
275    
276    2003-05-23  Jan-Oliver Wagner <[email protected]>
277    
278            Introducing QueryTableFrame and a very coarse ShowTable implementation.
279    
280            * Thuban/UI/tableview.py (LayerTableFrame, QueryTableFrame): Split the
281            class LayerTableFrame into two classes, LayerTableFrame and QueryTableFrame.
282            The latter implements the selection GUI without dependency on a layer.
283            LayerTableFrame now is derived from QueryTableFrame and connects
284            to a layer.
285    
286            * Thuban/UI/mainwindow.py (MainWindow.TableShow): A very coarse
287            implementation that still needs work.
288    
289            * Thuban/Model/layer.py (Layer.TreeInfo): Added filename.
290    
291    2003-05-22  Frank Koormann  <[email protected]>
292    
293            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
294            Added "outer_join = False" as optional parameter.
295            (TransientJoinedTable.create): If outer join is true, perform a
296            "LEFT OUTER JOIN" instead of "JOIN", which preserves all records of
297            the left table. Records not matching are filled with 0 / None.
298    
299            * Thuban/UI/join.py (JoinDialog.__init__): Checkbox for outer join.
300            (JoinDialog.OnJoin): Consider outer join check box.
301    
302    2003-05-22  Bernhard Herzog  <[email protected]>
303    
304            * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a
305            somewhat safer way. Storing the traceback in a local variable can
306            lead to memory leaks
307    
308    2003-05-22  Bernhard Herzog  <[email protected]>
309    
310            * Thuban/UI/join.py (JoinDialog.OnJoin): Make sure to really call
311            the wxMessageDialog's Destroy() method.
312    
313    2003-05-22  Frank Koormann  <[email protected]>
314    
315            * Thuban/UI/join.py (JoinDialog.__init__): Make use of
316            TransientTable.Title()
317    
318    2003-05-22  Frank Koormann  <[email protected]>
319    
320            Join Dialog, initial version.
321    
322            * Thuban/UI/mainwindow.py (MainWindow.TableJoin): Removed print.
323    
324            * Thuban/UI/join.py (JoinDialog): Functional implementation of
325            former framework. Renamed Table1/Table2 to LeftTable/RightTable
326            in all occurences.
327    
328            * Thuban/Model/transientdb.py (TransientJoinedTable.__doc__):
329            Typo fixed.
330    
331    2003-05-22  Bernhard Herzog  <[email protected]>
332    
333            Give the tables titles so that the GUI can display more meaningful
334            names. For now the titles are fixed but depend on e.g. filenames
335            or the titles of the joined tables.
336    
337            * Thuban/Model/transientdb.py (TransientTable.Title)
338            (TransientJoinedTable.Title, AutoTransientTable.Title): New.
339    
340            * Thuban/Model/table.py (DBFTable.Title, MemoryTable.Title): New.
341    
342            * test/test_transientdb.py
343            (TestTransientTable.test_auto_transient_table_title): New. Test
344            for the Title method
345            (TestTransientTable.test_transient_joined_table)
346            (TestTransientTable.test_transient_table): Add test for the Title
347            methods
348    
349            * test/test_memory_table.py (TestMemoryTable.test_title): New.
350            Test for the Title method
351    
352            * test/test_dbf_table.py (TestDBFTable.test_title): New. Test for
353            the Title method
354    
355    2003-05-22  Bernhard Herzog  <[email protected]>
356    
357            * test/test_layer.py (TestLayer.setUp, TestLayer.tearDown):
358            Provide a better way to destroy the layers
359            (TestLayer.test_base_layer, TestLayer.test_arc_layer)
360            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
361            (TestLayer.test_polygon_layer, TestLayer.test_get_field_type): Use
362            the new way to destroy the layers.
363            (TestLayer.test_derived_store): New. Test for using a layer with a
364            DerivedShapeStore
365    
366            * Thuban/Model/layer.py (Layer.SetShapeStore): Only set the
367            filename if the shape store actually has one.
368    
369    2003-05-22  Bernhard Herzog  <[email protected]>
370    
371            * Thuban/Model/table.py (DBFTable.FileName): New. Accessor method
372            for the filename
373    
374            * test/test_dbf_table.py (TestDBFTable.test_filename): New. Test
375            for the FileName method
376            (TestDBFTableWriting.test_write): Fix spelling of filename
377    
378    2003-05-22  Thomas Koester  <[email protected]>
379    
380            * Thuban/Model/range.py, test/test_range.py: Brought over new Range
381            from SciParam that now really is immutable.
382    
383    2003-05-22  Frank Koormann  <[email protected]>
384    
385            Layer Top/Bottom placement added to legend.
386    
387            * Thuban/UI/legend.py
388            (LegendPanel._OnMoveTop(), LayerPanel._OnMoveBottom): New, methods
389            bound to tool events.
390            (LegendTree.MoveCurrentItemTop(), LegendTree.MoveCurrentItemBottom):
391            New, methods binding the event methods with the map methods.
392    
393            * Thuban/Model/map.py (Map.TopLayer(), Map.BottomLayer()): New, place
394            layer at top/bottom of layer stack.
395    
396            * Resources/Bitmaps/top_layer.xpm: New button icon.
397    
398            * Resources/Bitmaps/bottom_layer.xpm: New button icon.
399    
400    2003-05-22  Bernhard Herzog  <[email protected]>
401    
402            * Thuban/Model/session.py (Session.RemoveTable): New method to
403            remove tables
404    
405            * test/test_session.py (TestSessionSimple.test_remove_table): New.
406            Test for RemoveTable
407    
408    2003-05-22  Thomas Koester  <[email protected]>
409    
410            * Thuban/Model/classgen.py: Added short module doc string and CVS id.
411            (ClassGenerator.GenUniformDistribution): Use new Range __init__, too.
412    
413    2003-05-22  Bernhard Herzog  <[email protected]>
414    
415            Implement a way to discover dependencies between tables and
416            shapestores.
417    
418            * Thuban/Model/transientdb.py (TransientTableBase.Dependencies)
419            (TransientJoinedTable.Dependencies)
420            (AutoTransientTable.SimpleQuery): New. Implement the dependencies
421            interface
422            (TransientJoinedTable.__init__): Keep tack of the original table
423            objects in addition to the corresponding transient tables.
424    
425            * Thuban/Model/table.py (DBFTable.Dependencies)
426            (MemoryTable.Dependencies): New. Implement the dependencies
427            interface
428    
429            * Thuban/Model/data.py (ShapeTable): New. Helper class for
430            ShapefileStore
431            (ShapefileStore.__init__): Use ShapeTable instead of
432            AutoTransientTable
433            (ShapefileStore.Table, ShapefileStore.Shapefile): Add doc-strings
434            (ShapefileStore.FileName, ShapefileStore.FileType): New. Accessor
435            methods for filename and type
436            (ShapefileStore.Dependencies): New. Implement the dependencies
437            interface
438            (DerivedShapeStore): New class to replace SimpleStore. The main
439            difference to SimpleStore is that it depends not on a shapefile
440            but another shapestore which expresses the dependencies a bit
441            better
442            (SimpleStore.__init__): Add deprecation warning.
443    
444            * test/test_dbf_table.py (TestDBFTable.test_dependencies): New.
445            Test for the Dependencies method.
446    
447            * test/test_memory_table.py (TestMemoryTable.test_dependencies):
448            New. Test for the Dependencies method.
449    
450            * test/test_transientdb.py
451            (TestTransientTable.test_auto_transient_table_dependencies): New.
452            Test for the Dependencies method.
453            (TestTransientTable.test_transient_joined_table): Add test for the
454            Dependencies method.
455    
456            * test/test_session.py (TestSessionSimple.setUp)
457            (TestSessionSimple.tearDown): New. Implement a better way to
458            destroy the sessions.
459            (TestSessionSimple.test_initial_state)
460            (TestSessionSimple.test_add_table): Bind session to self.session
461            so that it's destroyed by tearDown
462            (TestSessionSimple.test_open_shapefile): New. Test for
463            OpenShapefile and the object it returns
464    
465    2003-05-22  Bernhard Herzog  <[email protected]>
466    
467            * Thuban/Model/session.py (Session.AddTable): New method to
468            register tables with the session.
469            (Session.Tables): Return the tables registered with AddTable too.
470    
471            * test/test_session.py (TestSessionSimple.test_add_table): New.
472            Test case for the AddTable method
473    
474    2003-05-22  Frank Koormann  <[email protected]>
475    
476            UI polishing updates: Place main buttons (OK, Cancel, etc) in the
477            lower right corner, center labels for selections, initialize controls
478            in reasonable order for keyboard navigation.
479    
480            * Thuban/UI/projdialog.py (ProjFrame.__init__, ProjFrame.__doLayout)
481            (ProjFrame.__DoOnProjAvail): Determine position of current projection
482            using the wxListBox.FindString() method. Still a problem (#1886)
483    
484            * Thuban/UI/classifier.py
485            (Classifier.__init__, SelectPropertiesDialog.__init__)
486    
487            * Thuban/UI/classgen.py (ClassGenDialog.__init__,
488            (ClassGenDialog.__DoOnGenTypeSelect): Moved initialization of the
489            different classification types from here to __init__.
490            (GenUniquePanel.__init__): Set the column width of the first field
491            in the Field ListCtrl to the full width.
492    
493            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Rename 'Save As'
494            Button to 'Export'. Center Buttons in Selection Box, set Focus to
495            Grid.
496            (LayerTableFrame.OnKeyDown()): New, bound to the grid with EVT_KEY_DOWN,
497            changes focus to the Selection when pressing "Alt-S".
498    
499            * Thuban/UI/legend.py (LegendTree.__SetVisibilityStyle): Only gray out
500            the text if not visible. The italic font sometimes exceeds the
501            rendering area.
502    
503    2003-05-21  Jonathan Coles   <[email protected]>
504    
505            * Thuban/UI/dock.py (DockFrame): Rename references to _OnClose
506            to OnClose so that Thuban closes correctly.
507    
508            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Call
509            DockFrame.OnClose, not DockFrame._OnClose.
510    
511    2003-05-21  Jonathan Coles   <[email protected]>
512    
513            * Thuban/Model/classgen.py (ClassGenerator.GenQuantiles): Remove
514            references to 'inf' and use new Range __init__ to pass floats
515            directly rather than converting them to strings first.
516            Fixes RTBug #1876.
517    
518            * Thuban/Model/classification.py (ClassGroupRange.SetRange):
519            Use new Range ___init__ to pass floats.
520    
521            * Thuban/Model/layer.py (RasterLayer.__init__): Test if the
522            filename is a valid image file. Throw IOError otherwise.
523    
524            * Thuban/Model/range.py: Brought over new Range from SciParam that
525            is immutable and has an __init__ which can accept floats.
526    
527            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Move OpenShapefile
528            into try block. AddLayer doesn't throw any exceptions anymore.
529            (MainWindow.AddRasterLayer): Move constructor of RasterLayer into
530            try block.
531    
532            * Thuban/UI/projdialog.py (GeoPanel.__init__): Put Degrees as
533            the first item in choices. Fixes RTBug #1882.
534    
535            * Thuban/UI/renderer.py (MapRenderer.render_map): Check if scale
536            has gone to 0 which is a serious problem. abort.
537            (MapRenderer.draw_raster_layer): Catch IOError seperately and
538            print the error from GDAL.
539    
540            * Thuban/UI/tableview.py (TableGrid.__init__): Call
541            ToggleEventListeners to turn on listening.
542            (TableGrid.ToggleEventListeners): New. Turns event listening on
543            and off so as to prevent excessive messages.
544            (LayerTableFrame.OnQuery): Use TableGrid.ToggleEventListeners
545            to suppress excessive messages when selecting many rows.
546            Fixes RTBug #1880.
547    
548            * Thuban/UI/view.py: Added checks against if scale == 0. This
549            is a serious problem that can occur when an image without
550            geo data is loading and causes the map projection bounds to
551            go to infinity. Right now, the solution is to simply try
552            to recover.
553    
554            * extensions/thuban/cpl_mfile.cpp (MFILEClose): Make sure
555            to set the MFILEReceiver attributes even if the data is NULL.
556    
557            * extensions/thuban/gdalwarp.cpp: Improved the error handling
558            and passed GDAL messages back up to the Python layer. Also
559            tried to fix some memory leaks that were present in the original
560            utility but didn't matter because the program aborted.
561    
562            * test/test_range.py: Copied over tests from SciParam. Removed
563            tests against importing. Fixes RTBug #1867.
564    
565    2003-05-21  Bernhard Herzog  <[email protected]>
566    
567            * test/test_load.py: Remove unused imports and restructure the
568            test code
569            (LoadSessionTest): Split into one class for each test and turn
570            LoadSessionTest itself into the base class for all such session
571            tests.
572            (ClassificationTest): New base class for load tests that test
573            classifications
574            (TestSingleLayer, TestLayerVisibility, TestClassification)
575            (TestLabels, TestLayerProjection, TestRasterLayer): New classes
576            for the individual tests
577    
578            * test/support.py (FileLoadTestCase.filename): New base class for
579            file loading tests
580    
581    2003-05-21  Jan-Oliver Wagner <[email protected]>
582    
583            * Resources/Projections/defaults.proj: Renamed 'Universal Transverse
584            Mercator' to 'UTM Zone 32' as a more convenient example.
585            Added 'Gauss Krueger Zone 6'.
586    
587            * Data/iceland_sample_raster.thuban: political polygon now
588            filled transparent to have the raster image visible at once.
589    
590    2003-05-21  Frank Koormann  <[email protected]>
591    
592            * Thuban/UI/mainwindow.py (MainWindow): Renamed _OnClose() back to
593            OnClose() to keep in sync with extensions. Internally Thuban
594            still uses "underscored" names.
595    
596    2003-05-20  Jonathan Coles   <[email protected]>
597    
598            This puts back Raster layer support. These layers support projections
599            through the GDAL library. Currently, the CVS version is being used.
600            There are no Debian packages available although this may change soon.
601            A GDAL driver was extended to support writing to memory rather to
602            files.
603    
604            There is still some work that needs to be done, such as some error
605            handling when loading invalid images or when there is a problem
606            projecting the image. This putback simply checks in the majority
607            of the work.
608    
609            * setup.py: Add gdalwarp library extension.
610    
611            * Thuban/Model/layer.py (BaseLayer.HasClassification): New.
612            Defaults to False, but can be overridden by subclasses if they
613            support classification.
614            (RasterLayer): New. Defines a new layer that represents an
615            image.
616    
617            * Thuban/Model/load.py (SessionLoader.__init__): Add rasterlayer
618            tag handler.
619            (SessionLoader.start_layer): Encode the filename.
620            (SessionLoader.start_rasterlayer, SessionLoader.end_rasterlayer):
621            New. Supports reading a rasterlayer tag.
622    
623            * Thuban/Model/map.py (Map.BoundingBox): Fix typo in comment.
624    
625            * Thuban/Model/save.py (XMLWriter.encode): Don't assume that we
626            get a string in Latin1. If we get such as string convert it to
627            unicode first, otherwise leave if alone before encoding.
628            (SessionSaver.write_layer): Add support for writing both Layers
629            and RasterLayers.
630    
631            * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):
632            The right argument may not be a string, it could also be a Column.
633    
634            * Thuban/UI/application.py (ThubanApplication.CreateMainWindow):
635            Make initial window size 600x400. Fixes RTBug #1872.
636    
637            * Thuban/UI/classifier.py (Classifier.__init__): Rearrange how
638            the dialog is constructed so that we can support layers that
639            do not have classifications.
640            (Classifier._OnTry): Only build a classification if the layer
641            supports one.
642    
643            * Thuban/UI/legend.py: Change all checks that a layer is an
644            instance of Layer into checks against BaseLayer.
645            (LegendTree.__FillTreeLayer): Only add children to a branch if
646            the layer supports classification.
647    
648            * Thuban/UI/mainwindow.py (MainWindow.NewSession,
649            MainWindow.OpenSession): Don't proceed with an action if the
650            user chooses Cancel when they are asked to save changes.
651            (MainWindow.AddRasterLayer): New. Open a dialog to allow the
652            user to select an image file. Create a new RasterLayer and add
653            it to the map.
654    
655            * Thuban/UI/renderer.py (MapRenderer.render_map): Add support
656            for rendering RasterLayer layers.
657            (MapRenderer.draw_raster_layer): Actually method that calls
658            the GDALWarp python wrapper and constructs an image from the
659            data returned.
660    
661            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Change the
662            Choices symbols to match those used in the table query method.
663            Replace deprecated method calls on table with new method names.
664    
665            * Thuban/UI/view.py (MapCanvas.set_view_transform): Try to limit
666            how small the scale can get. This still needs more testing.
667    
668            * extensions/thuban/bmpdataset.cpp: New, but copied from GDAL.
669            Provides a driver to output in .bmp format.
670    
671            * extensions/thuban/cpl_mfile.cpp, extensions/thuban/cpl_mfile.h:
672            New. Provides IO routines which write to memory, rather than a file.
673    
674            * extensions/thuban/gdalwarp.cpp: New, but basically a direct copy
675            of the gdalwarp utility provided in GDAL. Added function calls
676            that can be accessed from python.
677    
678            * Data/iceland_sample_raster.thuban: New. Sample file that uses
679            a raster layer.
680    
681            * Data/iceland/island.tfw, Data/iceland/island.tif: New. Raster
682            layer image data.
683    
684            * Doc/thuban.dtd: Added rasterlayer attribute definition.
685    
686            * test/test_layer.py, test/test_load.py, test/test_save.py: Added
687            tests associated with the raster layer code.
688    
689            * test/test_transientdb.py
690            (TestTransientTable.test_auto_transient_table_query): Added a test
691            for using a Column object as the "right" parameter to a query.
692    
693    2003-05-19  Frank Koormann  <[email protected]>
694    
695            * Thuban/version.py (get_changelog_date):
696            Catch exceptions if ChangeLog does not exist.
697    
698            * Thuban/UI/view.py (MapCanvas.Export): Bugfix
699    
700  2003-05-19  Frank Koormann  <[email protected]>  2003-05-19  Frank Koormann  <[email protected]>
701    
702          Extended version information for Thuban          Extended version information for Thuban

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26