Do you want the script to reorder actions in a set in the actions palette or do you want to create a dialog that you can select a loaded action set and get the actions in it in a sorted list. I think the dialog would be possible by sorting the arrays of retrieve loaded actions set names and sorting retrieved actions names. There was a package available at one time for organizing ones Action palette. It most like used Action manager code to delete loaded action sets and to load action sets. I never downloaded it. I did download a script that put up a dialog that let you select a loaded action an run it. The script name RunAction.jsx here it is:
#target photoshop
app.bringToFront();
function main(){
var dlg=
"dialog{text:'Action Selector',bounds:[100,100,510,240],"+
"panel0:Panel{bounds:[10,10,400,130] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+
"statictext0:StaticText{bounds:[30,10,280,30] , text:'Run Action' ,properties:{scrolling:undefined,multiline:undefined}},"+
"ActionSet:DropDownList{bounds:[10,40,190,60]},"+
"ActionName:DropDownList{bounds:[200,40,380,60]},"+
"button0:Button{bounds:[20,80,120,100] , text:'Ok' },"+
"button1:Button{bounds:[240,80,340,100] , text:'Cancel' }}}";
win = new Window(dlg);
win.center();
var actionSets = new Array();
actionSets = getActionSets();
for (var i=0,len=actionSets.length;i<len;i++) { item = win.panel0.ActionSet.add ('item', "" + actionSets[i]);
};
win.panel0.ActionSet.selection=0;
var actions = new Array();
actions = getActions(actionSets[0]);
for (var i=0,len=actions.length;i<len;i++) { item = win.panel0.ActionName.add ('item', "" + actions[i]);
};
win.panel0.ActionName.selection=0;
win.panel0.ActionSet.onChange = function() {
win.panel0.ActionName.removeAll();
actions = getActions(actionSets[parseInt(this.selection)]);
for (var i=0,len=actions.length;i<len;i++) { item = win.panel0.ActionName.add ('item', "" + actions[i]); } win.panel0.ActionName.selection=0;
};
var done = false; while (!done) { var x = win.show(); if (x == 0 || x == 2) { win.canceled = true; //Cancelled done = true; } else if (x == 1) { done = true; var result = valiDate(); if(result != true) { alert(result); return; }else { alert(win.panel0.ActionName.selection.text + " " + win.panel0.ActionSet.selection.text); doAction(win.panel0.ActionName.selection.text, win.panel0.ActionSet.selection.text); } } }
}
main();
function valiDate(){
return true;
};
function getActionSets() {
cTID = function(s) { return app.charIDToTypeID(s); };
sTID = function(s) { return app.stringIDToTypeID(s); };
var i = 1; var sets = []; while (true) { var ref = new ActionReference(); ref.putIndex(cTID("ASet"), i); var desc; var lvl = $.level; $.level = 0; try { desc = executeActionGet(ref); } catch (e) { break; // all done } finally { $.level = lvl; } if (desc.hasKey(cTID("Nm "))) { var set = {}; set.index = i; set.name = desc.getString(cTID("Nm ")); set.toString = function() { return this.name; }; set.count = desc.getInteger(cTID("NmbC")); set.actions = []; for (var j = 1; j <= set.count; j++) { var ref = new ActionReference(); ref.putIndex(cTID('Actn'), j); ref.putIndex(cTID('ASet'), set.index); var adesc = executeActionGet(ref); var actName = adesc.getString(cTID('Nm ')); set.actions.push(actName); } sets.push(set); } i++; } return sets;
};
function getActions(aset) {
cTID = function(s) { return app.charIDToTypeID(s); };
sTID = function(s) { return app.stringIDToTypeID(s); };
var i = 1; var names = []; if (!aset) { throw "Action set must be specified"; } while (true) { var ref = new ActionReference(); ref.putIndex(cTID("ASet"), i); var desc; try { desc = executeActionGet(ref); } catch (e) { break; // all done } if (desc.hasKey(cTID("Nm "))) { var name = desc.getString(cTID("Nm ")); if (name == aset) { var count = desc.getInteger(cTID("NmbC")); var names = []; for (var j = 1; j <= count; j++) { var ref = new ActionReference(); ref.putIndex(cTID('Actn'), j); ref.putIndex(cTID('ASet'), i); var adesc = executeActionGet(ref); var actName = adesc.getString(cTID('Nm ')); names.push(actName); } break; } } i++; } return names;
};