Quantcast
Channel: Adobe Community: Message List - Photoshop Scripting
Viewing all articles
Browse latest Browse all 27456

Need scriptUI-expert's advice on proper implementation of Photoshop scriptUI dialog

$
0
0

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();


Viewing all articles
Browse latest Browse all 27456

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>