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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26