fsleyes.views.viewpanel
This module provides the ViewPanel class, which is the base-class
for all of the FSLeyes view panels. See the fsleyes package
documentation for more details.
- class fsleyes.views.viewpanel.ViewPanel(*args, **kwargs)[source]
Bases:
FSLeyesPanelThe
ViewPanelclass is the base-class for all FSLeyes views.A
ViewPaneldisplays some sort of view of the overlays in anOverlayList. The settings for aViewPanelare defined by aDisplayContextinstance.Panels and controls
A
ViewPanelclass uses awx.lib.agw.aui.AuiManagerto lay out its children. AViewPanelhas one central panel, which contains the primary view; and may have one or more secondary panels, which contain controls - see thefsleyes.controlspackage. The centre panel can be set via thecentrePanel()property, and secondary panels can be added/removed to/from with thetogglePanel()method. The current state of a secondary panel (i.e. whether one is open or not) can be queried with theisPanelOpen()method, and existing secondary panels can be accessed via thegetPanel()method. Secondary panels must be derived from either theControlPanelorControlToolBarbase-classes.Profiles
The logic which defines the way that a user interacts with a view panel is defined by a
Profileobject, which contains mouse and keyboard event handlers for reacting to user input.Sub-classes must call the
initProfile()method to initialise their default profile. Other profiles may be associated with a particular control panel - these profiles can be temporarily activated and deactivated when the control panel is toggled via thetogglePanel()method.The currently active interaction profile can be accessed with the
currentProfile()method. See thefsleyes.profilespackage for more information on interaction profiles.Programming interface
The following methods are available on a
Viewpanelfor programmatically controlling its display and layout:Add/remove the secondary control panel of the specified type to/from this
ViewPanel.Returns
Trueif a panel of typepanelTypeis open,Falseotherwise.If an instance of
panelTypeexists, it is returned.Returns a list containing all control panels currently shown in this
ViewPanel.This method should be overridden by sub-classes (if necessary), and should return any
actionmethods which should be added to theFSLeyesFrameTools menu.Remove this
ViewPanelfrom theFSLeyesFrame.Remove all control panels from this
ViewPanel.Returns the
AuiPaneInfoobject which contains information about the given control panel.Returns the
wx.lib.agw.aui.AuiManagerobject which manages the layout of thisViewPanel.- controlOptions(cpType)[source]
May be overridden by sub-classes. Given a control panel type, may return a dictionary containing arguments to be passed to the
__init__method when the control panel is created.
- static title()[source]
May be overridden by sub-classes. Returns a title for this
ViewPanel, to be used in menus and window title bars.
- static controlOrder()[source]
May be overridden by sub-classes. Returns a list of names of control panel types, specifying a suggested order for the settings menu for views of this type.
- static toolOrder()[source]
May be overridden by sub-classes. Returns a list of names of tools, specifying a suggested order for the corresponding entries in the FSLeyes tools menu. Note that the ordering of tools returned by the
getTools()method is honoured - the ordering returned by this method relates to tools which are implemented as plugins.
- static defaultLayout()[source]
May be overridden by sub-classes. Should return a list of names of FSLeyes
ControlPaneltypes which form the default layout for this view.
- static defaultLocation()[source]
May be overridden by sub-classes. Should return a sequence containing:
the preferred location of the view panel in the
FSLeyesFrame- one ofwx.TOP,wx.BOTTOM,wx.LEFT, orwx.RIGHT.A number between 0 and 1 indicating the preferred size of the view panel, as a proportion of the total frame size.
- static displayType()[source]
May be overridden by sub-classes. May return a string which describes the type of display/view that this
ViewPanelprovides. This might be used as a hint byDisplay/DisplayOptsinstances to tailor their overlay display settings to different view/display types.
- __init__(parent, overlayList, displayCtx, frame)[source]
Create a
ViewPanel.- Parameters:
parent –
wxparent objectoverlayList – The
OverlayListdisplayCtx – A
DisplayContextobject unique to thisViewPanelframe – The
FSLeyesFrame
- reloadPlugins()[source]
Called by
__init__(), and by theLoadPluginActionwhen new plugins are registered.This is a bit of a hack, but less hacky than it used to be. All plugin-provided control panels and tools which support this
ViewPanelare looked up via theplugins.module. Then, for each control, we create aToggleControlPanelAction, and add it as an attribute on thisViewPanel.Similarly, all plugin-provided tools which support this
ViewPanelare created and added as attributes.In both cases, the class name of the control/tool is used as the attribute name.
This is done so that these actions will work with the
ActionProviderinterface, and hence theFSLEeyesFrame.populateMenu()method.This implementation may change in the future if it becomes problematic (e.g. due to naming conflicts).
- destroy()[source]
Removes some property listeners, destroys all child panels, destroys the
ProfileManager, andAuiManager, and callsFSLeyesPanel.destroy().
- property events: Notifier
Return a reference to a
Notifierinstance which can be used to be notified when certain events occur. Currently the following events are emitted:'profile', when the current interaction profile changes. Callbacks which are registered with the'profile'topic will be passed a tuple containing the types (Profilesub-classes) of the de-registered and newly registered profiles.'aui_perspective', when the AUI-managed layout changes, e.g. sash resizes, control panels added/removed, etc. This event is emitted whenever theAuiManageremits aEVT_AUI_PERSPECTIVE_CHANGEDevent. It is re-emitted via theNotiferinterface so that non-wx entities can be notified (see e.g. theToggleControlPanelAction).
- initProfile(defaultProfile)[source]
Must be called by subclasses, after they have initialised all of the attributes which may be needed by their associated
Profileinstances.- Parameters:
defaultProfile – Default profile type
- property profileManager
Returns a reference to the
ProfileManagerused by thisViewPanel.
- property centrePanel
Returns the primary (centre) panel on this
ViewPanel.
- togglePanel(panelType, *args, **kwargs)[source]
Add/remove the secondary control panel of the specified type to/from this
ViewPanel.If no keyword argunents are specified, the arguments returned by the
ControlMixin.defaultLayout()method are returned.- Parameters:
panelType – Type of the secondary panel.
args – All positional arguments are passed to the
panelTypeconstructor.floatPane – If
True, the secondary panel is initially floated. Defaults toFalse.floatOnly – If
True, andfloatPane=True, the panel will be permanently floated (i.e. it will not be dockable).floatPos – If provided, and
floatPaneisTrue, specifies the location of the floating panel as(w, h)proportions between 0 and 1, relative to this view panel.closeable – If
False, andfloatPane=True, the panel will not have a close button when it is floated.location – If
floatPane=False, the initial dock position of the panel - eitherwx.TOP,wx.BOTTOM,wx.LEFT, orwx.RIGHT. Defaults to ``wx.BOTTOM.title – Title to give the control. If not provided, it is assumed that a title for
panelTypeis instrings.titles.kwargs – All other keyword arguments, are passed to the
panelTypeconstructor.
- Returns:
The newly created control panel.
Note
The
panelTypetype must be a sub-class ofControlPanelorControlToolBar, which can be created like so:panel = panelType(parent, overlayList, displayCtx, frame, *args, **kwargs)
Warning
Do not define a control (a.k.a. secondary) panel constructor to accept arguments with the names
floatPane,floatOnly,floatPos,closeable, orlocation, as arguments with those names will get eaten by this method before they can be passed to the constructor.
- __layoutNewPanel(panel, title, location, floatPane, floatPos, floatOnly, closeable)
Sub-method of
togglePanel(). Creates and returns anAuiPaneInfoinstance describing the initial layout of a new control panel. SeetogglePanelfor an explanation of the arguments.
- getPanel(panelType)[source]
If an instance of
panelTypeexists, it is returned. OtherwiseNoneis returned.
- removeFromFrame()[source]
Remove this
ViewPanelfrom theFSLeyesFrame.Will raise an error if this
ViewPanelis not in aFSLeyesFrame.
- getPanels()[source]
Returns a list containing all control panels currently shown in this
ViewPanel.
- getPanelInfo(panel)[source]
Returns the
AuiPaneInfoobject which contains information about the given control panel.
- property auiManager
Returns the
wx.lib.agw.aui.AuiManagerobject which manages the layout of thisViewPanel.
- getTools()[source]
This method should be overridden by sub-classes (if necessary), and should return any
actionmethods which should be added to theFSLeyesFrameTools menu.See also the
ActionProvider.getActions()method, which can also be overridden, and controls the actions which get added to the FSLeyes settings menu.
- __auiMgrUpdate(*args, **kwargs)
Called whenever a panel is added/removed to/from this
ViewPanel.Calls the
Updatemethod on theAuiManagerinstance that is managing this panel.- Parameters:
newPanel – Must be passed as a keyword argument. When a new panel is added, it should be passed here.
- __onPaneClose(ev=None, panel=None)
Called when the user closes a control (a.k.a. secondary) panel. Calls the
ControlPanel.destroy/ControlToolBar.destroymethod on the panel.
- __onPerspectiveChange(ev)
Called on
EVT_AUI_PERSPECTIVE_CHANGEDevents. Re-emits the event via theevents()notifier, with topic'aui_perspective'. This is performed for the benefit of non-wx entities which need to know about layout changes.
- __annotations__ = {}
- __module__ = 'fsleyes.views.viewpanel'