source: sasview/guiframe/plugin_base.py @ 3385795

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 3385795 was bf4402c3, checked in by Gervaise Alina <gervyh@…>, 14 years ago

remove unused code

  • Property mode set to 100644
File size: 6.1 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       
44        ## List of panels that you would like to open in AUI windows
45        #  for your plug-in. This defines your plug-in "perspective"
46        self.perspective = []
47       
48    def can_load_data(self):
49        """
50        if return True, then call handler to laod data
51        """
52        return False
53   
54    def use_data(self):
55        """
56        return True if these plugin use data
57        """
58        return True
59   
60    def delete_data(self, data_id):
61        """
62        Delete all references of data which id are in data_list.
63        """
64       
65    def load_data(self, event):
66        """
67        Load  data
68        """
69        raise NotImplemented
70 
71    def load_folder(self, event):
72        """
73        Load entire folder
74        """
75        raise NotImplemented 
76   
77    def set_is_active(self, active=False):
78        """
79        """
80        self._always_active = active
81       
82    def is_always_active(self):
83        """
84        return True is this plugin is always active and it is local to guiframe
85        even if the user is switching between perspectives
86        """
87        return self._always_active
88   
89    def populate_file_menu(self):
90        """
91        get a menu item and append it under file menu of the application
92        return [[menu item name, menu_hint, menu handler]]
93        """
94        return []
95       
96    def populate_menu(self, parent):
97        """
98        Create and return the list of application menu
99        items for the plug-in.
100       
101        :param parent: parent window
102       
103        :return: plug-in menu
104       
105        """
106        return []
107   
108    def get_panels(self, parent):
109        """
110        Create and return the list of wx.Panels for your plug-in.
111        Define the plug-in perspective.
112       
113        Panels should inherit from DefaultPanel defined below,
114        or should present the same interface. They must define
115        "window_caption" and "window_name".
116       
117        :param parent: parent window
118       
119        :return: list of panels
120       
121        """
122        ## Save a reference to the parent
123        self.parent = parent
124       
125        # Return the list of panels
126        return []
127   
128    def get_tools(self):
129        """
130        Returns a set of menu entries for tools
131        """
132        return []
133       
134   
135    def get_context_menu(self, graph=None):
136        """
137        This method is optional.
138   
139        When the context menu of a plot is rendered, the
140        get_context_menu method will be called to give you a
141        chance to add a menu item to the context menu.
142       
143        A ref to a Graph object is passed so that you can
144        investigate the plot content and decide whether you
145        need to add items to the context menu. 
146       
147        This method returns a list of menu items.
148        Each item is itself a list defining the text to
149        appear in the menu, a tool-tip help text, and a
150        call-back method.
151       
152        :param graph: the Graph object to which we attach the context menu
153       
154        :return: a list of menu items with call-back function
155       
156        """
157        return []
158   
159    def get_perspective(self):
160        """
161        Get the list of panel names for this perspective
162        """
163        return self.perspective
164   
165    def on_perspective(self, event):
166        """
167        Call back function for the perspective menu item.
168        We notify the parent window that the perspective
169        has changed.
170       
171        :param event: menu event
172       
173        """
174        self.parent.set_current_perspective(self)
175        self.parent.set_perspective(self.perspective)
176   
177    def post_init(self):
178        """
179        Post initialization call back to close the loose ends
180        """
181        pass
182   
183    def set_default_perspective(self):
184        """
185       Call back method that True to notify the parent that the current plug-in
186       can be set as default  perspective.
187       when returning False, the plug-in is not candidate for an automatic
188       default perspective setting
189        """
190        if self.standalone:
191            return True
192        return False
193   
194    def set_data(self, data_list):
195        """
196        receive a list of data and use it in the current perspective
197        """
Note: See TracBrowser for help on using the repository browser.