/[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 230 by bh, Fri Jul 19 13:21:14 2002 UTC revision 375 by jan, Mon Jan 27 14:20:40 2003 UTC
# Line 1  Line 1 
1    2003-01-27      Jan-Oliver Wagner <[email protected]>
2    
3            * Thuban/__init__.py (_): New.
4    
5            * Thuban/Model/classification.py, Thuban/Model/extension.py,
6            Thuban/Model/layer.py, Thuban/Model/load.py, Thuban/Model/map.py,
7            Thuban/Model/session.py, Thuban/UI/application.py, Thuban/UI/classifier.py,
8            Thuban/UI/context.py, Thuban/UI/controls.py, Thuban/UI/identifyview.py,
9            Thuban/UI/labeldialog.py, Thuban/UI/mainwindow.py, Thuban/UI/menu.py,
10            Thuban/UI/proj4dialog.py, Thuban/UI/renderer.py, Thuban/UI/tree.py,
11            Thuban/Lib/connector.py, Thuban/Lib/fileutil.py:
12            Replace user string by _() for i18n.
13    
14    2003-01-27  Jonathan Coles  <[email protected]>
15    
16      * Thuban/Model/layer.py: Classification initialization calls.
17    
18      * Thuban/Model/classification.py: Created class to encapsulate
19      a layer classification. Supports specific data points and
20      ranges.
21    
22      * Thuban/Model/load.py: Added support for loading classification
23      information.
24    
25      * Thuban/Model/save.py: Added support for saving classification
26      information.
27    
28      * Thuban/UI/classifier.py: Initial class for a dialog box for
29      specifying classification information.
30    
31      * Thuban/UI/mainwindows.py: Support for opening the classifier
32      dialog.
33    
34      * Thuban/UI/renderer.py: Support for drawing a layer with the
35      classification information.
36    
37      * Data/iceland_sample_class.thuban: iceland_sample with
38      classification data.
39    
40      * test/test_classification: Tests for the Classification class.
41    
42    2002-12-09  Bernhard Herzog  <[email protected]>
43    
44            * test/test_command.py: New. Tests for the command classes.
45    
46            * Thuban/UI/command.py (ToolCommand): New class for tool commands.
47            (Command.IsTool): New method to distinguish between command
48            switching tools and other commands.
49    
50            * Thuban/UI/view.py (MapCanvas.SelectTool): New method to select
51            the tool to avoid direct assignments to instance variables
52            (MapCanvas.ZoomInTool, MapCanvas.ZoomOutTool, MapCanvas.PanTool)
53            (MapCanvas.IdentifyTool, MapCanvas.LabelTool): Use SelectTool to
54            change the tool
55    
56            * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): If an
57            active tool's command turns insensitive, disable the tool.
58            (_tool_command): Use the new ToolCommand class
59    
60            * Examples/simple_extensions/simple_tool.py (simple_tool): Use the
61            SelectTool method to change the tool
62            (iconfile): Use the ToolCommand class
63    
64    2002-12-03  Bernhard Herzog  <[email protected]>
65    
66            * Thuban/UI/tree.py (SessionTreeCtrl.normalize_selection): Handle
67            the case of selected items that are not children of Layers or Maps
68            properly. Previously this bug would trigger an assertion in
69            wxWindows.
70    
71    2002-11-06  Frank Koormann  <[email protected]>
72    
73            * Thuban/UI/mainwindow.py: Altered the order of tools in the
74            toolbar: First now are all navigation tools (Zoom In/Out, Pan,
75            Full Extent).
76        
77    2002-10-23  Bernhard Herzog  <[email protected]>
78    
79            * setup.py (setup call): version now 0.1.3
80    
81            * MANIFEST.in: Add the files in test/
82    
83            * test/README: Add note about tests requiring the iceland data
84    
85            * Thuban/UI/mainwindow.py (MainWindow.About): Add 2002 to
86            copyright notice.
87    
88    2002-10-18  Bernhard Herzog  <[email protected]>
89    
90            * test/test_map.py
91            (TestMapWithContents.test_projected_bounding_box): Use an explicit
92            epsilon.
93    
94            * test/support.py (FloatComparisonMixin.assertFloatEqual)
95            (FloatComparisonMixin.assertFloatSeqEqual): give a more useful
96            message if the assertion fails and don't return the return value
97            of self.assert_. In assertFloatSeqEqual the return meant that not
98            all items of the sequence were compared.
99    
100    2002-09-20  Bernhard Herzog  <[email protected]>
101    
102            * test/test_fileutil.py: New. Test cases for Thuban.Lib.fileutil
103    
104            * Thuban/Lib/fileutil.py: Fixup some whitespace and typos
105    
106            * test/test_map.py (TestMapWithContents.test_tree_info): Create
107            the string with the bounding box on the fly because of platform
108            differences in the way %g is handled.
109    
110            * test/test_layer.py (TestLayer.test_empty_layer): Create an empty
111            DBFfile too because Thuban layers can't yet cope missing DBF
112            files.
113    
114    2002-09-20  Bernhard Herzog  <[email protected]>
115    
116            * test/test_menu.py: Use initthuban instead of
117            add_thuban_dir_to_path to initialize Thuban.
118    
119            * test/support.py (FloatComparisonMixin.assertFloatEqual): New.
120            Mixin class for float comparisons
121            (SubscriberMixin): New. Mixin class to test messages sent through
122            the Connector class
123    
124            * test/README: Fix a typo and add the -v flag to the command for
125            individual tests
126    
127            * test/test_session.py: New. Test cases for Thuban.Model.session
128    
129            * test/test_proj.py: New. Test cases for Thuban.Model.proj
130    
131            * test/test_map.py: New. Test cases for Thuban.Model.map
132    
133            * test/test_layer.py: New. Test cases for Thuban.Model.layer
134    
135            * test/test_label.py: New. Test cases for Thuban.Model.label
136    
137            * test/test_connector.py: New. Test cases for Thuban.Lib.connector
138    
139            * test/test_color.py: New. Test cases for Thuban.Model.color
140    
141            * test/test_base.py: New. Test cases for Thuban.Model.base
142    
143    2002-09-13  Bernhard Herzog  <[email protected]>
144    
145            * Thuban/Model/session.py (Session.forwarded_channels): Forward
146            the CHANGED channel too.
147    
148            * Thuban/Model/map.py (Map.forwarded_channels): Forward the
149            CHANGED channel too.
150            (Map.__init__): Call the Modifiable constructor as well.
151    
152            * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
153            event if the modified flag changes.
154            (Modifiable.changed): Tweak the doc-string.
155    
156            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
157            (MainWindow.set_position_text): Put the code that puts the text
158            with the mouse position into the status bar into the new method
159            set_position_text so that it can overwritten in derived classes.
160    
161    2002-09-12  Bernhard Herzog  <[email protected]>
162    
163            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
164            message box on the main window.
165    
166    2002-09-11  Bernhard Herzog  <[email protected]>
167    
168            * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
169            the 'E' because it's less likely to interfere with other menu
170            entries.
171            (MainWindow.build_menu): remove an incorrect comment.
172    
173    2002-09-10  Bernhard Herzog  <[email protected]>
174    
175            * Thuban/UI/mainwindow.py (MainWindow.Map): New.
176            (_tool_command): Add sensitive parameter
177            (_has_visible_map): Sensitivity callback to tools and other
178            commands that require a visible map. Use it in map_zoom_in_tool,
179            map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
180            and map_full_extent
181    
182    2002-09-06  Bernhard Herzog  <[email protected]>
183    
184            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
185            VIEW_POSITION
186    
187    2002-09-04  Frank Koormann   <[email protected]>
188    
189            * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
190    
191    2002-09-02  Bernhard Herzog  <[email protected]>
192    
193            * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
194            wxWindows already and our implementation doesn't work correctly
195            with wxGTK 2.3:
196            (MapCanvas.__init__): Remove the instance variable
197            (MapCanvas.OnPaint): Always call do_redraw when there's a map to
198            be drawin
199            (MapCanvas.OnIdle): Removed.
200    
201            * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
202            a parameter to determine the size of the rectangle.
203            (MapCanvas.find_shape_at): Create the box around the point on a
204            layer by layer basis and make the size depend on the shape type.
205            This solves a problem with the selection of point shapes at the
206            border of the layer's bounding box
207    
208    2002-08-30  Bernhard Herzog  <[email protected]>
209    
210            * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
211            for the sensitivity  of remove layer.
212            (_can_remove_layer): New. Sensitivity callback for remove layer
213            (Command layer_remove): Use _can_remove_layer
214    
215            * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
216            determine whether a given layer can be deleted.
217    
218            * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
219            (MapCanvas.do_redraw): Get rid of the unused update_region
220            instance variable
221    
222            * Thuban/UI/view.py: Add/update some doc-strings.
223    
224            * test/: new subdirectory with a bunch of unit tests.
225    
226            * test/README, test/test_table.py, test/test_save.py,
227            test/test_menu.py, test/test_load.py: Initial set of tests and
228            brief instructions on how to run them
229    
230    2002-08-29  Bernhard Herzog  <[email protected]>
231    
232            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
233            arcs with multiple parts.
234    
235            * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
236            Handle degenrate rectangles.
237    
238            * Thuban/Model/table.py: Make writing records work correctly:
239            (Table.__init__): Keep track of whether the DBF is open for
240            writing
241            (Table.write_record): Open the DBF file for writing when necessary
242    
243    2002-08-27  Bernhard Herzog  <[email protected]>
244    
245            * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
246            dbf files only for reading by default. Use a new writable dbf
247            object for writing.
248    
249    2002-08-26  Bernhard Herzog  <[email protected]>
250    
251            * Thuban/UI/mainwindow.py: Refactor the context creation:
252            (MainWindow.Context): New method to return a context
253            (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
254            new method
255    
256            * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
257            layer table specific code from TableGrid into LayerTableGrid
258            (TableFrame, LayerTableFrame): Split the layer table specific code
259            from TableFrame into LayerTableFrame
260            (LayerTableGrid.select_shape): Remove a debug print
261    
262            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
263            LayerTableFrame
264    
265    2002-08-23  Bernhard Herzog  <[email protected]>
266    
267            * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
268            absolute filename.
269    
270    2002-08-22  Bernhard Herzog  <[email protected]>
271    
272            * Thuban/Model/table.py (Table.write_record): New method to write
273            records.
274            (Table.__init__): Open the DBF file for writing too.
275    
276            * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
277            into the underlying table.
278    
279            * extensions/shapelib/shapefil.h (DBFCommit),
280            extensions/shapelib/dbfopen.c (DBFCommit): New API function to
281            commit any changes made to the DBF file.
282    
283            * Thuban/UI/mainwindow.py (make_check_current_tool)
284            (_tool_command): Put the code that generates the "checked"
285            callback into a separate function so that we can reuse it
286            elsewhere
287    
288            * Thuban/Model/save.py (Saver): New class to handle serializing a
289            session into an XML file. The main reason to introduce a class is
290            that applications built on Thuban can derive from it so that they
291            can save additional information in a session file.
292            (save_session): Delegate almost all the work to the Saver class.
293            Rename the filename argument to file because it may be a file like
294            object now.
295    
296            * Thuban/Model/load.py: Get rid of the Python 1.5.2 compatibility
297            code. Remove the little test code which would be executed when the
298            module is run as a script which didn't work anymore since it can't
299            import the other Thuban modules.
300            (ProcessSession, load_session): Refactor the ProcessSession to
301            have one method for each element start and end tag so that derived
302            classes can easily override the processing of individual tags.
303            Also, always parse with namespaces enabled because applications
304            built on top of Thuban will likely use namespaces if they extend
305            the session file format.
306    
307    2002-08-21  Bernhard Herzog  <[email protected]>
308    
309            * setup.py (ThubanInstall.run): Don't repr install_lib_orig
310            because thubaninit_contents will do it for us.
311    
312    2002-08-16      Jan-Oliver Wagner <[email protected]>
313    
314            * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
315            tree window already open
316    
317    2002-08-15  Bernhard Herzog  <[email protected]>
318    
319            * Thuban/Model/layer.py (Layer.Destroy): Call the unboundd method
320            with self.
321    
322            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Only release the mouse
323            when we have actually captured it.
324    
325            * Thuban/Model/layer.py (Layer.Destroy): New. Explicitly close the
326            shapefile and destroy the table.
327    
328            * Thuban/Model/table.py (Table.Destroy): New. Close the DBF file.
329    
330    2002-08-14  Bernhard Herzog  <[email protected]>
331    
332            * Thuban/UI/controls.py (RecordTable.__init__): Remove the unused
333            instance variable columns
334            (RecordTable.GetTypeName): row and col may be negative in some
335            cases.
336    
337            * setup.py (InstallLocal.initialize_options)
338            (InstallLocal.finalize_options, InstallLocal.user_options): New
339            option create-init-file to build a thubaninit.py when running
340            install_local
341            (InstallLocal.run): Create the thubaninit.py module when requested
342            (thubaninit_contents): Split the template into several parts and
343            create a new function thubaninit_contents that creates the
344            contents of a thubaninit module.
345            (ThubanInstall.run): Use the new function to create the thubaninit
346            module.
347    
348    2002-07-30  Bernhard Herzog  <[email protected]>
349    
350            * Thuban/UI/application.py (ThubanApplication.OnExit): Do some
351            cleanup.
352            (ThubanApplication.MainLoop): Extend to automatically call OnExit.
353    
354            * Thuban/Model/session.py (Session.Destroy): Don't bypass the
355            direct base class' Destroy method.
356    
357            * Thuban/Model/map.py (Map.ClearLayers): New method to delete all
358            layers.
359            (Map.Destroy): Destroy the label_layer as well and call the
360            inherited Desatroymethod first so that no more messages are
361            issued.
362            (Map.RaiseLayer, Map.LowerLayer): Only issue LAYERS_CHANGED
363            message if the stacking order actually has changed. Add
364            doc-strings.
365            (Map.BoundingBox): Correct the doc-string.
366            (Map.AddLayer, Map.RemoveLayer, Map.Layers, Map.HasLayers)
367            (Map.ProjectedBoundingBox, Map.SetProjection): Add doc-strings.
368    
369            * Thuban/Model/label.py (LabelLayer.ClearLabels): New to delete
370            all labels.
371    
372    2002-07-29  Bernhard Herzog  <[email protected]>
373    
374            * Thuban/Model/map.py (Map.subscribe_layer_channels)
375            (Map.unsubscribe_layer_channels): Put the code that (un)subscribes
376            to a layer's channels into separate methods.
377            (Map.RemoveLayer, Map.AddLayer): Call the new methods
378            (Map.Destroy): Unsubscribe from a layer's channels before
379            destroying it.
380    
381            * Thuban/UI/view.py (MapCanvas.find_shape_at): Change the
382            selected_layer parameter to searched_layer which is the layer to
383            search in.
384            (MapCanvas.SelectShapeAt): New parameter layer to restrict the
385            search to that layer. Return the selected layer and shape.
386    
387            * Examples/simple_extensions/simple_tool.py (simple_tool): Fix a
388            typo
389    
390    2002-07-24  Bernhard Herzog  <[email protected]>
391    
392            * Thuban/UI/application.py (ThubanApplication.create_session):
393            Extend the doc string.
394            (ThubanApplication.subscribe_session)
395            (ThubanApplication.unsubscribe_session): New methods to
396            subscribe/unsubscribe to/from session channels.
397            (ThubanApplication.SetSession): Call the new methods here.
398            (ThubanApplication.maps_changed, ThubanApplication.set_map):
399            Renamed set_map to maps_changed. Its now a subscriber for
400            MAPS_CHANGED.
401    
402            * Thuban/UI/view.py (ZoomOutTool.MouseUp): Use the correct
403            x-coordinate in case of simple clicks
404    
405            * Thuban/Model/base.py (Modifiable.changed): Apply the args tuple,
406            don't pass it as a parameter
407    
408            * Thuban/Model/session.py (Session.RemoveMap): New
409    
410            * Thuban/UI/mainwindow.py (MainWindow.__init__): Turn the initial
411            window size into a parameter.
412    
413    2002-07-23  Bernhard Herzog  <[email protected]>
414    
415            * Thuban/UI/menu.py (Menu.item_index): Also search for menus not
416            just commands.
417    
418            * Thuban/UI/mainwindow.py (MainWindow.__init__): Change the
419            parameter list a bit to allow setting the window title and the
420            initial message in the status bar. Update the callers.
421    
422            * Thuban/UI/application.py (ThubanApplication.OnInit)
423            (ThubanApplication.CreateMainWindow): Put the mainwindow
424            instantiation into a separate method so that it can be overridden
425            by a subclass.
426    
427  2002-07-19  Bernhard Herzog  <[email protected]>  2002-07-19  Bernhard Herzog  <[email protected]>
428    
429            * Thuban/Model/session.py: Issue a CHANGED message every time
430            another changed message is issued to make it easier to get
431            notified of changes.
432            (Session): Update the doc string
433            (Session.forward): Issue changed-events as CHANGED as well.
434            (Session.changed): Overwrite the inherited version to issue
435            CHANGED events as well.
436    
437            * Thuban/UI/tree.py: We can now simply subscribe to the session's
438            CHANGED channel to be informed of changes.
439            (SessionTreeCtrl.session_channels): Not needed any longer.
440            (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
441            Only have to (un)subscribe CHANGED
442    
443            * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
444    
445          * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around          * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
446          for the wxPython locale bug to __init__.py so that it's          for the wxPython locale bug to __init__.py so that it's
447          automatically executed by anybody using UI code from Thuban.          automatically executed by anybody using UI code from Thuban.

Legend:
Removed from v.230  
changed lines
  Added in v.375

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26