I'm in the middle of porting my deprecated flash based panel to an HTML5 version. Als part of my panel I wrote a script to create a new photoshop document including parameters for the video timeline. From the panel a separate script file was called which then generated a dialog window for user input. After the script was completed the dialog and all reference to it was automatically deleted.
Because now I'm using one single hostscript.jsx file for my functions I'm running into issues regarding the (re-) opening of the dialog after the first time.
The behaviour is best replicated when running the script directly in the ExtendScript Toolkit (targeted to itself).
I'm looking for someone who can give me some pointers on how to implement this so the dialog can be called a second time without issues.
Thanks in advance.
Here is my script:
// Presets Array
var vidSizes = [["HD 720p", 1280, 720], ["HD 1080p", 1920, 1080], ["Cineon Half", 1828, 1332], ["Cineon Full", 3656, 2664], ["Film (2K)", 2048, 1556], ["Film (4K)", 4096, 3112]];
// placeholder for AnimationProject sequence
var tempLayer = "";
// window reference
var w ;
// START OF FUNCTION ------------------------
function makePanelWindow(){
// width value for dropdown and text input
var charWidth = 15;
w = Window.find('dialog','new project');
//alert(w);
if(w==null){
//push names in dropdown list
var vidFormats = [];
for (var a in vidSizes){
vidFormats.push(vidSizes[a][0])
}
// scriptingUI Animation Project Settings window
w = new Window ("dialog {text: 'Animation Project Settings'}","new project");
var grName = w.add("group");
var _labelName = grName.add ("statictext");
var _docName = grName.add ("edittext", undefined,"");
_docName.characters = 40;
// kader holder
var grKader = w.add("group");
// kader 1 ~ settings
var size_group = grKader.add ("panel", undefined, "Settings");
size_group.alignChildren = "right";
size_group.preferredSize = [" ", 160];
//dropdown
var grDropdown = size_group.add("group");
grDropdown.margins.top = 12;
var _labelSize = grDropdown.add ("statictext");
var _size = grDropdown.add ("dropdownlist", undefined,vidFormats);
_size.selection = 0;
_size.preferredSize = [164,22];
//input field Width
var grHWidth = size_group.add("group");
var _labelWidth = grHWidth.add ("statictext");
var _width = grHWidth.add ("edittext", undefined, 1280);
_width.characters = charWidth;
var _labelUnit1 = grHWidth.add ("statictext");
_labelUnit1.characters = 3;
//input field Height
var grHeight = size_group.add("group");
var _labelHeight = grHeight.add ("statictext");
var _height = grHeight.add ("edittext", undefined, 720);
_height.characters = charWidth;
var _labelUnit2 = grHeight.add ("statictext");
_labelUnit2.characters = 3;
//input field Framerate
var grLabel = size_group.add("group");
var _labelFramerate = grLabel.add ("statictext");
var _frameRate = grLabel.add ("edittext", undefined, 24);
var _labelUnit3 = grLabel.add ("statictext");
_labelUnit3.characters = 3;
// kader 2 ~ Generate
var opt_group = grKader .add ("panel", undefined, "Generate");
opt_group.preferredSize = [" ", 160];
// Check boxes
var grCheck = opt_group.add("group {orientation:'column', alignChildren: 'left'}");
grCheck.margins.top = 12;
var wantND = grCheck.add ("checkbox", undefined, "New Document");
wantND.value = true;
var wantVL = grCheck.add ("checkbox", undefined, "Video Layer");
//var wantVLG = grCheck.add ("checkbox", undefined, "Video Layer Group");
// cancel and ok
var buttons = w.add ("group");
buttons.alignment = ["right", 'bottom'];
var cancelButton = buttons.add ("button", undefined, "Cancel", {name: "cancel"});
var applyButton = buttons.add ("button", undefined, "OK", {name: "ok"});
buttons.alignment = 'right';
// Label and name values
_labelName.text = "Name:";
_docName.text = "New Animation Project";
_labelSize.text = "Size:";
_labelWidth.text = "Width:";
_labelUnit1.text = "px";
_labelHeight.text = "Height:";
_labelUnit2.text = "px";
_labelFramerate.text = "Frame rate:";
_labelUnit3.text = "Fps";
// Panel Functions ----------------------------------------------------
//List behaviour
_size.onChange = function (){
var sel = Number(_size.selection);
_height.text = vidSizes[sel][2];
_width.text = vidSizes[sel][1];
}
//OK and Cancel buttons
applyButton.onClick = function() {
//makeDoc();
return w.close();
}
cancelButton.onClick = function() {
return w.close();
}
}
w.show();
}
// END OF FUNCTION ------------------------
makePanelWindow();