Skip to main content
Inspiring
June 24, 2025
Answered

Read return values xmlPanelFromString dialog...

  • June 24, 2025
  • 1 reply
  • 214 views
(function () {
    var profiles = ['co2', 'miguel', 'luis', 'pedro'];
    var profileXML = [];

    profileXML.push("<dialog title='Seleccionar Perfiles' buttons='accept,cancel'>");
    profileXML.push("  <vbox>");
    profileXML.push("    <label value='Selecciona los perfiles a importar:'/>");

    for (var i = 0; i < profiles.length; i++) {
        profileXML.push("    <checkbox id='profile_" + i + "' label='" + profiles[i] + "' checked='false'/>");
    }

    profileXML.push("  </vbox>");
    profileXML.push("</dialog>");

    var dialog = fl.xmlPanelFromString(profileXML.join(""));

    var selectedProfiles = [];

    if (dialog.dismiss === "accept") {
        for (var i = 0; i < profiles.length; i++) {
            var value = fl.xmlui.get("profile_" + i);
            debugLog("Perfil disponible: profile_" + i + " = " + value);
            if (value === "true") {
                selectedProfiles.push(profiles[i]);
            }
        }
        debugLog("Perfiles seleccionados: " + selectedProfiles.join(", "));
    } else {
        debugLog("Usuario canceló la selección.");
    }

    function debugLog(message) {
        fl.trace("[DEBUG] " + message);
    }
})();

Dear all,

I would like to read the values of the form in a Command in Adobe Aniamte 2024 24.0.9 Build 74.
The array will be dynamic, reading data from json... At the end I would like to select between diffrent options... Instead of prompt (is working) I would like to improve the pop-ups with checkbox, radio buttons, dropdown list... This code is a small example, but I always read undefined.
 
 
    Correct answer defaultzh588xsh69fo
    (function () {
        var profiles = ['co2', 'miguel', 'luis', 'pedro'];
        var profileXML = [];
    
        profileXML.push("<dialog title='Seleccionar Perfil' buttons='accept,cancel'>");
        profileXML.push("  <vbox>");
        profileXML.push("    <label value='Selecciona un perfil a importar:'/>");
    
        // Estructura completa del menulist
        profileXML.push("    <menulist id='profileSelect'>");
        profileXML.push("      <menupop>");
        for (var i = 0; i < profiles.length; i++) {
            profileXML.push("        <menuitem label='" + profiles[i] + "' value='" + profiles[i] + "'/>");
        }
        profileXML.push("      </menupop>");
        profileXML.push("    </menulist>");
    
        profileXML.push("  </vbox>");
        profileXML.push("</dialog>");
    
        var dialog = fl.xmlPanelFromString(profileXML.join(""));
    
        if (dialog.dismiss === "accept") {
            var selected = dialog["profileSelect"];
            fl.trace("Perfil seleccionado: " + selected);
        } else {
            fl.trace("Cancelado por el usuario.");
        }
    })();

    1 reply

    Firewood:D
    Inspiring
    June 25, 2025

    I don't understand what you want to do, but I asked GPT to change your tab to a drop-down menu style.

     

    (function () {
    var profiles = ['co2', 'miguel', 'luis', 'pedro'];
    var profileXML = [];
    
    profileXML.push("<dialog title='Seleccionar Perfiles' buttons='accept,cancel'>");
    profileXML.push("  <vbox>");
    profileXML.push("    <label value='Selecciona un perfil:'/>");
    profileXML.push("    <menulist id='profileSelection' width='200'>");
    profileXML.push("      <menupopup>");
    for (var i = 0; i < profiles.length; i++) {
        profileXML.push("        <menuitem label='" + profiles[i] + "' value='" + profiles[i] + "'/>");
    }
    profileXML.push("      </menupopup>");
    profileXML.push("    </menulist>");
    profileXML.push("  </vbox>");
    profileXML.push("</dialog>");
    
    var dialog = fl.xmlPanelFromString(profileXML.join(""));
    
    if (dialog.dismiss === "accept") {
        var selectedProfile = fl.xmlui.get("profileSelection");
        debugLog("Perfil seleccionado: " + selectedProfile);
    } else {
        debugLog("Usuario canceló la selección.");
    }
    
    function debugLog(message) {
        fl.trace("[DEBUG] " + message);
    }
    })();
    

     

    Inspiring
    June 27, 2025

    I never take the selected value, with this code you read the value:

    (function () {
    
        var profileXML = [];
    
        profileXML.push("<dialog title='Seleccionar Perfiles' buttons='accept,cancel'>");
        profileXML.push("  <vbox>");
        profileXML.push("    <label value='Selecciona los perfiles a importar:'/>");
    
        profileXML.push("<colorchip id='myID' color='myColor'/>")
    
        profileXML.push("  </vbox>");
        profileXML.push("</dialog>");
    
        var dialog = fl.xmlPanelFromString(profileXML.join(""));
    
        // Show the dialog and wait for user action
        if (dialog.dismiss === "accept") {
            var selectedProfiles = [];
                var value = dialog["myID"];
                debugLog("Color disponible: " + value);        
        } else {
            debugLog("Usuario canceló la selección.");
        }
    
        function debugLog(message) {
            fl.trace("[DEBUG] " + message);
        }
    })();
    defaultzh588xsh69foAuthorCorrect answer
    Inspiring
    June 27, 2025
    (function () {
        var profiles = ['co2', 'miguel', 'luis', 'pedro'];
        var profileXML = [];
    
        profileXML.push("<dialog title='Seleccionar Perfil' buttons='accept,cancel'>");
        profileXML.push("  <vbox>");
        profileXML.push("    <label value='Selecciona un perfil a importar:'/>");
    
        // Estructura completa del menulist
        profileXML.push("    <menulist id='profileSelect'>");
        profileXML.push("      <menupop>");
        for (var i = 0; i < profiles.length; i++) {
            profileXML.push("        <menuitem label='" + profiles[i] + "' value='" + profiles[i] + "'/>");
        }
        profileXML.push("      </menupop>");
        profileXML.push("    </menulist>");
    
        profileXML.push("  </vbox>");
        profileXML.push("</dialog>");
    
        var dialog = fl.xmlPanelFromString(profileXML.join(""));
    
        if (dialog.dismiss === "accept") {
            var selected = dialog["profileSelect"];
            fl.trace("Perfil seleccionado: " + selected);
        } else {
            fl.trace("Cancelado por el usuario.");
        }
    })();