Skip to content
This repository was archived by the owner on Nov 6, 2025. It is now read-only.
Draft
93 changes: 92 additions & 1 deletion src/pymodaq_gui/examples/parameter_ex.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@
from pymodaq_gui.utils.utils import create_nested_menu
from pymodaq_gui.parameter.pymodaq_ptypes import GroupParameter, registerParameterType
from pymodaq_gui.managers.parameter_manager import ParameterManager
from pymodaq_gui.utils.widgets.delegates import (
NumericDelegate,
ComboBoxDelegate,
ColumnSpecificDelegate,
PatternCompleterDelegate,
BooleanDelegate,
SpinBoxDelegate,
)
from pyqtgraph.parametertree import ParameterTree, Parameter


class ScalableGroup(GroupParameter):
def __init__(self, **opts):
Expand All @@ -23,7 +33,86 @@ def addNew(self, full_path:tuple):
# Need to register a new type to properly trigger addNew
registerParameterType('groupedit', ScalableGroup, override=True)

def create_comprehensive_table():
"""
Create a table showcasing all delegate types:
- Column 0: Plain text (no delegate)
- Column 1: Numeric spinbox (0-100)
- Column 2: ComboBox dropdown
- Column 3: Pattern completer (@mentions, #tags)
- Column 4: Numeric with decimals (0-10, 2 decimals)
- Column 5: Boolean checkbox
"""

# Setup pattern completer delegate
pattern_delegate = PatternCompleterDelegate()
pattern_delegate.add_completer("@", ["Alice", "Bob", "Charlie", "David", "Eve"])
pattern_delegate.add_completer(
"#", ["important", "urgent", "review", "done", "todo"]
)

# Create column-specific delegate
delegate = ColumnSpecificDelegate(
{
1: NumericDelegate(min_val=0, max_val=100, decimals=0),
2: ComboBoxDelegate(["Type A", "Type B", "Type C", "Type D"]),
3: pattern_delegate,
4: SpinBoxDelegate(decimals=4, min=-1e6, max=1e6, units="s"),
5: BooleanDelegate(),
}
)

table_params = {
"title": "Multi-Delegate Table",
"name": "multi_delegate_table",
"type": "table",
"columns": [
"Name (Plain)",
"Score (NumericDelegate 0-100)",
"Status (ComboBoxDelegate)",
"Tags (PatternDelegate @/#)",
"Rating (SpinBoxDelegate 0-10)",
"Checked (BooleanDelegate True/False)",
],
"rows": 5,
"delegate": lambda: delegate,
"max_display_rows": 6,
"value": [
["Sample 1", "75", "Type A", "@Alice #important", "8.5s", True],
["Sample 2", "50", "Type B", "@Bob #urgent", "7.2s", True],
["Sample 3", "90", "Type C", "@Charlie #review", "9.1s", False],
["Sample 4", "60", "Type A", "", "6.8s"],
["Sample 5", "", "", "", "", ""],
],
"enable_row_controls": True,
}


return table_params
# return Parameter.create(name="params", type="group", children=params)
def create_text_parameter():
text_params = {
"name": "Text Editing with pattern completion",
"type": "group",
"children": [
{
"name": "Message",
"type": "text_pattern",
"value": "",
"patterns": {
"@": ["alice", "bob", "charlie"],
"#": ["python", "javascript", "cpp"],
},
"completer_config": {
"min_width": 200,
"max_width": 400,
"case_sensitive": False,
"visual_indicator": True,
},
},
],
}
return text_params
class ParameterEx(ParameterManager):
params = [
{'title': 'Groups:', 'name': 'groups', 'type': 'group', 'children': [
Expand Down Expand Up @@ -117,13 +206,15 @@ class ParameterEx(ParameterManager):
{'title': 'Plain text:', 'name': 'texts', 'type': 'group', 'children': [
{'title': 'Standard str', 'name': 'atte', 'type': 'str', 'value': 'this is a string you can edit'},
{'title': 'Plain text', 'name': 'text', 'type': 'text', 'value': 'this is some text'},
create_text_parameter(),
{'title': 'Plain text', 'name': 'textpb', 'type': 'text_pb', 'value': 'this is some text',
'tip': 'If text_pb type is used, user can add text to the parameter'},
]},

{'title': 'Tables:', 'name': 'tables', 'type': 'group', 'children': [
{'title': 'Table widget', 'name': 'tablewidget', 'type': 'table', 'value':
{'title': 'Table widget', 'name': 'tablewidget', 'type': 'table_dict', 'value':
OrderedDict(key1='data1', key2=24), 'header': ['keys', 'limits'], 'height': 100},
create_comprehensive_table(),
{'title': 'Table view', 'name': 'tabular_table', 'type': 'table_view',
'delegate': table.SpinBoxDelegate, 'menu': True,
'value': table.TableModel([[0.1, 0.2, 0.3]], ['value1', 'value2', 'value3']),
Expand Down
2 changes: 1 addition & 1 deletion src/pymodaq_gui/managers/roi_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ def setupUI(self):
self.roiwidget.setMaximumWidth(300)

params = [
{'title': 'Measurements:', 'name': 'measurements', 'type': 'table', 'value': OrderedDict([]), 'Ncol': 2,
{'title': 'Measurements:', 'name': 'measurements', 'type': 'table_dict', 'value': OrderedDict([]), 'Ncol': 2,
'header': ["LO", "Value"]},
ROIScalableGroup(roi_type=self.ROI_type, name="ROIs")]
self.settings = Parameter.create(title='ROIs Settings', name='rois_settings', type='group', children=params)
Expand Down
53 changes: 31 additions & 22 deletions src/pymodaq_gui/parameter/pymodaq_ptypes/__init__.py
Original file line number Diff line number Diff line change
@@ -1,41 +1,50 @@
from pyqtgraph.parametertree.parameterTypes.basetypes import (
SimpleParameter, GroupParameter, GroupParameterItem) # to be imported from elsewhere
SimpleParameter,
GroupParameter,
GroupParameterItem,
) # to be imported from elsewhere
from .bool import BoolPushParameter
from .pixmap import PixmapParameter, PixmapCheckParameter
from .slide import SliderSpinBox, SliderParameter
from .led import LedPushParameter, LedParameter
from .date import DateParameter, DateTimeParameter, TimeParameter
from .list import ListParameter
from .table_dict import DoubleColumnTableParameter
from .table import TableParameter
from .tableview import TableViewParameter, TableViewCustom
from .itemselect import ItemSelectParameter
from .filedir import FileDirParameter
from .text import PlainTextPbParameter
from .numeric import NumericParameter
from .group import GroupParameter
from pyqtgraph.parametertree.Parameter import registerParameterType, registerParameterItemType, Parameter
from .text_pattern import PatternParameter
from pyqtgraph.parametertree.Parameter import (
registerParameterType,
registerParameterItemType,
Parameter,
)

registerParameterType('float', NumericParameter, override=True)
registerParameterType('int', NumericParameter, override=True)
registerParameterType('bool_push', BoolPushParameter, override=True)
registerParameterType('pixmap', PixmapParameter, override=True)
registerParameterType('pixmap_check', PixmapCheckParameter, override=True)
registerParameterType("float", NumericParameter, override=True)
registerParameterType("int", NumericParameter, override=True)
registerParameterType("bool_push", BoolPushParameter, override=True)
registerParameterType("pixmap", PixmapParameter, override=True)
registerParameterType("pixmap_check", PixmapCheckParameter, override=True)

registerParameterType('slide', SliderParameter, override=True)
registerParameterType("slide", SliderParameter, override=True)

registerParameterType('led', LedParameter, override=True)
registerParameterType('led_push', LedPushParameter, override=True)
registerParameterType('date', DateParameter, override=True)
registerParameterType('date_time', DateTimeParameter, override=True)
registerParameterType('time', TimeParameter, override=True)
registerParameterType("led", LedParameter, override=True)
registerParameterType("led_push", LedPushParameter, override=True)
registerParameterType("date", DateParameter, override=True)
registerParameterType("date_time", DateTimeParameter, override=True)
registerParameterType("time", TimeParameter, override=True)

registerParameterType('list', ListParameter, override=True)
registerParameterType('table', TableParameter, override=True)
registerParameterType("list", ListParameter, override=True)
registerParameterType("table_dict", DoubleColumnTableParameter, override=True)
registerParameterType("table", TableParameter, override=True)

registerParameterType('table_view', TableViewParameter, override=True)
registerParameterType('itemselect', ItemSelectParameter, override=True)
registerParameterType('browsepath', FileDirParameter, override=True)
registerParameterType('text_pb', PlainTextPbParameter, override=True)

registerParameterType('text_pb', PlainTextPbParameter, override=True)
registerParameterType('group', GroupParameter, override=True)
registerParameterType("table_view", TableViewParameter, override=True)
registerParameterType("itemselect", ItemSelectParameter, override=True)
registerParameterType("browsepath", FileDirParameter, override=True)
registerParameterType("text_pb", PlainTextPbParameter, override=True)
registerParameterType("text_pattern", PatternParameter)
registerParameterType("group", GroupParameter, override=True)
Loading
Loading