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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26