Skip to content

Instantly share code, notes, and snippets.

@johnanthonyevans
Last active August 29, 2015 13:59
Show Gist options
  • Save johnanthonyevans/10805809 to your computer and use it in GitHub Desktop.
Save johnanthonyevans/10805809 to your computer and use it in GitHub Desktop.
// this script moves the selected object it's given distances (command ')
// var levels = dialog(" ", 0, "Transform'" + [layer name] + "'(x,y)");
var levels = dialog(" ", 0, "Transform Object (x,y)");
/**
* Open a dialog for user input
* @param {string} msg The dialog message
* @param {mixed} given String or number - the given input value
* @param {string} title The dialog title
* @return {string} The value the user entered in the dialog
*/
function dialog( msg, given, title )
{
var result = null;
if( typeof msg === 'undefined' ) return result;
// escape % to avoid string formatting
msg = msg.replace( /%/g, '%%' );
if( typeof given === 'undefined' ) given = '';
if( typeof title === 'undefined' ) title = 'Input dialog';
// Create the alert
var alert = NSAlert.alertWithMessageText_defaultButton_alternateButton_otherButton_informativeTextWithFormat( title, 'Move', 'Copy', 'Cancel', msg );
// extend the alert window with an input field
var input = NSTextField.alloc().initWithFrame( NSMakeRect( 0, 0, 300, 24 ) );
var cell = input.cell();
cell.setWraps(false);
cell.setUsesSingleLineMode(true);
input.setStringValue( given );
// input.becomeFirstResponder();
alert.setAccessoryView( input );
// log(alert.accessoryView);
log(alert.window);
alert.window.makeFirstResponder(alert.accessoryView);
// alert.setInitialFirstResponder(alert.accessoryView);
log("start");
// show the alert
var button = alert.runModal();
result = input.stringValue();
var x_delta = eval(result.split(",")[0]);
var y_delta = eval(result.split(",")[1]);
// if the user clicked "Ok"
// get the text from the input field
var flags = [NSEvent modifierFlags];
if (flags & NSAlternateKeyMask) {
log("Option key down");
for (var i=0; i<selection.length(); i++) {
var layer = selection[i];
var frame = [layer frame];
var copy = [layer duplicate];
var frame2 = [copy frame];
// frame.name = frame.name + " copy";
[frame2 setX:[frame x] + x_delta];
[frame2 setY:[frame y] + y_delta];
}
}
else
{
log("Move Button Pressed");
for (var i=0; i<selection.length(); i++) {
var layer = selection[i];
var frame = [layer frame];
[frame setX:[frame x] + x_delta];
[frame setY:[frame y] + y_delta];
}
}
// and return the result
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment