Function Widgets

Defines the GUI components used with ceed.function.

class ceed.function.func_widgets.FuncList(**kwargs)

Bases: kivy_garden.drag_n_drop.DraggableLayoutBehavior, ceed.graphics.ShowMoreSelection, ceed.graphics.WidgetList, kivy.uix.boxlayout.BoxLayout

Widget that shows the list of available functions to the user and also allows for the creation of new functions to be added to the list.

The functions come from ceed.function.FunctionFactoryBase.

function_factory: ceed.function.FunctionFactoryBase = None

The ceed.function.FunctionFactoryBase that is used for the list of functions available to the user and with whom new functions created in the GUI are registered.

is_visible

Whether the list is currently visible.

It is used by the selection logic and it’s always True for this class.

handle_drag_release(index, drag_widget)

This is called when a widget is dropped in the layout. index is the index in children where the widget should be added. drag_widget is the DraggableObjectBehavior that was dropped there.

This must be overwritten by the inherited class to actually do the add_widget or something else.

add_func(name: str)

Adds a copy of the the function with the given name from function_factory to the available functions in function_factory (with a new name of course) or to a function group.

show_child_func_in_func(parent_func: ceed.function.FuncGroup, child_func: Union[ceed.function.FuncBase, ceed.function.CeedFuncRef, ceed.function.FuncGroup])

Displays the child function in the GUI as the child of the parent.

Parameters
  • parent_func – Function child is added to.

  • child_func – the child function.

show_func_in_listing(func: ceed.function.FuncBase)

Shows the function, previously added to the function_factory in the GUI.

Parameters

func – The ceed.function.FuncBase to show.

get_selectable_nodes()

(internal) Returns a list of the nodes that can be selected. It can be overwritten by the derived widget to return the correct list.

This list is used to determine which nodes to select with group selection. E.g. the last element in the list will be selected when home is pressed, pagedown will move (or add to, if shift is held) the selection from the current position by negative page_count nodes starting from the position of the currently selected node in this list and so on. Still, nodes can be selected even if they are not in this list.

Note

It is safe to dynamically change this list including removing, adding, or re-arranging its elements. Nodes can be selected even if they are not on this list. And selected nodes removed from the list will remain selected until deselect_node() is called.

Warning

Layouts display their children in the reverse order. That is, the contents of children is displayed form right to left, bottom to top. Therefore, internally, the indices of the elements returned by this function are reversed to make it work by default for most layouts so that the final result is consistent e.g. home, although it will select the last element in this list visually, will select the first element when counting from top to bottom and left to right. If this behavior is not desired, a reversed list should be returned instead.

Defaults to returning children.

clear_all()

Removes all the widgets associated with the registered functions in function_factory from the GUI.

show_function(func: Union[ceed.function.FuncBase, ceed.function.CeedFuncRef, ceed.function.FuncGroup])

Displays the function (that is in the function_factory) in the GUI.

Parameters

func – The ceed.function.FuncBase to display.

class ceed.function.func_widgets.FuncWidget(**kwargs)

Bases: ceed.graphics.ShowMoreBehavior, kivy.uix.boxlayout.BoxLayout

The widget that represents a ceed.function.CeedFunc instance.

It contains all the configuration options of the function.

The class is reused anywhere a function is shown in the GUI, including in ceed.stage so it is abstracted.

func: Union[ceed.function.FuncBase, ceed.function.CeedFuncRef, ceed.function.FuncGroup] = None

The ceed.function.BaseFunc or ceed.function.CeedFuncRef instance associated with this widget.

ref_func = None

If func is a ceed.function.CeedFuncRef, this is the actual ceed.function.BaseFunc func is internally referencing. Otherwise, it’s None.

selected

Whether the function is currently selected in the GUI.

selection_controller = None

The container that gets called to select the widget when the user selects it with a touch. E.g. FuncList in the function listing case or StageFuncChildrenList if it belongs to a stage.

func_controller

The controller to which the function is added or removed from. This is e.g. ceed.function.FunctionFactoryBase in the function list case or the ceed.stage.CeedStage to which the function is attached.

is_visible

Whether the function is currently visible in the GUI. I.e. when all of it’s parents all the way to the root is visible.

theme_interpolation = 0

The fraction by which base_kivy_app.utils.ColorTheme.interpolate() interpolates the two given colors (base_kivy_app.utils.ColorTheme.primary_light and base_kivy_app.utils.ColorTheme.primary).

settings_root: ceed.function.func_widgets.FuncSettingsDropDown = None

The FuncSettingsDropDown used by this function to show settings.

expand_widget = None

The widget that when pressed will expand to show the more widget.

property name

The ceed.function.FuncBase.name of the function.

static get_display_cls(func: Union[ceed.function.FuncBase, ceed.function.FuncGroup]) Type[ceed.function.func_widgets.FuncWidgetType]

Gets the widget class to use to display the function.

Parameters

func – The ceed.function.FuncBase instance.

Returns

The widget class to use to display it in the GUI.

add_func_noise_param(func: ceed.function.FuncBase, key: str, entry_widget)

Attaches a noise distribution to the function.

display_properties()

Constructs the function’s configuration option widgets that is used by the user to customize the function in the GUI.

It uses e.g. ceed.function.FuncBase.get_gui_elements() and ceed.function.FuncBase.get_gui_props() to get the options to show.

initialize_display(func: Union[ceed.function.FuncBase, ceed.function.CeedFuncRef, ceed.function.FuncGroup], func_controller, selection_controller)

Sets selection_controller and func_controller, and generates and applies the kv GUI rules for the widget.

remove_func()

Removes the function from its parent and removes it from the GUI. This is used when deleting the function in the GUI.

handle_expand_widget(expand)

Called from kv to hide the widget that exapnds the group view when the function being represented is not a group.

replace_ref_func_with_source()

If this func is a ceed.function.CeedFuncRef, this will replace the reference with the a copy of the original function being referenced and the GUI will also be updated to reflect that.

apply_kv()

Applies the kv rules to the widget.

The rules are manually applied to the class because we want to have a chance to initialize some instance variables before the kv rules is applied so they can be referred to from kv without having to check if they are None.

create_settings_dropdown()

Creates the dropdown widget that displays the function’s configuration options.

class ceed.function.func_widgets.FuncWidgetGroup(**kwargs)

Bases: ceed.function.func_widgets.FuncWidget

The widget used to display a ceed.function.FuncGroup instance in the GUI.

children_container = None

The widget instance that displays all the widgets representing the children functions of this function.

remove_func()

Removes the function from its parent and removes it from the GUI. This is used when deleting the function in the GUI.

initialize_display(func, func_controller, selection_controller)

Sets selection_controller and func_controller, and generates and applies the kv GUI rules for the widget.

apply_kv()

Applies the kv rules to the widget.

The rules are manually applied to the class because we want to have a chance to initialize some instance variables before the kv rules is applied so they can be referred to from kv without having to check if they are None.

selected_child()

Returns the child or sub-child etc. ceed.function.FuncBase that is selected in the GUI or None.

handle_expand_widget(expand)

Called from kv to hide the widget that exapnds the group view when the function being represented is not a group.

class ceed.function.func_widgets.FuncPropTextWidget(**kwargs)

Bases: base_kivy_app.graphics.FlatTextInput

The widget used to allow editing a text based configuration option of a ceed.function.FuncBase.

func = None

The ceed.function.FuncBase instance it’s associated with.

prop_name = ''

The name of the property of func that this widget edits.

apply_binding()

Starts tracking the prop_name of the associated func and updates the GUI with changes.

unbind_tracking()

Stops the tracking initialized with apply_binding().

class ceed.function.func_widgets.FuncNamePropTextWidget(**kwargs)

Bases: ceed.function.func_widgets.FuncPropTextWidget

The widget used to edit the ceed.function.FuncBase.name of a ceed.function.FuncBase.

class ceed.function.func_widgets.FuncSettingsDropDown(func_widget, **kwargs)

Bases: kivy.factory.FlatDropDown

A dropdown widget used to show settings when customizing functions.

func_widget: ceed.function.func_widgets.FuncWidget

The FuncWidget this dropdown is displaying settings for.

class ceed.function.func_widgets.FuncNoiseDropDown(func, prop_name, **kwargs)

Bases: kivy.factory.FlatDropDown

Widget for displaying options to add randomness to the functions.

param_container = None

The grid widget that displays all user configurable distribution parameters.

func: ceed.function.FuncBase = None

The function to which this is attached.

prop_name = ''

The property of the function for which this widget selects the (optional) distribution.

noise_factory: ceed.function.param_noise.ParameterNoiseFactory

The ceed.function.param_noise.ParameterNoiseFactory to use to get the noise distribution from.

noise_param: ceed.function.param_noise.NoiseBase

The optional ceed.function.param_noise.NoiseBase instance to use for the parameter.

noise_cls_update = None

Clock trigger to update the noise classes from the GUI.

clear_noise_param()

Unbinds and clears the widgets that track the distributions parameters.

set_noise_instance(*args)

Selects the distribution class to use, by name.

show_noise_params(noise_param)

Displays the configurable parameters for the selected noise distribution.