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

Legend:
Removed from v.186  
changed lines
  Added in v.445

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26