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.
110 lines
2.8 KiB
110 lines
2.8 KiB
'''
|
|
Created on Jan 19, 2014
|
|
|
|
New plan:
|
|
|
|
fuck the multi-component thing.
|
|
|
|
Bind and unbind the buttons on the panels.
|
|
|
|
@author: Chris
|
|
'''
|
|
|
|
import os
|
|
import wx
|
|
import sys
|
|
import header
|
|
|
|
from gooey import i18n
|
|
from gooey.gui import footer
|
|
from gooey import image_repository
|
|
from gooey.gui.controller import Controller
|
|
from gooey.gui.runtime_display_panel import RuntimeDisplay
|
|
import styling
|
|
|
|
|
|
class BaseWindow(wx.Frame):
|
|
def __init__(self, BodyPanel, client_app, params):
|
|
wx.Frame.__init__(self, parent=None, id=-1)
|
|
|
|
self._params = params
|
|
self._client_app = client_app
|
|
|
|
self._controller = None
|
|
|
|
# Components
|
|
self.icon = None
|
|
self.head_panel = None
|
|
self.config_panel = None
|
|
self.runtime_display = None
|
|
self.foot_panel = None
|
|
self.panels = None
|
|
|
|
self._init_properties()
|
|
self._init_components(BodyPanel)
|
|
self._do_layout()
|
|
self._init_controller()
|
|
self.registerControllers()
|
|
|
|
|
|
def _init_properties(self):
|
|
if not self._params['program_name']:
|
|
title = os.path.basename(sys.argv[0].replace('.py', ''))
|
|
else:
|
|
title = self._params['program_name']
|
|
self.SetTitle(title)
|
|
self.SetSize((610, 530))
|
|
self.SetMinSize((400, 300))
|
|
self.icon = wx.Icon(image_repository.icon, wx.BITMAP_TYPE_ICO)
|
|
self.SetIcon(self.icon)
|
|
|
|
def _init_components(self, BodyPanel):
|
|
# init gui
|
|
self.head_panel = header.FrameHeader(
|
|
heading=i18n.translate("settings_title"),
|
|
subheading=self._client_app.description,
|
|
parent=self)
|
|
self.config_panel = BodyPanel(self)
|
|
self.runtime_display = RuntimeDisplay(self)
|
|
self.foot_panel = footer.Footer(self, self._controller)
|
|
self.panels = [self.head_panel, self.config_panel, self.foot_panel]
|
|
|
|
def _do_layout(self):
|
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
|
sizer.Add(self.head_panel, 0, wx.EXPAND)
|
|
sizer.Add(styling.HorizontalRule(self), 0, wx.EXPAND)
|
|
sizer.Add(self.config_panel, 1, wx.EXPAND)
|
|
self.runtime_display.Hide()
|
|
sizer.Add(self.runtime_display, 1, wx.EXPAND)
|
|
sizer.Add(styling.HorizontalRule(self), 0, wx.EXPAND)
|
|
sizer.Add(self.foot_panel, 0, wx.EXPAND)
|
|
self.SetSizer(sizer)
|
|
|
|
def _init_controller(self):
|
|
self._controller = Controller(
|
|
base_frame=self,
|
|
client_app=self._client_app)
|
|
|
|
def registerControllers(self):
|
|
for panel in self.panels:
|
|
panel.RegisterController(self._controller)
|
|
|
|
def GetOptions(self):
|
|
return self.config_panel.GetOptions()
|
|
|
|
def NextPage(self):
|
|
self.head_panel.NextPage()
|
|
self.foot_panel.NextPage()
|
|
self.config_panel.Hide()
|
|
self.runtime_display.Show()
|
|
self.Layout()
|
|
|
|
# def AttachPayload(self, payload):
|
|
# self._payload = payload
|
|
|
|
def ManualStart(self):
|
|
self._controller.ManualStart()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
pass
|