Skip to content

Commit e1e5abe

Browse files
generalized NoNode for ParExecs of any operator
1 parent 82f74bd commit e1e5abe

File tree

9 files changed

+370
-202
lines changed

9 files changed

+370
-202
lines changed

modules/release/QuickExt.tox

520 Bytes
Binary file not shown.
Binary file not shown.

scripts/QuickExt/templates/ExtUtils/CustomParHelper/CustomParHelper.py

+15-7
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,16 @@ class CustomParHelper:
2828
2929
Full signature and optional parameters:
3030
```python
31-
CustomParHelper.Init(self, ownerComp, enable_properties: bool = True, enable_callbacks: bool = True, enable_parGroups: bool = True, expose_public: bool = False,
31+
CustomParHelper.Init(self, ownerComp, enable_properties: bool = True, enable_callbacks: bool = True, enable_parGroups: bool = True, enable_seq: bool = True, expose_public: bool = False,
3232
par_properties: list[str] = ['*'], par_callbacks: list[str] = ['*'],
3333
except_properties: list[str] = [], except_sequences: list[str] = [], except_callbacks: list[str] = [], except_pages: list[str] = [], enable_stubs: bool = False)
3434
```
3535
3636
Additional options:
37+
- `enable_properties`: If True, creates properties for custom parameters (default: True)
38+
- `enable_callbacks`: If True, creates callbacks for custom parameters (default: True)
3739
- `enable_parGroups`: If True, creates properties and methods for parGroups (default: True)
40+
- `enable_seq`: If True, creates properties and methods for sequence parameters (default: True)
3841
- `expose_public`: If True, uses capitalized property and method names (e.g., Par, Eval instead of par, eval)
3942
- `par_properties`: List of parameter names to include in property creation, by default all parameters are included
4043
- `par_callbacks`: List of parameter names to include in callback handling, by default all parameters are included
@@ -91,6 +94,7 @@ def onParGroup<GroupName>(self, _parGroup, _val):
9194
PAR_EXEC = op('extParExec')
9295
DAT_EXEC = op('extParPropDatExec')
9396
PAR_GROUP_EXEC = op('extParGroupExec')
97+
SEQ_EXEC = op('extSeqParExec')
9498
STUBSER = op('extStubser')
9599

96100
EXCEPT_PAGES_STATIC: list[str] = ['Version Ctrl', 'About', 'Info']
@@ -105,7 +109,7 @@ def onParGroup<GroupName>(self, _parGroup, _val):
105109
STUBS_ENABLED: bool = False
106110

107111
@classmethod
108-
def Init(cls, extension_self, ownerComp: COMP, enable_properties: bool = True, enable_callbacks: bool = True, enable_parGroups: bool = True, expose_public: bool = False,
112+
def Init(cls, extension_self, ownerComp: COMP, enable_properties: bool = True, enable_callbacks: bool = True, enable_parGroups: bool = True, enable_seq: bool = True, expose_public: bool = False,
109113
par_properties: list[str] = ['*'], par_callbacks: list[str] = ['*'],
110114
except_properties: list[str] = [], except_sequences: list[str] = [], except_callbacks: list[str] = [], except_pages: list[str] = [],
111115
enable_stubs: bool = False) -> None:
@@ -128,9 +132,9 @@ def Init(cls, extension_self, ownerComp: COMP, enable_properties: bool = True, e
128132
cls.CustomParsAsProperties(extension_self, ownerComp, enable_parGroups=enable_parGroups)
129133

130134
if enable_callbacks:
131-
cls.EnableCallbacks(enable_parGroups)
135+
cls.EnableCallbacks(enable_parGroups, enable_seq)
132136
else:
133-
cls.DisableCallbacks(enable_parGroups)
137+
cls.DisableCallbacks(not enable_parGroups, not enable_seq)
134138

135139
if enable_stubs:
136140
cls.EnableStubs()
@@ -201,19 +205,23 @@ def getter_group(instance):
201205

202206

203207
@classmethod
204-
def EnableCallbacks(cls, enable_parGroups: bool = True) -> None:
208+
def EnableCallbacks(cls, enable_parGroups: bool = True, enable_seq: bool = True) -> None:
205209
"""Enable callbacks for custom parameters."""
206210
cls.PAR_EXEC.par.active = True
207211
if enable_parGroups:
208212
cls.PAR_GROUP_EXEC.par.active = True
213+
if enable_seq:
214+
cls.SEQ_EXEC.par.active = True
209215

210216

211217
@classmethod
212-
def DisableCallbacks(cls, enable_parGroups: bool = True) -> None:
218+
def DisableCallbacks(cls, disable_parGroups: bool = True, disable_seq: bool = True) -> None:
213219
"""Disable callbacks for custom parameters."""
214220
cls.PAR_EXEC.par.active = False
215-
if enable_parGroups:
221+
if disable_parGroups:
216222
cls.PAR_GROUP_EXEC.par.active = False
223+
if disable_seq:
224+
cls.SEQ_EXEC.par.active = False
217225

218226

219227
@classmethod

scripts/QuickExt/templates/ExtUtils/ExtTest.py

+42-26
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,38 @@ class ExtTest:
66
def __init__(self, ownerComp):
77
self.ownerComp = ownerComp
88
CustomParHelper.Init(self, ownerComp, enable_properties=True, enable_callbacks=True)
9-
NoNode.Init(ownerComp, enable_chopexec=True, enable_datexec=True, enable_keyboard_shortcuts=True, enable_parexec=True)
9+
#CustomParHelper.DisableCallbacks()
10+
NoNode.Init(ownerComp, enable_chopexec=True, enable_datexec=True, enable_parexec=True, enable_keyboard_shortcuts=True)
1011
NoNode.SetMarkColor((0.5, 0.05, 0.5))
11-
12+
1213
# CHOP Exec tests
1314
NoNode.RegisterChopExec(NoNode.ChopExecType.ValueChange, self.ownerComp.op('null_test_chopexec'), 'v1', self.onTestChopValueChange)
1415
NoNode.RegisterChopExec(NoNode.ChopExecType.OffToOn, self.ownerComp.op('null_test_chopexec'), 'v*, v2', self.onTestChopOffToOn)
1516
NoNode.RegisterChopExec(NoNode.ChopExecType.OnToOff, self.ownerComp.op('null_test_chopexec'), ['v1', 'v2'], self.onTestChopOnToOff)
1617
#NoNode.RegisterChopExec(NoNode.ChopExecType.WhileOn, self.ownerComp.op('null_test_chopexec'), '*', self.onTestChopWhileOn)
1718
#NoNode.RegisterChopExec(NoNode.ChopExecType.WhileOff, self.ownerComp.op('null_test_chopexec'), '*', self.onTestChopWhileOff)
18-
19+
#NoNode.DisableChopExec()
20+
1921
# DAT Exec tests
2022
NoNode.RegisterDatExec(NoNode.DatExecType.TableChange, self.ownerComp.op('null_test_datexec'), self.onTestDatExecTableChange)
2123
NoNode.RegisterDatExec(NoNode.DatExecType.RowChange, self.ownerComp.op('null_test_datexec'), self.onTestDatExecRowChange)
2224
NoNode.RegisterDatExec(NoNode.DatExecType.ColChange, self.ownerComp.op('null_test_datexec'), self.onTestDatExecColChange)
2325
NoNode.RegisterDatExec(NoNode.DatExecType.CellChange, self.ownerComp.op('null_test_datexec'), self.onTestDatExecCellChange)
2426
NoNode.RegisterDatExec(NoNode.DatExecType.SizeChange, self.ownerComp.op('null_test_datexec'), self.onTestDatExecSizeChange)
25-
NoNode.DisableDatExec()
27+
#NoNode.DisableDatExec()
28+
29+
# Parexec tests
30+
NoNode.RegisterParExec(NoNode.ParExecType.ValueChange, self.ownerComp, 'Float', self.onTestParValueChange)
31+
NoNode.RegisterParExec(NoNode.ParExecType.OnPulse, self.ownerComp, 'Pulse', self.onTestParOnPulse)
32+
NoNode.RegisterParExec(NoNode.ParExecType.ValueChange, self.ownerComp, self.ownerComp.par.Testseq0float, self.onTestParSeqValueChange)
33+
NoNode.RegisterParExec(NoNode.ParExecType.ValueChange, self.ownerComp.op('button1'), 'value0', self.onTestParButton1ValueChange)
34+
NoNode.RegisterParExec(NoNode.ParExecType.OnPulse, self.ownerComp.op('speed1'), 'resetpulse', self.onTestParSpeed1ResetPulse)
35+
#NoNode.DisableParExec()
2636

2737
# Keyboard shortcut test
2838
NoNode.RegisterKeyboardShortcut('ctrl.t', self.onTestKeyboardShortcut)
39+
NoNode.DisableKeyboardShortcuts()
2940

30-
# Parexec tests
31-
NoNode.RegisterParExec(NoNode.ParExecType.ValueChange, 'Float', self.onTestParValueChange)
32-
NoNode.RegisterParExec(NoNode.ParExecType.OnPulse, 'Pulse', self.onTestParOnPulse)
33-
NoNode.RegisterParExec(NoNode.ParExecType.ValueChange, self.ownerComp.par.Testseq0float, self.onTestParSeqValueChange)
3441

3542
# CHOP Exec callbacks
3643
def onTestChopValueChange(self, _channel, _sampleIndex, _val, _prev):
@@ -51,6 +58,7 @@ def onTestChopWhileOn(self, _channel, _sampleIndex, _val, _prev):
5158
def onTestChopWhileOff(self, _channel, _sampleIndex, _val, _prev):
5259
debug(f'onTestChopWhileOff: {_channel.name} {_sampleIndex} {_val} {_prev}')
5360

61+
5462
# DAT Exec callbacks
5563
def onTestDatExecTableChange(self, _dat):
5664
debug(f'onTestDatExecTableChange: {_dat}')
@@ -67,30 +75,28 @@ def onTestDatExecCellChange(self, _dat, _cells, _prev):
6775
def onTestDatExecSizeChange(self, _dat):
6876
debug(f'onTestDatExecSizeChange: {_dat}')
6977

70-
# Keyboard shortcut callback
71-
def onTestKeyboardShortcut(self):
72-
debug('onTestKeyboardShortcut: ctrl+t pressed')
7378

74-
# # Existing parameter callbacks
75-
# def onParFloat(self, _par, _val, _prev):
76-
# debug(f'onParFloat: {_par} {_val} {_prev}')
79+
# Existing parameter callbacks
80+
def onParFloat(self, _par, _val, _prev):
81+
debug(f'onParFloat: {_par} {_val} {_prev}')
82+
83+
def onParPulse(self, _par):
84+
debug(f'onParPulse: {_par}')
85+
print('printing parameters as self.par<Parname> properties:', self.parFloat, self.parPulse, self.parGroupInt)
86+
print('printing parameters as self.eval<Parname> properties:', self.evalFloat, self.evalPulse, self.evalGroupInt)
7787

78-
# def onParPulse(self, _par):
79-
# debug(f'onParPulse: {_par}')
80-
# print('printing parameters as self.par<Parname> properties:', self.parFloat, self.parPulse, self.parGroupInt)
81-
# print('printing parameters as self.eval<Parname> properties:', self.evalFloat, self.evalPulse, self.evalGroupInt)
88+
def onParGroupInt(self, _parGroup, _val):
89+
debug(f'onParGroupInt: {_parGroup} {_val}')
8290

83-
# def onParGroupInt(self, _parGroup, _val):
84-
# debug(f'onParGroupInt: {_parGroup} {_val}')
91+
def onSeqTestseqN(self, idx):
92+
debug(f'onSeqTestN: {idx}')
8593

86-
# def onSeqTestseqN(self, idx):
87-
# debug(f'onSeqTestN: {idx}')
94+
def onSeqTestseqNfloat(self, _par, idx, _val, _prev):
95+
debug(f'onSeqTestNFloat: {_par} {idx} {_val} {_prev}')
8896

89-
# def onSeqTestseqNfloat(self, _par, idx, _val, _prev):
90-
# debug(f'onSeqTestNFloat: {_par} {idx} {_val} {_prev}')
97+
def onSeqTestseqNstr(self, _par, idx, _val, _prev):
98+
debug(f'onSeqTestNStr: {_par} {idx} {_val} {_prev}')
9199

92-
# def onSeqTestseqNstr(self, _par, idx, _val, _prev):
93-
# debug(f'onSeqTestNStr: {_par} {idx} {_val} {_prev}')
94100

95101
# Parexec callbacks
96102
def onTestParValueChange(self, _par, _val):
@@ -102,3 +108,13 @@ def onTestParOnPulse(self):
102108
def onTestParSeqValueChange(self, _par, _val):
103109
debug(f'onTestParSeqValueChange: {_par.name} {_val}')
104110

111+
def onTestParButton1ValueChange(self, _par, _val):
112+
debug(f'onTestParButton1ValueChange: {_par.name} {_val}')
113+
114+
def onTestParSpeed1ResetPulse(self):
115+
debug(f'onTestParSpeed1ResetPulse')
116+
117+
118+
# Keyboard shortcut callback
119+
def onTestKeyboardShortcut(self):
120+
debug('onTestKeyboardShortcut: ctrl+t pressed')

0 commit comments

Comments
 (0)