UI retain last used text input

Viewed 28

The Photoshop UI script has a checkbox group, radio button group, and text field group. The script remembers the last used settings for the checkbox and radio buttons. But does not remember the last used text filed string.

I have an idea of what needs to happen for the script to remember the text field string but don’t know how to implement the functionality into the script.

The text field string needs to be converted to a numerical value and then reconverted to a string for the script to retain the last used text field input.

Can someone please help me set up the string to number and number to string conversion?

enter image description here

Saple UI


   enter code here

#target photoshop;
app.bringToFront();

cTID = function(s) { return cTID[s] || (cTID[s] = app.charIDToTypeID(s)); };
sTID = function(s) { return app.stringIDToTypeID(s); }; 


function showDialog() {

  // DIALOG
  // ======
  var dialog = new Window("dialog"); 
      dialog.text = "Test UI"; 
      dialog.orientation = "row"; 
      dialog.alignChildren = ["left","top"]; 
      dialog.spacing = 10; 
      dialog.margins = 16; 

  // GROUP1
  // ======
  var group1 = dialog.add("group", undefined, {name: "group1"}); 
      group1.preferredSize.width = 150; 
      group1.orientation = "column"; 
      group1.alignChildren = ["fill","top"]; 
      group1.spacing = 10; 
      group1.margins = 0; 
      group1.alignment = ["left","fill"]; 

  // PANEL1
  // ======
  var panel1 = group1.add("panel", undefined, undefined, {name: "panel1"}); 
      panel1.text = "Checkbox Group"; 
      panel1.orientation = "column"; 
      panel1.alignChildren = ["left","top"]; 
      panel1.spacing = 10; 
      panel1.margins = 10; 
      panel1.alignment = ["fill","top"]; 

      dialog.checkbox1 = panel1.add("checkbox", undefined, undefined, {name: "checkbox1"}); 
      dialog.checkbox1.text = "item 1"; 
      dialog.checkbox1.alignment = ["fill","top"];
      dialog.checkbox1.value = checkbox1; 

      dialog.checkbox2 = panel1.add("checkbox", undefined, undefined, {name: "checkbox2"}); 
      dialog.checkbox2.text = "item 2"; 
      dialog.checkbox2.alignment = ["fill","top"];
      dialog.checkbox2.value = checkbox2; 

  // PANEL2
  // ======
  var panel2 = group1.add("panel", undefined, undefined, {name: "panel2"}); 
      panel2.text = "Radio Button Group"; 
      panel2.orientation = "column"; 
      panel2.alignChildren = ["left","top"]; 
      panel2.spacing = 10; 
      panel2.margins = 10; 
      panel2.alignment = ["fill","top"]; 

      dialog.radiobutton1 = panel2.add("radiobutton", undefined, undefined, {name: "radiobutton1"}); 
      dialog.radiobutton1.text = "Item 1"; 
      dialog.radiobutton1.alignment = ["fill","top"];
      dialog.radiobutton1.value = radiobutton1;  

      dialog.radiobutton2 = panel2.add("radiobutton", undefined, undefined, {name: "radiobutton2"}); 
      dialog.radiobutton2.text = "Item 2"; 
      dialog.radiobutton2.alignment = ["fill","top"];
      dialog.radiobutton2.value = radiobutton2;

  // PANEL3
  // ======
  var panel3 = group1.add("panel", undefined, undefined, {name: "panel3"}); 
      panel3.text = "Edit Text Groiup"; 
      panel3.orientation = "column"; 
      panel3.alignChildren = ["left","top"]; 
      panel3.spacing = 10; 
      panel3.margins = 10; 
      panel3.alignment = ["fill","top"]; 

      dialog.statictext1 = panel3.add("statictext", undefined, undefined, {name: "statictext1"}); 
      dialog.statictext1.text = "Tittle 1"; 
      dialog.statictext1.alignment = ["fill","top"]; 

      dialog.edittext1 = panel3.add('edittext {properties: {name: "edittext1"}}'); 
      dialog.edittext1.text = "Some text 1 "; 
      dialog.edittext1.alignment = ["fill","top"];
      dialog.edittext1.value = edittext1; 

      dialog.statictext2 = panel3.add("statictext", undefined, undefined, {name: "statictext2"}); 
      dialog.statictext2.text = "Title 2"; 
      dialog.statictext2.alignment = ["fill","top"]; 

      dialog.edittext2 = panel3.add('edittext {properties: {name: "edittext2"}}'); 
      dialog.edittext2.text = "Some text 2"; 
      dialog.edittext2.alignment = ["fill","top"];
      dialog.edittext2.value = edittext2; 
  

// GROUP2
// ======
var group2 = dialog.add("group", undefined, {name: "group2"}); 
    group2.orientation = "column"; 
    group2.alignChildren = ["fill","top"]; 
    group2.spacing = 10; 
    group2.margins = 0; 

var ok = group2.add("button", undefined, undefined, {name: "ok"}); 
    ok.text = "OK"; 

var cancel = group2.add("button", undefined, undefined, {name: "cancel"}); 
    cancel.text = "Cancel"; 

      //update the params and save them off on close
      function updateParams() {
        checkbox1 = dialog.checkbox1.value;
        checkbox2 = dialog.checkbox2.value;
        radiobutton1 = dialog.radiobutton1.value;
        radiobutton2 = dialog.radiobutton2.value;
        edittext1 = dialog.edittext1.text;
        edittext2 = dialog.edittext2.text;
    };


    ok.onClick = function () {
      updateParams();
      saveSettings();
      dialog.close(1);
    };

    dialog.center();
    return dialog.show();

}


  // Settings.
  var checkbox1 = false;
  var checkbox2 = false;
  var radiobutton1 = false;
  var radiobutton2 = false;
  var edittext1
  var edittext2

  //IDs for custom option saving / loading
  const settingsID = "exportOptions";

  const checkbox1ID = stringIDToTypeID("checkbox1");
  const checkbox2ID = stringIDToTypeID("checkbox2");
  const radiobutton1ID = stringIDToTypeID("radiobutton1");
  const radiobutton2ID = stringIDToTypeID("radiobutton2");
  const edittext1ID = stringIDToTypeID("edittext1");
  const edittext2ID = stringIDToTypeID("edittext2");

  var exportSettings;

  try {
    exportSettings = app.getCustomOptions(settingsID);
  } catch (e) {
    saveSettings();
  }

  if(typeof exportSettings == "undefined") {
    saveSettings();
  }

  function loadSettings() {
    //alert('step 1b')
    // check for previously saved dialog options
    // exclude layer group name and feather value
    exportSettings = app.getCustomOptions(settingsID);
    
    if(exportSettings.hasKey (checkbox1ID))
    checkbox1 = exportSettings.getBoolean (checkbox1ID);
  
    if(exportSettings.hasKey (checkbox2ID))
    checkbox2 = exportSettings.getBoolean (checkbox2ID);
    
    if(exportSettings.hasKey (radiobutton1ID))
    radiobutton1 = exportSettings.getBoolean (radiobutton1ID);
  
    if(exportSettings.hasKey (radiobutton2ID))
    radiobutton2 = exportSettings.getBoolean (radiobutton2ID);

    if(exportSettings.hasKey (edittext1ID))
    edittext1 = exportSettings.getString (edittext1ID);

    if(exportSettings.hasKey (edittext2ID))
    edittext1 = exportSettings.getString (edittext2ID);

  }
  
  function saveSettings() {
    //save defaults
    var newExportSettings = new ActionDescriptor();

    newExportSettings.putBoolean (checkbox1ID, checkbox1);
    newExportSettings.putBoolean (checkbox2ID, checkbox2);
    newExportSettings.putBoolean (radiobutton1ID, radiobutton1);
    newExportSettings.putBoolean (radiobutton2ID, radiobutton2);
    newExportSettings.putString (edittext1ID, edittext1);
    newExportSettings.putString (edittext2ID, edittext2);

    app.putCustomOptions(settingsID,newExportSettings,true);
  }

main()

function main(){

  try {
                
    //UI parameters
    loadSettings();
    var result = showDialog();

      if(result != 2) {

        if(checkbox1){
          alert('The checkbox 1 value is '+checkbox1);
        }
        if(checkbox2) {
          alert('The checkbox 2 value is '+checkbox2);
        }
        if(radiobutton1) {
          alert('The radio button 1 value is '+radiobutton1);
        }
        if(radiobutton2) {
          alert('The radio button 2 value is '+radiobutton2);
        }
        if(edittext1) {
          alert('The edit text 1 value is '+edittext1);
        }
        if(edittext2) {
          alert('The edit text 2 value is '+edittext2);
        }

      }
        
    }
    catch (e) {
      alert(e + ' ' + e.line);  
    }
      
}






0 Answers
Related