source: sasview/guiframe/plugin_base.py @ 16d7079

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

working on guiframe

  • Property mode set to 100644
File size: 5.2 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 set_is_active(self, active=False):
49        """
50        """
51        self._always_active = active
52       
53    def is_always_active(self):
54        """
55        return True is this plugin is always active and it is local to guiframe
56        even if the user is switching between perspectives
57        """
58        return self._always_active
59   
60    def populate_file_menu(self):
61        """
62        get a menu item and append it under file menu of the application
63        return [[menu item name, menu_hint, menu handler]]
64        """
65        return []
66       
67    def populate_menu(self, id, parent):
68        """
69        Create and return the list of application menu
70        items for the plug-in.
71       
72        :param id: deprecated. Un-used.
73        :param parent: parent window
74       
75        :return: plug-in menu
76       
77        """
78        return []
79   
80    def get_panels(self, parent):
81        """
82        Create and return the list of wx.Panels for your plug-in.
83        Define the plug-in perspective.
84       
85        Panels should inherit from DefaultPanel defined below,
86        or should present the same interface. They must define
87        "window_caption" and "window_name".
88       
89        :param parent: parent window
90       
91        :return: list of panels
92       
93        """
94        ## Save a reference to the parent
95        self.parent = parent
96       
97        # Return the list of panels
98        return []
99   
100    def get_tools(self):
101        """
102        Returns a set of menu entries for tools
103        """
104        return []
105       
106   
107    def get_context_menu(self, graph=None):
108        """
109        This method is optional.
110   
111        When the context menu of a plot is rendered, the
112        get_context_menu method will be called to give you a
113        chance to add a menu item to the context menu.
114       
115        A ref to a Graph object is passed so that you can
116        investigate the plot content and decide whether you
117        need to add items to the context menu. 
118       
119        This method returns a list of menu items.
120        Each item is itself a list defining the text to
121        appear in the menu, a tool-tip help text, and a
122        call-back method.
123       
124        :param graph: the Graph object to which we attach the context menu
125       
126        :return: a list of menu items with call-back function
127       
128        """
129        return []
130   
131    def get_perspective(self):
132        """
133        Get the list of panel names for this perspective
134        """
135        return self.perspective
136   
137    def on_perspective(self, event):
138        """
139        Call back function for the perspective menu item.
140        We notify the parent window that the perspective
141        has changed.
142       
143        :param event: menu event
144       
145        """
146        self.parent.set_perspective(self.perspective)
147   
148    def post_init(self):
149        """
150        Post initialization call back to close the loose ends
151        """
152        pass
153   
154    def set_default_perspective(self):
155        """
156       Call back method that True to notify the parent that the current plug-in
157       can be set as default  perspective.
158       when returning False, the plug-in is not candidate for an automatic
159       default perspective setting
160        """
161        return False
Note: See TracBrowser for help on using the repository browser.