Instantly share code, notes, and snippets.
Created
May 4, 2014 08:30
-
Star
1
(1)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save wenketel/fffd7b3a2696b67ad4dc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name extras_config_menu.uc.js | |
// @compatibility Firefox 8.*, 9.*, 10.*, 11.*, 12.*, 13.*, 14.*, 15.*, 16.*, 17.* | |
// @include main | |
// @version 1.0.20121213 | |
// ==/UserScript== | |
var uProfMenu = { | |
// Beginn der Konfiguration | |
// In der folgenden Zeile (11) den Pfad zum Texteditor eintragen (unter Ubuntu 10.04 z.B.: '/usr/bin/gedit'). Bei Fehleintrag wird view_source.editor.path ausgelesen: | |
TextOpenExe : 'C:\\Windows\\notepad.exe', | |
// Falls gewuenscht, in Zeile 15 einen Dateimanager eintragen (komplett leer lassen fuer Dateimanager des Systems) Beispiele: | |
// vFileManager: 'E:\\Total Commander\\Totalcmd.exe', | |
// vFileManager: 'C:\\Program Files (x86)\\FreeCommander\\FreeCommander.exe' | |
vFileManager: '', | |
// Unter Linux sollte/kann versucht werden, die userChromeJS-Skripte zu sortieren, unter Windows ist das evtl. nicht noetig (die Sortierung wird Gross- und Kleinschreibung *nicht* beruecksichtigen - dazu wird die sort()-Funktion entsprechend mit einer Vergleichsfunktion aufgerufen) | |
sortScripts: 0, // 1 zum Erzwingen der Sortierung | |
// Einbindung GM-Skripte-Ordner (0: nein, 1: Greasemonkey [Profil-Verzeichnis], 2: UserScriptLoader [Chrome-Verzeichnis], 3: Scriptish [Profil-Verzeichnis]): | |
gmOrdner: 1, | |
uslOrdner: 1, | |
// Einbindung CSS-Ordner (0: nein, 1: UserCSSLoader-Ordner im Chrome-Verzeichnis): | |
cssOrdner: 1, | |
// In Zeile 30 gueltige about:Adressen eintragen, die ebenfalls aufgerufen werden sollen. | |
// - Zum Ausblenden: abouts: [], | |
// - Damit die about:-Seiten nicht als Untermenue, sondern direkt als Menuepunkte aufgefuehrt werden, muss das erste Element '0' sein: | |
// abouts: ['0','about:about','about:addons','about:cache','about:config','about:memory','about:mozilla','about:plugins','about:robots','about:support'], | |
abouts: ['about:about','about:addons','about:cache','about:config','about:memory','about:mozilla','about:permissions','about:plugins','about:robots','about:support'], | |
// Die normalen Firefox-Einstellungen auch zur Verfuegung stellen (0: nein, 1: ja): | |
showNormalPrefs: 0, | |
// Stellt "Skriptliste in Zwischenablage" zur Verfuegung (1: ja, 2: mit getrennter Nummerierung, 3: mit gemeinsamer Nummerierung) oder nicht (0): | |
enableScriptsToClip: 0, | |
// Um den Eintrag "Neustart" zu erzwingen (falls z.B. das andere Skript zu spaet eingebunden und nicht erkannt wird), auf 1 setzen: | |
enableRestart: 0, | |
// Ende der Konfiguration | |
init: function() { | |
var menu = document.createElement("toolbarbutton"); | |
menu.setAttribute("id", "ExtraConfigMenu-button"); | |
menu.setAttribute("class", "toolbarbutton-1"); | |
menu.setAttribute("type", "menu"); | |
menu.setAttribute("tooltiptext", "Extras Config Menu\n\u4e2d\u952e \u6253\u5f00 about:config"); | |
menu.setAttribute("onclick","if (event.button === 1 && !this.open) {getBrowser (). selectedTab = getBrowser (). addTab ('about:config')};"); | |
document.getElementById("urlbar-icons").appendChild(menu); | |
//ab hier ist alles gleich, egal ob Button oder Menue | |
var css = " \ | |
#ExtraConfigMenu, #ExtraConfigMenu-button { \ | |
list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAANeSURBVDhPdVNtTJNXFC7ZkiV+LYtDHUtYopvO/pAoMcaim6AEotAimqjxIyWbTEBAEZbadkKBDobDNXURJmA0sKmJikBBSmWDSV2zWfv6CQYGyqcrawCBt2/fvvc+u110CcSd5Mk999zzPOeenHtlspn2hly+7MP63KiErsrE8rs/JN50lqlsj0/HnLFr12zLjXtvzqz8mduzWTFpFvN+T0WR2jdxN59KXcWQOo34266hreZdgr0osuPnnI8/fa2I41TszhftR59L3aUYeWDCZM/3IP1mkGffgbNqwd3IgaUsiY7UKAc6cuTKGSI/ZaxbNdGc2iv1mkDd1aBjFlBPLejwWdDB05CenQLtLYZwXwdvRxo85yK7q/aGyl+JBD0s317FO08Qx48pqD+5C3UlB9BacQTj3Wa4rh6G5RslavM2w1aqwpBFDW/DduLSy8uYQJBMuXphyFitekTsLEL/7TxYCqNxTfcJetrywfeZMPSbHr+Y4nHpSBg66w5ioi0ZonUn3ObwgfVL5y6S6Xas2MQ3J/N+qx6eBj1G2/MxyhXDfacQvr5vMc4Z4Haw+O3jcF9OAV+dBH9NIqYqFXx2dHCEzLhnZQLfkixIdj2osxC0u4T1XQo6cBL0aRHonwbQLi3IvaMgbQchNeyDeCkO0+cjBG1sSLwsfeuy2OlGtVdyaVhiASN8DdpnZCvze3JBn+hAHmaD3EmB1L4XUpMS4rUYTFUpvIc2LoySrQqZv/x5teov0Z4Bcl8L+ugEw1cM7EYPNCDcMZDfUyH9+jn81gPwW+Lgux6DIdPa4dC331oamMScFt3aK3zjPup3MBFnNqiLVXQy4h+ZII40iDczIHZUwNdSArE5AfyVzaQxc8XFADcgEKRWLNk6WBY1LDTthr/9MxB7MiT7IYithyHYjBCf2EFeeCC0FsN3Q4V+87qB3eELov8d40ubb0z8QDN8ZsOocDUOYtMOeOuSINyzgkyNg3gnIbjq4a3fj8FyhTtv25JjjDdv9pMOztqyKJMzhD2eqNzgm6qJp9ONBnhvVWLy+nE6dkElcAXhj9Ijg9MZ8d3/+1TzQt95MyJ7y+KCy198ZLVpwjjbl6u5i6krm7OiFxvYmeJ1lWeLBfqay/A+w/KXCPiB2H89vyL9AwnJGRm1qt0PAAAAAElFTkSuQmCC) !important; \ | |
} \ | |
#ExtraConfigMenu-button > dropmarker, #ExtraConfigMenu-button > hbox > .toolbarbutton-menu-dropmarker { \ | |
display: none !important; \ | |
}"; | |
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); | |
var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); | |
sss.loadAndRegisterSheet(uri,sss.AGENT_SHEET); | |
menu.setAttribute("onpopupshowing","uProfMenu.getScripts(0)"); | |
var menupopup = menu.appendChild(this.createME("menupopup",0,0,0,"ExtraConfigMenu-popup")); | |
menupopup.appendChild(this.createME("menuitem","userChrome.js","uProfMenu.edit(0,'userChrome.js');","uProfMenu_edit",0)); | |
// Anlegen von Untermenues fuer die userChromeJS-Skripte (befuellt werden sie spaeter) | |
var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-ucjs")); | |
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucjs-items")); | |
var submenu=menupopup.appendChild(this.createME("menu","uc.xul",0,0,"submenu-ucxul")); | |
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucxul-items")); | |
if (this.enableScriptsToClip) menupopup.appendChild(this.createME("menuitem","Skriptliste in Zwischenablage","uProfMenu.getScripts(1)","uProfMenu_clipboard",0)); | |
// Ende Anlegen von Untermenues fuer die userChromeJS-Skripte | |
menupopup.appendChild(document.createElement('menuseparator')); | |
// Einbindung von Konfigdateien | |
menupopup.appendChild(this.createME("menuitem","userChrome.css","uProfMenu.edit(0,'userChrome.css');","uProfMenu_edit",0)); | |
menupopup.appendChild(this.createME("menuitem","userContent.css","uProfMenu.edit(0,'userContent.css');","uProfMenu_edit",0)); | |
menupopup.appendChild(this.createME("menuitem","prefs.js","uProfMenu.edit(1,'prefs.js');","uProfMenu_edit",0)); | |
menupopup.appendChild(this.createME("menuitem","user.js","uProfMenu.edit(1,'user.js');","uProfMenu_edit"),0); | |
// Ende Einbindung von Konfigdateien | |
menupopup.appendChild(document.createElement('menuseparator')); | |
// Einbindung von Ordnern | |
menupopup.appendChild(this.createME("menuitem","Profiles","uProfMenu.prefDirOpen('ProfD');","uProfMenu_folder"),0); | |
menupopup.appendChild(this.createME("menuitem","Chrome","uProfMenu.prefDirOpen('UChrm');","uProfMenu_folder"),0); | |
menupopup.appendChild(this.createME("menuitem","Scriptish","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'scriptish_scripts');","uProfMenu_folder"),0); | |
switch (this.gmOrdner) { | |
case 1: | |
menupopup.appendChild(this.createME("menuitem","Greasemonkey","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'gm_scripts');","uProfMenu_folder"),0); | |
break; | |
case 2: | |
menupopup.appendChild(this.createME("menuitem","UserScriptLoader","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'UserScriptLoader');","uProfMenu_folder"),0); | |
break; | |
case 3: | |
menupopup.appendChild(this.createME("menuitem","Scriptish","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'scriptish_scripts');","uProfMenu_folder"),0); | |
break; | |
} | |
switch (this.uslOrdner) { | |
case 1: | |
menupopup.appendChild(this.createME("menuitem","UserScriptLoader","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'UserScriptLoader');","uProfMenu_folder"),0); | |
break; | |
} | |
if (this.cssOrdner) { | |
menupopup.appendChild(this.createME("menuitem","UserCSSLoader","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSS');","uProfMenu_folder"),0); | |
} | |
menupopup.appendChild(this.createME("menuitem","Extensions","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'extensions');","uProfMenu_folder"),0); | |
menupopup.appendChild(this.createME("menuitem","startupCache","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfLD')+uProfMenu.getDirSep()+'startupCache');","uProfMenu_folder"),0); | |
menupopup.appendChild(this.createME("menuitem","Profiles/searchplugins","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'searchplugins');","uProfMenu_folder"),0); | |
menupopup.appendChild(document.createElement('menuseparator')); | |
menupopup.appendChild(this.createME("menuitem","Installations","uProfMenu.prefDirOpen('CurProcD');","uProfMenu_folder"),0); | |
menupopup.appendChild(this.createME("menuitem","Plugins","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('CurProcD')+uProfMenu.getDirSep()+'plugins');","uProfMenu_folder"),0); | |
menupopup.appendChild(this.createME("menuitem","Installations/searchplugins","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('CurProcD')+uProfMenu.getDirSep()+'searchplugins');","uProfMenu_folder"),0) | |
menupopup.appendChild(document.createElement('menuseparator')); | |
menupopup.appendChild(this.createME("menuitem","about:addons","getBrowser (). selectedTab = getBrowser (). addTab ('about:addons')"),0); | |
menupopup.appendChild(this.createME("menuitem","about:config","getBrowser (). selectedTab = getBrowser (). addTab ('about:config')"),0); | |
menupopup.appendChild(this.createME("menuitem","about:support","getBrowser (). selectedTab = getBrowser (). addTab ('about:support')"),0); | |
menupopup.appendChild(this.createME("menuitem","about:addons-memory","getBrowser (). selectedTab = getBrowser (). addTab ('about:addons-memory')"),0); | |
// Ende Einbindung von Ordnern | |
// Einbindung von abouts | |
if (this.abouts.length>0) { | |
menupopup.appendChild(document.createElement('menuseparator')); | |
// falls der erste Eintrag des arrays ='0' ist, dann kein Untermenue anlegen, sondern direkt als Menuepunkte einbinden | |
if (this.abouts[0]=='0') { | |
for (var i = 1; i < this.abouts.length; i++) { | |
menupopup.appendChild(this.createME("menuitem",this.abouts[i],"getBrowser (). selectedTab = getBrowser (). addTab ('"+this.abouts[i]+"')","uProfMenu_about"),0); | |
} | |
} else { | |
// der erste Eintrag des arrays ist ungleich '0', deshalb als Untermenue einrichten | |
var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-about")); | |
var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-about-items")); | |
this.fillMenu("submenu-about","submenu-about-items", "about:",this.abouts,"uProfMenu_about",1); | |
} | |
} | |
// Ende Einbindung von abouts | |
// Separator, falls dieser nicht schon durch abouts generiert wurde und weitere Menuepunkte folgen werden | |
if (this.abouts.length==0 && (this.showNormalPrefs || typeof(ToolRstartMod) != "undefined")) menupopup.appendChild(document.createElement('menuseparator')); | |
// Falls gewuenscht (s. Konfigurationsabschnitt), Zugriff auf die normalen Einstellungen | |
if (this.showNormalPrefs) menupopup.appendChild(this.createME("menuitem","Einstellungen","try{openOptionsDialog();}catch(e){openPreferences();}","uProfMenu_prefs"),0); | |
// Falls addRestartButton installiert ist, Neustart zur Verfuegung stellen (addRestartButton 1.0.20120105mod erforderlich) | |
if(typeof(ToolRstartMod) != "undefined" || this.enableRestart) menupopup.appendChild(this.createME("menuitem","Neustart", | |
"try{ToolRstartMod.SaveRestart(event,1);} catch(e){alert(e);}","uProfMenu_restart"),0); | |
}, | |
getDirSep:function() { | |
// Betriebssystem nach https://developer.mozilla.org/en/Code_snippets/Miscellaneous ermitteln | |
var osString = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS; | |
var dirsep="/"; | |
switch(osString) { | |
case "WINNT": | |
dirsep="\\"; | |
break; | |
case "Linux": | |
dirsep="/"; | |
break; | |
case "Darwin": | |
dirsep="/"; | |
break; | |
} | |
return dirsep; | |
}, | |
edit:function(OpenMode,Filename){ | |
var Path = ""; | |
var dSep = this.getDirSep(); // die Trennzeichen zwischen Ordnern abhaengig vom Betriebssystem machen | |
switch (OpenMode){ | |
//Current is Chrome Directory | |
case 0: | |
var Path = this.getPrefDirectoryPath("UChrm") + dSep + Filename; | |
break; | |
//Current is Profile Directory | |
case 1: | |
var Path = this.getPrefDirectoryPath("ProfD") + dSep + Filename; | |
break; | |
//Current is Root | |
case 2: | |
var Path = Filename; | |
break; | |
} | |
this.launch(this.TextOpenExe,Path); | |
}, | |
dirOpen:function(Path){ | |
if (this.vFileManager.length != 0) { | |
var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile); | |
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess); | |
var args=[Path]; | |
file.initWithPath(this.vFileManager); | |
process.init(file); | |
// Verzeichnis mit anderem Dateimanager oeffnen | |
process.run(false, args, args.length); | |
} else { | |
// Verzeichnis mit Dateimanager des Systems oeffnen | |
var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); | |
dir.initWithPath(Path); | |
dir.launch(); | |
} | |
}, | |
prefDirOpen:function(prefDir){ | |
Path = this.getPrefDirectoryPath(prefDir); | |
this.dirOpen(Path); | |
}, | |
getPrefDirectoryPath:function(str){ | |
// get profile directory | |
var file = Components.classes["@mozilla.org/file/directory_service;1"] | |
.getService(Components.interfaces.nsIProperties) | |
.get(str, Components.interfaces.nsIFile); | |
return file.path; | |
}, | |
launch:function(RanPath,OpenPath){ | |
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); | |
var proc = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); | |
var args = [OpenPath]; | |
file.initWithPath(RanPath); | |
// falls der im Konfigurationsabschnitt definierte Editor nicht gefunden wird, auf Einstellung in about:config ausweichen: | |
if (!file.exists()) { | |
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); | |
RanPath=pref.getCharPref("view_source.editor.path"); | |
file.initWithPath(RanPath); | |
} | |
proc.init(file); | |
proc.run(false, args, args.length); | |
}, | |
stringComparison:function(a, b){ | |
a = a.toLowerCase(); | |
a = a.replace(/ä/g,"a"); | |
a = a.replace(/ö/g,"o"); | |
a = a.replace(/ü/g,"u"); | |
a = a.replace(/ß/g,"s"); | |
b = b.toLowerCase(); | |
b = b.replace(/ä/g,"a"); | |
b = b.replace(/ö/g,"o"); | |
b = b.replace(/ü/g,"u"); | |
b = b.replace(/ß/g,"s"); | |
return(a==b)?0:(a>b)?1:-1; | |
}, | |
getScripts:function(iType) { | |
// Arrays (jeweils ein Array fuer uc.js und uc.xul) nehmen Namen der gefundenen Skripte auf | |
let ucJsScripts = []; | |
let ucXulScripts = []; | |
// Suchmuster, also die Dateierweiterungen uc.js und uc.xul | |
let extjs = /\.uc\.js$/i; | |
let extxul= /\.uc\.xul$/i; | |
let aFolder = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile); | |
aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path); | |
// files mit Eintraegen im Chrome-Ordner befuellen | |
let files = aFolder.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator); | |
// Ordner bzw. files durchlaufen und kontrollieren, ob gesuchte Dateien dabei sind | |
while (files.hasMoreElements()) { | |
let file = files.getNext().QueryInterface(Ci.nsIFile); | |
// keine gewuenschte Datei, deshalb continue | |
if (!extjs.test(file.leafName) && !extxul.test(file.leafName)) continue; | |
// uc.js gefunden -> im Array ablegen | |
if (extjs.test(file.leafName)) ucJsScripts.push(file.leafName); | |
// uc.xul gefunden -> im Array ablegen | |
if (extxul.test(file.leafName)) ucXulScripts.push(file.leafName); | |
} | |
if (this.sortScripts) { | |
ucJsScripts.sort(this.stringComparison); | |
ucXulScripts.sort(this.stringComparison); | |
} | |
// Aufruf der naechsten Methoden um die beiden Untermenues oder die Zwischenablage zu befuellen | |
if (iType==0) { | |
this.fillMenu("submenu-ucjs","submenu-ucjs-items", "uc.js",ucJsScripts,"uProfMenu_ucjs",0); | |
this.fillMenu("submenu-ucxul","submenu-ucxul-items", "uc.xul",ucXulScripts,"uProfMenu_ucxul",0); | |
} else { | |
var result=this.fillClipboardValue(ucJsScripts,ucXulScripts); | |
Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper).copyString(result); | |
} | |
}, | |
fillMenu:function(whichsubmenu, whichsubmenuitems, strlabel, scriptArray,sClass,sTyp) { | |
// Beschriftung des Untermenues mit Anzahl der gefundenen Dateien ergaenzen | |
var e = document.getElementById(whichsubmenu); | |
e.setAttribute('label',strlabel + ' (' + scriptArray.length + ')'); | |
var popup = document.getElementById(whichsubmenuitems); | |
// zunaechst Untermenue zuruecksetzen | |
while(popup.hasChildNodes()){ | |
popup.removeChild(popup.firstChild); | |
} | |
// Untermenue endlich befuellen | |
for (var i = scriptArray.length-1; i > -1; i--) { | |
// bisher nur eine Typunterscheidung (userChromeJS-Skript oder about:) | |
if (sTyp==0){ | |
var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(0,'"+scriptArray[i]+"')",sClass,0); | |
mitem.setAttribute("onclick","uProfMenu.openAtGithub(event,'"+scriptArray[i]+"')"); | |
mitem.setAttribute("tooltiptext"," \u5de6\u952e: \u7f16\u8f91,\n \u4e2d\u952e: \u5728https://github.com/.../"+this.cleanFileName(scriptArray[i])+" \u4e0a\u6253\u5f00,\n \u53f3\u952e: \u5728GitHub\u4e0a\u641c\u7d22"); | |
} else { | |
var mitem = this.createME("menuitem",scriptArray[i],"getBrowser (). selectedTab = getBrowser (). addTab ('"+scriptArray[i]+"')",sClass,0); | |
} | |
popup.insertBefore(mitem, popup.firstChild); | |
} | |
}, | |
fillClipboardValue:function(sArray,xArray) { | |
var retValue; | |
var s = 0; | |
var x = 0; | |
s = sArray.length; | |
x = xArray.length; | |
switch(this.enableScriptsToClip) { | |
case 1: | |
retValue = "userChromeJS/uc.js ("+s+"):\n------------------------\n"+sArray.join("\n")+ | |
"\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------\n"+xArray.join("\n"); | |
break; | |
default: | |
retValue = "userChromeJS/uc.js ("+s+"):\n------------------------"; | |
for (var i = 0; i < s ; i++) { | |
j = i + 1; | |
retValue = retValue + "\n" + j + ". " + sArray[i]; | |
} | |
retValue = retValue + "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------"; | |
if (this.enableScriptsToClip==2) s = 0; | |
for (var i = 0; i < x ; i++) { | |
j = i + s + 1; | |
retValue = retValue + "\n" + j + ". " + xArray[i]; | |
} | |
break; | |
} | |
return retValue; | |
}, | |
createME:function(sTyp,sLabel,sCommand,sClass,sId) { | |
// Anlegen von menuitem, menu oder menupop - fuer bestimmte Typen nicht eingesetzte Parameter werden als 0 uebergeben | |
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; | |
var m = document.createElementNS(XUL_NS, sTyp); | |
switch (sTyp) { | |
case "menuitem": | |
// this.createME("menuitem","Label des Items","ZuzuweisenderCodeFueroncommand","GewuenschteKlasseDesItems",0) | |
m.setAttribute('label', sLabel); | |
m.setAttribute('oncommand',sCommand); | |
m.setAttribute('class',sClass); | |
break; | |
case "menu": | |
// this.createME("menu","Label des Menues",0,0,"GewuenschteIdDesMenues") | |
m.setAttribute('label', sLabel); | |
m.setAttribute('id', sId); | |
break; | |
case "menupopup": | |
//this.createME("menupopup",0,0,0,"GewuenschteIdDesMenupopups"); | |
m.setAttribute('id', sId); | |
break; | |
} | |
return m; | |
}, | |
openAtGithub:function(e,sScript) { | |
if (e.button==1){ | |
// Mittelklick - Seite auf GitHub oeffnen (funktionier nur, wenn Ordner- und bereinigter Dateiname [ohne Erweiterung] uebereinstimmen): | |
var sUrl="https://github.com/ardiman/userChrome.js/tree/master/"+this.cleanFileName(sScript); | |
getBrowser (). selectedTab = getBrowser (). addTab (sUrl); | |
} | |
if (e.button==2){ | |
// Rechtsklick - Suche auf GitHub starten (funktioniert nur, wenn der Dateiname im Code hinterlegt ist): | |
e.preventDefault(); | |
var sUrl="https://github.com/search?type=Everything&language=&q="+sScript+"&repo=&langOverride=&start_value=1"; | |
getBrowser (). selectedTab = getBrowser (). addTab (sUrl); | |
} | |
}, | |
cleanFileName:function(sName) { | |
sName=sName.toLowerCase(); | |
/* Das folgende Array enthaelt regulaere Ausdruecke, um ungueltige Zeichenfolgen entfernen: | |
/Datei-Erweiterungen am Ende/, /"ucjs_" am Anfang/, /"_"gefolgtVonZahlUndDanachBeliebigenZeichen/ | |
/ "_fx"gefolgtVonZahl(en)/, /"-" oder "+" oder "."/, /"_v"gefolgtVonZahlen | |
*/ | |
var regs=[/\.uc\.js$/,/\.uc\.xul$/,/^ucjs_/,/_\d.+/,/_fx\d+/,/[-+\.]/g,/_v\d+/]; | |
for (var i = 0; i < regs.length; i++) { | |
sName=sName.replace(regs[i],""); | |
} | |
return sName; | |
} | |
}; | |
uProfMenu.init(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment