1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-22 19:57:58 +01:00

merge faster initial setting of gui options

This commit is contained in:
Doug Kearns
2007-10-27 01:44:20 +00:00
parent c222232df4
commit 63df7e8ba2
3 changed files with 46 additions and 15 deletions

View File

@@ -105,6 +105,11 @@ vimperator.Option = function(names, type, extra_info) //{{{
}
return false;
}
this.reset = function()
{
this.value = this.default_value;
}
} //}}}
vimperator.Options = function() //{{{
@@ -112,12 +117,14 @@ vimperator.Options = function() //{{{
////////////////////////////////////////////////////////////////////////////////
////////////////////// PRIVATE SECTION /////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{
var firefox_prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
var vimperator_prefs = firefox_prefs.getBranch("extensions.vimperator.");
var options = [];
// save if we already changed a GUI related option, used for setInitialGUI
var guioptions_done = false, showtabline_done = false, laststatus_done = false;
function optionsIterator()
{
for (var i = 0; i < options.length; i++)
@@ -199,17 +206,19 @@ vimperator.Options = function() //{{{
function setGuiOptions(value)
{
// hide menubar
//document.getElementById("toolbar-menubar").collapsed = value.indexOf("m") > -1 ? false : true;
//document.getElementById("toolbar-menubar").hidden = value.indexOf("m") > -1 ? false : true;
document.getElementById("toolbar-menubar").collapsed = value.indexOf("m") > -1 ? false : true;
document.getElementById("toolbar-menubar").hidden = value.indexOf("m") > -1 ? false : true;
// and main toolbar
document.getElementById("nav-bar").collapsed = value.indexOf("T") > -1 ? false : true;
document.getElementById("nav-bar").hidden = value.indexOf("T") > -1 ? false : true;
// and bookmarks toolbar
document.getElementById("PersonalToolbar").collapsed = value.indexOf("b") > -1 ? false : true;
document.getElementById("PersonalToolbar").hidden = value.indexOf("b") > -1 ? false : true;
guioptions_done = true;
}
function setStatusLine(value)
function setLastStatus(value)
{
if (value == 0)
{
@@ -225,6 +234,8 @@ vimperator.Options = function() //{{{
document.getElementById("status-bar").collapsed = false;
document.getElementById("status-bar").hidden = false;
}
laststatus_done = true;
}
function setShowTabline(value)
@@ -247,6 +258,8 @@ vimperator.Options = function() //{{{
storePreference("browser.tabs.autoHide", false);
tabs.collapsed = false;
}
showtabline_done = true;
}
function setTitleString(value)
@@ -358,7 +371,18 @@ vimperator.Options = function() //{{{
list += "</table>";
vimperator.commandline.echo(list, vimperator.commandline.HL_NORMAL, true);
vimperator.commandline.echo(list, vimperator.commandline.HL_NORMAL, vimperator.commandline.FORCE_MULTILINE);
}
// this hack is only needed, because we need to do asynchronous loading of the .vimperatorrc
this.setInitialGUI = function()
{
if (!guioptions_done)
this.get("guioptions").reset();
if (!laststatus_done)
this.get("laststatus").reset();
if (!showtabline_done)
this.get("showtabline").reset();
}
// TODO: separate Preferences from Options? Would these utility functions
@@ -522,7 +546,7 @@ vimperator.Options = function() //{{{
"</ul>" +
"NOTE: laststatus=1 not implemented yet.",
default_value: 2,
setter: function(value) { setStatusLine(value); },
setter: function(value) { setLastStatus(value); },
validator: function (value) { if (value >= 0 && value <= 2) return true; else return false; }
}
));
@@ -717,9 +741,13 @@ vimperator.Options = function() //{{{
));
//}}}
setShowTabline(this.showtabline);
setGuiOptions(this.guioptions);
setStatusLine(this.laststatus);
// we start with an "empty" GUI so that no toolbars or tabbar is shown if the user
// sets them to empty in the .vimperatorrc, which is sourced asynchronously
setShowTabline(0);
setGuiOptions("");
setLastStatus(0);
guioptions_done = showtabline_done = laststatus_done = false;
setTitleString(this.titlestring);
setPopups(this.popups);
} //}}}