var apps=new Array; //------menu items-------- тут иконки для пунктов var advImg='data:image/gif;...'; и т. д. //Тут пока от винды осталось, только пару пунктов поменял apps.push(['AdvOR',advImg,'C:/totalcmd/Bin/PcxFox/programs/AdvOR/AdvOR.exe']); apps.push(['Midori',qzImg,'/usr/bin/midori']); apps.push(['Iron',irImg,'C:/totalcmd/Bin/IronPortable/X-IronPortable41.exe']); apps.push(['TheWorld',thImg,'E:/totalcmd/Bin/TheWorld/X-TheWorld6.exe']); apps.push('separator'); apps.push(['Process Hacker',phImg,'C:/totalcmd/Bin/ProcessHacker/Process Hacker.exe']); apps.push(['Control Panel',cpImg,'C:/WINDOWS/system32/control.exe']); apps.push(['Cmd Prompt',cmdImg,'C:/WINDOWS/system32/cmd.exe']); apps.push('separator'); apps.push(['Calculator',calImg,'/usr/bin/galculator']); apps.push(['Notepad',npImg,'c:/windows/notepad.exe']); apps.push(['EmEditor',emImg,'c:/totalcmd/Bin/EmEditor/EmEditor.exe']); apps.push(['AkelPad',akImg,'c:/totalcmd/Bin/AkelPad/AkelPad.exe']); apps.push('separator'); apps.push(['Foobar2000',fbImg,'C:/totalcmd/Bin/Foobar2000/foobar2000.exe']); apps.push(['PotPlayer',potImg,'C:/totalcmd/Bin/PotPlayer/potplayermini64.exe']); //------menu items------- var nMItem=function(label,img,path,args,obj){ var m=document.createElement('menuitem'); m.setAttribute('label',label); m.f=obj.startProcess.bind(obj); m.setAttribute('oncommand','this.f("'+path+'","'+args+'")'); m.setAttribute('class','menuitem-iconic'); m.setAttribute('image',img); m.tooltipText = label; return m; } this.startProcess=function(path,args){ var file = Components.classes['@mozilla.org/file/local;1'] .createInstance(Components.interfaces.nsILocalFile); var process = Components.classes['@mozilla.org/process/util;1'] .getService(Components.interfaces.nsIProcess); // Если след. строку убрать, то запускается PCManFM вместо midori или galculator, // если заменить на file.initWithPath(path);, то не работает. file.initWithPath(path.replace(/\//g,'\\\\')); file.launch(); } this.orient="horizontal"; var mP=document.createElement('menupopup'); for (var i=0;i<apps.length;i++){ if (apps[i] =='separator'){ mP.appendChild(document.createElement('menuseparator')); }else{ if (!apps[i] [3]) apps[i] [3]=''; mP.appendChild(nMItem(apps[i] [0],apps[i] [1],apps[i] [2],apps[i] [3],this)); } } this.appendChild(mP); this.type='menu'; |