浏览代码

keysnail: add ext: auto save tab list

pull/1/head
10sr 10 年前
父节点
当前提交
bc2117434d
共有 1 个文件被更改,包括 86 次插入12 次删除
  1. +86
    -12
      _keysnail.js

+ 86
- 12
_keysnail.js 查看文件

@@ -249,31 +249,105 @@ plugins.options["twitter_client.use_jmp"] = true;
// my exts and functions

var autoSaveTabList = (function(){
const PREF_KEY_DEST = "";

function init(){
// set destination directory
const PREF_PREFIX = "extensions.keysnail.plugins.autosavetablist.";
const PREF_DSTDIR = "dstdir";
const PREF_ENABLED = "enabled";
// use plugin option to set
var save_interval = 60 * 10;
// "/" for unix system
const DIR_DELIM = userscript.directoryDelimitter;

function selectDirectory(title){
// open dialog and return nsILocalFile object
// https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILocalFile
// this function blocks.
var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"].
createInstance(nsIFilePicker);

fp.init(window,
"Select Directory to Save Tab List",
nsIFilePicker.modeGetFolder);
fp.init(window, title, nsIFilePicker.modeGetFolder);

// block
var response = fp.show();
if (response !== nsIFilePicker.returnOK) {
var res = fp.show();
if (res !== nsIFilePicker.returnOK) {
return null;
}
return fp.file;
}

function setup(){
// set destination directory
var dstdir = selectDirectory("Select Directory to Save Tab List");
if (! dstdir) { return; }
if (! dstdir.isWritable()) {
display.notify("Directory is not writable");
return;
}

util.setUnicharPref(PREF_PREFIX + PREF_DSTDIR, dstdir.path);
}

function genFileName(){
function formatCurrent(){
var d = new Date();
function pad(n){
return n < 10 ? '0' + n.toString() : n.toString()
}
return [
d.getFullYear().toString(),
pad(d.getMonth() + 1),
pad(d.getDate()),
"-",
pad(d.getHours()),
pad(d.getMinutes()),
pad(d.getSeconds())
].join("");
}

return "tablist." + formatCurrent() + ".lst";
}

function getTabList(){
// returns list of urls of current tabs.
return [(function(){
var browser = tab.linkedBrowser;
var win = browser.contentWindow;
// var title = tab.label;
var url = win.location.href;
return url;
})() for each (tab in Array.slice(gBrowser.mTabContainer.childNodes))];
// Array.slice is required?
}

function saveCurrentList(){
var dstdir = util.getUnicharPref(PREF_PREFIX + PREF_DSTDIR);
if (! dstdir) {
display.showPopup("AutoSaveTabList",
"Dest dir is not set yet. Run setup first");
return;
}
alert(fp.file.path);

var filename = genFileName();

util.writeTextFile(
getTabList().join("\n") + "\n",
dstdir + userscript.directoryDelimiter + filename
);
display.showPopup("AutoSaveTabList",
"Tab List saved: " + filename);
}

return {
init: init
selectDirectory: selectDirectory,
setup: setup,
getTabList: getTabList,
saveCurrentList: saveCurrentList
};
})();

ext.add("astl-setup", autoSaveTabList.setup, "Auto save tab list - Setup");
ext.add("astl-save-current", autoSaveTabList.saveCurrentList,
"Auto save tab list - Save current list");

var echoTabInfo = (function(){
var currenttab;
function _display(msg){


正在加载...
取消
保存