mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-21 18:27:57 +01:00
renamed commandline.js -> ui.js
moved all statusbar code to the StatusLine() class
This commit is contained in:
@@ -1471,7 +1471,7 @@ function focusNextFrame()
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
function getCurrentLocation()
|
||||
{
|
||||
return content.document.location.href;
|
||||
return window.content.document.location.href;
|
||||
}
|
||||
|
||||
/* returns the current title or null */
|
||||
@@ -1660,8 +1660,6 @@ function tab_go(index)
|
||||
else
|
||||
getBrowser().mTabContainer.selectedIndex = index-1;
|
||||
}
|
||||
|
||||
updateStatusbar();
|
||||
}
|
||||
|
||||
/* quit_on_last_tab = 1: quit without saving session
|
||||
@@ -2244,7 +2242,7 @@ function removeMode(mode)
|
||||
function showMode()
|
||||
{
|
||||
// XXX: remove
|
||||
showStatusbarMessage(g_current_mode, STATUSFIELD_INPUTBUFFER);
|
||||
// showStatusbarMessage(g_current_mode, STATUSFIELD_INPUTBUFFER);
|
||||
|
||||
if (!get_pref("showmode") || !g_modemessages[g_current_mode])
|
||||
return;
|
||||
|
||||
@@ -254,7 +254,8 @@ function Search()
|
||||
|
||||
// Called when the search dialog is asked for. Sets up everything necessary
|
||||
// for this round of searching
|
||||
this.openSearchDialog = function() {
|
||||
this.openSearchDialog = function()
|
||||
{
|
||||
// Get a reference to the focused window if necessary
|
||||
if (this.gWin == null) this.gWin = document.commandDispatcher.focusedWindow;
|
||||
|
||||
@@ -419,7 +420,8 @@ function Search()
|
||||
}
|
||||
|
||||
// Finds text in a page
|
||||
this.find = function(str, dir, pt) {
|
||||
this.find = function(str, dir, pt)
|
||||
{
|
||||
var norecurse = arguments[3];
|
||||
|
||||
var matchRange;
|
||||
@@ -451,14 +453,9 @@ function Search()
|
||||
}
|
||||
}
|
||||
|
||||
//logObject(vimperator);
|
||||
logMessage("Search initialized.");
|
||||
logMessage("Search initialized");
|
||||
}
|
||||
|
||||
//searcher = new searcher();
|
||||
//vimperator.registerCallback("submit", MODE_SEARCH, function(command) { /*vimperator.*/alert(command); } );
|
||||
//vimperator.registerCallback("change", MODE_SEARCH, function(command) { /*vimperator.*/alert(command); } );
|
||||
|
||||
// @todo nicer way to register commands?
|
||||
g_commands.push(
|
||||
[
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// XXX: move somehere else!
|
||||
function save_history()
|
||||
{
|
||||
set_pref("comp_history", comp_history.join("\n"));
|
||||
}
|
||||
|
||||
function load_history()
|
||||
{
|
||||
var hist = get_pref("comp_history", "");
|
||||
comp_history = hist.split("\n");
|
||||
}
|
||||
// function save_history()
|
||||
// {
|
||||
// set_pref("comp_history", comp_history.join("\n"));
|
||||
// }
|
||||
//
|
||||
// function load_history()
|
||||
// {
|
||||
// var hist = get_pref("comp_history", "");
|
||||
// comp_history = hist.split("\n");
|
||||
// }
|
||||
|
||||
function multiliner(line, prev_match, heredoc)
|
||||
{
|
||||
@@ -86,6 +86,10 @@ function CommandLine ()
|
||||
// The command bar which contains the current command
|
||||
var command_widget = document.getElementById('new-vim-commandbar');
|
||||
|
||||
// load the history
|
||||
var hist = get_pref("commandline_history", "");
|
||||
history = hist.split("\n");
|
||||
|
||||
function setNormalStyle()
|
||||
{
|
||||
command_widget.inputField.setAttribute("style","font-family: monospace;");
|
||||
@@ -197,6 +201,7 @@ function CommandLine ()
|
||||
{
|
||||
addToHistory(command);
|
||||
completionlist.hide();
|
||||
vimperator.statusline.updateProgress(""); // we may have a "match x of y" visible
|
||||
}
|
||||
}
|
||||
else if(event.type == "input")
|
||||
@@ -222,7 +227,7 @@ function CommandLine ()
|
||||
// if (!end)
|
||||
// command_line.value = "";
|
||||
|
||||
// the command is saved in the blur() handler
|
||||
// NOTE: the command is saved to the history in the blur() handler
|
||||
focusContent();
|
||||
var res = vimperator.triggerCallback("submit", command);
|
||||
return res;
|
||||
@@ -360,7 +365,7 @@ function CommandLine ()
|
||||
completion_index = -1;
|
||||
}
|
||||
|
||||
showStatusbarMessage("match " + (completion_index+1).toString() + " of " + completions.length.toString(), STATUSFIELD_PROGRESS);
|
||||
vimperator.statusline.updateProgress("match " + (completion_index+1).toString() + " of " + completions.length.toString());
|
||||
// if the list is hidden, this function does nothing
|
||||
completionlist.selectItem(completion_index);
|
||||
}
|
||||
@@ -417,6 +422,12 @@ function CommandLine ()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// it would be better if we had a destructor in javascript ...
|
||||
this.saveHistory = function()
|
||||
{
|
||||
set_pref("commandline_history", history.join("\n"));
|
||||
}
|
||||
logMessage("CommandLine initialized.");
|
||||
}
|
||||
|
||||
@@ -623,4 +634,110 @@ function InformationList(id, options)
|
||||
logMessage("InformationList initialized for widget id: " + id);
|
||||
}
|
||||
|
||||
function StatusLine()
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////// PRIVATE SECTION /////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// our status bar fields
|
||||
var statusline_widget = document.getElementById("vimperator-statusline");
|
||||
var url_widget = document.getElementById("vimperator-statusline-field-url");
|
||||
var inputbuffer_widget = document.getElementById("vimperator-statusline-field-inputbuffer");
|
||||
var progress_widget = document.getElementById("vimperator-statusline-field-progress");
|
||||
var tabcount_widget = document.getElementById("vimperator-statusline-field-tabcount");
|
||||
var bufferposition_widget = document.getElementById("vimperator-statusline-field-bufferposition");
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////// PUBLIC SECTION //////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// use names for the color or "transparent" to remove color information
|
||||
this.setColor = function(color)
|
||||
{
|
||||
if (!color)
|
||||
color = "transparent";
|
||||
statusline_widget.setAttribute("style", "background-color: " + color);
|
||||
};
|
||||
|
||||
this.updateUrl = function(url)
|
||||
{
|
||||
if (!url || typeof(url) != "string")
|
||||
url = getCurrentLocation();
|
||||
|
||||
url_widget.value = url;
|
||||
};
|
||||
|
||||
this.updateInputBuffer = function(buffer)
|
||||
{
|
||||
if (!buffer || typeof(buffer) != "string")
|
||||
buffer = "";
|
||||
|
||||
inputbuffer_widget.value = buffer;
|
||||
};
|
||||
|
||||
this.updateProgress = function(progress)
|
||||
{
|
||||
if (!progress)
|
||||
progress = "";
|
||||
|
||||
if (typeof(progress) == "string")
|
||||
progress_widget.value = progress;
|
||||
else if (typeof(progress) == "number")
|
||||
{
|
||||
var progress_str = "";
|
||||
if (progress <= 0)
|
||||
progress_str = "[ Loading... ]";
|
||||
else if (progress < 1)
|
||||
{
|
||||
progress_str = "[";
|
||||
var done = Math.floor(progress * 20);
|
||||
for (i=0; i < done; i++)
|
||||
progress_str += "=";
|
||||
|
||||
progress_str += ">";
|
||||
|
||||
for (i=19; i > done; i--)
|
||||
progress_str += " ";
|
||||
|
||||
progress_str += "]";
|
||||
}
|
||||
progress_widget.value = progress_str;
|
||||
}
|
||||
};
|
||||
|
||||
// you can omit either of the 2 arguments
|
||||
this.updateTabCount = function(cur_index, total_tabs)
|
||||
{
|
||||
if(!cur_index || typeof(cur_index != "number"))
|
||||
cur_index = vimperator.tabs.index() + 1;
|
||||
if(!total_tabs || typeof(cur_index != "number"))
|
||||
total_tabs = vimperator.tabs.count();
|
||||
|
||||
//var tabcount_str = "[" + cur_index.toString() + "/" + total_tabs.toString() + "]";
|
||||
tabcount_widget.value = "[" + cur_index.toString() + "/" + total_tabs.toString() + "]";
|
||||
//tabcount_widget.value = tabcount_str;
|
||||
};
|
||||
|
||||
// percent is given between 0 and 1
|
||||
this.updateBufferPosition = function(percent)
|
||||
{
|
||||
if(!percent || typeof(percent) != "number")
|
||||
{
|
||||
var win = document.commandDispatcher.focusedWindow;
|
||||
percent = win.scrollMaxY == 0 ? -1 : win.scrollY / win.scrollMaxY;
|
||||
}
|
||||
|
||||
var bufferpostion_str = "";
|
||||
percent = Math.round(percent*100);
|
||||
if (percent < 0) bufferposition_str = "All";
|
||||
else if (percent == 0) bufferposition_str = "Top";
|
||||
else if (percent < 10) bufferposition_str = " " + percent.toString() + "%";
|
||||
else if (percent >= 100) bufferposition_str = "Bot";
|
||||
else bufferposition_str = percent.toString() + "%";
|
||||
|
||||
bufferposition_widget.value = bufferposition_str;
|
||||
};
|
||||
|
||||
logMessage("StatusLine initialized");
|
||||
}
|
||||
|
||||
// vim: set fdm=marker sw=4 ts=4 et:
|
||||
@@ -26,8 +26,7 @@ the provisions above, a recipient may use your version of this file under
|
||||
the terms of any one of the MPL, the GPL or the LGPL.
|
||||
}}} ***** END LICENSE BLOCK *****/
|
||||
|
||||
|
||||
// all our objects
|
||||
// The only global object, a handler to the main Vimperator object
|
||||
var vimperator = null;
|
||||
|
||||
// major modes - FIXME: major cleanup needed
|
||||
@@ -54,14 +53,6 @@ var popup_allowed_events; // need to change and reset this firefox pref
|
||||
|
||||
var g_inputbuffer = ""; // here we store partial commands (e.g. 'g' if you want to type 'gg')
|
||||
var g_count = -1; // the parsed integer of g_inputbuffer, or -1 if no count was given
|
||||
var g_bufshow = false; // keeps track if the preview window shows current buffers ('B')
|
||||
|
||||
// handlers for vimperator triggered events, such as typing in the command
|
||||
// line. See triggerVimperatorEvent and registerVimperatorEventHandler
|
||||
//var g_vimperator_event_handlers = new Array();
|
||||
|
||||
// handles wildmode tab index
|
||||
//var wild_tab_index = 0;
|
||||
|
||||
// handles multi-line commands
|
||||
var prev_match = new Array(5);
|
||||
@@ -69,7 +60,7 @@ var heredoc = '';
|
||||
|
||||
// handles to our gui elements
|
||||
//var preview_window = null;
|
||||
var status_line = null;
|
||||
//var status_line = null;
|
||||
var command_line = null;
|
||||
|
||||
// our status bar fields
|
||||
@@ -108,47 +99,36 @@ nsBrowserStatusHandler.prototype =
|
||||
if (link && ssli)
|
||||
{
|
||||
if (ssli == 1)
|
||||
updateStatusbar("Link: " + link);
|
||||
vimperator.statusline.updateUrl("Link: " + link);
|
||||
else if (ssli == 2)
|
||||
vimperator.echo("Link: " + link);
|
||||
}
|
||||
|
||||
if (link == "")
|
||||
{
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateUrl();
|
||||
showMode();
|
||||
}
|
||||
|
||||
},
|
||||
setJSStatus : function(status)
|
||||
{
|
||||
// echo("setJSStatus");
|
||||
// this.updateStatusField(status);
|
||||
},
|
||||
setJSDefaultStatus : function(status)
|
||||
{
|
||||
// echo("setJSDefaultStatus");
|
||||
// this.updateStatusField(status);
|
||||
},
|
||||
setDefaultStatus : function(status)
|
||||
{
|
||||
// echo("setDefaultStatus");
|
||||
// this.updateStatusField(status);
|
||||
},
|
||||
setJSStatus : function(status) { },
|
||||
setJSDefaultStatus : function(status) { },
|
||||
setDefaultStatus : function(status) { },
|
||||
|
||||
|
||||
onStateChange:function(aProgress,aRequest,aFlag,aStatus)
|
||||
{
|
||||
//alert("state change");
|
||||
const nsIWebProgressListener = Components.interfaces.nsIWebProgressListener;
|
||||
const nsIChannel = Components.interfaces.nsIChannel;
|
||||
//const nsIChannel = Components.interfaces.nsIChannel;
|
||||
if (aFlag & nsIWebProgressListener.STATE_START && aRequest && aRequest.URI)
|
||||
{
|
||||
var toLoadUrl = aRequest.URI.spec;
|
||||
vimperator.statusline.updateProgress(0);
|
||||
}
|
||||
// this is called when all loading was done (or when the user canceled the load
|
||||
else if (aFlag & nsIWebProgressListener.STATE_STOP)
|
||||
{
|
||||
updateStatusbar();
|
||||
//alert('stop: ' + aRequest.URI.spec);
|
||||
vimperator.statusline.updateUrl(aRequest.URI.spec);
|
||||
vimperator.statusline.updateProgress("");
|
||||
// also reset the buffer list, since the url titles are valid here
|
||||
showBufferList(true);
|
||||
}
|
||||
@@ -161,37 +141,43 @@ nsBrowserStatusHandler.prototype =
|
||||
UpdateBackForwardButtons();
|
||||
|
||||
var url = aLocation.spec;
|
||||
|
||||
// also update the original firefox location bar
|
||||
if (gURLBar)
|
||||
gURLBar.value = url; // also update the original firefox location bar
|
||||
gURLBar.value = url;
|
||||
|
||||
// onLocationChange is also called when switching/deleting tabs
|
||||
if (hah.currentMode() != HINT_MODE_ALWAYS)
|
||||
hah.disableHahMode();
|
||||
|
||||
// updating history cache is not done here but in
|
||||
// the 'pageshow' event handler, because at this point I don't
|
||||
// have access to the url title
|
||||
//alert('locchange2');
|
||||
vimperator.statusline.updateUrl(url);
|
||||
vimperator.statusline.updateProgress();
|
||||
setTimeout(function() {vimperator.statusline.updateBufferPosition();}, 100); // if not delayed we get the wrong position of the old buffer
|
||||
|
||||
// updating history cache is not done here but in the 'pageshow' event
|
||||
// handler, because at this point I don't have access to the url title
|
||||
return 0;
|
||||
},
|
||||
onProgressChange:function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
|
||||
{
|
||||
showStatusbarMessage(createProgressBar(aCurTotalProgress/aMaxTotalProgress), STATUSFIELD_PROGRESS);
|
||||
vimperator.statusline.updateProgress(aCurTotalProgress/aMaxTotalProgress);
|
||||
return 0;
|
||||
},
|
||||
onStatusChange:function (aWebProgress, aRequest, aStatus, aMessage)
|
||||
{
|
||||
showStatusbarMessage(aMessage, STATUSFIELD_URL);
|
||||
//alert('change');
|
||||
vimperator.statusline.updateUrl(aMessage);
|
||||
return 0;
|
||||
},
|
||||
onSecurityChange:function (aWebProgress, aRequest, aState)
|
||||
{
|
||||
const nsIWebProgressListener = Components.interfaces.nsIWebProgressListener;
|
||||
if(aState & nsIWebProgressListener.STATE_IS_INSECURE)
|
||||
setStatusbarColor("transparent");
|
||||
vimperator.statusline.setColor("transparent");
|
||||
else if(aState & nsIWebProgressListener.STATE_IS_BROKEN)
|
||||
setStatusbarColor("orange");
|
||||
vimperator.statusline.setColor("orange");
|
||||
else if(aState & nsIWebProgressListener.STATE_IS_SECURE)
|
||||
setStatusbarColor("yellow");
|
||||
vimperator.statusline.setColor("yellow");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -199,6 +185,7 @@ nsBrowserStatusHandler.prototype =
|
||||
|
||||
};/*}}}*/
|
||||
|
||||
// called when the chrome is fully loaded and before the main window is shown
|
||||
window.addEventListener("load", init, false);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@@ -215,21 +202,120 @@ function init()
|
||||
Vimperator.prototype.search = new Search;
|
||||
Vimperator.prototype.previewwindow = new InformationList("vimperator-preview-window", { incremental_fill: false, max_items: 10 });
|
||||
Vimperator.prototype.bufferwindow = new InformationList("vimperator-buffer-window", { incremental_fill: false, max_items: 10 });
|
||||
Vimperator.prototype.statusline = new StatusLine();
|
||||
Vimperator.prototype.tabs = new Tabs();
|
||||
|
||||
// XXX: move elsewhere
|
||||
vimperator.registerCallback("submit", MODE_EX, function(command) { /*vimperator.*/execute(command); } );
|
||||
vimperator.registerCallback("complete", MODE_EX, function(str) { return exTabCompletion(str); } );
|
||||
|
||||
|
||||
//preview_window = document.getElementById("vim-preview_window");
|
||||
status_line = document.getElementById("vim-statusbar");
|
||||
//completion_list = document.getElementById("vim-completion");
|
||||
//status_line = document.getElementById("vim-statusbar");
|
||||
command_line = document.getElementById("vim-commandbar");
|
||||
// if (!completion_list || !command_line)
|
||||
// alert("GUI not correctly created! Strange things will happen (until I find out, how to exit this script by code)");
|
||||
|
||||
// Setup our status handler - from browser.js
|
||||
// Setup our main status handler - from browser.js
|
||||
window.XULBrowserWindow = new nsBrowserStatusHandler();
|
||||
// window.XULBrowserWindow = new function()
|
||||
// {
|
||||
// this.init = function(){alert("init");};
|
||||
// QueryInterface: function(aIID)
|
||||
// {
|
||||
// if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
|
||||
// aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
|
||||
// aIID.equals(Components.interfaces.nsIXULBrowserWindow) ||
|
||||
// aIID.equals(Components.interfaces.nsISupports))
|
||||
// return this;
|
||||
// throw Components.results.NS_NOINTERFACE;
|
||||
// },
|
||||
//
|
||||
// /* functions needed for functioning */
|
||||
// init: function() {},
|
||||
// setJSStatus: function(status) {},
|
||||
// setJSDefaultStatus: function(status) {},
|
||||
// setDefaultStatus: function(status) {},
|
||||
// onLinkIconAvailable:function(a) {},
|
||||
// onStatusChange: function (aWebProgress, aRequest, aStatus, aMessage) { return 0; },
|
||||
//
|
||||
// setOverLink: function(link, b)
|
||||
// {
|
||||
// var ssli = get_pref("showstatuslinks");
|
||||
// if (link && ssli)
|
||||
// {
|
||||
// if (ssli == 1)
|
||||
// vimperator.statusline.updateUrl("Link: " + link);
|
||||
// else if (ssli == 2)
|
||||
// vimperator.echo("Link: " + link);
|
||||
// }
|
||||
//
|
||||
// if (link == "")
|
||||
// {
|
||||
// vimperator.statusline.updateUrl();
|
||||
// showMode();
|
||||
// }
|
||||
// },
|
||||
//
|
||||
//
|
||||
// // called when a page load is requested or finished/stopped
|
||||
// onStateChange:function(aProgress,aRequest,aFlag,aStatus)
|
||||
// {
|
||||
// const nsIWebProgressListener = Components.interfaces.nsIWebProgressListener;
|
||||
// //const nsIChannel = Components.interfaces.nsIChannel;
|
||||
// if (aFlag & nsIWebProgressListener.STATE_START && aRequest && aRequest.URI)
|
||||
// {
|
||||
// vimperator.statusline.updateProgress(0);
|
||||
// }
|
||||
// // this is called when all loading was done (or when the user canceled the load
|
||||
// else if (aFlag & nsIWebProgressListener.STATE_STOP)
|
||||
// {
|
||||
// vimperator.statusline.updateUrl(aRequest.URI.spec);
|
||||
// vimperator.statusline.updateProgress("");
|
||||
// // also reset the buffer list, since the url titles are valid here
|
||||
// showBufferList(true);
|
||||
// }
|
||||
// return 0;
|
||||
// },
|
||||
// // onLocationChange is also called when switching/deleting tabs
|
||||
// onLocationChange: function (aWebProgress, aRequest, aLocation)
|
||||
// {
|
||||
// // firefox 3.0 doesn't seem to have this function anymore
|
||||
// if (typeof UpdateBackForwardButtons == "function")
|
||||
// UpdateBackForwardButtons();
|
||||
//
|
||||
// var url = aLocation.spec;
|
||||
//
|
||||
// // also update the original firefox location bar
|
||||
// if (gURLBar)
|
||||
// gURLBar.value = url;
|
||||
//
|
||||
// if (hah.currentMode() != HINT_MODE_ALWAYS)
|
||||
// hah.disableHahMode();
|
||||
//
|
||||
// vimperator.statusline.updateUrl(url);
|
||||
// vimperator.statusline.updateProgress();
|
||||
// setTimeout(function() {vimperator.statusline.updateBufferPosition();}, 100); // if not delayed we get the wrong position of the old buffer
|
||||
//
|
||||
// // updating history cache is not done here but in the 'pageshow' event
|
||||
// // handler, because at this point I don't have access to the url title
|
||||
// return 0;
|
||||
// },
|
||||
// onProgressChange:function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
|
||||
// {
|
||||
// vimperator.statusline.updateProgress(aCurTotalProgress/aMaxTotalProgress);
|
||||
// return 0;
|
||||
// },
|
||||
// onSecurityChange:function (aWebProgress, aRequest, aState)
|
||||
// {
|
||||
// const nsIWebProgressListener = Components.interfaces.nsIWebProgressListener;
|
||||
// if(aState & nsIWebProgressListener.STATE_IS_INSECURE)
|
||||
// vimperator.statusline.setColor("transparent");
|
||||
// else if(aState & nsIWebProgressListener.STATE_IS_BROKEN)
|
||||
// vimperator.statusline.setColor("orange");
|
||||
// else if(aState & nsIWebProgressListener.STATE_IS_SECURE)
|
||||
// vimperator.statusline.setColor("yellow");
|
||||
//
|
||||
// return 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
||||
.getInterface(Components.interfaces.nsIWebNavigation)
|
||||
.QueryInterface(Components.interfaces.nsIDocShellTreeItem).treeOwner
|
||||
@@ -238,6 +324,14 @@ function init()
|
||||
.XULBrowserWindow = window.XULBrowserWindow;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// this function adds all our required listeners to react on events
|
||||
// also stuff like window.onScroll is handled there.
|
||||
addEventListeners();
|
||||
@@ -299,9 +393,9 @@ function init()
|
||||
function unload()
|
||||
{
|
||||
/*** save our preferences ***/
|
||||
// save_history(); FIXME
|
||||
vimperator.commandline.saveHistory();
|
||||
|
||||
// reset firefox pref
|
||||
// reset some modified firefox prefs
|
||||
if (get_firefox_pref('dom.popup_allowed_events', 'change click dblclick mouseup reset submit')
|
||||
== popup_allowed_events + " keypress")
|
||||
set_firefox_pref('dom.popup_allowed_events', popup_allowed_events);
|
||||
@@ -319,6 +413,17 @@ function onVimperatorKeypress(event)/*{{{*/
|
||||
if (key == null)
|
||||
return false;
|
||||
|
||||
if(event.type == "keydown")
|
||||
{
|
||||
logObject(event);
|
||||
logObject(event.target);
|
||||
return;//alert(event.target.id);
|
||||
}
|
||||
// sometimes the non-content area has focus, making our keys not work
|
||||
// if (event.target.id == "main-window")
|
||||
// alert("focusContent();");
|
||||
|
||||
|
||||
// XXX: ugly hack for now pass certain keys to firefox as they are without beeping
|
||||
// also fixes key navigation in menus, etc.
|
||||
if (key == "<Tab>" || key == "<Return>" || key == "<Space>" || key == "<Up>" || key == "<Down>")
|
||||
@@ -370,6 +475,7 @@ function onVimperatorKeypress(event)/*{{{*/
|
||||
|
||||
// if Hit-a-hint mode is on, special handling of keys is required
|
||||
// g_hint_mappings is used
|
||||
// FIXME: total mess
|
||||
if (hah.hintsVisible())
|
||||
{
|
||||
// never propagate this key to firefox, when hints are visible
|
||||
@@ -388,14 +494,14 @@ function onVimperatorKeypress(event)/*{{{*/
|
||||
{
|
||||
hah.disableHahMode();
|
||||
g_inputbuffer = "";
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateInputBuffer("");
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// make sure that YOU update the statusbar message yourself
|
||||
// FIXME: make sure that YOU update the statusbar message yourself
|
||||
// first in g_hint_mappings when in this mode!
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateInputBuffer(g_inputbuffer);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -408,7 +514,7 @@ function onVimperatorKeypress(event)/*{{{*/
|
||||
beep();
|
||||
hah.disableHahMode();
|
||||
g_inputbuffer = "";
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateInputBuffer(g_inputbuffer);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -443,7 +549,7 @@ function onVimperatorKeypress(event)/*{{{*/
|
||||
g_inputbuffer = "";
|
||||
}
|
||||
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateInputBuffer(g_inputbuffer);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -458,7 +564,7 @@ function onVimperatorKeypress(event)/*{{{*/
|
||||
{
|
||||
g_inputbuffer = "";
|
||||
beep();
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateInputBuffer(g_inputbuffer);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -467,7 +573,7 @@ function onVimperatorKeypress(event)/*{{{*/
|
||||
if (g_inputbuffer != "" || key != "0")
|
||||
{
|
||||
g_inputbuffer += key;
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateInputBuffer(g_inputbuffer);
|
||||
return true;
|
||||
}
|
||||
// else let the flow continue, and check if 0 is a mapping
|
||||
@@ -494,7 +600,7 @@ function onVimperatorKeypress(event)/*{{{*/
|
||||
|
||||
// command executed, reset input buffer
|
||||
g_inputbuffer = "";
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateInputBuffer(g_inputbuffer);
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
return false;
|
||||
@@ -519,7 +625,7 @@ function onVimperatorKeypress(event)/*{{{*/
|
||||
beep();
|
||||
}
|
||||
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateInputBuffer(g_inputbuffer);
|
||||
return false;
|
||||
}/*}}}*/
|
||||
|
||||
@@ -550,7 +656,6 @@ function focusContent(clear_command_line, clear_statusline)
|
||||
// completion_list.hidden = true;
|
||||
// comp_tab_index = COMPLETION_UNINITIALIZED;
|
||||
// comp_history_index = -1;
|
||||
// updateStatusbar();
|
||||
// }
|
||||
|
||||
var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
|
||||
@@ -574,6 +679,7 @@ function onEscape()
|
||||
setCurrentMode(MODE_NORMAL);
|
||||
hah.disableHahMode();
|
||||
focusContent(true, true);
|
||||
vimperator.statusline.updateUrl();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -584,6 +690,7 @@ function addEventListeners()
|
||||
{
|
||||
window.addEventListener("unload", unload, false);
|
||||
window.addEventListener("keypress", onVimperatorKeypress, true);
|
||||
// window.addEventListener("keydown", onVimperatorKeypress, true);
|
||||
|
||||
// this handler is for middle click only in the content
|
||||
//window.addEventListener("mousedown", onVimperatorKeypress, true);
|
||||
@@ -591,9 +698,9 @@ function addEventListeners()
|
||||
//document.getElementById("content").onclick = function(event) { alert("foo"); };
|
||||
|
||||
// these 4 events require >=firefox-2.0 beta1
|
||||
window.addEventListener("TabMove", updateStatusbar, false);
|
||||
window.addEventListener("TabOpen", updateStatusbar, false);
|
||||
window.addEventListener("TabClose", updateStatusbar, false);
|
||||
window.addEventListener("TabMove", vimperator.statusline.updateTabCount, false);
|
||||
window.addEventListener("TabOpen", vimperator.statusline.updateTabCount, false);
|
||||
window.addEventListener("TabClose", vimperator.statusline.updateTabCount, false);
|
||||
window.addEventListener("TabSelect", function(event)
|
||||
{
|
||||
if (hah.currentMode == HINT_MODE_ALWAYS)
|
||||
@@ -601,7 +708,7 @@ function addEventListeners()
|
||||
hah.disableHahMode();
|
||||
hah.enableHahMode(HINT_MODE_ALWAYS);
|
||||
}
|
||||
updateStatusbar();
|
||||
vimperator.statusline.updateTabCount();
|
||||
}, false);
|
||||
|
||||
// update our history cache when a new page is shown
|
||||
@@ -627,7 +734,7 @@ function addEventListeners()
|
||||
// called when the window is scrolled.
|
||||
window.onscroll = function (event)
|
||||
{
|
||||
showStatusbarMessage(createCursorPositionString(), STATUSFIELD_CURSOR_POSITION);
|
||||
vimperator.statusline.updateBufferPosition();
|
||||
};
|
||||
|
||||
// adds listeners to buffer actions.
|
||||
@@ -673,9 +780,6 @@ var buffer_changed_listener =
|
||||
return 0;
|
||||
},
|
||||
|
||||
|
||||
// This fires when the location bar changes i.e load event is confirmed
|
||||
// or when the user switches tabs
|
||||
onLocationChange: function(aProgress, aRequest, aURI) { /*alert('locchange');*/ setTimeout( updateBufferList, 250); return 0; },
|
||||
onProgressChange:function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress){ return 0; },
|
||||
onStatusChange: function() {return 0;},
|
||||
@@ -684,79 +788,6 @@ var buffer_changed_listener =
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// statusbar/progressbar ////////////////////////////////////////// {{{1
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
/* the statusbar is currently divided into 5 fields, you can set
|
||||
* each one independently */
|
||||
function showStatusbarMessage(msg, field)
|
||||
{
|
||||
var bar = document.getElementById("vim-sb-field-" + field);
|
||||
if (bar)
|
||||
bar.value = msg;
|
||||
}
|
||||
|
||||
function setStatusbarColor(color)
|
||||
{
|
||||
var bar = document.getElementById("vim-statusbar");
|
||||
bar.setAttribute("style", "background-color: " + color);
|
||||
}
|
||||
|
||||
function updateStatusbar(message)
|
||||
{
|
||||
var buffers = "[" + (gBrowser.tabContainer.selectedIndex + 1).toString() + "/" +
|
||||
gBrowser.tabContainer.childNodes.length.toString() + "]";
|
||||
|
||||
showStatusbarMessage(message || getCurrentLocation(), STATUSFIELD_URL);
|
||||
showStatusbarMessage(" " + g_inputbuffer + " ", STATUSFIELD_INPUTBUFFER);
|
||||
showStatusbarMessage("", STATUSFIELD_PROGRESS);
|
||||
showStatusbarMessage(buffers, STATUSFIELD_BUFFERS);
|
||||
|
||||
// required to postpone it a little, otherwise we could get the wrong cursor
|
||||
// position when switching tabs
|
||||
setTimeout(function() {
|
||||
showStatusbarMessage(createCursorPositionString(), STATUSFIELD_CURSOR_POSITION);
|
||||
} , 10);
|
||||
}
|
||||
|
||||
/* aProgress is a float between 0 and 1 */
|
||||
function createProgressBar(aProgress)
|
||||
{
|
||||
/* the progress field */
|
||||
var progress;
|
||||
if (aProgress <= 0)
|
||||
progress = "[ Loading... ]";
|
||||
else if (aProgress >= 1)
|
||||
progress = "[====================]";
|
||||
else
|
||||
{
|
||||
progress = /*(aProgress*100).round().toString() + "% */"[";
|
||||
done = Math.floor(aProgress * 20);
|
||||
for (i=0; i < done; i++)
|
||||
progress = progress + "=";
|
||||
progress = progress + ">";
|
||||
for (i=19; i > done; i--)
|
||||
progress = progress + " ";
|
||||
progress = progress + "]";
|
||||
}
|
||||
return progress;
|
||||
}
|
||||
|
||||
function createCursorPositionString()
|
||||
{
|
||||
var win = document.commandDispatcher.focusedWindow;
|
||||
//var x = win.scrollMaxX == 0 ? 100 : Math.round(win.scrollX / win.scrollMaxX * 100);
|
||||
var y = win.scrollMaxY == 0 ? -1 : Math.round(win.scrollY / win.scrollMaxY * 100);
|
||||
|
||||
var percent;
|
||||
if (y < 0) percent = "All";
|
||||
else if (y == 0) percent = "Top";
|
||||
else if (y < 10) percent = " " + y.toString() + "%";
|
||||
else if (y >= 100) percent = "Bot";
|
||||
else percent = y.toString() + "%";
|
||||
|
||||
return(" " + percent);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// text input functions /////////////////////////////////////////// {{{1
|
||||
@@ -1003,4 +1034,19 @@ function Vimperator()
|
||||
this.echo = this.commandline.echo;
|
||||
this.echoerr = this.commandline.echoErr;
|
||||
}
|
||||
|
||||
// provides functions for working with tabs
|
||||
function Tabs()
|
||||
{
|
||||
// @returns the index of the currently selected tab starting with 0
|
||||
this.index = function()
|
||||
{
|
||||
return getBrowser().tabContainer.selectedIndex;
|
||||
|
||||
}
|
||||
this.count = function()
|
||||
{
|
||||
return getBrowser().tabContainer.childNodes.length;
|
||||
}
|
||||
}
|
||||
// vim: set fdm=marker sw=4 ts=4 et:
|
||||
|
||||
@@ -41,7 +41,7 @@ the terms of any one of the MPL, the GPL or the LGPL.
|
||||
<script type="application/x-javascript" src="help.js"/>
|
||||
<script type="application/x-javascript" src="vimperator.js"/>
|
||||
<script type="application/x-javascript" src="commands.js"/>
|
||||
<script type="application/x-javascript" src="commandline.js"/>
|
||||
<script type="application/x-javascript" src="ui.js"/>
|
||||
<script type="application/x-javascript" src="settings.js"/>
|
||||
<script type="application/x-javascript" src="completion.js"/>
|
||||
<script type="application/x-javascript" src="bookmarks.js"/>
|
||||
@@ -74,17 +74,12 @@ the terms of any one of the MPL, the GPL or the LGPL.
|
||||
</listcols>
|
||||
</listbox>
|
||||
|
||||
<hbox id="vim-statusbar" flex="1" height="10" hidden="false" style="-moz-user-focus:ignore;">
|
||||
<textbox class="plain" id="vim-sb-field-1" flex="1" crop="right" value="about:blank"
|
||||
readonly="true" style="font-family: monospace; background-color: transparent; -moz-user-focus:ignore;"/>
|
||||
<label class="plain" id="vim-sb-field-2" flex="0" crop="right" value="[===> Loading... <===]"
|
||||
style="font-family: monospace"/>
|
||||
<label class="plain" id="vim-sb-field-3" flex="0" crop="right" value=""
|
||||
style="font-family: monospace"/>
|
||||
<label class="plain" id="vim-sb-field-4" flex="0" crop="right" value="[0/0]"
|
||||
style="font-family: monospace"/>
|
||||
<label class="plain" id="vim-sb-field-5" flex="0" crop="right" value=" Top"
|
||||
style="font-family: monospace"/>
|
||||
<hbox id="vimperator-statusline" flex="1" height="10" hidden="false" style="-moz-user-focus:ignore;">
|
||||
<textbox class="plain" id="vimperator-statusline-field-url" flex="1" readonly="true" style="font-family: monospace; background-color: transparent; -moz-user-focus:ignore;"/>
|
||||
<label class="plain" id="vimperator-statusline-field-inputbuffer" flex="0" style="font-family: monospace; padding: 0px 0px 0px 8px"/>
|
||||
<label class="plain" id="vimperator-statusline-field-progress" flex="0" style="font-family: monospace; padding: 0px 0px 0px 8px"/>
|
||||
<label class="plain" id="vimperator-statusline-field-tabcount" flex="0" style="font-family: monospace; padding: 0px 0px 0px 8px"/>
|
||||
<label class="plain" id="vimperator-statusline-field-bufferposition" flex="0" style="font-family: monospace; padding: 0px 0px 0px 8px"/>
|
||||
</hbox>
|
||||
|
||||
<listbox id="vim-completion" class="plain" rows="1" flex="1" hidden="true"
|
||||
|
||||
Reference in New Issue
Block a user