Bug 704204 - Allow user to increase Web Console font size; r=msucan

This commit is contained in:
Jen Fong-Adwent 2012-08-22 23:18:48 +03:00
Родитель ab35ee90b7
Коммит 8cc8a0c9af
9 изменённых файлов: 159 добавлений и 114 удалений

Просмотреть файл

@ -1090,6 +1090,9 @@ pref("devtools.webconsole.filter.warn", true);
pref("devtools.webconsole.filter.info", true);
pref("devtools.webconsole.filter.log", true);
// Text size in the Web Console. Use 0 for the system default size.
pref("devtools.webconsole.fontSize", 0);
// The number of lines that are displayed in the web console for the Net,
// CSS, JS and Web Developer categories.
pref("devtools.hud.loglimit.network", 200);

Просмотреть файл

@ -24,6 +24,7 @@ MOCHITEST_BROWSER_FILES = \
browser_webconsole_bug_597136_network_requests_from_chrome.js \
browser_webconsole_completion.js \
browser_webconsole_console_logging_api.js \
browser_webconsole_change_font_size.js \
browser_webconsole_chrome.js \
browser_webconsole_execution_scope.js \
browser_webconsole_for_of.js \

Просмотреть файл

@ -0,0 +1,44 @@
/* vim:set ts=2 sw=2 sts=2 et: */
/* ***** BEGIN LICENSE BLOCK *****
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*
* Contributor(s):
* Jennifer Fong <jfong@mozilla.com>
*
* ***** END LICENSE BLOCK ***** */
const TEST_URI = "http://example.com/";
function test() {
addTab(TEST_URI);
browser.addEventListener("load", function onLoad() {
browser.removeEventListener("load", onLoad, true);
Services.prefs.setIntPref("devtools.webconsole.fontSize", 10);
openConsole(null, testFontSizeChange);
}, true);
}
function testFontSizeChange(hud) {
let inputNode = hud.jsterm.inputNode;
let outputNode = hud.jsterm.outputNode;
outputNode.focus();
EventUtils.synthesizeKey("-", { accelKey: true });
is(inputNode.style.fontSize, "10px", "input font stays at same size with ctrl+-");
is(outputNode.style.fontSize, inputNode.style.fontSize, "output font stays at same size with ctrl+-");
EventUtils.synthesizeKey("=", { accelKey: true });
is(inputNode.style.fontSize, "11px", "input font increased with ctrl+=");
is(outputNode.style.fontSize, inputNode.style.fontSize, "output font stays at same size with ctrl+=");
EventUtils.synthesizeKey("-", { accelKey: true });
is(inputNode.style.fontSize, "10px", "font decreased with ctrl+-");
is(outputNode.style.fontSize, inputNode.style.fontSize, "output font stays at same size with ctrl+-");
EventUtils.synthesizeKey("0", { accelKey: true });
is(inputNode.style.fontSize, "", "font reset with ctrl+0");
is(outputNode.style.fontSize, inputNode.style.fontSize, "output font stays at same size with ctrl+0");
finishTest();
}

Просмотреть файл

@ -152,6 +152,9 @@ const THROTTLE_UPDATES = 1000; // milliseconds
// The preference prefix for all of the Web Console filters.
const FILTER_PREFS_PREFIX = "devtools.webconsole.filter.";
// The minimum font size.
const MIN_FONT_SIZE = 10;
/**
* A WebConsoleFrame instance is an interactive console initialized *per tab*
* that displays console log data as well as provides an interactive terminal to
@ -318,11 +321,23 @@ WebConsoleFrame.prototype = {
this.filterBox = doc.querySelector(".hud-filter-box");
this.outputNode = doc.querySelector(".hud-output-node");
this.completeNode = doc.querySelector(".jsterm-complete-node");
this.inputNode = doc.querySelector(".jsterm-input-node");
this._setFilterTextBoxEvents();
this._initPositionUI();
this._initFilterButtons();
let fontSize = Services.prefs.getIntPref("devtools.webconsole.fontSize");
if (fontSize != 0) {
fontSize = Math.max(MIN_FONT_SIZE, fontSize);
this.outputNode.style.fontSize = fontSize + "px";
this.completeNode.style.fontSize = fontSize + "px";
this.inputNode.style.fontSize = fontSize + "px";
}
let saveBodies = doc.getElementById("saveBodies");
saveBodies.addEventListener("command", function() {
this.saveRequestAndResponseBodies = !this.saveRequestAndResponseBodies;
@ -511,6 +526,52 @@ WebConsoleFrame.prototype = {
this.jsterm && this.jsterm.inputNode.focus();
},
/**
* Increase, decrease or reset the font size.
*
* @param string size
* The size of the font change. Accepted values are "+" and "-".
* An unmatched size assumes a font reset.
*/
changeFontSize: function WCF_changeFontSize(aSize)
{
let fontSize = this.window
.getComputedStyle(this.outputNode, null)
.getPropertyValue("font-size").replace("px", "");
if (this.outputNode.style.fontSize) {
fontSize = this.outputNode.style.fontSize.replace("px", "");
}
if (aSize == "+" || aSize == "-") {
fontSize = parseInt(fontSize, 10);
if (aSize == "+") {
fontSize += 1;
}
else {
fontSize -= 1;
}
if (fontSize < MIN_FONT_SIZE) {
fontSize = MIN_FONT_SIZE;
}
Services.prefs.setIntPref("devtools.webconsole.fontSize", fontSize);
fontSize = fontSize + "px";
this.completeNode.style.fontSize = fontSize;
this.inputNode.style.fontSize = fontSize;
this.outputNode.style.fontSize = fontSize;
}
else {
this.completeNode.style.fontSize = "";
this.inputNode.style.fontSize = "";
this.outputNode.style.fontSize = "";
Services.prefs.clearUserPref("devtools.webconsole.fontSize");
}
},
/**
* Handler for all of the messages coming from the Web Console content script.
*
@ -3363,6 +3424,9 @@ CommandController.prototype = {
case "cmd_copy":
// Only enable "copy" if nodes are selected.
return this.owner.outputNode.selectedCount > 0;
case "cmd_fontSizeEnlarge":
case "cmd_fontSizeReduce":
case "cmd_fontSizeReset":
case "cmd_selectAll":
return true;
}
@ -3377,6 +3441,15 @@ CommandController.prototype = {
case "cmd_selectAll":
this.selectAll();
break;
case "cmd_fontSizeEnlarge":
this.owner.changeFontSize("+");
break;
case "cmd_fontSizeReduce":
this.owner.changeFontSize("-");
break;
case "cmd_fontSizeReset":
this.owner.changeFontSize("");
break;
}
}
};

Просмотреть файл

@ -18,6 +18,21 @@
<script type="text/javascript" src="webconsole.js"/>
<commandset id="editMenuCommands"/>
<commandset>
<command id="cmd_fullZoomEnlarge" oncommand="goDoCommand('cmd_fontSizeEnlarge');"/>
<command id="cmd_fullZoomReduce" oncommand="goDoCommand('cmd_fontSizeReduce');"/>
<command id="cmd_fullZoomReset" oncommand="goDoCommand('cmd_fontSizeReset');"/>
</commandset>
<keyset id="fontSizeChangeSet">
<key id="key_fullZoomReduce" key="&fullZoomReduceCmd.commandkey;" command="cmd_fullZoomReduce" modifiers="accel"/>
<key key="&fullZoomReduceCmd.commandkey2;" command="cmd_fullZoomReduce" modifiers="accel"/>
<key id="key_fullZoomEnlarge" key="&fullZoomEnlargeCmd.commandkey;" command="cmd_fullZoomEnlarge" modifiers="accel"/>
<key key="&fullZoomEnlargeCmd.commandkey2;" command="cmd_fullZoomEnlarge" modifiers="accel"/>
<key key="&fullZoomEnlargeCmd.commandkey3;" command="cmd_fullZoomEnlarge" modifiers="accel"/>
<key id="key_fullZoomReset" key="&fullZoomResetCmd.commandkey;" command="cmd_fullZoomReset" modifiers="accel"/>
<key key="&fullZoomResetCmd.commandkey2;" command="cmd_fullZoomReset" modifiers="accel"/>
</keyset>
<keyset id="editMenuKeys"/>
<popupset id="mainPopupSet">

Просмотреть файл

@ -78,3 +78,13 @@
<!ENTITY btnClear.label "Clear">
<!ENTITY btnClear.tooltip "Clear the Web Console output">
<!ENTITY btnClose.tooltip "Close the Web Console">
<!ENTITY fullZoomEnlargeCmd.commandkey "+">
<!ENTITY fullZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards -->
<!ENTITY fullZoomEnlargeCmd.commandkey3 "">
<!ENTITY fullZoomReduceCmd.commandkey "-">
<!ENTITY fullZoomReduceCmd.commandkey2 "">
<!ENTITY fullZoomResetCmd.commandkey "0">
<!ENTITY fullZoomResetCmd.commandkey2 "">

Просмотреть файл

@ -18,7 +18,7 @@
color: GrayText;
margin-top: 0;
margin-bottom: 0;
font: 12px "DejaVu Sans Mono", monospace;
font-family: "DejaVu Sans Mono", monospace;
}
.hud-msg-node {
@ -43,7 +43,7 @@
-moz-margin-start: 3px;
-moz-margin-end: 6px;
white-space: pre-wrap;
font: 12px "DejaVu Sans Mono", monospace;
font-family: "DejaVu Sans Mono", monospace;
}
.webconsole-msg-body-piece {
@ -63,7 +63,7 @@
background-color: red;
border-radius: 40px;
font: message-box;
font-size: 10px;
font-size: 0.9em;
font-weight: 600;
}
@ -97,7 +97,7 @@
.jsterm-input-node,
.jsterm-complete-node {
font: 12px "DejaVu Sans Mono", monospace;
font: 0.9em "DejaVu Sans Mono", monospace;
}
.hud-output-node {
@ -105,6 +105,7 @@
border-bottom: 1px solid ThreeDShadow;
border-top: 1px solid ThreeDShadow;
margin: 0;
font-size: 0.9em;
}
.hud-filtered-by-type,
@ -214,36 +215,6 @@
}
/* JSTerm Styles */
.jsterm-wrapper-node {
font-family: monospace;
font-size: 1em;
background-color: #000;
border: 1px solid #333;
padding: 0.1em;
width: 100%;
height: 400px;
}
.jsterm-output-node {
width: 100%;
height: 400px;
color: white;
background-color: black;
overflow: auto;
overflow-x: auto;
position: absolute;
-moz-box-direction: reverse;
}
.jsterm-scroll-to-node {
height: 1px;
width: 1px;
position: relative;
top: 92%;
display: block;
}
.jsterm-input-node,
.jsterm-complete-node {
border: none;
@ -264,7 +235,3 @@
.jsterm-complete-node > .textbox-input-box > .textbox-textarea {
color: GrayText;
}
.jsterm-output-line {
font-size: 1em;
}

Просмотреть файл

@ -20,7 +20,7 @@
color: GrayText;
margin-top: 0;
margin-bottom: 0;
font: 11px Menlo, Monaco, monospace;
font-family: Menlo, Monaco, monospace;
}
.hud-msg-node {
@ -45,7 +45,7 @@
-moz-margin-start: 3px;
-moz-margin-end: 6px;
white-space: pre-wrap;
font: 11px Menlo, Monaco, monospace;
font-family: Menlo, Monaco, monospace;
}
.webconsole-msg-body-piece {
@ -65,7 +65,7 @@
background-color: red;
border-radius: 40px;
font: message-box;
font-size: 10px;
font-size: 0.9em;
font-weight: 600;
}
@ -90,7 +90,7 @@
.jsterm-input-node,
.jsterm-complete-node {
font: 11px Menlo, Monaco, monospace;
font: Menlo, Monaco, monospace;
}
.hud-output-node {
@ -282,36 +282,6 @@
}
/* JSTerm Styles */
.jsterm-wrapper-node {
font-family: monospace;
font-size: 1em;
background-color: #000;
border: 1px solid #333;
padding: 0.1em;
width: 100%;
height: 400px;
}
.jsterm-output-node {
width: 100%;
height: 400px;
color: white;
background-color: black;
overflow: auto;
overflow-x: auto;
position: absolute;
-moz-box-direction: reverse;
}
.jsterm-scroll-to-node {
height: 1px;
width: 1px;
position: relative;
top: 92%;
display: block;
}
.jsterm-input-container {
background: white;
}
@ -336,10 +306,6 @@
color: GrayText;
}
.jsterm-output-line {
font-size: 1em;
}
.hud-console-filter-toolbar {
background: @scopeBarBackground@;
border-bottom: @scopeBarSeparatorBorder@;

Просмотреть файл

@ -18,7 +18,7 @@
color: GrayText;
margin-top: 0;
margin-bottom: 0;
font: 12px Consolas, Lucida Console, monospace;
font-family: Consolas, Lucida Console, monospace;
}
.hud-msg-node {
@ -43,7 +43,7 @@
-moz-margin-start: 3px;
-moz-margin-end: 6px;
white-space: pre-wrap;
font: 12px Consolas, Lucida Console, monospace;
font-family: Consolas, Lucida Console, monospace;
}
.webconsole-msg-body-piece {
@ -63,7 +63,7 @@
background-color: red;
border-radius: 40px;
font: message-box;
font-size: 10px;
font-size: 0.9em;
font-weight: 600;
}
@ -88,7 +88,7 @@
.jsterm-input-node,
.jsterm-complete-node {
font: 12px Consolas, Lucida Console, monospace;
font-family: Consolas, Lucida Console, monospace;
}
.hud-output-node {
@ -232,36 +232,6 @@
}
/* JSTerm Styles */
.jsterm-wrapper-node {
font-family: monospace;
font-size: 1em;
background-color: #000;
border: 1px solid #333;
padding: 0.1em;
width: 100%;
height: 400px;
}
.jsterm-output-node {
width: 100%;
height: 400px;
color: white;
background-color: black;
overflow: auto;
overflow-x: auto;
position: absolute;
-moz-box-direction: reverse;
}
.jsterm-scroll-to-node {
height: 1px;
width: 1px;
position: relative;
top: 92%;
display: block;
}
.jsterm-input-node,
.jsterm-complete-node {
border: none;
@ -282,10 +252,6 @@
color: GrayText;
}
.jsterm-output-line {
font-size: 1em;
}
.hud-console-filter-toolbar {
padding: 1px 2px;
-moz-box-align: center;