aboutsummaryrefslogtreecommitdiffstats
path: root/options.html
diff options
context:
space:
mode:
Diffstat (limited to 'options.html')
-rw-r--r--options.html87
1 files changed, 67 insertions, 20 deletions
diff --git a/options.html b/options.html
index 627560f8..8dfd23e8 100644
--- a/options.html
+++ b/options.html
@@ -1,6 +1,7 @@
<html>
<head>
<title>Vimium Options</title>
+ <script src="lib/utils.js"></script>
<script src="lib/keyboardUtils.js"></script>
<script src="linkHints.js"></script>
<script src="lib/clipboard.js"></script>
@@ -17,12 +18,13 @@
border:1px solid red;
}
.example {
- font-size:80%;
+ font-size: 12px;
color:#555;
margin-left:20px;
}
.caption {
margin-right:10px;
+ min-width: 130px;
}
td {
padding:5px 0;
@@ -70,15 +72,20 @@
tr.advancedOption {
display:none;
}
-
+ input:read-only {
+ background-color: #eee;
+ color: #666;
+ }
+ /* Boolean options have a tighter form representation than text options. */
+ td.booleanOption { font-size: 12px; }
</style>
<script type="text/javascript">
$ = function(id) { return document.getElementById(id); };
var defaultSettings = chrome.extension.getBackgroundPage().defaultSettings;
- var editableFields = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters",
- "userDefinedLinkHintCss", "keyMappings", "previousPatterns", "nextPatterns"];
+ var editableFields = ["scrollStepSize", "excludedUrls", "linkHintCharacters", "userDefinedLinkHintCss",
+ "keyMappings", "filterLinkHints", "previousPatterns", "nextPatterns"];
var canBeEmptyFields = ["excludedUrls", "keyMappings", "userDefinedLinkHintCss"];
@@ -93,8 +100,13 @@
function initializeOptions() {
populateOptions();
- for (var i = 0; i < editableFields.length; i++)
+
+ for (var i = 0; i < editableFields.length; i++) {
$(editableFields[i]).addEventListener("keyup", onOptionKeyup, false);
+ $(editableFields[i]).addEventListener("change", enableSaveButton, false);
+ $(editableFields[i]).addEventListener("change", onDataLoaded, false);
+ }
+
$("advancedOptions").addEventListener("click", openAdvancedOptions, false);
$("showCommands").addEventListener("click", function () {
showHelpDialog(
@@ -107,6 +119,10 @@
enableSaveButton();
}
+ function onDataLoaded() {
+ $("linkHintCharacters").readOnly = $("filterLinkHints").checked;
+ }
+
function enableSaveButton() { $("saveOptions").removeAttribute("disabled"); }
// Saves options to localStorage.
@@ -115,7 +131,16 @@
// the freedom to change the defaults in the future.
for (var i = 0; i < editableFields.length; i++) {
var fieldName = editableFields[i];
- var fieldValue = $(fieldName).value.trim();
+ var field = $(fieldName);
+
+ var fieldValue;
+ if (field.getAttribute("type") == "checkbox") {
+ fieldValue = field.checked ? "true" : "false";
+ } else {
+ fieldValue = field.value.trim();
+ field.value = fieldValue;
+ }
+
var defaultFieldValue = (defaultSettings[fieldName] != null) ?
defaultSettings[fieldName].toString() : "";
@@ -142,20 +167,33 @@
for (var i = 0; i < editableFields.length; i++) {
// If it's null or undefined, let's go to the default. We want to allow empty strings in certain cases.
if (localStorage[editableFields[i]] != "" && !localStorage[editableFields[i]]) {
- $(editableFields[i]).value = defaultSettings[editableFields[i]] || "";
+ var val = defaultSettings[editableFields[i]] || "";
} else {
- $(editableFields[i]).value = localStorage[editableFields[i]];
+ var val = localStorage[editableFields[i]];
}
- $(editableFields[i]).setAttribute("savedValue", $(editableFields[i]).value);
+ setFieldValue($(editableFields[i]), val);
}
+ onDataLoaded();
}
function restoreToDefaults() {
- for (var i = 0; i < editableFields.length; i++)
- $(editableFields[i]).value = defaultSettings[editableFields[i]] || "";
+ for (var i = 0; i < editableFields.length; i++) {
+ var val = defaultSettings[editableFields[i]] || "";
+ setFieldValue($(editableFields[i]), val);
+ }
+ onDataLoaded();
enableSaveButton();
}
+ function setFieldValue(field, value) {
+ if (field.getAttribute('type') == 'checkbox')
+ field.checked = value == "true";
+ else
+ field.value = value;
+
+ field.setAttribute("savedValue", value);
+ }
+
function openAdvancedOptions(event) {
var elements = document.getElementsByClassName("advancedOption");
for (var i = 0; i < elements.length; i++)
@@ -176,12 +214,6 @@
</td>
</tr>
<tr>
- <td><span class="caption">Default zoom level</span></td>
- <td>
- <input id="defaultZoomLevel" type="text" value="100" style="width:50px" />%
- </td>
- </tr>
- <tr>
<td colspan="3">
Excluded URLs<br/>
<div class="help">
@@ -200,7 +232,7 @@
</td>
</tr>
<tr class="advancedOption">
- <td class="caption">Key mappings</td>
+ <td class="caption">Custom key<br/>mappings</td>
<td id="mappingsHelp" verticalAlign="top">
<div class="help">
<div class="example">
@@ -244,11 +276,26 @@
</td>
</tr>
<tr class="advancedOption">
+ <td class="caption"></td>
+ <td verticalAlign="top" class="booleanOption">
+ <div class="help">
+ <div class="example">
+ After typing "F" to enter link hinting mode, this option lets you type the text of a link
+ to select it.
+ </div>
+ </div>
+ <label>
+ <input id="filterLinkHints" type="checkbox"/>
+ Use the link's name and numbers for link hint filtering
+ </label>
+ </td>
+ </tr>
+ <tr class="advancedOption">
<td class="caption">Previous Patterns</td>
<td verticalAlign="top">
<div class="help">
<div class="example">
- The Patterns split by ','.
+ Vimium will match against these patterns to navigate to a 'previous' page.
</div>
</div>
<input id="previousPatterns" type="text" style="width:320px" />
@@ -259,7 +306,7 @@
<td verticalAlign="top">
<div class="help">
<div class="example">
- The Patterns split by ','.
+ Vimium will match against these patterns to navigate to a 'next' page.
</div>
</div>
<input id="nextPatterns" type="text" style="width:320px" />