/[thuban]/branches/greater-ms3/thuban/ChangeLog
ViewVC logotype

Diff of /branches/greater-ms3/thuban/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 870 by frank, Thu May 8 14:06:32 2003 UTC revision 1085 by jan, Wed May 28 10:25:30 2003 UTC
# Line 1  Line 1 
1    2003-05-27  Jan-Oliver Wagner <[email protected]>
2    
3            * Thuban/UI/mainwindow.py (MainWindow.TableClose, MainWindow.TableShow):
4            sort the selection list for the dialog.
5    
6    2003-05-28  Frank Koormann  <[email protected]>
7    
8            * extensions/thuban/wxproj.cpp
9            (project_point): Removed cast to int for projected point coordinates.
10            (shape_centroid): Return last point if all polygon vertices fall
11            to one point.
12    
13    2003-05-28  Bernhard Herzog  <[email protected]>
14    
15            * Thuban/UI/mainwindow.py (_can_unjoin): Add doc-string and cope
16            with layers that don't have shapestores, i.e. raster layers.
17    
18    2003-05-28  Bernhard Herzog  <[email protected]>
19    
20            * Thuban/Model/table.py (DBFTable.__init__): Omit the extension
21            when determining the title from the filename.
22    
23            * test/test_dbf_table.py (TestDBFTable.test_title): Update to
24            reflect changes in the way the title is derived from the filename
25    
26    2003-05-28  Frank Koormann  <[email protected]>
27    
28            * Thuban/UI/mainwindow.py (MainWindow.TableShow):
29            Added wxDEFAULT_DIALOG_STYLE to show table dialog styles.
30    
31    2003-05-27  Bernhard Herzog  <[email protected]>
32    
33            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages): Also
34            delegate SelectedLayer.
35            (MainWindow.LayerUnjoinTable): Implement.
36            (_can_unjoin): New. Helper function for the sensitivity of the
37            layer/unjoin command.
38    
39            * Thuban/Model/data.py (ShapefileStore.OrigShapeStore)
40            (DerivedShapeStore.OrigShapeStore): New. Return the original
41            shapestore. Used to figure out how to unjoin.
42            (DerivedShapeStore.Shapefile): Fix a typo.
43    
44    2003-05-27  Bernhard Herzog  <[email protected]>
45    
46            * Thuban/UI/join.py (JoinDialog): Extend to handle layer joins as
47            well
48            (JoinDialog.__init__): Use the layer parameter and only build the
49            left choice when a layer is given
50            (JoinDialog.OnJoin): Handle layer joins as well
51            (JoinDialog.OnLeftTable, JoinDialog.OnRightTable): Handle the case
52            that the user selects the "Select..." item. The sensitivitly
53            updating is now in update_sensitivity
54            (JoinDialog.y): New method to refactor the sensitivity update of
55            the join button into its own method.
56    
57            * Thuban/UI/mainwindow.py (MainWindow.LayerJoinTable): Implement.
58    
59    2003-05-27  Bernhard Herzog  <[email protected]>
60    
61            * Thuban/UI/mainwindow.py (table_close command): Make it sensitive
62            iff there are unreferenced tables in the session
63    
64    2003-05-27  Bernhard Herzog  <[email protected]>
65    
66            * Thuban/Model/messages.py (TABLE_REMOVED): New message.
67    
68            * Thuban/Model/session.py (Session.UnreferencedTables): New method
69            to return tables that are not referenced by other tables or shape
70            stores and can be removed.
71            (Session.RemoveTable): Issue a TABLE_REMOVED message after
72            removing the table
73    
74            * Thuban/UI/mainwindow.py: Remove unused imports
75            (MainWindow.TableClose): Implement.
76    
77            * Thuban/UI/tableview.py (TableFrame.__init__): Subscribe to some
78            messages so that the frame will be automatically closed when a new
79            session is opened or the table is removed.
80            (TableFrame.OnClose): Unsubscribe the Subscriptions made in
81            __init__
82            (TableFrame.close_on_session_replaced)
83            (TableFrame.close_on_table_removed): New. Subscribers that close
84            the window
85    
86            * test/test_session.py (TestSessionMessages.test_remove_table)
87            (TestSessionSimple.test_remove_table): Move the test to
88            TestSessionSimple and add test for the TABLE_REMOVED message
89            (TestSessionBase.setUp): Also subscribe to TABLE_REMOVED
90            (TestSessionSimple.test_unreferenced_tables) New. Test for the
91            UnreferencedTables method.
92            (UnreferencedTablesTests): New. Class with some more sophisticated
93            tests for UnreferencedTables.
94    
95    2003-05-27  Frank Koormann  <[email protected]>
96    
97            * Thuban/UI/tableview.py (QueryTableFrame.__init__): The "_S_election"
98            display has some unwanted side effects. Removed again.
99    
100    2003-05-27  Frank Koormann  <[email protected]>
101    
102            * Resources/Bitmaps/legend_icon_layer.xpm: New, icon for legend.
103    
104            * Thuban/UI/legend.py (LegendTree.__FillTree): Use "legend_icon_layer"
105    
106    2003-05-27  Jan-Oliver Wagner <[email protected]>
107    
108            * test/test_menu.py (MenuTest.test): Added test for
109            Menu.RemoveItem().
110    
111            * Thuban/UI/menu.py (Menu.RemoveItem): New. Remove an item from
112            the menu.
113    
114    2003-05-27  Frank Koormann  <[email protected]>
115            
116            Nonmodal dialogs without parent (i.e. they can fall behind the main
117            window)
118    
119            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Explicitly destroy
120            all dialogs in the dialogs dictionary and the canvas.
121    
122            * Thuban/UI/dialogs.py (NonModalNonParentDialog): New class, without
123            parent, i.e. can fall behind other windows.
124            (NonModalDialog.OnClose): Check is dialog is in mainwindow.dialog
125            dictionary before removing it.
126    
127            * Thuban/UI/classifier.py: Dialog derived from NonModalNonParentDialog
128    
129            * Thuban/UI/projdialog.py: Dialog derived from NonModalNonParentDialog
130            * Thuban/UI/tableview.py: Dialog derived from NonModalNonParentDialog
131            * Thuban/UI/tree.py: Dialog derived from NonModalNonParentDialog
132    
133    2003-05-27  Bernhard Herzog  <[email protected]>
134    
135            * Thuban/UI/mainwindow.py (MainWindow.ShowTableView): New. Open a
136            tableview dialog
137            (MainWindow.TableShow): Use ShowTableView to open the dialogs.
138            Also, don't use the table's titles as the dialog names. The titles
139            aren't guaranteed to be unique.
140            (MainWindow.TableOpen): Open a table view dialog after opening the
141            table
142    
143    2003-05-27  Bernhard Herzog  <[email protected]>
144    
145            * Thuban/UI/mainwindow.py: Remove the Table/Hide menu item. Its
146            effect can be achieved by simply closing the window showing the
147            table.
148            (MainWindow.TableHide): Removed.
149            (main_menu): Removed "table_hide"
150    
151    2003-05-27  Frank Koormann  <[email protected]>
152    
153            Fix legend tree display problems under Win32
154    
155            * Thuban/UI/legend.py:  BMP_SIZE_W = 15
156            (LegendTree.__FillTree): Display "legend_icon_map.xpm" with layer title.
157            (LegendTree.__FillTreeLayer): Explicitely set SelectedImage.
158    
159            * Resources/Bitmaps/legend_icon_map.xpm: New icon for legend.
160    
161    2003-05-27  Jan-Oliver Wagner <[email protected]>
162    
163            * Thuban/UI/menu.py (Menu.InsertSeparator): Additional optional parameter
164            'after' now allows to insert separators almost anywhere in the menu.
165    
166    2003-05-27  Frank Koormann  <[email protected]>
167    
168            * Thuban/UI/tableview.py (QueryTableFrame.__init__): Underline the
169            "S" of selection box label to hint on hot key (Alt-S). Works under
170            Win32 but is ignored under GTK.
171    
172    2003-05-26  Frank Koormann  <[email protected]>
173    
174            * Thuban/UI/projdialog.py (ProjFrame.__do_layout, ProjPanel._DoLayout):
175            Center Choices.
176    
177    2003-05-26  Bernhard Herzog  <[email protected]>
178    
179            Remove the Precision methods again. They're too DBF specific to be
180            part of the table interface and they're only used in table_to_dbf
181            anyway.
182            
183            * Thuban/Model/transientdb.py (TransientTableBase.Width):Use a
184            fixed precision of 12 for doubles.
185            (TransientTableBase.Precision): Removed
186            (AutoTransientTable.Width): Delegate to self.table.
187    
188            * Thuban/Model/table.py (DBFTable.Precision)
189            (MemoryTable.Precision): Removed.
190            (MemoryTable.Width): Use a fixed precision of 12 for doubles.
191            (table_to_dbf): Use a fixed precision of 12 for floats unless the
192            column object specifies something else.
193    
194            * test/test_dbf_table.py (TestTableToDBF.test_table_to_dbf): New.
195            test for table_to_dbf
196    
197    2003-05-26  Bernhard Herzog  <[email protected]>
198    
199            * test/test_transientdb.py
200            (TestTransientTable.run_iceland_political_tests): Fix a comment.
201    
202    2003-05-26  Bernhard Herzog  <[email protected]>
203    
204            * Thuban/UI/mainwindow.py (MainWindow.TableOpen): Real
205            implementation. Mark parts of the file format strings for
206            localization.
207    
208            * Thuban/Model/session.py (Session.OpenTableFile): New. Open a dbf
209            file and add the table to the tables managed by the session
210    
211            * test/test_session.py (TestSessionSimple.test_open_table_file):
212            New. test case for OpenTableFile
213    
214    2003-05-26  Jan-Oliver Wagner <[email protected]>
215    
216            * Thuban/UI/controls.py, Thuban/UI/identifyview.py, Thuban/UI/join.py,
217            Thuban/UI/labeldialog.py, Thuban/UI/mainwindow.py,
218            Thuban/UI/proj4dialog.py, Thuban/UI/tableview.py, Thuban/UI/view.py:
219            Replace the true/false of wxWindows by True/False of Python 2.2.1.
220    
221    2003-05-26  Jan-Oliver Wagner <[email protected]>
222    
223            * Thuban/UI/tableview.py (LayerTableFrame.__init__): If there is
224            already a selection present, update the grid accordingly.
225    
226            * Thuban/UI/mainwindow.py (MainWindow.TableShow): Make the dialog
227            resizeable and increase its initial size.
228    
229    2003-05-26  Frank Koormann  <[email protected]>
230    
231            Table export functionality
232    
233            * Thuban/Model/table.py (DBFTable.Width, MemoryTable.Width):
234            Return width (in characters) for a column.
235            (DBFTable.Precision, MemoryTable.Precision): Return decimal precision.
236            (table_to_dbf): Write table to dbf file.
237            (table_to_csv): Write table to csv file.
238    
239            * Thuban/Model/transientdb.py (TransientTableBase.Width,
240            TransientTableBase.Precision): Return column width and precision.
241    
242            * Thuban/UI/tableview.py (QueryTableFrame.OnSaveAs): Call table_to_dbf
243            or table_to_csv depending on file selection.
244    
245            * test/test_dbf_table.py:
246            Test table_to_dbf (extension of former part of test).
247    
248            * test/test_csv_table.py:
249            Test table_to_csv.
250    
251    2003-05-23  Jan-Oliver Wagner <[email protected]>
252    
253            * Thuban/UI/join.py (JoinDialog.OnJoin): Use _() for strings.
254            Use QueryTableFrame instead of TableFrame.
255    
256            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Prefix the
257            table window with 'Layer Table:' instead of 'Table:'.
258    
259    2003-05-23  Jan-Oliver Wagner <[email protected]>
260    
261            Give all tables a title via mix-in TitledObject.LayerShowTable
262    
263            * Thuban/Model/base.py (TitledObject.SetTitle): Call method 'issue'
264            only if it exists.
265    
266            * Thuban/Model/table.py (DBFTable, MemoryTable): mix-in TitledObject
267            and call its init-method with a default title. Remove Title() method.
268    
269            * Thuban/Model/transientdb.py (TransientTable, TransientJoinedTable,
270            AutoTransientTable): mix-in TitledObject and call its init-method with
271            a default title. Remove Title() method.
272    
273    2003-05-23  Bernhard Herzog  <[email protected]>
274    
275            * Thuban/Model/session.py (Session.AddShapeStore): Define
276            AddShapeStore analogously to AddTable.
277    
278            * test/test_session.py (TestSessionSimple.test_add_shapestore):
279            New. Test for AddShapeStore
280    
281    2003-05-23  Jan-Oliver Wagner <[email protected]>
282    
283            Introducing QueryTableFrame and a very coarse ShowTable implementation.
284    
285            * Thuban/UI/tableview.py (LayerTableFrame, QueryTableFrame): Split the
286            class LayerTableFrame into two classes, LayerTableFrame and QueryTableFrame.
287            The latter implements the selection GUI without dependency on a layer.
288            LayerTableFrame now is derived from QueryTableFrame and connects
289            to a layer.
290    
291            * Thuban/UI/mainwindow.py (MainWindow.TableShow): A very coarse
292            implementation that still needs work.
293    
294            * Thuban/Model/layer.py (Layer.TreeInfo): Added filename.
295    
296    2003-05-22  Frank Koormann  <[email protected]>
297    
298            * Thuban/Model/transientdb.py (TransientJoinedTable.__init__):
299            Added "outer_join = False" as optional parameter.
300            (TransientJoinedTable.create): If outer join is true, perform a
301            "LEFT OUTER JOIN" instead of "JOIN", which preserves all records of
302            the left table. Records not matching are filled with 0 / None.
303    
304            * Thuban/UI/join.py (JoinDialog.__init__): Checkbox for outer join.
305            (JoinDialog.OnJoin): Consider outer join check box.
306    
307    2003-05-22  Bernhard Herzog  <[email protected]>
308    
309            * Thuban/UI/join.py (JoinDialog.OnJoin): Use exc_info in a
310            somewhat safer way. Storing the traceback in a local variable can
311            lead to memory leaks
312    
313    2003-05-22  Bernhard Herzog  <[email protected]>
314    
315            * Thuban/UI/join.py (JoinDialog.OnJoin): Make sure to really call
316            the wxMessageDialog's Destroy() method.
317    
318    2003-05-22  Frank Koormann  <[email protected]>
319    
320            * Thuban/UI/join.py (JoinDialog.__init__): Make use of
321            TransientTable.Title()
322    
323    2003-05-22  Frank Koormann  <[email protected]>
324    
325            Join Dialog, initial version.
326    
327            * Thuban/UI/mainwindow.py (MainWindow.TableJoin): Removed print.
328    
329            * Thuban/UI/join.py (JoinDialog): Functional implementation of
330            former framework. Renamed Table1/Table2 to LeftTable/RightTable
331            in all occurences.
332    
333            * Thuban/Model/transientdb.py (TransientJoinedTable.__doc__):
334            Typo fixed.
335    
336    2003-05-22  Bernhard Herzog  <[email protected]>
337    
338            Give the tables titles so that the GUI can display more meaningful
339            names. For now the titles are fixed but depend on e.g. filenames
340            or the titles of the joined tables.
341    
342            * Thuban/Model/transientdb.py (TransientTable.Title)
343            (TransientJoinedTable.Title, AutoTransientTable.Title): New.
344    
345            * Thuban/Model/table.py (DBFTable.Title, MemoryTable.Title): New.
346    
347            * test/test_transientdb.py
348            (TestTransientTable.test_auto_transient_table_title): New. Test
349            for the Title method
350            (TestTransientTable.test_transient_joined_table)
351            (TestTransientTable.test_transient_table): Add test for the Title
352            methods
353    
354            * test/test_memory_table.py (TestMemoryTable.test_title): New.
355            Test for the Title method
356    
357            * test/test_dbf_table.py (TestDBFTable.test_title): New. Test for
358            the Title method
359    
360    2003-05-22  Bernhard Herzog  <[email protected]>
361    
362            * test/test_layer.py (TestLayer.setUp, TestLayer.tearDown):
363            Provide a better way to destroy the layers
364            (TestLayer.test_base_layer, TestLayer.test_arc_layer)
365            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
366            (TestLayer.test_polygon_layer, TestLayer.test_get_field_type): Use
367            the new way to destroy the layers.
368            (TestLayer.test_derived_store): New. Test for using a layer with a
369            DerivedShapeStore
370    
371            * Thuban/Model/layer.py (Layer.SetShapeStore): Only set the
372            filename if the shape store actually has one.
373    
374    2003-05-22  Bernhard Herzog  <[email protected]>
375    
376            * Thuban/Model/table.py (DBFTable.FileName): New. Accessor method
377            for the filename
378    
379            * test/test_dbf_table.py (TestDBFTable.test_filename): New. Test
380            for the FileName method
381            (TestDBFTableWriting.test_write): Fix spelling of filename
382    
383    2003-05-22  Thomas Koester  <[email protected]>
384    
385            * Thuban/Model/range.py, test/test_range.py: Brought over new Range
386            from SciParam that now really is immutable.
387    
388    2003-05-22  Frank Koormann  <[email protected]>
389    
390            Layer Top/Bottom placement added to legend.
391    
392            * Thuban/UI/legend.py
393            (LegendPanel._OnMoveTop(), LayerPanel._OnMoveBottom): New, methods
394            bound to tool events.
395            (LegendTree.MoveCurrentItemTop(), LegendTree.MoveCurrentItemBottom):
396            New, methods binding the event methods with the map methods.
397    
398            * Thuban/Model/map.py (Map.TopLayer(), Map.BottomLayer()): New, place
399            layer at top/bottom of layer stack.
400    
401            * Resources/Bitmaps/top_layer.xpm: New button icon.
402    
403            * Resources/Bitmaps/bottom_layer.xpm: New button icon.
404    
405    2003-05-22  Bernhard Herzog  <[email protected]>
406    
407            * Thuban/Model/session.py (Session.RemoveTable): New method to
408            remove tables
409    
410            * test/test_session.py (TestSessionSimple.test_remove_table): New.
411            Test for RemoveTable
412    
413    2003-05-22  Thomas Koester  <[email protected]>
414    
415            * Thuban/Model/classgen.py: Added short module doc string and CVS id.
416            (ClassGenerator.GenUniformDistribution): Use new Range __init__, too.
417    
418    2003-05-22  Bernhard Herzog  <[email protected]>
419    
420            Implement a way to discover dependencies between tables and
421            shapestores.
422    
423            * Thuban/Model/transientdb.py (TransientTableBase.Dependencies)
424            (TransientJoinedTable.Dependencies)
425            (AutoTransientTable.SimpleQuery): New. Implement the dependencies
426            interface
427            (TransientJoinedTable.__init__): Keep tack of the original table
428            objects in addition to the corresponding transient tables.
429    
430            * Thuban/Model/table.py (DBFTable.Dependencies)
431            (MemoryTable.Dependencies): New. Implement the dependencies
432            interface
433    
434            * Thuban/Model/data.py (ShapeTable): New. Helper class for
435            ShapefileStore
436            (ShapefileStore.__init__): Use ShapeTable instead of
437            AutoTransientTable
438            (ShapefileStore.Table, ShapefileStore.Shapefile): Add doc-strings
439            (ShapefileStore.FileName, ShapefileStore.FileType): New. Accessor
440            methods for filename and type
441            (ShapefileStore.Dependencies): New. Implement the dependencies
442            interface
443            (DerivedShapeStore): New class to replace SimpleStore. The main
444            difference to SimpleStore is that it depends not on a shapefile
445            but another shapestore which expresses the dependencies a bit
446            better
447            (SimpleStore.__init__): Add deprecation warning.
448    
449            * test/test_dbf_table.py (TestDBFTable.test_dependencies): New.
450            Test for the Dependencies method.
451    
452            * test/test_memory_table.py (TestMemoryTable.test_dependencies):
453            New. Test for the Dependencies method.
454    
455            * test/test_transientdb.py
456            (TestTransientTable.test_auto_transient_table_dependencies): New.
457            Test for the Dependencies method.
458            (TestTransientTable.test_transient_joined_table): Add test for the
459            Dependencies method.
460    
461            * test/test_session.py (TestSessionSimple.setUp)
462            (TestSessionSimple.tearDown): New. Implement a better way to
463            destroy the sessions.
464            (TestSessionSimple.test_initial_state)
465            (TestSessionSimple.test_add_table): Bind session to self.session
466            so that it's destroyed by tearDown
467            (TestSessionSimple.test_open_shapefile): New. Test for
468            OpenShapefile and the object it returns
469    
470    2003-05-22  Bernhard Herzog  <[email protected]>
471    
472            * Thuban/Model/session.py (Session.AddTable): New method to
473            register tables with the session.
474            (Session.Tables): Return the tables registered with AddTable too.
475    
476            * test/test_session.py (TestSessionSimple.test_add_table): New.
477            Test case for the AddTable method
478    
479    2003-05-22  Frank Koormann  <[email protected]>
480    
481            UI polishing updates: Place main buttons (OK, Cancel, etc) in the
482            lower right corner, center labels for selections, initialize controls
483            in reasonable order for keyboard navigation.
484    
485            * Thuban/UI/projdialog.py (ProjFrame.__init__, ProjFrame.__doLayout)
486            (ProjFrame.__DoOnProjAvail): Determine position of current projection
487            using the wxListBox.FindString() method. Still a problem (#1886)
488    
489            * Thuban/UI/classifier.py
490            (Classifier.__init__, SelectPropertiesDialog.__init__)
491    
492            * Thuban/UI/classgen.py (ClassGenDialog.__init__,
493            (ClassGenDialog.__DoOnGenTypeSelect): Moved initialization of the
494            different classification types from here to __init__.
495            (GenUniquePanel.__init__): Set the column width of the first field
496            in the Field ListCtrl to the full width.
497    
498            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Rename 'Save As'
499            Button to 'Export'. Center Buttons in Selection Box, set Focus to
500            Grid.
501            (LayerTableFrame.OnKeyDown()): New, bound to the grid with EVT_KEY_DOWN,
502            changes focus to the Selection when pressing "Alt-S".
503    
504            * Thuban/UI/legend.py (LegendTree.__SetVisibilityStyle): Only gray out
505            the text if not visible. The italic font sometimes exceeds the
506            rendering area.
507    
508    2003-05-21  Jonathan Coles   <[email protected]>
509    
510            * Thuban/UI/dock.py (DockFrame): Rename references to _OnClose
511            to OnClose so that Thuban closes correctly.
512    
513            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Call
514            DockFrame.OnClose, not DockFrame._OnClose.
515    
516    2003-05-21  Jonathan Coles   <[email protected]>
517    
518            * Thuban/Model/classgen.py (ClassGenerator.GenQuantiles): Remove
519            references to 'inf' and use new Range __init__ to pass floats
520            directly rather than converting them to strings first.
521            Fixes RTBug #1876.
522    
523            * Thuban/Model/classification.py (ClassGroupRange.SetRange):
524            Use new Range ___init__ to pass floats.
525    
526            * Thuban/Model/layer.py (RasterLayer.__init__): Test if the
527            filename is a valid image file. Throw IOError otherwise.
528    
529            * Thuban/Model/range.py: Brought over new Range from SciParam that
530            is immutable and has an __init__ which can accept floats.
531    
532            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Move OpenShapefile
533            into try block. AddLayer doesn't throw any exceptions anymore.
534            (MainWindow.AddRasterLayer): Move constructor of RasterLayer into
535            try block.
536    
537            * Thuban/UI/projdialog.py (GeoPanel.__init__): Put Degrees as
538            the first item in choices. Fixes RTBug #1882.
539    
540            * Thuban/UI/renderer.py (MapRenderer.render_map): Check if scale
541            has gone to 0 which is a serious problem. abort.
542            (MapRenderer.draw_raster_layer): Catch IOError seperately and
543            print the error from GDAL.
544    
545            * Thuban/UI/tableview.py (TableGrid.__init__): Call
546            ToggleEventListeners to turn on listening.
547            (TableGrid.ToggleEventListeners): New. Turns event listening on
548            and off so as to prevent excessive messages.
549            (LayerTableFrame.OnQuery): Use TableGrid.ToggleEventListeners
550            to suppress excessive messages when selecting many rows.
551            Fixes RTBug #1880.
552    
553            * Thuban/UI/view.py: Added checks against if scale == 0. This
554            is a serious problem that can occur when an image without
555            geo data is loading and causes the map projection bounds to
556            go to infinity. Right now, the solution is to simply try
557            to recover.
558    
559            * extensions/thuban/cpl_mfile.cpp (MFILEClose): Make sure
560            to set the MFILEReceiver attributes even if the data is NULL.
561    
562            * extensions/thuban/gdalwarp.cpp: Improved the error handling
563            and passed GDAL messages back up to the Python layer. Also
564            tried to fix some memory leaks that were present in the original
565            utility but didn't matter because the program aborted.
566    
567            * test/test_range.py: Copied over tests from SciParam. Removed
568            tests against importing. Fixes RTBug #1867.
569    
570    2003-05-21  Bernhard Herzog  <[email protected]>
571    
572            * test/test_load.py: Remove unused imports and restructure the
573            test code
574            (LoadSessionTest): Split into one class for each test and turn
575            LoadSessionTest itself into the base class for all such session
576            tests.
577            (ClassificationTest): New base class for load tests that test
578            classifications
579            (TestSingleLayer, TestLayerVisibility, TestClassification)
580            (TestLabels, TestLayerProjection, TestRasterLayer): New classes
581            for the individual tests
582    
583            * test/support.py (FileLoadTestCase.filename): New base class for
584            file loading tests
585    
586    2003-05-21  Jan-Oliver Wagner <[email protected]>
587    
588            * Resources/Projections/defaults.proj: Renamed 'Universal Transverse
589            Mercator' to 'UTM Zone 32' as a more convenient example.
590            Added 'Gauss Krueger Zone 6'.
591    
592            * Data/iceland_sample_raster.thuban: political polygon now
593            filled transparent to have the raster image visible at once.
594    
595    2003-05-21  Frank Koormann  <[email protected]>
596    
597            * Thuban/UI/mainwindow.py (MainWindow): Renamed _OnClose() back to
598            OnClose() to keep in sync with extensions. Internally Thuban
599            still uses "underscored" names.
600    
601    2003-05-20  Jonathan Coles   <[email protected]>
602    
603            This puts back Raster layer support. These layers support projections
604            through the GDAL library. Currently, the CVS version is being used.
605            There are no Debian packages available although this may change soon.
606            A GDAL driver was extended to support writing to memory rather to
607            files.
608    
609            There is still some work that needs to be done, such as some error
610            handling when loading invalid images or when there is a problem
611            projecting the image. This putback simply checks in the majority
612            of the work.
613    
614            * setup.py: Add gdalwarp library extension.
615    
616            * Thuban/Model/layer.py (BaseLayer.HasClassification): New.
617            Defaults to False, but can be overridden by subclasses if they
618            support classification.
619            (RasterLayer): New. Defines a new layer that represents an
620            image.
621    
622            * Thuban/Model/load.py (SessionLoader.__init__): Add rasterlayer
623            tag handler.
624            (SessionLoader.start_layer): Encode the filename.
625            (SessionLoader.start_rasterlayer, SessionLoader.end_rasterlayer):
626            New. Supports reading a rasterlayer tag.
627    
628            * Thuban/Model/map.py (Map.BoundingBox): Fix typo in comment.
629    
630            * Thuban/Model/save.py (XMLWriter.encode): Don't assume that we
631            get a string in Latin1. If we get such as string convert it to
632            unicode first, otherwise leave if alone before encoding.
633            (SessionSaver.write_layer): Add support for writing both Layers
634            and RasterLayers.
635    
636            * Thuban/Model/transientdb.py (AutoTransientTable.SimpleQuery):
637            The right argument may not be a string, it could also be a Column.
638    
639            * Thuban/UI/application.py (ThubanApplication.CreateMainWindow):
640            Make initial window size 600x400. Fixes RTBug #1872.
641    
642            * Thuban/UI/classifier.py (Classifier.__init__): Rearrange how
643            the dialog is constructed so that we can support layers that
644            do not have classifications.
645            (Classifier._OnTry): Only build a classification if the layer
646            supports one.
647    
648            * Thuban/UI/legend.py: Change all checks that a layer is an
649            instance of Layer into checks against BaseLayer.
650            (LegendTree.__FillTreeLayer): Only add children to a branch if
651            the layer supports classification.
652    
653            * Thuban/UI/mainwindow.py (MainWindow.NewSession,
654            MainWindow.OpenSession): Don't proceed with an action if the
655            user chooses Cancel when they are asked to save changes.
656            (MainWindow.AddRasterLayer): New. Open a dialog to allow the
657            user to select an image file. Create a new RasterLayer and add
658            it to the map.
659    
660            * Thuban/UI/renderer.py (MapRenderer.render_map): Add support
661            for rendering RasterLayer layers.
662            (MapRenderer.draw_raster_layer): Actually method that calls
663            the GDALWarp python wrapper and constructs an image from the
664            data returned.
665    
666            * Thuban/UI/tableview.py (LayerTableFrame.__init__): Change the
667            Choices symbols to match those used in the table query method.
668            Replace deprecated method calls on table with new method names.
669    
670            * Thuban/UI/view.py (MapCanvas.set_view_transform): Try to limit
671            how small the scale can get. This still needs more testing.
672    
673            * extensions/thuban/bmpdataset.cpp: New, but copied from GDAL.
674            Provides a driver to output in .bmp format.
675    
676            * extensions/thuban/cpl_mfile.cpp, extensions/thuban/cpl_mfile.h:
677            New. Provides IO routines which write to memory, rather than a file.
678    
679            * extensions/thuban/gdalwarp.cpp: New, but basically a direct copy
680            of the gdalwarp utility provided in GDAL. Added function calls
681            that can be accessed from python.
682    
683            * Data/iceland_sample_raster.thuban: New. Sample file that uses
684            a raster layer.
685    
686            * Data/iceland/island.tfw, Data/iceland/island.tif: New. Raster
687            layer image data.
688    
689            * Doc/thuban.dtd: Added rasterlayer attribute definition.
690    
691            * test/test_layer.py, test/test_load.py, test/test_save.py: Added
692            tests associated with the raster layer code.
693    
694            * test/test_transientdb.py
695            (TestTransientTable.test_auto_transient_table_query): Added a test
696            for using a Column object as the "right" parameter to a query.
697    
698    2003-05-19  Frank Koormann  <[email protected]>
699    
700            * Thuban/version.py (get_changelog_date):
701            Catch exceptions if ChangeLog does not exist.
702    
703            * Thuban/UI/view.py (MapCanvas.Export): Bugfix
704    
705    2003-05-19  Frank Koormann  <[email protected]>
706    
707            Extended version information for Thuban
708    
709            * Thuban/version.py: New, version information for Thuban: Last
710            modification date and last ChangeLog entry date.
711    
712            * Thuban/UI/mainwindow.py (MainWindow.About()): Extended version
713            information: Display Thuban, wxPython and Python version.
714    
715    2003-05-16  Bernhard Herzog  <[email protected]>
716    
717            * Thuban/Model/save.py: Remove some unused imports including the
718            __future__ import for nested_scopes as Thuban relies on Python 2.2
719            now.
720            (XMLWriter.encode): Remove the special case for a None argument.
721            In the saver encode is always called with a string argument.
722    
723    2003-05-16  Bernhard Herzog  <[email protected]>
724    
725            * Thuban/UI/__init__.py: Remove the work-around for the locale bug
726            in wxPython (at least when usinvg wxGTK) prior to 2.4. The symptom
727            of the bug was that e.g. float("1.2") would fail. Thuban now
728            requires 2.4.x.
729            
730    2003-05-16  Frank Koormann   <[email protected]>
731    
732            Printing enhancement and WMF export (under Win32)
733    
734            * Thuban/UI/renderer.py (ExportRenderer): New, derived from
735            ScreenRenderer. Renders Map, Legend and Scalebar for export.
736            (PrinterRenderer): New, derived from ExportRenderer. Replaces the old
737            PrintRender.
738    
739            * Thuban/UI/view.py (MapPrintout.__init__): Enhanced parameter set
740            to fullfil information needed for PrinterRenderer.
741            (MapCanvas.Export): New. Export Map (currently only to WMF on Win32).
742            (MapCanvas.Print): Adapted to new MapPrintout.
743            (OutputTransform): General calculations to transform from canvas
744            coordinates to export/printing devices.
745    
746            * Thuban/UI/mainwindow.py (MainWindow.ExportMap()): New. Added also
747            new method_command to call ExportMap, with platform dependency (only
748            __WXMSW__)
749      
750            * Thuban/UI/scalebar.py (ScaleBar.DrawScaleBar): Position and Size
751            of scalebar drawing area as new parameters.
752            
753            * Thuban/Model/scalebar.py (roundInterval): round long instead of int
754    
755            * Thuban/UI/legend.py (ScalebarBitmap.__SetScale):
756            Update to extended scalebar.DrawScalebar header.
757    
758            * test/test_export.py: New, test Thuban.UI.view.OutputTransform()
759    
760            * test/test_scalebar.py: Made test executable as standalone.
761    
762    2003-05-16  Bernhard Herzog  <[email protected]>
763    
764            * Thuban/Model/table.py (Table): Remove this compatibility alias
765            for DBFTable.
766    
767            * test/test_table.py: Import DBFTable as Table because that alias
768            doesn't exist anymore.
769    
770            * Thuban/UI/classgen.py: Remove some unused imports
771    
772    2003-05-14  Jonathan Coles   <[email protected]>
773    
774            * Thuban/Model/classgen.py (ClassGenerator.GenSingletonsFromList):
775            Fix docstring.
776            (ClassGenerator.GenUniformDistribution): Fix spelling of method name.
777            (ClassGenerator.GenQuantiles): Use the left/right brackets and min/max
778            values of the supplied range to determine the beginning and end
779            bounds of the generated classes.
780    
781            * Thuban/Model/range.py (Range.number_re): Now accepts floats that
782            do not have a leading 0 (.5 is now accepted as well as 0.5).
783    
784            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Fix name of method
785            call to ClassGenerator.GenUniformDistribution.
786    
787            * Thuban/UI/projdialog.py (ProjFrame.__do_layout): Fix Windows
788            layout bug with the 'Projection' label.
789    
790            * test/support.py (FloatTestCase): New. Needed for the Range tests.
791    
792            * test/test_range.py: New. Imported from SciParam.
793    
794    2003-05-12  Jonathan Coles   <[email protected]>
795    
796            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): Replace call
797            to table.UniqueValues() with calls that retrieve all the values
798            from the table. This will need to be replaced by a method on table
799            which can simply return the list (perhaps more efficiently).
800    
801    2003-05-12  Jonathan Coles   <[email protected]>
802    
803            The return value of ClassGenerator.CalculateQuantiles has changed.
804            Refer to the documentation for details.
805    
806            * test/test_classgen.py: Modified Quantile tests to use the
807            new return values.
808    
809            * Thuban/Model/classgen.py
810            (ClassGenerator.GenQuantiles): Add comments describing the parameters,
811            use new return values from CalculateQuantiles to produce the correct
812            range bounds in the Classification.
813            (ClassGenerator.CalculateQuantiles): Add more comments describing
814            the return values and parameters. Make minor adjustments to improve
815            the legibility of the code. Fix problem with adjusted not being set
816            in most cases.
817    
818    2003-05-12  Frank Koormann <[email protected]>
819            
820            * Thuban/Model/save.py (XMLWriter.encode()): Explicite call to unicode
821            and latin1. Fixes #1851 finally.
822    
823    2003-05-09  Jonathan Coles   <[email protected]>
824    
825            * test/test_classgen.py: New. Tests the Quantile algorithm.
826    
827            * Thuban/Model/classgen.py (ClassGenerator.CalculateQuantiles):
828            Clean up debugging statement, add comments, fix a small bug in the
829            returned adjusted percentiles.
830            
831    2003-05-09  Jonathan Coles   <[email protected]>
832    
833            Introduces Range class from SciParam into the ClassGroupRange class,
834            and such ranges can now be saved and loaded from disk.
835    
836            Quantiles are now available in the Classification Generator.
837    
838            Initial support for building Queries on a table. Doesn't do anything
839            but run some tests.
840    
841            * Thuban/Model/classification.py: Explicit imports.
842            (ClassGroupRange): Use the Range class to store the underlying
843            range information. The interface remains the same, except for
844            GetRange(), and you can also supply a Range object as the min
845            parameter to SetRange or __init__.
846    
847            * Thuban/Model/load.py (XMLReader.encode): New. Encodes the given
848            string appropriately for use in Thuban. Fixes RTbug #1851.
849            (SessionLoader.end_projection): Handle the context of the
850            projection tag a bit better by looking at what objects are not
851            None. There was an assumption that a projection tag for a map
852            could occur before any layers.
853            (SessionLoader.start_clrange): Provide backward compatibility for
854            reading min/max values as well as the new range parameter.
855    
856            * Thuban/Model/map.py: Explicit imports.
857    
858            * Thuban/Model/resource.py: Import _.
859            (ProjFileSaver.write): write header using projfile.dtd.
860    
861            * Thuban/Model/save.py: Explicit imports.
862            (XMLWriter.encode): New. Encode the given string from a format
863            used by Thuban into UTF-8. Fixes RTbug #1851.
864    
865            * Thuban/UI/classgen.py: Explicit imports.
866            (ClassGenDialog.__init__): Clean up the code and add support
867            for Quantiles.
868            (ClassGenDialog.OnOK): Add support for Quantiles.
869            (GenQuantilesPanel): New. Input panel for Quantiles.
870            (ClassGenerator, CustomRamp, MonochromaticRamp, GreyRamp, RedRamp,
871            GreenRamp, BlueRamp, HotToColdRamp): Move to Thuban/Model/classgen.py
872    
873            * Thuban/Model/classgen.py: New. Contains all the classes named above.
874    
875            * Thuban/UI/classifier.py: Explicit imports.
876            (ClassTable.GetValueAsCust, ClassTable.__ParseInput,
877            ClassTable.SetValueAsCustom): Reworked to use new Range class.
878    
879            * Thuban/UI/legend.py: Explicit imports.
880    
881            * Thuban/UI/mainwindow.py: Add support for the Join Dialog. Added
882            a Table menu and associated method calls.
883            (MainWindow.choose_color): Removed. No longer needed.
884    
885            * Thuban/UI/projdialog.py (ProjFrame.__VerifyButtons): Save button
886            should be disabled if no projection is selected in the available
887            list.
888    
889            * Thuban/UI/renderer.py: Explicit imports.
890    
891            * Thuban/UI/tableview.py (TableGrid.OnRangeSelect): Fix some issues
892            with correctly selecting the rows and issuing the right events.
893            Be sure to call Skip() to allow the grid to do some of its own
894            handling which allows the rows to actually be selected.
895            (LayerTableGrid.select_shapes): Rename from select_shape. Supports
896            selecting multiple shapes.
897            (LayerTableFrame): Support for building Queries.
898            (LayerTableFrame.select_shapes): Allow multiple shapes to be selected.
899    
900            * Thuban/UI/tree.py: Explicit imports.
901    
902            * Thuban/UI/view.py (MapCanvas): Delegate "SelectedShapes" so the
903            table view can call it.
904    
905            * test/test_classification.py: Explicit imports.
906            (TestClassification.test_ClassGroupRange): Fix test for new
907            Range class.
908    
909            * Doc/thuban.dtd: Add range parameter for clrange.
910    
911            * Thuban/Model/range.py: Taken from SciParam. Used as the underlying
912            object in ClassGroupRange, and also uesd for inputting ranges in
913            the classifer table and elsewhere.
914    
915            * Thuban/UI/join.py: New. Initial Join dialog. No real functionality
916            yet.
917    
918    2003-05-09  Frank Koormann <[email protected]>
919    
920            * Thuban/UI/scalebar.py (DrawScaleBar): Draw only if interval > 0.0.
921    
922  2003-05-08  Frank Koormann <[email protected]>  2003-05-08  Frank Koormann <[email protected]>
923    
924          Coding style updates          Coding style updates

Legend:
Removed from v.870  
changed lines
  Added in v.1085

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26