Skip to content

Commit

Permalink
Combine 'Toggle Layer Expressions' and 'Disable All Comp Expressions'…
Browse files Browse the repository at this point in the history
… into 'Toggle Expressions'
  • Loading branch information
zlovatt committed Aug 29, 2023
1 parent 26268df commit c72ae1f
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 122 deletions.
48 changes: 0 additions & 48 deletions Disable All Comp Expressions.jsx

This file was deleted.

106 changes: 106 additions & 0 deletions Toggle Expressions.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/**
* Enables/disables/toggles expressions in current comp.
*
* Operates on selected layers, or all (if none selected)
* Recurses into precomps
*
* Modifiers:
* - Hold SHIFT to ENABLE expressions, vs DISABLED
* - Hold CTRL/CMD to invert on/off status
*
* @author Zack Lovatt <[email protected]>
* @version 0.3.0
*/
(function toggleExpressions() {
var TOGGLE_MODES = {
ENABLE: 0,
DISABLE: 1,
TOGGLE: 2
};
var toggleMode = TOGGLE_MODES.DISABLE;

if (
ScriptUI.environment.keyboardState.ctrlKey ||
ScriptUI.environment.keyboardState.metaKey
) {
toggleMode = TOGGLE_MODES.TOGGLE;
} else if (ScriptUI.environment.keyboardState.shiftKey) {
toggleMode = TOGGLE_MODES.ENABLE;
}

app.beginUndoGroup("Toggle All Comp Expressions");

var comp = app.project.activeItem;

if (!(comp && comp instanceof CompItem)) {
alert("Open a comp!");
return;
}

var layers = _getSelectedLayersOrAll(comp);

for (var ii = 0, il = layers.length; ii < il; ii++) {
var layer = layers[ii];

_recursiveToggleExpressions(layer, toggleMode);
}

app.endUndoGroup();

/**
* Gets the selected layers in a given comp, or all
*
* @param {CompItem} comp Comp to get layers from
* @return {Layer[]} Layers
*/
function _getSelectedLayersOrAll(comp) {
var layers = comp.selectedLayers;

if (layers.length === 0) {
for (var ii = 1, il = comp.numLayers; ii <= il; ii++) {
var layer = comp.layer(ii);
layers.push(layer);
}
}

return layers;
}

/**
* Recursively loops through all properties and toggles found expressions
*
* @param {PropertyGroup} propertyGroup Property group to loop through
* @param {number} toggleMode Whether to enable or disable the expression
*/
function _recursiveToggleExpressions(propertyGroup, toggleMode) {
for (var ii = 1; ii <= propertyGroup.numProperties; ii++) {
var property = propertyGroup.property(ii);

if (!property.isModified) {
continue;
}

if (property instanceof PropertyGroup) {
_recursiveToggleExpressions(property, toggleMode);
continue;
}

if (!property.canSetExpression) {
continue;
}

switch (toggleMode) {
case TOGGLE_MODES.ENABLE:
property.expressionEnabled = true;
break;
case TOGGLE_MODES.DISABLE:
default:
property.expressionEnabled = false;
break;
case TOGGLE_MODES.TOGGLE:
property.expressionEnabled = !property.expressionEnabled;
break;
}
}
}
})();
51 changes: 0 additions & 51 deletions Toggle Layer Expressions.jsx

This file was deleted.

34 changes: 11 additions & 23 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -269,25 +269,6 @@ Delete all keys at current time

---

<div>
<div>
<div>
<div>

#### [Disable All Comp Expressions](https://raw.githubusercontent.com/zlovatt/zl_Scriptlets/master/Disable&#32;All&#32;Comp&#32;Expressions.jsx)

</div>
<div>

Disables all expressions in active comp

</div>
</div>
</div>
</div>

---

<div>
<div>
<div>
Expand Down Expand Up @@ -1208,12 +1189,19 @@ Toggles on/off all effects on layers in the project
<div>
<div>

#### [Toggle JS Debugger](https://raw.githubusercontent.com/zlovatt/zl_Scriptlets/master/Toggle&#32;JS&#32;Debugger.jsx)
#### [Toggle Expressions](https://raw.githubusercontent.com/zlovatt/zl_Scriptlets/master/Toggle&#32;Expressions.jsx)

</div>
<div>

Toggles Javascript debugger enabled/disabled
Enables, disables, or toggles all expressions in current comp, disabling them by default (see modifiers below).

Operates on selected layers, or all layers in the comp if none are selected, recursing into precomps.

| Modifier | Effect |
| -------- | --------------------------------------------------------- |
| SHIFT | Enable all expressions, vs disable |
| CTRL/CMD | Enable disabled expressions & disable enabled expressions |

</div>
</div>
Expand All @@ -1227,12 +1215,12 @@ Toggles Javascript debugger enabled/disabled
<div>
<div>

#### [Toggle Layer Expressions](https://raw.githubusercontent.com/zlovatt/zl_Scriptlets/master/Toggle&#32;Layer&#32;Expressions.jsx)
#### [Toggle JS Debugger](https://raw.githubusercontent.com/zlovatt/zl_Scriptlets/master/Toggle&#32;JS&#32;Debugger.jsx)

</div>
<div>

Disables all enabled expressions on selected layers & enables all disabled expressions.
Toggles Javascript debugger enabled/disabled

</div>
</div>
Expand Down

0 comments on commit c72ae1f

Please sign in to comment.