source: sasview/guiframe/plugin_base.py @ 3cd5806

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 3cd5806 was 52725d6, checked in by Gervaise Alina <gervyh@…>, 14 years ago

working on save state

  • Property mode set to 100644
File size: 6.4 KB
Line 
1################################################################################
2#This software was developed by the University of Tennessee as part of the
3#Distributed Data Analysis of Neutron Scattering Experiments (DANSE)
4#project funded by the US National Science Foundation.
5#
6#See the license text in license.txt
7#
8#copyright 2008, University of Tennessee
9################################################################################
10 
11class PluginBase:
12    """
13    This class defines the interface for a Plugin class
14    that can be used by the gui_manager.
15   
16    Plug-ins should be placed in a sub-directory called "perspectives".
17    For example, a plug-in called Foo should be place in "perspectives/Foo".
18    That directory contains at least two files:
19        perspectives/Foo/__init__.py contains two lines:
20       
21            PLUGIN_ID = "Foo plug-in 1.0"
22            from Foo import *
23           
24        perspectives/Foo/Foo.py contains the definition of the Plugin
25        class for the Foo plug-in. The interface of that Plugin class
26        should follow the interface of the class you are looking at.
27       
28    See dummyapp.py for a plugin example.
29    """
30   
31    def __init__(self, name="Test_plugin", standalone=True):
32        """
33            Abstract class for gui_manager Plugins.
34        """
35        # Define if the plugin is local to Viewerframe  and always active
36        self._always_active = False
37        ## Plug-in name. It will appear on the application menu.
38        self.sub_menu = name     
39        #standalone flag
40        self.standalone = standalone
41        ## Reference to the parent window. Filled by get_panels() below.
42        self.parent = None
43        #plugin state reader
44        self.state_reader = None 
45        self._extensions = ''
46        ## List of panels that you would like to open in AUI windows
47        #  for your plug-in. This defines your plug-in "perspective"
48        self.perspective = []
49       
50    def get_extensions(self):
51        """
52        return state reader and its extensions
53        """
54        return self.state_reader, self._extensions
55   
56    def can_load_data(self):
57        """
58        if return True, then call handler to laod data
59        """
60        return False
61   
62    def use_data(self):
63        """
64        return True if these plugin use data
65        """
66        return True
67   
68    def delete_data(self, data_id):
69        """
70        Delete all references of data which id are in data_list.
71        """
72       
73    def load_data(self, event):
74        """
75        Load  data
76        """
77        raise NotImplemented
78 
79    def load_folder(self, event):
80        """
81        Load entire folder
82        """
83        raise NotImplemented 
84   
85    def set_is_active(self, active=False):
86        """
87        """
88        self._always_active = active
89       
90    def is_always_active(self):
91        """
92        return True is this plugin is always active and it is local to guiframe
93        even if the user is switching between perspectives
94        """
95        return self._always_active
96   
97    def populate_file_menu(self):
98        """
99        get a menu item and append it under file menu of the application
100        return [[menu item name, menu_hint, menu handler]]
101        """
102        return []
103       
104    def populate_menu(self, parent):
105        """
106        Create and return the list of application menu
107        items for the plug-in.
108       
109        :param parent: parent window
110       
111        :return: plug-in menu
112       
113        """
114        return []
115   
116    def get_panels(self, parent):
117        """
118        Create and return the list of wx.Panels for your plug-in.
119        Define the plug-in perspective.
120       
121        Panels should inherit from DefaultPanel defined below,
122        or should present the same interface. They must define
123        "window_caption" and "window_name".
124       
125        :param parent: parent window
126       
127        :return: list of panels
128       
129        """
130        ## Save a reference to the parent
131        self.parent = parent
132       
133        # Return the list of panels
134        return []
135   
136    def get_tools(self):
137        """
138        Returns a set of menu entries for tools
139        """
140        return []
141       
142   
143    def get_context_menu(self, graph=None):
144        """
145        This method is optional.
146   
147        When the context menu of a plot is rendered, the
148        get_context_menu method will be called to give you a
149        chance to add a menu item to the context menu.
150       
151        A ref to a Graph object is passed so that you can
152        investigate the plot content and decide whether you
153        need to add items to the context menu. 
154       
155        This method returns a list of menu items.
156        Each item is itself a list defining the text to
157        appear in the menu, a tool-tip help text, and a
158        call-back method.
159       
160        :param graph: the Graph object to which we attach the context menu
161       
162        :return: a list of menu items with call-back function
163       
164        """
165        return []
166   
167    def get_perspective(self):
168        """
169        Get the list of panel names for this perspective
170        """
171        return self.perspective
172   
173    def on_perspective(self, event):
174        """
175        Call back function for the perspective menu item.
176        We notify the parent window that the perspective
177        has changed.
178       
179        :param event: menu event
180       
181        """
182        self.parent.set_current_perspective(self)
183        self.parent.set_perspective(self.perspective)
184   
185    def post_init(self):
186        """
187        Post initialization call back to close the loose ends
188        """
189        pass
190   
191    def set_default_perspective(self):
192        """
193       Call back method that True to notify the parent that the current plug-in
194       can be set as default  perspective.
195       when returning False, the plug-in is not candidate for an automatic
196       default perspective setting
197        """
198        if self.standalone:
199            return True
200        return False
201   
202    def set_data(self, data_list):
203        """
204        receive a list of data and use it in the current perspective
205        """
206    def on_set_state_helper(self, event):
207        """
208        update state
209        """
210   
Note: See TracBrowser for help on using the repository browser.