Source code for fsleyes.about

#
# about.py - The AboutDialog class.
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
"""This module provides the :class:`.AboutDialog` class, a dialog which
displays information about *FSLeyes*.
"""


import os.path as op

import wx

import fsleyes_widgets.imagepanel         as imagepanel
from   fsl.utils.platform import platform as fslplatform
import fsleyes.strings                    as strings
import fsleyes.splash                     as splash
import fsleyes.version                    as version


[docs]class AboutDialog(wx.Dialog): """The ``AboutDialog`` is a dialog which displays information about *FSLeyes*. """
[docs] def __init__(self, parent): """Create an ``AboutDialog``. :arg parent: ``wx`` parent object. """ wx.Dialog.__init__(self, parent, title=strings.about['title']) # Load the splash screen splashbmp = wx.Bitmap(splash.getSplashFile(), wx.BITMAP_TYPE_PNG) splashimg = splashbmp.ConvertToImage() # Create all the widgets splashPanel = imagepanel.ImagePanel(self, splashimg) splashPanel.SetMinSize(splashimg.GetSize()) textPanel = wx.TextCtrl(self, size=(-1, 200), style=(wx.TE_LEFT | wx.TE_RICH | wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_AUTO_URL)) closeButton = wx.Button(self, id=wx.ID_CANCEL) # Set foreground/background colours textPanel.SetBackgroundColour('#000000') textPanel.SetForegroundColour('#ffffff') textPanel.SetDefaultStyle(wx.TextAttr('#ffffff', '#000000')) # Create / retrieve all the content verStr = version.__version__ glVerStr = fslplatform.glVersion glRenStr = fslplatform.glRenderer swlibs = strings.about['libs'] swVersions = [] for lib in swlibs: try: mod = __import__(lib) # Retrieve the sub-module if necessary for n in lib.split(".")[1:]: mod = getattr(mod, n) if lib == 'PIL': swVer = str(mod.PILLOW_VERSION) else: swVer = str(mod.__version__) except Exception: swVer = '' swVersions.append(swVer) verStr = strings.about['version'] .format(verStr) fslVer = strings.about['fslVersion'].format(fslplatform.fslVersion) fslDir = strings.about['fslPath'] .format(fslplatform.fsldir) glVerStr = strings.about['glVersion'] .format(glVerStr) glCompat = strings.about['glCompat'] .format(fslplatform.glVersion) glRenStr = strings.about['glRenderer'].format(glRenStr) swStr = strings.about['software'] .format(*swVersions) # Tack the license file contents onto # the end of the software description. licenseFile = op.join(op.dirname(__file__), '..', '..', 'LICENSE') try: with open(licenseFile, 'rt') as f: licenseStr = f.read() except Exception: licenseStr = '' swStr = swStr + '\n\n' + licenseStr swStr = swStr.strip() # Set the widget content infoStr = '\n'.join((verStr, strings.about['company'], strings.about['author'], strings.about['email'], fslVer, fslDir, glVerStr, glCompat, glRenStr)) textPanel .SetValue(infoStr + '\n\n' + swStr) closeButton.SetLabel('Close') # Arrange the widgets sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(splashPanel) sizer.Add(textPanel, flag=wx.EXPAND, proportion=1) sizer.Add(closeButton, flag=wx.EXPAND) self.SetSizer(sizer) self.Layout() self.Fit()