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.
334 lines
11 KiB
334 lines
11 KiB
from gooey.gui.components.filtering.prefix_filter import PrefixTokenizers
|
|
|
|
|
|
|
|
def _include_layout_docs(f):
|
|
"""
|
|
Combines the layout_options docsstring with the
|
|
wrapped function's doc string.
|
|
"""
|
|
f.__doc__ = (f.__doc__ or '') + (LayoutOptions.__doc__ or '')
|
|
return f
|
|
|
|
|
|
def _include_global_option_docs(f):
|
|
"""
|
|
Combines docstrings for options available to
|
|
all widget types.
|
|
"""
|
|
_doc = """:param initial_value: Sets the initial value in the UI.
|
|
"""
|
|
f.__doc__ = (f.__doc__ or '') + _doc
|
|
return f
|
|
|
|
def _include_chooser_msg_wildcard_docs(f):
|
|
"""
|
|
Combines the basic Chooser options (wildard, message) docsstring
|
|
with the wrapped function's doc string.
|
|
"""
|
|
_doc = """:param wildcard: Sets the wildcard, which can contain multiple file types, for
|
|
example: "BMP files (.bmp)|.bmp|GIF files (.gif)|.gif"
|
|
:param message: Sets the message that will be displayed on the dialog.
|
|
"""
|
|
f.__doc__ = (f.__doc__ or '') + _doc
|
|
return f
|
|
|
|
def _include_choose_dir_file_docs(f):
|
|
"""
|
|
Combines the basic Chooser options (wildard, message) docsstring
|
|
with the wrapped function's doc string.
|
|
"""
|
|
_doc = """:param default_dir: The default directory selected when the dialog spawns
|
|
:param default_file: The default filename used in the dialog
|
|
"""
|
|
f.__doc__ = (f.__doc__ or '') + _doc
|
|
return f
|
|
|
|
|
|
|
|
def LayoutOptions(label_color=None,
|
|
label_bg_color=None,
|
|
help_color=None,
|
|
help_bg_color=None,
|
|
error_color=None,
|
|
error_bg_color=None,
|
|
show_label=True,
|
|
show_help=True,
|
|
visible=True,
|
|
full_width=False):
|
|
"""
|
|
Layout Options:
|
|
---------------
|
|
|
|
Color options can be passed either as a hex string ('#ff0000') or as
|
|
a collection of RGB values (e.g. `[255, 0, 0]` or `(255, 0, 0)`)
|
|
|
|
:param label_color: The foreground color of the label text
|
|
:param label_bg_color: The background color of the label text.
|
|
:param help_color: The foreground color of the help text.
|
|
:param help_bg_color: The background color of the help text.
|
|
:param error_color: The foreground color of the error text (when visible).
|
|
:param error_bg_color: The background color of the error text (when visible).
|
|
:param show_label: Toggles whether or not to display the label text
|
|
:param show_help: Toggles whether or not to display the help text
|
|
:param visible: Hides the entire widget when False. Note: the widget
|
|
is still present in the UI and will still send along any
|
|
default values that have been provided in code. This option
|
|
is here for when you want to hide certain advanced / dangerous
|
|
inputs from your GUI users.
|
|
:param full_width: This is a layout hint for this widget. When True the widget
|
|
will fill the entire available space within a given row.
|
|
Otherwise, it will be sized based on the column rules
|
|
provided elsewhere.
|
|
"""
|
|
return _clean(locals())
|
|
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def TextField(initial_value=None, validator=None, **layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def PasswordField(initial_value=None, validator=None, **layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def IntegerField(initial_value=None, validator=None, min=0, max=100, increment=1, **layout_options):
|
|
"""
|
|
:param min: The minimum value allowed
|
|
:param max: The maximum value allowed
|
|
:param increment: The step size of the spinner
|
|
"""
|
|
return _clean(locals())
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def Slider(initial_value=None, validator=None, min=0, max=100, increment=1, **layout_options):
|
|
"""
|
|
:param min: The minimum value allowed
|
|
:param max: The maximum value allowed
|
|
:param increment: The step size of the slider
|
|
"""
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def DecimalField(validator=None,
|
|
initial_value=None,
|
|
min=0.0,
|
|
max=1.0,
|
|
increment=0.01,
|
|
precision=2,
|
|
**layout_options):
|
|
"""
|
|
:param min: The minimum value allowed
|
|
:param max: The maximum value allowed
|
|
:param increment: The step size of the spinner
|
|
:param precision: The precision of the decimal (0-20)
|
|
"""
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def TextArea(initial_value=None, height=None, readonly=False, validator=None, **layout_options):
|
|
"""
|
|
:param height: The height of the TextArea.
|
|
:param readonly: Controls whether or not user's may modify the contents
|
|
"""
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def RichTextConsole(**layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def ListBox(initial_value=None, height=None, **layout_options):
|
|
"""
|
|
:param height: The height of the Listbox
|
|
"""
|
|
return _clean(locals())
|
|
|
|
# TODO: what are this guy's layout options..?
|
|
def MutexGroup(initial_selection=None, title=None, **layout_options):
|
|
"""
|
|
:param initial_selection: The index of the option which should be initially selected.
|
|
:param title: Adds the supplied title above the RadioGroup options (when present)
|
|
"""
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def Dropdown(initial_value=None, **layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def Counter(initial_value=None, **layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def CheckBox(initial_value=None, **layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def BlockCheckBox(initial_value=None, checkbox_label=None, **layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
def FilterableDropdown(placeholder=None,
|
|
empty_message=None,
|
|
max_size=80,
|
|
search_strategy=None,
|
|
initial_value=None,
|
|
**layout_options):
|
|
"""
|
|
:param placeholder: Text to display when the user has provided no input
|
|
:param empty_message: Text to display if the user's query doesn't match anything
|
|
:param max_size: maximum height of the dropdown
|
|
:param search_strategy: see: PrefixSearchStrategy
|
|
"""
|
|
return _clean(locals())
|
|
|
|
|
|
def PrefixSearchStrategy(
|
|
choice_tokenizer=PrefixTokenizers.WORDS,
|
|
input_tokenizer=PrefixTokenizers.REGEX('\s'),
|
|
ignore_case=True,
|
|
operator='AND',
|
|
index_suffix=False):
|
|
"""
|
|
:param choice_tokenizer: See: PrefixTokenizers - sets the tokenization strategy
|
|
for the `choices`
|
|
:param input_tokenizer: See: PrefixTokenizers sets how the users's `input` get tokenized.
|
|
:param ignore_case: Controls whether or not to honor case while searching
|
|
:param operator: see: `OperatorType` - controls whether or not individual
|
|
search tokens
|
|
get `AND`ed or `OR`d together when evaluating a match.
|
|
:param index_suffix: When enabled, generates a suffix-tree to enable efficient
|
|
partial-matching against any of the tokens.
|
|
"""
|
|
return {**_clean(locals()), 'type': 'PrefixFilter'}
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
@_include_choose_dir_file_docs
|
|
@_include_chooser_msg_wildcard_docs
|
|
def FileChooser(wildcard=None,
|
|
default_dir=None,
|
|
default_file=None,
|
|
message=None,
|
|
initial_value=None,
|
|
**layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
@_include_chooser_msg_wildcard_docs
|
|
def DirectoryChooser(wildcard=None,
|
|
default_path=None,
|
|
message=None,
|
|
initial_value=None,
|
|
**layout_options):
|
|
"""
|
|
:param default_path: The default path selected when the dialog spawns
|
|
"""
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
@_include_choose_dir_file_docs
|
|
@_include_chooser_msg_wildcard_docs
|
|
def FileSaver(wildcard=None,
|
|
default_dir=None,
|
|
default_file=None,
|
|
message=None,
|
|
initial_value=None,
|
|
**layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
@_include_layout_docs
|
|
@_include_global_option_docs
|
|
@_include_choose_dir_file_docs
|
|
@_include_chooser_msg_wildcard_docs
|
|
def MultiFileSaver(wildcard=None,
|
|
default_dir=None,
|
|
default_file=None,
|
|
message=None,
|
|
initial_value=None,
|
|
**layout_options):
|
|
return _clean(locals())
|
|
|
|
|
|
def ExpressionValidator(test=None, message=None):
|
|
"""
|
|
Creates the data for a basic expression validator.
|
|
|
|
Your test function can be made up of any valid Python expression.
|
|
It receives the variable user_input as an argument against which to
|
|
perform its validation. Note that all values coming from Gooey
|
|
are in the form of a string, so you'll have to cast as needed
|
|
in order to perform your validation.
|
|
"""
|
|
return {**_clean(locals()), 'type': 'ExpressionValidator'}
|
|
|
|
|
|
def RegexValidator(test=None, message=None):
|
|
"""
|
|
Creates the data for a basic RegexValidator.
|
|
|
|
:param test: the regex expression. This should be the expression
|
|
directly (i.e. `test='\d+'`). Gooey will test
|
|
that the user's input satisfies this expression.
|
|
:param message: The message to display if the input doesn't match
|
|
the regex
|
|
"""
|
|
return {**_clean(locals()), 'type': 'RegexValidator'}
|
|
|
|
|
|
def ArgumentGroup(show_border=False,
|
|
show_underline=True,
|
|
label_color=None,
|
|
columns=None,
|
|
margin_top=None):
|
|
"""
|
|
:param show_border: When True a labeled border will surround all widgets added to this group.
|
|
:param show_underline: Controls whether or not to display the underline when using the default border style
|
|
:param label_color: The foreground color for the group name
|
|
:param columns: Controls the number of widgets on each row
|
|
:param margin_top: specifies the top margin in pixels for this group
|
|
"""
|
|
return _clean(locals())
|
|
|
|
|
|
|
|
|
|
|
|
def _clean(options):
|
|
cleaned = {k: v for k, v in options.items()
|
|
if v is not None and k != "layout_options"}
|
|
return {**options.get('layout_options', {}), **cleaned}
|
|
|