Source code for sas.sasview.welcome_panel

"""
    Welcome page
"""
import wx
import wx.aui
import wx.lib.hyperlink
import os.path
import os, sys

from wx.lib.scrolledpanel import ScrolledPanel

from sas import get_local_config
from sas.sasgui.guiframe.panel_base import PanelBase
config = get_local_config()

#Font size width
if sys.platform.count("win32") > 0:
    FONT_VARIANT = 0
else:
    FONT_VARIANT = 1

[docs]class WelcomePanel(wx.aui.AuiNotebook, PanelBase): """ Panel created like about box as a welcome page Shows product name, current version, authors, and link to the product page. """ ## Internal nickname for the window, used by the AUI manager window_name = "default" ## Name to appear on the window title bar window_caption = "Welcome panel" ## Flag to tell the AUI manager to put this panel in the center pane CENTER_PANE = True def __init__(self, parent, *args, **kwds): kwds["style"] = wx.aui.AUI_NB_DEFAULT_STYLE wx.aui.AuiNotebook.__init__(self, parent, *args, **kwds) PanelBase.__init__(self) #For sasview the parent is guiframe self.parent = parent.parent self.frame = None self.manager = None welcome_page = WelcomePage(self) self.AddPage(welcome_page, "Welcome") self.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.on_close_page) self.Center()
[docs] def set_manager(self, manager): """ the manager of the panel in this case the application itself """ self.manager = manager
[docs] def on_close_page(self, event): """ Called when the welcome panel is closed """ if self.parent is not None: self.parent.on_close_welcome_panel() event.Veto()
[docs] def set_data(self, data=None): """ """ pass
[docs] def set_frame(self, frame): """ """ self.frame = frame if frame is not None: self.frame.Bind(wx.EVT_CLOSE, self.on_close_page)
[docs] def get_frame(self): """ """ return self.frame
[docs]class WelcomePage(ScrolledPanel): """ Panel created like about box as a welcome page Shows product name, current version, authors, and link to the product page. """ ## Internal nickname for the window, used by the AUI manager window_name = "default" ## Name to appear on the window title bar window_caption = "Welcome panel" ## Flag to tell the AUI manager to put this panel in the center pane CENTER_PANE = True def __init__(self, parent, *args, **kwds): kwds["style"] = wx.DEFAULT_DIALOG_STYLE ScrolledPanel.__init__(self, parent, **kwds) self.SetupScrolling() image = os.path.join(config._welcome_image) self.SetWindowVariant(variant=FONT_VARIANT) self.bitmap_logo = wx.StaticBitmap(self, -1, wx.Bitmap(image)) self.label_copyright = wx.StaticText(self, -1, config._copyright) self.static_line_1 = wx.StaticLine(self, -1) self.label_acknowledgement = wx.StaticText(self, -1, config._acknowledgement) self.hyperlink_license = wx.StaticText(self, -1, "Comments? Bugs? Requests?") send_ticket = "Send us a ticket at: " send_ticket += "help@sasview.org" self.hyperlink_paper = \ wx.lib.hyperlink.HyperLinkCtrl(self, -1, send_ticket, URL=config._license) self.label_title = \ wx.StaticText(self, -1, config.__appname__ + " " + str(config.__version__)) try: build_num = str(config.__build__) except: build_num = str(config.__version__) self.label_build = wx.StaticText(self, -1, "Build: " + build_num) sizer_main = wx.BoxSizer(wx.VERTICAL) sizer_header = wx.BoxSizer(wx.HORIZONTAL) sizer_build = wx.BoxSizer(wx.VERTICAL) sizer_header.Add(self.bitmap_logo, 0, wx.EXPAND | wx.LEFT, 5) sizer_build.Add(self.label_acknowledgement, 0, wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) sizer_build.Add((5, 5)) sizer_build.Add(self.label_title, 0, wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) sizer_build.Add(self.label_build, 0, wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) sizer_build.Add(self.label_copyright, 0, wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) sizer_build.Add((5, 5)) sizer_build.Add(self.hyperlink_license, 0, wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) sizer_build.Add(self.hyperlink_paper, 0, wx.LEFT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) sizer_main.Add(sizer_header, 0, wx.TOP | wx.EXPAND, 3) sizer_main.Add(self.static_line_1, 0, wx.EXPAND, 0) sizer_main.Add(sizer_build, 0, wx.BOTTOM | wx.EXPAND, 3) self.SetAutoLayout(True) self.SetSizer(sizer_main) self.Fit()
[docs] def set_data(self, data=None): """ """ pass
[docs]class ViewApp(wx.App): """ Test application """
[docs] def OnInit(self): self.frame = WelcomeFrame(None, -1, "Test App") self.frame.Show(True) return True
[docs]class WelcomeFrame(wx.Frame): """ Test frame """ def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, id, title, size=(570, 400)) WelcomePanel(self) self.Centre() self.Show(True)
if __name__ == "__main__": app = ViewApp(0) app.MainLoop()