Skip to main content
Inspiring
November 3, 2018
Answered

Photoshop Dropdown List Question:

  • November 3, 2018
  • 1 reply
  • 706 views

I am trying to add a dropdown list whereby the user can change the units to either INCHES or CM

listStrings = ["INCHES", "CM"];

myDlg = new Window('dialog', 'Drop-down List');

myDlg.orientation = 'column';

myDlg.alignment = 'right';

//add drop-down

myDlg.DDgroup = myDlg.add('group');

myDlg.DDgroup.orientation = 'row';

myDlg.DDgroup.add('statictext', undefined, "Unit Measurements");

myDlg.DDgroup.DD = myDlg.DDgroup.add('dropdownlist', undefined, undefined, {items:listStrings})

myDlg.DDgroup.DD.selection = 4;

myDlg.closeBtn = myDlg.add('button', undefined, 'OK');

result = myDlg.show();

app.preferences.rulerUnits = Units.myDlg.DDgroup.DD.selection

// add button functions

myDlg.closeBtn.onClick = function() {

this.parent.close();

}

it works to some degree but Photoshop seems to hang and become unresponsive after pressing the button. Ideally I would prefer the units to change from the dropdown list selection rather than having to press the button.

Any advice please

This topic has been closed for replies.
Correct answer Geppetto Luis

See if this is good for you.

listStrings = ["PIXEL","INCHES", "CM"]; 

myDlg = new Window('dialog', 'Drop-down List'); 

myDlg.orientation = 'column'; 

myDlg.alignment = 'right'; 

 

//add drop-down 

myDlg.DDgroup = myDlg.add('group'); 

myDlg.DDgroup.orientation = 'row'; 

myDlg.DDgroup.add('statictext', undefined, "Unit Measurements"); 

myDlg.DDgroup.DD = myDlg.DDgroup.add('dropdownlist',undefined,listStrings);

myDlg.DDgroup.DD.selection = 0;

myDlg.closeBtn = myDlg.add('button', undefined, 'OK'); 

 

myDlg.DDgroup.DD.onChange = function(){

    switch(parseInt(myDlg.DDgroup.DD.selection)){

        case 0: 

          var originalUnit = preferences.rulerUnits;

    preferences.rulerUnits =Units.PIXELS;

          app.refresh();

            break;

        case 1:

           var originalUnit = preferences.rulerUnits;

    preferences.rulerUnits = Units.INCHES;

      app.refresh();

            break;           

        case 2:

                  var originalUnit = preferences.rulerUnits;

    preferences.rulerUnits = Units.CM;

      app.refresh();

            break;        

        }    

  }

 

  result = myDlg.show(); 

 

// add button functions 

myDlg.closeBtn.onClick = function() { 

this.parent.close(); 

1 reply

Geppetto Luis
Geppetto LuisCorrect answer
Legend
November 3, 2018

See if this is good for you.

listStrings = ["PIXEL","INCHES", "CM"]; 

myDlg = new Window('dialog', 'Drop-down List'); 

myDlg.orientation = 'column'; 

myDlg.alignment = 'right'; 

 

//add drop-down 

myDlg.DDgroup = myDlg.add('group'); 

myDlg.DDgroup.orientation = 'row'; 

myDlg.DDgroup.add('statictext', undefined, "Unit Measurements"); 

myDlg.DDgroup.DD = myDlg.DDgroup.add('dropdownlist',undefined,listStrings);

myDlg.DDgroup.DD.selection = 0;

myDlg.closeBtn = myDlg.add('button', undefined, 'OK'); 

 

myDlg.DDgroup.DD.onChange = function(){

    switch(parseInt(myDlg.DDgroup.DD.selection)){

        case 0: 

          var originalUnit = preferences.rulerUnits;

    preferences.rulerUnits =Units.PIXELS;

          app.refresh();

            break;

        case 1:

           var originalUnit = preferences.rulerUnits;

    preferences.rulerUnits = Units.INCHES;

      app.refresh();

            break;           

        case 2:

                  var originalUnit = preferences.rulerUnits;

    preferences.rulerUnits = Units.CM;

      app.refresh();

            break;        

        }    

  }

 

  result = myDlg.show(); 

 

// add button functions 

myDlg.closeBtn.onClick = function() { 

this.parent.close(); 

IanBarberAuthor
Inspiring
November 3, 2018

Thank You, I shall study this to see how you accomplished it

Ian