[FIXED] Photoshop Scripting; Dialogfeld zum Öffnen mehrerer Dokumente, aber nicht definierte “und definierte”.

Ausgabe

Ich habe ein Dialogfeld, das es dem Benutzer ermöglicht, nach einer PSD-Datei und dann nach mehreren TIF-Dateien zu suchen. Beim Durchsuchen mehrerer TIF-Dateien wird der Text im Textfeld “Bearbeiten” als undefiniert angezeigt. Wenn ich beispielsweise nur die Möglichkeit entferne, mehrere Dateien auszuwählen, funktioniert es.

var dlg = new Window('dialog', 'PSD Creator', [100, 100, 500, 550] );  

dlg.pnl_browse = dlg.add('panel', [10, 10, 390, 150], 'Browse');
    dlg.pnl_browse.txt_staticPSD = dlg.pnl_browse.add('statictext' , [15, 10, 375, 30],'Select the project images folder:');
    dlg.pnl_browse.btn_browsePSD = dlg.pnl_browse.add ('button', [15, 35, 60, 60], '...');
    dlg.pnl_browse.txt_editPSD = dlg.pnl_browse.add('edittext' , [65, 35, 365, 55],'<Select the project images folder>');
    dlg.pnl_browse.txt_staticTIFF = dlg.pnl_browse.add('statictext' , [15, 70, 375, 90],'Select the folder where you TIFF images are:');
    dlg.pnl_browse.btn_browseTIFF = dlg.pnl_browse.add ('button', [15, 95, 60, 120], '...');
    dlg.pnl_browse.txt_editTIFF = dlg.pnl_browse.add('edittext' , [65, 95, 365, 120],'<Select the folder where you TIFF images are>');    

dlg.btn_ok = dlg.add ('button', [70,400,190,430], 'ok');
dlg.btn_cancel = dlg.add ('button', [210,400,320,430], 'cancel');


dlg.pnl_browse.btn_browsePSD.onClick = function ()  {   
    selectFilePSD = File.openDialog("Please select your template file.","*.psd");   
        if(selectFilePSD != null) dlg.pnl_browse.txt_editPSD.text =  decodeURI(selectFilePSD.fsName); 
}


dlg.pnl_browse.btn_browseTIFF.onClick = function ()  {   
    selectFileTIFF = File.openDialog("Please select your tiff images.","*.TIF; *TFF", true);  
        if(selectFileTIFF != null) dlg.pnl_browse.txt_editTIFF.text =  decodeURI(selectFileTIFF.fsName); 
 }       

dlg.btn_ok.onClick = function () {

        dlg.close()
        open (selectFilePSD);
        open (selectFileTIFF);


}

dlg.center(); 

dlg.show();

Lösung

Sieht so aus, als ob das Problem darin besteht, dass Sie ein Array benötigen, um die vom Benutzer ausgewählten Dateien zu speichern. Mit diesem Wissen wird der Rest des Codes entsprechend überarbeitet. Es wurden verschiedene Fälle hinzugefügt, um auf verschiedene Möglichkeiten zu reagieren (ob das Array mehrere Werte enthielt oder nicht), und dann mussten nur noch alle Dateien im Array mit einer for-Schleife geöffnet werden! Hoffe das hilft:

var dlg = new Window('dialog', 'PSD Creator', [100, 100, 500, 550] );
var selectFileTIFF = [];

dlg.pnl_browse = dlg.add('panel', [10, 10, 390, 150], 'Browse');
    dlg.pnl_browse.txt_staticPSD = dlg.pnl_browse.add('statictext' , [15, 10, 375, 30],'Select the project images folder:');
    dlg.pnl_browse.btn_browsePSD = dlg.pnl_browse.add ('button', [15, 35, 60, 60], '...');
    dlg.pnl_browse.txt_editPSD = dlg.pnl_browse.add('edittext' , [65, 35, 365, 55],'<Select the project images folder>');
    dlg.pnl_browse.txt_staticTIFF = dlg.pnl_browse.add('statictext' , [15, 70, 375, 90],'Select the folder where you TIFF images are:');
    dlg.pnl_browse.btn_browseTIFF = dlg.pnl_browse.add ('button', [15, 95, 60, 120], '...');
    dlg.pnl_browse.txt_editTIFF = dlg.pnl_browse.add('edittext' , [65, 95, 365, 120],'<Select the folder where you TIFF images are>');    

dlg.btn_ok = dlg.add ('button', [70,400,190,430], 'ok');
dlg.btn_cancel = dlg.add ('button', [210,400,320,430], 'cancel');


 dlg.pnl_browse.btn_browsePSD.onClick = function ()  {   
selectFilePSD = File.openDialog("Please select your template file.","*.psd");   
        if(selectFilePSD != null) dlg.pnl_browse.txt_editPSD.text = decodeURI(selectFilePSD.fsName); 
}


dlg.pnl_browse.btn_browseTIFF.onClick = function ()  {   
selectFileTIFF = File.openDialog("Please select your tiff images.","*.TIF; *TFF", true); 

    //selectFileTIFF is an array  thus you must loop through each selected file
    //you will need a String variable to appened the name of each file for your ScriptUI panel 
    if( selectFileTIFF.length != 0 ) {
        if( selectFileTIFF.length > 1 ) {
            dlg.pnl_browse.txt_editTIFF.text = selectFileTIFF.length + " items selected";
        } else {
            dlg.pnl_browse.txt_editTIFF.text = decodeURI( selectFileTIFF[0].fsName );
        } //end else
    } //end if
 } //end func      

dlg.btn_ok.onClick = function () {

        dlg.close()
        open (selectFilePSD);

        //must open each file is selectFileTIFF array
        for ( i = 0; i < selectFileTIFF.length; i++ ) {
        open (selectFileTIFF[i]);
        }


}

dlg.center(); 

dlg.show();


Beantwortet von –
Dominic Fox


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like