Source code for ewoksorange.gui.simpletypesmixin
from ewoksorange.gui.parameterform import ParameterForm
from ewoksorange.gui.orange_imports import gui
[docs]class SimpleTypesWidgetMixin:
def __init__(self):
super().__init__()
self._init_control_area()
self._init_main_area()
def _init_control_area(self):
super()._init_control_area()
box = gui.widgetBox(self.controlArea, "Default Inputs")
self._default_inputs_form = ParameterForm(parent=box)
for name, value in self.get_default_input_values(include_missing=True).items():
options = self._get_parameter_options(name)
self._default_inputs_form.addParameter(
name,
value=value,
value_change_callback=self._default_inputs_changed,
**options
)
box = gui.widgetBox(self.controlArea, "Inputs From Previous Task")
self._dynamic_input_form = ParameterForm(parent=box)
for name in self.get_input_names():
options = self._get_parameter_options(name)
self._dynamic_input_form.addParameter(
name, readonly=True, enabled=False, **options
)
def _init_main_area(self):
super()._init_main_area()
box = gui.widgetBox(self.mainArea, "Outputs")
self._output_form = ParameterForm(parent=box)
for name in self.get_output_names():
options = self._get_parameter_options(name)
self._output_form.addParameter(name, readonly=True, **options)
def _get_parameter_options(self, name):
return {}
def _default_inputs_changed(self):
self.update_default_inputs(**self._default_inputs_form.get_parameter_values())
[docs] def handleNewSignals(self):
names = set(self.get_input_names())
for name, value in self.get_dynamic_input_values().items():
names.remove(name)
self._dynamic_input_form.set_parameter_enabled(name, True)
self._default_inputs_form.set_parameter_enabled(name, False)
self._dynamic_input_form.set_parameter_value(name, value)
for name in names:
self._dynamic_input_form.set_parameter_enabled(name, False)
self._default_inputs_form.set_parameter_enabled(name, True)
super().handleNewSignals()
[docs] def task_output_changed(self):
for name, value in self.get_task_output_values().items():
self._output_form.set_parameter_value(name, value)
super().task_output_changed()
[docs]class IntegerAdderMixin(SimpleTypesWidgetMixin):
def _get_parameter_options(self, name):
return {"value_for_type": 0}