|
|
@ -1,14 +1,15 @@ |
|
|
|
|
|
|
|
from gooey.gui.widgets import widget_pack |
|
|
|
|
|
|
|
__author__ = 'Chris' |
|
|
|
|
|
|
|
import wx |
|
|
|
from gooey.gui import styling |
|
|
|
from gooey.gui.widgets import widget_pack |
|
|
|
from collections import namedtuple |
|
|
|
|
|
|
|
|
|
|
|
class BaseGuiComponent(object): |
|
|
|
def __init__(self, data, widget_pack): |
|
|
|
''' |
|
|
|
:param data: field info (title, help, etc..) |
|
|
|
:param widget_pack: internal wxWidgets to render |
|
|
|
''' |
|
|
|
self.data = data |
|
|
|
|
|
|
|
# parent |
|
|
@ -21,16 +22,13 @@ class BaseGuiComponent(object): |
|
|
|
# Internal WidgetPack |
|
|
|
self.widget_pack = widget_pack |
|
|
|
|
|
|
|
# used to throttle resizing (to avoid widget jiggle) |
|
|
|
# TODO: figure out anti-jiggle technology |
|
|
|
# self.event_stack = [] |
|
|
|
|
|
|
|
def build(self, parent): |
|
|
|
return self.do_layout(parent) |
|
|
|
|
|
|
|
def do_layout(self, parent): |
|
|
|
self.panel = wx.Panel(parent) |
|
|
|
|
|
|
|
|
|
|
|
self.title = self.createTitle(self.panel) |
|
|
|
self.help_msg = self.createHelpMsgWidget(self.panel) |
|
|
|
self.help_msg.SetMinSize((0, -1)) |
|
|
@ -50,7 +48,7 @@ class BaseGuiComponent(object): |
|
|
|
vertical_container.Add(core_widget_set, 0, wx.EXPAND) |
|
|
|
self.panel.SetSizer(vertical_container) |
|
|
|
|
|
|
|
self.panel.Bind(wx.EVT_SIZE, self.onResize) |
|
|
|
# self.panel.Bind(wx.EVT_SIZE, self.onResize) |
|
|
|
return self.panel |
|
|
|
|
|
|
|
def createHelpMsgWidget(self, parent): |
|
|
@ -77,12 +75,12 @@ class BaseGuiComponent(object): |
|
|
|
|
|
|
|
def onResize(self, evt): |
|
|
|
# handle internal widgets |
|
|
|
self.panel.Freeze() |
|
|
|
# self.panel.Freeze() |
|
|
|
self._onResize(evt) |
|
|
|
# propagate event to child widgets |
|
|
|
self.widget_pack.onResize(evt) |
|
|
|
evt.Skip() |
|
|
|
self.panel.Thaw() |
|
|
|
# self.panel.Thaw() |
|
|
|
|
|
|
|
def _onResize(self, evt): |
|
|
|
if not self.help_msg: |
|
|
@ -103,6 +101,9 @@ class BaseGuiComponent(object): |
|
|
|
# used only for unittesting |
|
|
|
return self.widget_pack.widget |
|
|
|
|
|
|
|
def __repr__(self): |
|
|
|
return self.__class__.__name__ |
|
|
|
|
|
|
|
|
|
|
|
class CheckBox(BaseGuiComponent): |
|
|
|
def __init__(self, data, widget_pack=None): |
|
|
@ -214,9 +215,8 @@ class RadioGroup(object): |
|
|
|
|
|
|
|
def GetValue(self): |
|
|
|
vals = [button.GetValue() for button in self.radio_buttons] |
|
|
|
# print self.option_stings[vals.index(True)] |
|
|
|
try: |
|
|
|
opts = self.option_stings[vals.index(True)][0] |
|
|
|
return self.option_stings[vals.index(True)][0] |
|
|
|
except: |
|
|
|
return '' |
|
|
|
|
|
|
@ -224,9 +224,6 @@ class RadioGroup(object): |
|
|
|
return self.radio_buttons |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FileChooser = lambda data: BaseGuiComponent(data=data, widget_pack=widget_pack.FileChooserPayload()) |
|
|
|
MultiFileChooser = lambda data: BaseGuiComponent(data=data, widget_pack=widget_pack.MultiFileSaverPayload()) |
|
|
|
DirChooser = lambda data: BaseGuiComponent(data=data, widget_pack=widget_pack.DirChooserPayload()) |
|
|
@ -236,6 +233,3 @@ TextField = lambda data: BaseGuiComponent(data=data, widget_pack=widget_ |
|
|
|
Dropdown = lambda data: BaseGuiComponent(data=data, widget_pack=widget_pack.DropdownPayload()) |
|
|
|
Counter = lambda data: BaseGuiComponent(data=data, widget_pack=widget_pack.CounterPayload()) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|