mirror of https://github.com/chriskiehl/Gooey.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.8 KiB
127 lines
3.8 KiB
'''
|
|
Created on Dec 23, 2013
|
|
|
|
@author: Chris
|
|
'''
|
|
|
|
import wx
|
|
from gooey.gui.pubsub import pub
|
|
|
|
from gooey.gui import imageutil, image_repository, events
|
|
from gooey.gui.util import wx_util
|
|
from gooey.gui.lang import i18n
|
|
|
|
|
|
PAD_SIZE = 10
|
|
|
|
|
|
class FrameHeader(wx.Panel):
|
|
def __init__(self, heading, subheading, **kwargs):
|
|
wx.Panel.__init__(self, **kwargs)
|
|
self.SetDoubleBuffered(True)
|
|
self._controller = None
|
|
|
|
self.heading_msg = heading
|
|
self.subheading_msg = subheading
|
|
|
|
self._header = None
|
|
self._subheader = None
|
|
self._settings_img = None
|
|
self._running_img = None
|
|
self._check_mark = None
|
|
self._error_symbol = None
|
|
|
|
self.layouts = {}
|
|
|
|
self._init_properties()
|
|
self._init_components(heading, subheading)
|
|
self._init_pages()
|
|
self._do_layout()
|
|
|
|
pub.subscribe(self.load_view, events.WINDOW_CHANGE)
|
|
|
|
def _init_properties(self):
|
|
self.SetBackgroundColour('#ffffff')
|
|
self.SetSize((30, 90))
|
|
self.SetMinSize((120, 80))
|
|
|
|
def _init_components(self, heading, subheading):
|
|
self._header = wx_util.h1(self, heading)
|
|
|
|
self._subheader = wx.StaticText(self, label=subheading)
|
|
|
|
self._settings_img = self._load_image(image_repository.config_icon, height=79)
|
|
self._running_img = self._load_image(image_repository.running_icon, 79)
|
|
self._check_mark = self._load_image(image_repository.success_icon, height=75)
|
|
self._error_symbol = self._load_image(image_repository.error_icon, height=75)
|
|
|
|
|
|
def _do_layout(self):
|
|
vsizer = wx.BoxSizer(wx.VERTICAL)
|
|
sizer = wx.BoxSizer(wx.HORIZONTAL)
|
|
headings_sizer = self.build_heading_sizer()
|
|
sizer.Add(headings_sizer, 1, wx.ALIGN_LEFT | wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND | wx.LEFT, PAD_SIZE)
|
|
sizer.Add(self._settings_img, 0, wx.ALIGN_RIGHT | wx.EXPAND | wx.RIGHT, PAD_SIZE)
|
|
sizer.Add(self._running_img, 0, wx.ALIGN_RIGHT | wx.EXPAND | wx.RIGHT, PAD_SIZE)
|
|
sizer.Add(self._check_mark, 0, wx.ALIGN_RIGHT | wx.EXPAND | wx.RIGHT, PAD_SIZE)
|
|
sizer.Add(self._error_symbol, 0, wx.ALIGN_RIGHT | wx.EXPAND | wx.RIGHT, PAD_SIZE)
|
|
self._running_img.Hide()
|
|
self._check_mark.Hide()
|
|
self._error_symbol.Hide()
|
|
vsizer.Add(sizer, 1, wx.EXPAND)
|
|
self.SetSizer(vsizer)
|
|
|
|
def _load_image(self, img_path, height=70):
|
|
return imageutil.resize_bitmap(self, imageutil._load_image(img_path), height)
|
|
|
|
def build_heading_sizer(self):
|
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
|
sizer.AddStretchSpacer(1)
|
|
sizer.Add(self._header, 0)
|
|
sizer.Add(self._subheader, 0)
|
|
sizer.AddStretchSpacer(1)
|
|
return sizer
|
|
|
|
def RegisterController(self, controller):
|
|
if self._controller is None:
|
|
self._controller = controller
|
|
|
|
def _init_pages(self):
|
|
|
|
def config():
|
|
self._header.SetLabel(self.heading_msg)
|
|
self._subheader.SetLabel(self.subheading_msg)
|
|
self._settings_img.Show()
|
|
self._check_mark.Hide()
|
|
self._running_img.Hide()
|
|
self._error_symbol.Hide()
|
|
self.Layout()
|
|
|
|
def running():
|
|
self._header.SetLabel(i18n._("running_title"))
|
|
self._subheader.SetLabel(i18n._('running_msg'))
|
|
self._check_mark.Hide()
|
|
self._settings_img.Hide()
|
|
self._running_img.Show()
|
|
self._error_symbol.Hide()
|
|
self.Layout()
|
|
|
|
def success():
|
|
self._header.SetLabel(i18n._('finished_title'))
|
|
self._subheader.SetLabel(i18n._('finished_msg'))
|
|
self._running_img.Hide()
|
|
self._check_mark.Show()
|
|
self.Layout()
|
|
|
|
def error():
|
|
self._header.SetLabel(i18n._('finished_title'))
|
|
self._subheader.SetLabel(i18n._('finished_error'))
|
|
self._running_img.Hide()
|
|
self._error_symbol.Show()
|
|
self.Layout()
|
|
|
|
self.layouts = locals()
|
|
|
|
def load_view(self, view_name=None):
|
|
self.layouts.get(view_name, lambda: None)()
|
|
|