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.
108 lines
3.1 KiB
108 lines
3.1 KiB
import wx
|
|
|
|
from gooey.gui import formatters
|
|
from gooey.gui.components.widgets.bases import TextContainer
|
|
from gooey.gui.lang.i18n import _
|
|
from gooey.gui.util import wx_util
|
|
|
|
|
|
class CheckBox(TextContainer):
|
|
|
|
widget_class = wx.CheckBox
|
|
|
|
def arrange(self, *args, **kwargs):
|
|
wx_util.make_bold(self.label)
|
|
wx_util.withColor(self.label, self._options['label_color'])
|
|
wx_util.withColor(self.help_text, self._options['help_color'])
|
|
wx_util.withColor(self.error, self._options['error_color'])
|
|
self.error.Hide()
|
|
|
|
self.help_text.SetMinSize((0,-1))
|
|
|
|
layout = wx.BoxSizer(wx.VERTICAL)
|
|
if self._options.get('show_label', True):
|
|
layout.Add(self.label, 0, wx.EXPAND)
|
|
else:
|
|
self.label.Show(False)
|
|
layout.AddStretchSpacer(1)
|
|
|
|
layout.AddSpacer(2)
|
|
if self.help_text:
|
|
hsizer = wx.BoxSizer(wx.HORIZONTAL)
|
|
hsizer.Add(self.widget, 0)
|
|
hsizer.Add(self.help_text, 1)
|
|
layout.Add(hsizer, 1, wx.EXPAND)
|
|
layout.AddSpacer(2)
|
|
else:
|
|
layout.Add(self.widget, 0, wx.EXPAND)
|
|
layout.AddStretchSpacer(1)
|
|
return layout
|
|
|
|
|
|
def setValue(self, value):
|
|
self.widget.SetValue(value)
|
|
|
|
def getWidgetValue(self):
|
|
return self.widget.GetValue()
|
|
|
|
|
|
def formatOutput(self, metatdata, value):
|
|
return formatters.checkbox(metatdata, value)
|
|
|
|
|
|
def hideInput(self):
|
|
self.widget.Hide()
|
|
|
|
|
|
|
|
|
|
|
|
class BlockCheckbox(CheckBox):
|
|
"""
|
|
A block style layout which places the help text in the normal
|
|
location rather than inline next to the checkbox. A replacement label
|
|
called `block_label` is shown next to the checkbox control.
|
|
|
|
+-----------------+
|
|
|label |
|
|
|help_text |
|
|
|[ ] block_label |
|
|
+-----------------+
|
|
This option tends to look better when there is a large amount of
|
|
help text.
|
|
"""
|
|
|
|
|
|
def arrange(self, *args, **kwargs):
|
|
wx_util.make_bold(self.label)
|
|
wx_util.withColor(self.label, self._options['label_color'])
|
|
wx_util.withColor(self.help_text, self._options['help_color'])
|
|
wx_util.withColor(self.error, self._options['error_color'])
|
|
self.error.Hide()
|
|
|
|
self.help_text.SetMinSize((0,-1))
|
|
|
|
layout = wx.BoxSizer(wx.VERTICAL)
|
|
|
|
if self._options.get('show_label', True):
|
|
layout.Add(self.label, 0, wx.EXPAND)
|
|
else:
|
|
layout.AddStretchSpacer(1)
|
|
|
|
layout.AddSpacer(2)
|
|
if self.help_text and self._options.get('show_help', True):
|
|
layout.Add(self.help_text, 1, wx.EXPAND)
|
|
layout.AddSpacer(2)
|
|
else:
|
|
layout.AddStretchSpacer(1)
|
|
|
|
layout.AddSpacer(2)
|
|
|
|
block_label = self._options.get('checkbox_label', _('checkbox_label'))
|
|
hsizer = wx.BoxSizer(wx.HORIZONTAL)
|
|
hsizer.Add(self.widget, 0)
|
|
hsizer.Add(wx.StaticText(self, label=block_label), 1)
|
|
layout.Add(hsizer, 1, wx.EXPAND)
|
|
layout.AddSpacer(2)
|
|
|
|
return layout
|