Skip to content

Commit 164ae0e

Browse files
CustomParCustom conforms to Comp Editor behavior, and even better (dynamic updates)
1 parent d60be9f commit 164ae0e

File tree

4 files changed

+41
-14
lines changed

4 files changed

+41
-14
lines changed
-168 Bytes
Binary file not shown.
-64 Bytes
Binary file not shown.
Binary file not shown.

scripts/CustomParPromoter/customParPromoterExt.py

+41-14
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ def __init__(self, ownerComp):
1414
self.hk_mod = self.ownerComp.op('null_mod')
1515
self.popDialog = self.ownerComp.op('popDialog')
1616
self.__parNumTypes = ['Float', 'Int', 'Xy', 'Xyz', 'Xyzw', 'Uv', 'Uvw', 'Wh','Rgb', 'Rgba']
17+
self.__saveParamNameBeforePurge = ''
1718

1819
@property
1920
def Reference(self):
@@ -289,22 +290,44 @@ def _getTargetPage(self, page_name, target, source_page=None):
289290

290291
return new_page
291292

293+
def purgeParName(self, text, replace=False):
294+
295+
prune_text = text.replace(' ', '')
296+
# also remove any non-alphanumeric characters
297+
prune_text = re.sub(r'[^a-zA-Z0-9]', '', prune_text)
298+
# remove leading and trailing underscores
299+
prune_text = prune_text.strip('_')
300+
# remove any leading numbers
301+
prune_text = re.sub(r'^[0-9]+', '', prune_text)
302+
text = prune_text.capitalize()
303+
if replace:
304+
paramname = self.popDialog.op('entry1/inputText').par.text
305+
paramname.val = text
306+
return text
307+
308+
292309
def OnEditText(self, field, text):
293310
if field == 'paramname':
294-
paramname = self.popDialog.op('entry2/inputText').par.text
295-
prune_text = text.replace(' ', '')
296-
# also remove any non-alphanumeric characters
297-
prune_text = re.sub(r'[^a-zA-Z0-9]', '', prune_text)
298-
# remove leading and trailing underscores
299-
prune_text = prune_text.strip('_')
300-
# remove any leading numbers
301-
prune_text = re.sub(r'^[0-9]+', '', prune_text)
302-
text = prune_text.capitalize()
303-
paramname.val = text
311+
# we could purge here but that's not how custom par editor works either
312+
#self.purgeParName(text, replace=True)
313+
self.__saveParamNameBeforePurge = text
314+
#self.popDialog.op('entry2/inputText').par.text = text
315+
pass
304316
elif field in ['min', 'max']:
305317
return
306318

307-
319+
def onFocus(self, field, comp):
320+
if field == 'label' and self.__saveParamNameBeforePurge and comp.editText == '':
321+
self.popDialog.op('entry2/inputText').par.text = self.__saveParamNameBeforePurge
322+
323+
def onFocusEnd(self, field, comp):
324+
if field == 'paramname':
325+
text = comp.editText
326+
self.__saveParamNameBeforePurge = text
327+
elif field == 'label':
328+
if comp.editText == '' and self.__saveParamNameBeforePurge:
329+
comp.par.text = self.__saveParamNameBeforePurge
330+
self.purgeParName(self.__saveParamNameBeforePurge, replace=True)
308331

309332
def OnCustomizeParameterDropped(self, dropParam):
310333
details = {}
@@ -323,7 +346,7 @@ def OnCustomizeParameterDropped(self, dropParam):
323346
details['isNum'] = is_num
324347
self.popDialog.par.Minmaxentryarea = is_num
325348

326-
textEntries = [dropParam.label, dropParam.name.capitalize()]
349+
textEntries = [dropParam.name.capitalize(), '']
327350
if is_num:
328351
textEntries.extend([dropParam.normMin, dropParam.normMax])
329352
textEntries.append(default)
@@ -339,8 +362,12 @@ def OnCustomizeCallback(self, info):
339362
par = details.get('par', None)
340363
is_num = details.get('isNum', False)
341364

342-
labelEntry = info['enteredText'][0]
343-
nameEntry = info['enteredText'][1]
365+
labelEntry = info['enteredText'][1]
366+
nameEntry = info['enteredText'][0]
367+
368+
if not labelEntry:
369+
labelEntry = nameEntry
370+
nameEntry = self.purgeParName(nameEntry)
344371
minEntry = float(info['enteredText'][2]) if is_num and info['enteredText'][2] is not None else None
345372
maxEntry = float(info['enteredText'][3]) if is_num and info['enteredText'][3] is not None else None
346373
chekcboxClamp = info['checkBoxes']

0 commit comments

Comments
 (0)