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.
41 lines
1.2 KiB
41 lines
1.2 KiB
from gooey.gui.components.widgets.bases import TextContainer
|
|
import wx
|
|
|
|
from gooey.gui import formatters
|
|
from gooey.gui.lang.i18n import _
|
|
|
|
|
|
class Dropdown(TextContainer):
|
|
|
|
def getWidget(self, parent, *args, **options):
|
|
default = _('select_option')
|
|
return wx.ComboBox(
|
|
parent=parent,
|
|
id=-1,
|
|
value=default,
|
|
choices=[default] + self._meta['choices'],
|
|
style=wx.CB_DROPDOWN)
|
|
|
|
def setOptions(self, options):
|
|
prevSelection = self.widget.GetSelection()
|
|
self.widget.Clear()
|
|
for option in [_('select_option')] + options:
|
|
self.widget.Append(option)
|
|
self.widget.SetSelection(0)
|
|
|
|
|
|
def setValue(self, value):
|
|
## +1 to offset the default placeholder value
|
|
index = self._meta['choices'].index(value) + 1
|
|
self.widget.SetSelection(index)
|
|
|
|
def getWidgetValue(self):
|
|
value = self.widget.GetValue()
|
|
# filter out the extra default option that's
|
|
# appended during creation
|
|
if value == _('select_option'):
|
|
return None
|
|
return value
|
|
|
|
def formatOutput(self, metadata, value):
|
|
return formatters.dropdown(metadata, value)
|