/[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 205 by bh, Tue Jul 9 14:02:40 2002 UTC revision 434 by jonathan, Thu Feb 27 15:51:55 2003 UTC
# Line 1  Line 1 
1    2003-02-26  Jonathan Coles   <[email protected]>
2    
3            * Thuban/common.py: Moved color conversion functions into
4            Thuban/UI/common.py.
5            (Str2Num): Now converts the float (not the string) to a long/int
6            so that an exception isn't thrown.
7    
8            * Thuban/UI/common.py: Common functions used in several UI modules
9    
10            * Thuban/Model/classification.py: Changed the class hierarchy
11            so that a Classification consists of Groups which return
12            Properties when a value matches a Group.
13    
14            * Thuban/Model/layer.py: Fixed name resolution problem.
15    
16            * Thuban/Model/load.py: Use new Classification and Group functions.
17    
18            * Thuban/Model/save.py (Saver.write_attribs): Fixes a test case
19            failure.
20            (Saver.write_classification): Use new Classification and Group
21            functions.
22    
23            * Thuban/UI/classifier.py: Changes to use new Classification and Group
24            functions
25    
26            * Thuban/UI/renderer.py: Use new Classification and Group functions.
27            Use common.py functions.
28    
29            * Thuban/UI/tree.py: Use common.py functions
30    
31    2003-02-24  Jonathan Coles   <[email protected]>
32    
33            * Thuban/common.py (Color2wxColour, wxColour2Color): Conversion
34            functions from Thuban color objects to wxWindow colour objects.
35    
36            * Thuban/Model/classification.py (Classification): Renamed
37            GetProperties() to GetClassData(). Used the new iterator
38            in TreeInfo().
39            (ClassIterator): Iterator implementation to iterate over the
40            ClassData objects in a classification object.
41    
42            * Thuban/Model/save.py (Saver.write_classificaton): Uses
43            the new iterator to save the classification information.
44    
45            * Thuban/UI/classifier.py (SelectPropertiesDialog): Support
46            for changing the stroke and fill colors and previewing the
47            changes.
48    
49            * Thuban/UI/mainwindow.py (MainWindow.OpenSession,
50            MainWindow.SaveSessionAs): Text string changes so the dialogs
51            have more meaningful titles.
52    
53            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Change
54            Classification method name from GetProperties to GetClassData.
55    
56            * Thuban/UI/view.py (MapCanvas.find_shape_at): Use method calls
57            instead of accessing now non-existent class variables.
58    
59    2003-02-24  Bernhard Herzog  <[email protected]>
60    
61            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Remove
62            unneeded Shape() call. Rendering is substantially faster without
63            it and it avoids some problems with broken shape files.
64    
65    2003-02-20  Frank Koormann   <[email protected]>
66    
67            Force minimal size of identify and label dialogs. The autosizing
68            looked too ugly.
69    
70            * Thuban/UI/controls.py (RecordListCtrl): Set minimal width for columns.
71            * Thuban/UI/labeldialog.py (LabelDialog.dialog_layout):
72            Set size of listctrl.
73            * Thuban/UI/identifyview.py (IdentifyView.__init__):
74            Set size of dialog.
75    
76    2003-02-19  Jonathan Coles   <[email protected]>
77    
78            * test/test_classification.py, test/test_layer.py,
79            test/test_load.py, test/test_map.py, test/test_session.py:
80            Updated the tests to use the new functions that are in the
81            respective classes.
82    
83            * Thuban/Model/classification.py (Classification):
84            Uses the new ClassData* classes. Modification messages are
85            passed up to the parent layer (if it exists).
86            (ClassData): New class to encapsulate the common data in each
87            classification property.
88            (ClassDataDefault): Represents the Default class. data.
89            (ClassDataPoint): Represents a single class. data point
90            (ClassDataRange): Represents a class. range
91            (ClassDataMap): Represents a class. map (unused).
92    
93            * Thuban/Model/color.py: Added Color.None to represent something
94            with no color. Color.Black represents the color black.
95            (NoColor): Helper class derived from Color to represent something
96            with no color.
97    
98            * Thuban/Model/layer.py (Layer): Removed references to fill, stroke,
99            stroke_width attributes. Made the 'classification' attribute private.
100            New methods for setting/getting the classification.
101    
102            * Thuban/Model/load.py (ProcessSession): Use new methods on Layer
103            to get the classifcation and use the new ClassData* classes to
104            hold the classification data. Use Str2Num to convert numbers
105            properly.
106    
107            * Thuban/Model/save.py (Saver): Use new Color and Classification
108            methods
109    
110            * Thuban/UI/classifier.py (ClassGrid): New class to represent a
111            custom grid.
112            (ClassTable): Support for editing Values and Labels and for
113            changing what type (point or range) of data is stored in each
114            property based on how the user enters the data.
115            (Classifier): Support for saving the new classifications and
116            launching the dialog to edit a property.
117            (SelectPropertiesDialog): New class for editing the visual
118            properties of a classification (stroke color, width, and fill color)
119            (ClassPreviewer): Took the Draw method from ClassRenderer and
120            made most of it into this new class. Intend to use this class in
121            the SelectPropertiesDialog for previewing changes.
122    
123            * Thuban/UI/renderer.py: Use new Color and Classification methods.
124    
125            * Thuban/UI/tree.py: Formatting changes.
126    
127            * Doc/thuban.dtd: Add 'label' element
128    
129            * Thuban/common.py: New. Contains common routines used throughout
130            the code.
131            (Str2Num): Takes a string and converts it to the "best" type of
132            number.
133    
134    2003-02-14  Bernhard Herzog  <[email protected]>
135    
136            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Make sure that the
137            dragging flag is always set to 0 even when the tool implementation
138            raises an exception
139    
140    2003-02-11  Bernhard Herzog  <[email protected]>
141    
142            * Thuban/UI/application.py (ThubanApplication.splash_screen): New
143            method to create a splash screen.
144            (ThubanApplication.ShowMainWindow): New. Show the main window.
145            Needed so the splash screen can display the mainwindow
146            (ThubanApplication.OnInit): Call the
147            new splash_screen method to determine whether the application
148            should display a splash screen. If it displays a splash screen do
149            not immediately show the main window.
150    
151    2003-02-11  Jonathan Coles  <[email protected]>
152    
153            * Thuban/Model/classification.py: Added import line to fix
154            feature conflicts between running on python2.2 and python2.1.
155    
156            * Thuban/UI/classifier.py (ClassTable): Didn't need to hang
157            onto the clinfo parameter, so removed the deepcopy().
158    
159    2003-02-10  Jonathan Coles  <[email protected]>
160    
161            * Thuban/Model/save.py (Saver.open_element, Saver.close_element):
162            Added element_open variable to track opening and closing of tags
163            so that tags that don't span more than one line are closed with
164            /> instead of </tag_name>. Use the GetDefault*() methods of
165            the Classification class.
166    
167            * Thuban/Model/classification.py (Classificaton): Added set and
168            get methods for the default data. The class also takes a layer
169            reference so that modification messages can be sent. Fixed the
170            methods to use the new ClassData class.
171            (ClassData): New class to encapsulate the classification data
172    
173            * Thuban/Model/layer.py (Layer): Remove the
174            Set[Fill|Stroke|StrokeWidth]() methods. Code should call the
175            SetDefault*() methods on the layer's classification object.
176            (Layer.__init__): Use the new SetDefault*() methods in the
177            Classification class.
178    
179            * Thuban/Model/load.py (ProcessSession): Use the new ClassData
180            object instead of a dictionary.
181    
182            * Thuban/UI/classifier.py (ClassRenderer): New class to
183            draw the classifications in the dialog box's table.
184            (Classifier): Modified to use the ClassRenderer class.
185    
186            * Thuban/UI/mainwindow.py (MainWindow): Use the SetDefault*()
187            methods of the Classification class.
188    
189            * Thuban/UI/renderer.py (MapRenderer): Use the Get*() methods
190            of the ClassData class.
191    
192            * test/test_classification.py, test/test_layer.py,
193            test/test_map.py, test/test_session.py: Fix the tests to work
194            with the above code changes.
195    
196    2003-02-03  Jonathan Coles  <[email protected]>
197    
198            * Thuban/Model/classification.py (Classification): Added getNull()
199            to return the NullData reference
200    
201            * Thuban/Model/layer.py (Layer.SetFill, Layer.SetStroke,
202            Layer.SetStrokeWidth): Modified these functions to change the
203            null data in the classification rather than keep these values
204            directly in the Layer class. Menu options to change these values
205            work again.
206    
207    2003-01-28  Jonathan Coles  <[email protected]>
208    
209            * Thuban/UI/classifier.py (Classifier): Resolved merging conflicts.
210            Fixed crashing problem on some systems. Dialog box shows
211            classification data.
212    
213            * Thuban/UI/tree.py (SessionTreeCtrl.add_items): Handle drawing
214            Colors in the tree view.
215    
216            * Thuban/Model/layer.py (Layer.TreeInfo): Added a call to build
217            the tree info for classifications. Commented out unnecessary lines.
218    
219            * Thuban/Model/classification.py (Classification.TreeInfo): New
220            function to add information about the classification into the
221            tree view.
222    
223    2003-01-27  Jan-Oliver Wagner <[email protected]>
224    
225            * Thuban/__init__.py (_): New.
226    
227            * Thuban/Model/classification.py, Thuban/Model/extension.py,
228            Thuban/Model/layer.py, Thuban/Model/load.py, Thuban/Model/map.py,
229            Thuban/Model/session.py, Thuban/UI/application.py,
230            Thuban/UI/classifier.py, Thuban/UI/context.py, Thuban/UI/controls.py,
231            Thuban/UI/identifyview.py, Thuban/UI/labeldialog.py,
232            Thuban/UI/mainwindow.py, Thuban/UI/menu.py, Thuban/UI/proj4dialog.py,
233            Thuban/UI/renderer.py, Thuban/UI/tree.py, Thuban/Lib/connector.py,
234            Thuban/Lib/fileutil.py: Replace user string by _() for i18n.
235    
236    2003-01-27  Jonathan Coles  <[email protected]>
237    
238            * Thuban/Model/layer.py: Classification initialization calls.
239    
240            * Thuban/Model/classification.py: Created class to encapsulate
241            a layer classification. Supports specific data points and
242            ranges.
243    
244            * Thuban/Model/load.py: Added support for loading classification
245            information.
246    
247            * Thuban/Model/save.py: Added support for saving classification
248            information.
249    
250            * Thuban/UI/classifier.py: Initial class for a dialog box for
251            specifying classification information.
252    
253            * Thuban/UI/mainwindows.py: Support for opening the classifier
254            dialog.
255    
256            * Thuban/UI/renderer.py: Support for drawing a layer with the
257            classification information.
258    
259            * Data/iceland_sample_class.thuban: iceland_sample with
260            classification data.
261    
262            * test/test_classification: Tests for the Classification class.
263    
264    2002-12-09  Bernhard Herzog  <[email protected]>
265    
266            * test/test_command.py: New. Tests for the command classes.
267    
268            * Thuban/UI/command.py (ToolCommand): New class for tool commands.
269            (Command.IsTool): New method to distinguish between command
270            switching tools and other commands.
271    
272            * Thuban/UI/view.py (MapCanvas.SelectTool): New method to select
273            the tool to avoid direct assignments to instance variables
274            (MapCanvas.ZoomInTool, MapCanvas.ZoomOutTool, MapCanvas.PanTool)
275            (MapCanvas.IdentifyTool, MapCanvas.LabelTool): Use SelectTool to
276            change the tool
277    
278            * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): If an
279            active tool's command turns insensitive, disable the tool.
280            (_tool_command): Use the new ToolCommand class
281    
282            * Examples/simple_extensions/simple_tool.py (simple_tool): Use the
283            SelectTool method to change the tool
284            (iconfile): Use the ToolCommand class
285    
286    2002-12-03  Bernhard Herzog  <[email protected]>
287    
288            * Thuban/UI/tree.py (SessionTreeCtrl.normalize_selection): Handle
289            the case of selected items that are not children of Layers or Maps
290            properly. Previously this bug would trigger an assertion in
291            wxWindows.
292    
293    2002-11-06  Frank Koormann  <[email protected]>
294    
295            * Thuban/UI/mainwindow.py: Altered the order of tools in the
296            toolbar: First now are all navigation tools (Zoom In/Out, Pan,
297            Full Extent).
298    
299    2002-10-23  Bernhard Herzog  <[email protected]>
300    
301            * setup.py (setup call): version now 0.1.3
302    
303            * MANIFEST.in: Add the files in test/
304    
305            * test/README: Add note about tests requiring the iceland data
306    
307            * Thuban/UI/mainwindow.py (MainWindow.About): Add 2002 to
308            copyright notice.
309    
310    2002-10-18  Bernhard Herzog  <[email protected]>
311    
312            * test/test_map.py
313            (TestMapWithContents.test_projected_bounding_box): Use an explicit
314            epsilon.
315    
316            * test/support.py (FloatComparisonMixin.assertFloatEqual)
317            (FloatComparisonMixin.assertFloatSeqEqual): give a more useful
318            message if the assertion fails and don't return the return value
319            of self.assert_. In assertFloatSeqEqual the return meant that not
320            all items of the sequence were compared.
321    
322    2002-09-20  Bernhard Herzog  <[email protected]>
323    
324            * test/test_fileutil.py: New. Test cases for Thuban.Lib.fileutil
325    
326            * Thuban/Lib/fileutil.py: Fixup some whitespace and typos
327    
328            * test/test_map.py (TestMapWithContents.test_tree_info): Create
329            the string with the bounding box on the fly because of platform
330            differences in the way %g is handled.
331    
332            * test/test_layer.py (TestLayer.test_empty_layer): Create an empty
333            DBFfile too because Thuban layers can't yet cope missing DBF
334            files.
335    
336    2002-09-20  Bernhard Herzog  <[email protected]>
337    
338            * test/test_menu.py: Use initthuban instead of
339            add_thuban_dir_to_path to initialize Thuban.
340    
341            * test/support.py (FloatComparisonMixin.assertFloatEqual): New.
342            Mixin class for float comparisons
343            (SubscriberMixin): New. Mixin class to test messages sent through
344            the Connector class
345    
346            * test/README: Fix a typo and add the -v flag to the command for
347            individual tests
348    
349            * test/test_session.py: New. Test cases for Thuban.Model.session
350    
351            * test/test_proj.py: New. Test cases for Thuban.Model.proj
352    
353            * test/test_map.py: New. Test cases for Thuban.Model.map
354    
355            * test/test_layer.py: New. Test cases for Thuban.Model.layer
356    
357            * test/test_label.py: New. Test cases for Thuban.Model.label
358    
359            * test/test_connector.py: New. Test cases for Thuban.Lib.connector
360    
361            * test/test_color.py: New. Test cases for Thuban.Model.color
362    
363            * test/test_base.py: New. Test cases for Thuban.Model.base
364    
365    2002-09-13  Bernhard Herzog  <[email protected]>
366    
367            * Thuban/Model/session.py (Session.forwarded_channels): Forward
368            the CHANGED channel too.
369    
370            * Thuban/Model/map.py (Map.forwarded_channels): Forward the
371            CHANGED channel too.
372            (Map.__init__): Call the Modifiable constructor as well.
373    
374            * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
375            event if the modified flag changes.
376            (Modifiable.changed): Tweak the doc-string.
377    
378            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
379            (MainWindow.set_position_text): Put the code that puts the text
380            with the mouse position into the status bar into the new method
381            set_position_text so that it can overwritten in derived classes.
382    
383    2002-09-12  Bernhard Herzog  <[email protected]>
384    
385            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
386            message box on the main window.
387    
388    2002-09-11  Bernhard Herzog  <[email protected]>
389    
390            * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
391            the 'E' because it's less likely to interfere with other menu
392            entries.
393            (MainWindow.build_menu): remove an incorrect comment.
394    
395    2002-09-10  Bernhard Herzog  <[email protected]>
396    
397            * Thuban/UI/mainwindow.py (MainWindow.Map): New.
398            (_tool_command): Add sensitive parameter
399            (_has_visible_map): Sensitivity callback to tools and other
400            commands that require a visible map. Use it in map_zoom_in_tool,
401            map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
402            and map_full_extent
403    
404    2002-09-06  Bernhard Herzog  <[email protected]>
405    
406            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
407            VIEW_POSITION
408    
409    2002-09-04  Frank Koormann  <[email protected]>
410    
411            * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
412    
413    2002-09-02  Bernhard Herzog  <[email protected]>
414    
415            * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
416            wxWindows already and our implementation doesn't work correctly
417            with wxGTK 2.3:
418            (MapCanvas.__init__): Remove the instance variable
419            (MapCanvas.OnPaint): Always call do_redraw when there's a map to
420            be drawin
421            (MapCanvas.OnIdle): Removed.
422    
423            * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
424            a parameter to determine the size of the rectangle.
425            (MapCanvas.find_shape_at): Create the box around the point on a
426            layer by layer basis and make the size depend on the shape type.
427            This solves a problem with the selection of point shapes at the
428            border of the layer's bounding box
429    
430    2002-08-30  Bernhard Herzog  <[email protected]>
431    
432            * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
433            for the sensitivity  of remove layer.
434            (_can_remove_layer): New. Sensitivity callback for remove layer
435            (Command layer_remove): Use _can_remove_layer
436    
437            * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
438            determine whether a given layer can be deleted.
439    
440            * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
441            (MapCanvas.do_redraw): Get rid of the unused update_region
442            instance variable
443    
444            * Thuban/UI/view.py: Add/update some doc-strings.
445    
446            * test/: new subdirectory with a bunch of unit tests.
447    
448            * test/README, test/test_table.py, test/test_save.py,
449            test/test_menu.py, test/test_load.py: Initial set of tests and
450            brief instructions on how to run them
451    
452    2002-08-29  Bernhard Herzog  <[email protected]>
453    
454            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
455            arcs with multiple parts.
456    
457            * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
458            Handle degenrate rectangles.
459    
460            * Thuban/Model/table.py: Make writing records work correctly:
461            (Table.__init__): Keep track of whether the DBF is open for
462            writing
463            (Table.write_record): Open the DBF file for writing when necessary
464    
465    2002-08-27  Bernhard Herzog  <[email protected]>
466    
467            * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
468            dbf files only for reading by default. Use a new writable dbf
469            object for writing.
470    
471    2002-08-26  Bernhard Herzog  <[email protected]>
472    
473            * Thuban/UI/mainwindow.py: Refactor the context creation:
474            (MainWindow.Context): New method to return a context
475            (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
476            new method
477    
478            * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
479            layer table specific code from TableGrid into LayerTableGrid
480            (TableFrame, LayerTableFrame): Split the layer table specific code
481            from TableFrame into LayerTableFrame
482            (LayerTableGrid.select_shape): Remove a debug print
483    
484            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
485            LayerTableFrame
486    
487    2002-08-23  Bernhard Herzog  <[email protected]>
488    
489            * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
490            absolute filename.
491    
492    2002-08-22  Bernhard Herzog  <[email protected]>
493    
494            * Thuban/Model/table.py (Table.write_record): New method to write
495            records.
496            (Table.__init__): Open the DBF file for writing too.
497    
498            * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
499            into the underlying table.
500    
501            * extensions/shapelib/shapefil.h (DBFCommit),
502            extensions/shapelib/dbfopen.c (DBFCommit): New API function to
503            commit any changes made to the DBF file.
504    
505            * Thuban/UI/mainwindow.py (make_check_current_tool)
506            (_tool_command): Put the code that generates the "checked"
507            callback into a separate function so that we can reuse it
508            elsewhere
509    
510            * Thuban/Model/save.py (Saver): New class to handle serializing a
511            session into an XML file. The main reason to introduce a class is
512            that applications built on Thuban can derive from it so that they
513            can save additional information in a session file.
514            (save_session): Delegate almost all the work to the Saver class.
515            Rename the filename argument to file because it may be a file like
516            object now.
517    
518            * Thuban/Model/load.py: Get rid of the Python 1.5.2 compatibility
519            code. Remove the little test code which would be executed when the
520            module is run as a script which didn't work anymore since it can't
521            import the other Thuban modules.
522            (ProcessSession, load_session): Refactor the ProcessSession to
523            have one method for each element start and end tag so that derived
524            classes can easily override the processing of individual tags.
525            Also, always parse with namespaces enabled because applications
526            built on top of Thuban will likely use namespaces if they extend
527            the session file format.
528    
529    2002-08-21  Bernhard Herzog  <[email protected]>
530    
531            * setup.py (ThubanInstall.run): Don't repr install_lib_orig
532            because thubaninit_contents will do it for us.
533    
534    2002-08-16  Jan-Oliver Wagner <[email protected]>
535    
536            * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
537            tree window already open
538    
539    2002-08-15  Bernhard Herzog  <[email protected]>
540    
541            * Thuban/Model/layer.py (Layer.Destroy): Call the unboundd method
542            with self.
543    
544            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Only release the mouse
545            when we have actually captured it.
546    
547            * Thuban/Model/layer.py (Layer.Destroy): New. Explicitly close the
548            shapefile and destroy the table.
549    
550            * Thuban/Model/table.py (Table.Destroy): New. Close the DBF file.
551    
552    2002-08-14  Bernhard Herzog  <[email protected]>
553    
554            * Thuban/UI/controls.py (RecordTable.__init__): Remove the unused
555            instance variable columns
556            (RecordTable.GetTypeName): row and col may be negative in some
557            cases.
558    
559            * setup.py (InstallLocal.initialize_options)
560            (InstallLocal.finalize_options, InstallLocal.user_options): New
561            option create-init-file to build a thubaninit.py when running
562            install_local
563            (InstallLocal.run): Create the thubaninit.py module when requested
564            (thubaninit_contents): Split the template into several parts and
565            create a new function thubaninit_contents that creates the
566            contents of a thubaninit module.
567            (ThubanInstall.run): Use the new function to create the thubaninit
568            module.
569    
570    2002-07-30  Bernhard Herzog  <[email protected]>
571    
572            * Thuban/UI/application.py (ThubanApplication.OnExit): Do some
573            cleanup.
574            (ThubanApplication.MainLoop): Extend to automatically call OnExit.
575    
576            * Thuban/Model/session.py (Session.Destroy): Don't bypass the
577            direct base class' Destroy method.
578    
579            * Thuban/Model/map.py (Map.ClearLayers): New method to delete all
580            layers.
581            (Map.Destroy): Destroy the label_layer as well and call the
582            inherited Desatroymethod first so that no more messages are
583            issued.
584            (Map.RaiseLayer, Map.LowerLayer): Only issue LAYERS_CHANGED
585            message if the stacking order actually has changed. Add
586            doc-strings.
587            (Map.BoundingBox): Correct the doc-string.
588            (Map.AddLayer, Map.RemoveLayer, Map.Layers, Map.HasLayers)
589            (Map.ProjectedBoundingBox, Map.SetProjection): Add doc-strings.
590    
591            * Thuban/Model/label.py (LabelLayer.ClearLabels): New to delete
592            all labels.
593    
594    2002-07-29  Bernhard Herzog  <[email protected]>
595    
596            * Thuban/Model/map.py (Map.subscribe_layer_channels)
597            (Map.unsubscribe_layer_channels): Put the code that (un)subscribes
598            to a layer's channels into separate methods.
599            (Map.RemoveLayer, Map.AddLayer): Call the new methods
600            (Map.Destroy): Unsubscribe from a layer's channels before
601            destroying it.
602    
603            * Thuban/UI/view.py (MapCanvas.find_shape_at): Change the
604            selected_layer parameter to searched_layer which is the layer to
605            search in.
606            (MapCanvas.SelectShapeAt): New parameter layer to restrict the
607            search to that layer. Return the selected layer and shape.
608    
609            * Examples/simple_extensions/simple_tool.py (simple_tool): Fix a
610            typo
611    
612    2002-07-24  Bernhard Herzog  <[email protected]>
613    
614            * Thuban/UI/application.py (ThubanApplication.create_session):
615            Extend the doc string.
616            (ThubanApplication.subscribe_session)
617            (ThubanApplication.unsubscribe_session): New methods to
618            subscribe/unsubscribe to/from session channels.
619            (ThubanApplication.SetSession): Call the new methods here.
620            (ThubanApplication.maps_changed, ThubanApplication.set_map):
621            Renamed set_map to maps_changed. Its now a subscriber for
622            MAPS_CHANGED.
623    
624            * Thuban/UI/view.py (ZoomOutTool.MouseUp): Use the correct
625            x-coordinate in case of simple clicks
626    
627            * Thuban/Model/base.py (Modifiable.changed): Apply the args tuple,
628            don't pass it as a parameter
629    
630            * Thuban/Model/session.py (Session.RemoveMap): New
631    
632            * Thuban/UI/mainwindow.py (MainWindow.__init__): Turn the initial
633            window size into a parameter.
634    
635    2002-07-23  Bernhard Herzog  <[email protected]>
636    
637            * Thuban/UI/menu.py (Menu.item_index): Also search for menus not
638            just commands.
639    
640            * Thuban/UI/mainwindow.py (MainWindow.__init__): Change the
641            parameter list a bit to allow setting the window title and the
642            initial message in the status bar. Update the callers.
643    
644            * Thuban/UI/application.py (ThubanApplication.OnInit)
645            (ThubanApplication.CreateMainWindow): Put the mainwindow
646            instantiation into a separate method so that it can be overridden
647            by a subclass.
648    
649    2002-07-19  Bernhard Herzog  <[email protected]>
650    
651            * Thuban/Model/session.py: Issue a CHANGED message every time
652            another changed message is issued to make it easier to get
653            notified of changes.
654            (Session): Update the doc string
655            (Session.forward): Issue changed-events as CHANGED as well.
656            (Session.changed): Overwrite the inherited version to issue
657            CHANGED events as well.
658    
659            * Thuban/UI/tree.py: We can now simply subscribe to the session's
660            CHANGED channel to be informed of changes.
661            (SessionTreeCtrl.session_channels): Not needed any longer.
662            (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
663            Only have to (un)subscribe CHANGED
664    
665            * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
666    
667            * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
668            for the wxPython locale bug to __init__.py so that it's
669            automatically executed by anybody using UI code from Thuban.
670    
671    2002-07-18  Bernhard Herzog  <[email protected]>
672    
673            * Thuban/UI/main.py (main): app no longer needs to be global
674    
675            * Thuban/UI/mainwindow.py (MainWindow.__init__): Add application
676            as parameter and store it in an instance variable
677            (MainWindow.invoke_command, MainWindow.update_command_ui)
678            (MainWindow.save_modified_session, MainWindow.NewSession)
679            (MainWindow.OpenSession, MainWindow.SaveSession)
680            (MainWindow.SaveSessionAs, MainWindow.ShowSessionTree): Use self's
681            application object.
682    
683            * Thuban/UI/application.py (ThubanApplication.OnInit): Instantiate
684            the main window with self.
685    
686            * Thuban/UI/context.py: New module with the context class
687    
688            * Thuban/UI/command.py (Command): Update doc string.
689    
690            * Thuban/UI/mainwindow.py (MainWindow.invoke_command,
691            MainWindow.update_command_ui): Pass an instance of the context
692            class to the command's methods
693            (check_current_tool, call_method): Handle the new context
694            implementation
695    
696            * Examples/simple_extensions/simple_tool.py (simple_tool,
697            check_simple_tool): Handle the new context implementation
698    
699            * Examples/simple_extensions/simple_command.py (simple_command):
700            Handle the new context implementation. Update the comments about
701            the context.
702    
703            * Thuban/UI/application.py (ThubanApplication.SetSession): Add
704            doc-string
705            (ThubanApplication.Session): New method to return the session
706            object
707    
708            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): The
709            interactor's selected_layer may not be a layer of the current
710            session when the tree is updated while a new session is being set.
711    
712    2002-07-17  Bernhard Herzog  <[email protected]>
713    
714            * Thuban/UI/tree.py (color_string): Removed. No longer used.
715            (SessionTreeCtrl.update_tree, SessionTreeCtrl.add_items): Split
716            update_tree into update_tree and add_items. The tree now uses a
717            more generic way to display the contents of the tree.
718            (SessionTreeCtrl): Add a doc string explaining the TreeInfo method
719    
720            * Thuban/Model/layer.py (Layer.TreeInfo),
721            Thuban/Model/extension.py (Extension.TreeInfo),
722            Thuban/Model/map.py (Map.TreeInfo),
723            Thuban/Model/session.py (Session.TreeInfo):
724            Add TreeInfo methods to implement the new tree view update scheme
725    
726    2002-07-16  Bernhard Herzog  <[email protected]>
727    
728            * Thuban/UI/application.py: Don't use "import from" for the
729            MainWindow. It can't always be resolved.
730            (ThubanApplication.OnInit): change reference to MainWindow
731            accordingly.
732    
733            * Thuban/UI/menu.py (Menu.SetItems): New method to replace a menu
734            completely
735    
736    2002-07-10  Bernhard Herzog  <[email protected]>
737    
738            * setup.py (create_init_module): New configurable variable whose
739            default depends on the platform we're running on.
740            (ThubanInstall.initialize_options): Initialize
741            self.create_init_module from the global create_init_module
742            (ThubanInstall.user_options): indictate that the options
743            create-init-module and init-module-dir have arguments.
744    
745            * setup.py: In the setup call change the version number to include
746            cvs.
747    
748            * MANIFEST.in: Add the files in Examples
749    
750  2002-07-09  Bernhard Herzog  <[email protected]>  2002-07-09  Bernhard Herzog  <[email protected]>
751    
752            * setup.py: In the setup call, use the thuban homepage as the
753            value of the url parameter.
754    
755            * Examples: New subdirectory for examples.
756    
757            * Examples/simple_extensions/simple_tool.xpm,
758            Examples/simple_extensions/simple_tool.py,
759            Examples/simple_extensions/simple_command.py,
760            Examples/simple_extensions/README: Simple examples showing how to
761            add new commands and tools.
762    
763            * setup.cfg (bdist_rpm): Add the default value for prefix and tell
764            bdist_rpm that we also have an install script.
765            (bdist_inno): Add 2002 to the copyright notice.
766    
767          * setup.py: Create a file in python's site-packages directory to          * setup.py: Create a file in python's site-packages directory to
768          make installation of Thuban as a library easier.          make installation of Thuban as a library easier.
769          (ThubanInstall.user_options): Add two new options,          (ThubanInstall.user_options): Add two new options,
# Line 37  Line 801 
801          * setup.py: In the setup call, make sure that the library          * setup.py: In the setup call, make sure that the library
802          directories are under $prefix/lib not directly under $prefix.          directories are under $prefix/lib not directly under $prefix.
803    
804  2002-06-20      Jan-Oliver Wagner <[email protected]>  2002-06-20  Jan-Oliver Wagner <[email protected]>
805    
806          * Thuban/Model/extension.py: new module to handle extension objects.          * Thuban/Model/extension.py: new module to handle extension objects.
807          * Thuban/Model/messages.py: new messages for extensions.          * Thuban/Model/messages.py: new messages for extensions.
# Line 266  Line 1030 
1030          * Thuban/UI/messages.py (VIEW_POSITION): New message for the          * Thuban/UI/messages.py (VIEW_POSITION): New message for the
1031          position in the statusbar          position in the statusbar
1032    
1033  2002-04-26      Frank Koormann <[email protected]>  2002-04-26  Frank Koormann <[email protected]>
1034    
1035          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
1036    
1037  2002-04-24      Frank Koormann <[email protected]>  2002-04-24  Frank Koormann <[email protected]>
1038            
1039          * Resources/Bitmaps/identify.xpm: shadow added          * Resources/Bitmaps/identify.xpm: shadow added
1040    
1041          * Resources/Bitmaps/fullextent.xpm: new          * Resources/Bitmaps/fullextent.xpm: new
           
 2002-04-22      Jan-Oliver Wagner <[email protected]>  
1042    
1043          * Thuban/UI/tree.py (update_tree): added test for None on map bounding box  2002-04-22  Jan-Oliver Wagner <[email protected]>
1044    
1045  2002-04-21      Jan-Oliver Wagner <[email protected]>          * Thuban/UI/tree.py (update_tree): added test for None on map bounding
1046            box
1047    
1048    2002-04-21  Jan-Oliver Wagner <[email protected]>
1049    
1050          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
1051    
1052          * Thuban/UI/tree.py (update_tree): added added map extent          * Thuban/UI/tree.py (update_tree): added added map extent
1053    
1054          * Thuban/UI/mainwindow.py (_method_command): extended by parameter          * Thuban/UI/mainwindow.py (_method_command): extended by parameter
1055          icon; added map_full_extend as tool          icon; added map_full_extend as tool
1056    
1057  2002-04-19      Jan-Oliver Wagner <[email protected]>  2002-04-19  Jan-Oliver Wagner <[email protected]>
1058    
1059          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
1060          saving _new_ sessions          saving _new_ sessions
# Line 391  Line 1156 
1156    
1157          * setup.py: increase version number to 0.1          * setup.py: increase version number to 0.1
1158          (data_dist): New command class for data distribution          (data_dist): New command class for data distribution
           
1159    
1160  2001-09-14  Bernhard Herzog  <[email protected]>  2001-09-14  Bernhard Herzog  <[email protected]>
1161    
1162          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
1163          Handle the case of no layer (i.e. layer is None) properly.          Handle the case of no layer (i.e. layer is None) properly.
1164    
1165          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
1166          Set the initial selection of the combo boxes to reflect the          Set the initial selection of the combo boxes to reflect the
1167          projection we're starting with in a way that works on windows,          projection we're starting with in a way that works on windows,
1168          too.          too.
# Line 508  Line 1272 
1272          (MainWindow.identify_view_on_demand): Store the interactor in an          (MainWindow.identify_view_on_demand): Store the interactor in an
1273          instvar and use that reference instead of going through main.app          instvar and use that reference instead of going through main.app
1274    
1275          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
1276          * Thuban/UI/application.py (ThubanApplication.OnInit):          * Thuban/UI/application.py (ThubanApplication.OnInit):
1277          * Thuban/UI/main.py (main): Create the session tree view in main          * Thuban/UI/main.py (main): Create the session tree view in main
1278          with the new mainwindow method ShowSessionTree and not directly          with the new mainwindow method ShowSessionTree and not directly
1279          the application's OnInit method          the application's OnInit method
# Line 525  Line 1289 
1289          layer to the tableview dialog.          layer to the tableview dialog.
1290    
1291          * Thuban/UI/tableview.py: Add some doc-strings          * Thuban/UI/tableview.py: Add some doc-strings
1292          (TableGrid):          (TableGrid):
1293          (TableGrid.OnRangeSelect):          (TableGrid.OnRangeSelect):
1294          (TableGrid.OnSelectCell):          (TableGrid.OnSelectCell):
1295          (TableFrame.__init__):          (TableFrame.__init__):
# Line 592  Line 1356 
1356  2001-09-05  Bernhard Herzog  <[email protected]>  2001-09-05  Bernhard Herzog  <[email protected]>
1357    
1358          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.
1359            
1360          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument
1361          interactor to pass through to the MapCanvas          interactor to pass through to the MapCanvas
1362            
1363          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new
1364          argument to the MainWindow constructor to get rid of the ugly hack          argument to the MainWindow constructor to get rid of the ugly hack
1365          that made main.app available early just so that the mapcanvas          that made main.app available early just so that the mapcanvas
# Line 642  Line 1406 
1406          (ThubanInstall.run): Remove the leading install root from the          (ThubanInstall.run): Remove the leading install root from the
1407          script filename if an install root was specified and use the new          script filename if an install root was specified and use the new
1408          link_file method          link_file method
1409            
1410          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to
1411          the window when the first layer is added to the map.          the window when the first layer is added to the map.
1412    
# Line 679  Line 1443 
1443          (InnoIconItem): Helper class for bdist_inno          (InnoIconItem): Helper class for bdist_inno
1444          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
1445          this together with the appropriate parameters, to the setup call.          this together with the appropriate parameters, to the setup call.
1446            
1447          * setup.cfg (bdist_inno): added new section for the inno setup          * setup.cfg (bdist_inno): added new section for the inno setup
1448          installer          installer
1449    

Legend:
Removed from v.205  
changed lines
  Added in v.434

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26