Skip to main content
detailed_musician15C3
Known Participant
July 13, 2017
Answered

DropdownList a Preset's folder

  • July 13, 2017
  • 3 replies
  • 770 views

Hello ,i have a folder with many files ,here some presets,and i want to check this file and make the dropdownlist...

Thats works but in my list ,i see the entire path ,and i just want to see the name of each files in the list..

~/Desktop/MyPresetFolder/MyPreset_01         and i just want              MyPreset_01

~/Desktop/MyPresetFolder/MyPreset_02         and i just want              MyPreset_02

.......

I dont know how to do that...

if you had any ideas ??

Thank you so much everyone

TOM

here is my code:

function myScript(thisObj) {

    var presetsFolder = Folder("~/Desktop/MyPresetFolder");

  

    var arrayPresets = presetsFolder.getFiles ('*.ffx'); 

    var PositionTypesAry = arrayPresets; // This is the dropdownlist

  

  

   var LIST_DIMENSIONS = [0, 0, 220, 15];

    var STATIC_TEXT_DIMENSIONS = [0, 0, 60, 15];

    function myScript_buildUI(thisObj) {

        var panel = (thisObj instanceof Panel) ? thisObj : new Window("palette", "myScript", undefined);

        if (panel != null) {

            panel.PositionGrp = panel.add('group', undefined, 'Position group');

            var PositionGrp = panel.PositionGrp;

            PositionGrp.add('statictext', STATIC_TEXT_DIMENSIONS, 'Presets:');

            PositionGrp.PositionList = PositionGrp.add('dropdownlist', LIST_DIMENSIONS, PositionTypesAry);

            PositionGrp.PositionList.selection = 1;    

           

            var buttonGrp = panel.add('group', undefined, 'Button group');

            var applyBtn = buttonGrp.add('button', undefined, 'Apply');

           

//applyBtn.onClick = ;

          

            panel.layout.layout(true);

             return panel;

        }

    }

    var myPal = myScript_buildUI(thisObj);

    if (myPal != null) {

        if (myPal instanceof Window) {

            myPal.center();

            myPal.show();

        }

    }

}

myScript(this);

This topic has been closed for replies.
Correct answer Tomas Sinkunas

Try this:

var pathToFile = "~/Desktop/psd.js";

var displayName = File(pathToFile).displayName;

var baseName = displayName.split(".")[0];

Or as one-liner:

var baseName = File("~/Desktop/psd.js").displayName.split(".")[0];

These methods will work on both Mac and PC.

In your case, this snippet should do the trick.

var presetsFolder = Folder("~/Desktop/MyPresetFolder");

var arrayPresets = presetsFolder.getFiles('*.ffx');

var fileNames = getFileNames(arrayPresets);

function getFileNames(arrayPresets) {

    var fileNames = [],

        baseName = "";

    for (var i = 0, il = arrayPresets.length; i < il; i++) {

        baseName = arrayPresets.displayName.split(".")[0];

        fileNames.push(baseName);

    }

    return fileNames;

}

3 replies

detailed_musician15C3
Known Participant
July 17, 2017

ok thank you guys,i will try that method...

Tomas Sinkunas
Tomas SinkunasCorrect answer
Legend
July 17, 2017

Try this:

var pathToFile = "~/Desktop/psd.js";

var displayName = File(pathToFile).displayName;

var baseName = displayName.split(".")[0];

Or as one-liner:

var baseName = File("~/Desktop/psd.js").displayName.split(".")[0];

These methods will work on both Mac and PC.

In your case, this snippet should do the trick.

var presetsFolder = Folder("~/Desktop/MyPresetFolder");

var arrayPresets = presetsFolder.getFiles('*.ffx');

var fileNames = getFileNames(arrayPresets);

function getFileNames(arrayPresets) {

    var fileNames = [],

        baseName = "";

    for (var i = 0, il = arrayPresets.length; i < il; i++) {

        baseName = arrayPresets.displayName.split(".")[0];

        fileNames.push(baseName);

    }

    return fileNames;

}

detailed_musician15C3
Known Participant
July 17, 2017

Thank you so much Tomas !! it works fine !!!

here is the final code:

function myScript(thisObj) {

  var presetsFolder = Folder("~/Desktop/MyPresetFolder"); 

var arrayPresets = presetsFolder.getFiles('*.ffx'); 

var fileNames = getFileNames(arrayPresets); 

 

function getFileNames(arrayPresets) { 

    var fileNames = [], 

        baseName = ""; 

 

    for (var i = 0, il = arrayPresets.length; i < il; i++) { 

        baseName = arrayPresets.displayName.split(".")[0]; 

        fileNames.push(baseName); 

    } 

    return fileNames; 

//alert(fileNames)

  

   var LIST_DIMENSIONS = [0, 0, 220, 15];

    var STATIC_TEXT_DIMENSIONS = [0, 0, 60, 15];

    function myScript_buildUI(thisObj) {

        var panel = (thisObj instanceof Panel) ? thisObj : new Window("palette", "myScript", undefined);

        if (panel != null) {

            panel.PositionGrp = panel.add('group', undefined, 'Position group');

            var PositionGrp = panel.PositionGrp;

            PositionGrp.add('statictext', STATIC_TEXT_DIMENSIONS, 'Presets:');

            PositionGrp.PositionList = PositionGrp.add('dropdownlist', LIST_DIMENSIONS, fileNames);

            PositionGrp.PositionList.selection = 0;    

           

            var buttonGrp = panel.add('group', undefined, 'Button group');

            var applyBtn = buttonGrp.add('button', undefined, 'Apply');

           

//applyBtn.onClick = ;

          

            panel.layout.layout(true);

             return panel;

        }

    }

    var myPal = myScript_buildUI(thisObj);

    if (myPal != null) {

        if (myPal instanceof Window) {

            myPal.center();

            myPal.show();

        }

    }

}

myScript(this);

phlexib
Inspiring
July 15, 2017

The File object has a displayName property that will return 'MyPrest.ffx'.

Known Participant
July 15, 2017

hello, you can convert arrayPresets to String,,

then use slice() method to get the string you want..