Skip to content

Commit

Permalink
CVWidgetMS: fix some inconistencies when saving split widgets in a setup
Browse files Browse the repository at this point in the history
- make sure "open functions" in widget actions are never saved with a
setup
- the array of split CVs must be set to nil when the CV helper function
for setting the split CVs values are removed

Signed-off-by:  <st9fan@gmail.com>
  • Loading branch information
nuss committed Oct 3, 2016
1 parent 12317a3 commit 2949ee4
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 15 deletions.
17 changes: 11 additions & 6 deletions CVCenter/CVCenter.sc
Expand Up @@ -1895,8 +1895,11 @@ CVCenter {
lib[\all][k][hilo] = (
spec: cvWidgets[k].widgetCV[hilo].spec,
val: cvWidgets[k].widgetCV[hilo].value,
// actions: cvWidgets[k].wdgtActions !? { cvWidgets[k].wdgtActions[hilo].select({ |k| k.values[0][0] != "{ \"open Function\" }" }) },
actions: cvWidgets[k].wdgtActions !? { cvWidgets[k].wdgtActions[hilo] },
actions: cvWidgets[k].wdgtActions !? {
cvWidgets[k].wdgtActions[hilo].reject({ |k|
"open Function".matchRegexp(k.values[0][0])
})
},
osc: (
addr: cvWidgets[k].midiOscEnv[hilo].oscResponder !? {
cvWidgets[k].midiOscEnv[hilo].oscResponder.addr
Expand Down Expand Up @@ -1925,8 +1928,9 @@ CVCenter {
lib[\all][k] = (
spec: cvWidgets[k].widgetCV.spec,
val: cvWidgets[k].widgetCV.value,
// actions: cvWidgets[k].wdgtActions.select({ |k| k.values[0][0] != "{ \"open Function\" }" }),
actions: cvWidgets[k].wdgtActions,
actions: cvWidgets[k].wdgtActions.reject({ |k|
"open Function".matchRegexp(k.values[0][0])
}),
osc: (
addr: cvWidgets[k].midiOscEnv.oscResponder !? {
cvWidgets[k].midiOscEnv.oscResponder.addr
Expand Down Expand Up @@ -1955,8 +1959,9 @@ CVCenter {
lib[\all][k] = (
spec: cvWidgets[k].widgetCV.spec,
val: cvWidgets[k].widgetCV.value,
// actions: cvWidgets[k].wdgtActions.select({ |k| k.values[0][0] != "{ \"open Function\" }" }),
actions: cvWidgets[k].wdgtActions,
actions: cvWidgets[k].wdgtActions.reject({ |k|
"open Function".matchRegexp(k.values[0][0])
}),
wdgtClass: CVWidgetMS,
midiOscRememberBatchConnection: cvWidgets[k].midiOscRememberBatchConnection,
osc: ()!cvWidgets[k].msSize,
Expand Down
5 changes: 3 additions & 2 deletions CVCenter/CVWidget.sc
Expand Up @@ -39,7 +39,7 @@ CVWidget {
var slotCmdName, lastIntSlots, msSlotsChecked = false;
var lastMsgIndex, msMsgIndexDiffers = false, count = 0;
// CVWidgetMS
var <msSize;
var <msSize, <cvArray;

*initClass {
var scFunc, scPrefs = false;
Expand Down Expand Up @@ -659,7 +659,8 @@ CVWidget {
this, \remove, name.asSymbol;
)
})
}
};
if (name == \setSplitValues) { cvArray = nil };
}
);
controller.do({ |c| c = nil });
Expand Down
15 changes: 8 additions & 7 deletions CVCenter/CVWidgetMS.sc
Expand Up @@ -3,7 +3,7 @@ CVWidgetMS : CVWidget {
var numOscResponders, numMidiResponders;
var <midiOscRememberBatchConnection;
// split multidimensional CVs into single valued CVs
var <cvArray, splitSpec;
var splitSpec;
// persistent widgets
var isPersistent, oldBounds, oldName;

Expand Down Expand Up @@ -158,7 +158,7 @@ CVWidgetMS : CVWidget {
})
})
})
}
};
});
if(persistent == false or:{ persistent.isNil }, {
parent.onClose_(parent.onClose.addFunc({
Expand Down Expand Up @@ -584,16 +584,17 @@ CVWidgetMS : CVWidget {
if (cvArray.isNil or: { cvArray.size != msSize }) {
cvArray = widgetCV.split;
splitSpec = spec;
this.addAction(\setSplitValues, {
cvArray.do({ |cvi, i|
cvi.value_(widgetCV.value[i])
})
this.addAction(\setSplitValues, { |cv|
cvArray.do({ |cvi, i| cvi.value_(cv.value[i]) });
});
"split CV actions for % set!\n".postf(name)
};
// update spec if spec of parent CVWidgetMS has changed
if (cvArray.notNil and:{ spec != splitSpec }) {
specs = spec.split;
cvArray.do({ |cvi, i| cvi.spec_(specs[i]) })
cvArray.do({ |cvi, i| cvi.spec_(specs[i]) });
// specs have been set, update splitSpec
splitSpec = spec;
};
^cvArray;
}
Expand Down

0 comments on commit 2949ee4

Please sign in to comment.