Something weird is going on with a dialog I am trying to make that dynamically creates buttons based on how many objects I have in an array that I pass into a function. I say weird, but it's obviously me not fully understanding how variables work in a loop. See below:
mrp = {
one: [new File("/Users/constantincerdan/Creative%20Cloud%20Files/Templater/Iconbuttons/bagspouches.png"), "One"],
two: [new File("file:///Users/constantincerdan/Creative%20Cloud%20Files/Templater/Iconbuttons/beauty.png"), "Two"],
three: [new File("file:///Users/constantincerdan/Creative%20Cloud%20Files/Templater/Iconbuttons/bluepocketsquare.png"), "Three"]
}
function Dialog(dialogTitle, buttons) {
var dlg = new Window("dialog", dialogTitle + " - OU");
dlg.margins = [20, 15, 20, 17];
dlg.buttonsGroup = dlg.add("group");
dlg.buttonsGroup.orientation = "row";
dlg.buttonsGroup.spacing = 15;
for(var i = 0; i < buttons.length; i++){
templaterButton = dlg.buttonsGroup.add("iconbutton", undefined, buttons[0])
templaterButton.onClick = function(){
open(buttons[0])
dlg.close()
}
dlg.buttonsGroup.add("panel", [undefined, undefined, 0,120])
}
dlg.show()
}
Dialog("Test",[mrp.one, mrp.two, mrp.three])
Running this displays the dialog just fine, and all the icon buttons have their own pictures as they should (see pic at bottom). Here's what's confusing me: On line 16, it is able to use the i in buttons[0] just fine to get each image and use it, but for some reason, when I also try and use the same thing on line 18 to try and open the actual images for each button, I get the error 'undefined is not an object' on that line. Changing button[0] on line 18 to button[0][0] opens the first image just fine (on all three buttons), so I can't figure out what I'm doing wrong here?
... View more