mirror of https://github.com/chriskiehl/Gooey.git
2 changed files with 103 additions and 1 deletions
Split View
Diff Options
@ -0,0 +1,99 @@ |
|||
from collections import namedtuple |
|||
|
|||
from gooey.gui import component_builder |
|||
from gooey.gui.lang.i18n import _ |
|||
|
|||
is_required = lambda widget: widget['required'] |
|||
|
|||
SimpleArg = namedtuple('SimpleArg', 'title msg type') |
|||
|
|||
|
|||
|
|||
class Presenter(object): |
|||
def __init__(self, view, build_spec): |
|||
self.view = view |
|||
self.build_spec = build_spec |
|||
|
|||
def initialize_view(self): |
|||
self.view.window_title = self.build_spec['program_name'] |
|||
self.view.window_size = self.build_spec['default_size'] |
|||
|
|||
# widgets = component_builder.build_components(self.build_spec['widgets']) |
|||
required_args, optional_args = self.partition(self.build_spec['widgets'], is_required) |
|||
self.view.required_section.populate([SimpleArg(x['data']['display_name'], x['data']['help'], x['type']) for x in required_args]) |
|||
|
|||
|
|||
optionals = [] |
|||
for x in optional_args: |
|||
if x['type'] != 'RadioGroup': |
|||
optionals.append(SimpleArg(x['data']['display_name'], x['data']['help'], x['type'])) |
|||
else: |
|||
names = [y['display_name'] for y in x['data']] |
|||
msgs = [y['help'] for y in x['data']] |
|||
optionals.append(SimpleArg(names, msgs, x['type'])) |
|||
|
|||
self.view.optional_section.populate(optionals) |
|||
|
|||
# self.view.optional_section.populate(widgets.optional_args) |
|||
|
|||
if self.build_spec.get('monospace_display'): |
|||
self.view.set_display_font_style('monospace') |
|||
|
|||
if self.should_disable_stop_button(): |
|||
self.view.disable_stop_button() |
|||
else: |
|||
self.view.enable_stop_button() |
|||
|
|||
self.syncronize_from_model() |
|||
|
|||
@staticmethod |
|||
def partition(collection, condition): |
|||
return filter(condition, collection), filter(lambda x: not condition(x), collection) |
|||
|
|||
def syncronize_from_model(self): |
|||
self.view.heading_title = _("settings_title") |
|||
self.view.heading_subtitle = self.build_spec['program_description'] or '' |
|||
|
|||
# |
|||
# def _init_pages(self): |
|||
# def config(): |
|||
# self.view.heading_title = 'asdf' |
|||
# self.view.heading_subtitle = 'asdf' |
|||
# self.view.show('settings_img') |
|||
# self.view.hide('check_mark', 'running_img', 'error_symbol') |
|||
# |
|||
# def running(): |
|||
# self.view._header.SetLabel(_("running_title")) |
|||
# self.view._subheader.SetLabel(_('running_msg')) |
|||
# self.view._check_mark.Hide() |
|||
# self.view._settings_img.Hide() |
|||
# self.view._running_img.Show() |
|||
# self.view._error_symbol.Hide() |
|||
# self.view.Layout() |
|||
# |
|||
# def success(): |
|||
# self.view._header.SetLabel(_('finished_title')) |
|||
# self.view._subheader.SetLabel(_('finished_msg')) |
|||
# self.view._running_img.Hide() |
|||
# self.view._check_mark.Show() |
|||
# self.view.Layout() |
|||
# |
|||
# def error(): |
|||
# self.view._header.SetLabel(_('finished_title')) |
|||
# self.view._subheader.SetLabel(_('finished_error')) |
|||
# self.view._running_img.Hide() |
|||
# self.view._error_symbol.Show() |
|||
# self.view.Layout() |
|||
# |
|||
# self.layouts = locals() |
|||
|
|||
|
|||
|
|||
def is_column_layout(self): |
|||
return self.build_spec['layout_type'] == 'column' |
|||
|
|||
def should_disable_stop_button(self): |
|||
return self.build_spec['disable_stop_button'] |
|||
|
|||
|
|||
|
Write
Preview
Loading…
Cancel
Save