diff options
Diffstat (limited to 'pages')
| -rw-r--r-- | pages/blank.html | 23 | ||||
| -rw-r--r-- | pages/completion_engines.html | 23 | ||||
| -rw-r--r-- | pages/help_dialog.coffee | 9 | ||||
| -rw-r--r-- | pages/help_dialog.html | 25 | ||||
| -rw-r--r-- | pages/hud.coffee | 32 | ||||
| -rw-r--r-- | pages/hud.html | 3 | ||||
| -rw-r--r-- | pages/logging.coffee | 1 | ||||
| -rw-r--r-- | pages/logging.html | 23 | ||||
| -rw-r--r-- | pages/options.coffee | 99 | ||||
| -rw-r--r-- | pages/options.css | 7 | ||||
| -rw-r--r-- | pages/options.html | 82 | ||||
| -rw-r--r-- | pages/popup.html | 2 | ||||
| -rw-r--r-- | pages/vimium_resources.html | 24 | ||||
| -rw-r--r-- | pages/vomnibar.coffee | 14 | ||||
| -rw-r--r-- | pages/vomnibar.html | 1 |
15 files changed, 302 insertions, 66 deletions
diff --git a/pages/blank.html b/pages/blank.html index c238282d..d026912e 100644 --- a/pages/blank.html +++ b/pages/blank.html @@ -1,7 +1,28 @@ <html> <head> <title>New Tab</title> - <link rel="import" href="vimium_resources.html"> + <script src="../lib/utils.js"></script> + <script src="../lib/keyboard_utils.js"></script> + <script src="../lib/dom_utils.js"></script> + <script src="../lib/rect.js"></script> + <script src="../lib/handler_stack.js"></script> + <script src="../lib/settings.js"></script> + <script src="../lib/find_mode_history.js"></script> + <script src="../content_scripts/mode.js"></script> + <script src="../content_scripts/ui_component.js"></script> + <script src="../content_scripts/link_hints.js"></script> + <script src="../content_scripts/vomnibar.js"></script> + <script src="../content_scripts/scroller.js"></script> + <script src="../content_scripts/marks.js"></script> + <script src="../content_scripts/mode_insert.js"></script> + <script src="../content_scripts/mode_find.js"></script> + <script src="../content_scripts/mode_key_handler.js"></script> + <script src="../content_scripts/mode_visual.js"></script> + <script src="../content_scripts/hud.js"></script> + <script src="../content_scripts/mode_normal.js"></script> + <script src="../content_scripts/vimium_frontend.js"></script> + <link rel="stylesheet" type="text/css" href="../content_scripts/vimium.css" /> + </head> <body> </body> diff --git a/pages/completion_engines.html b/pages/completion_engines.html index 0c350664..3313b26c 100644 --- a/pages/completion_engines.html +++ b/pages/completion_engines.html @@ -4,7 +4,28 @@ <!-- We re-use some styling from the options page, so that the look and feel here is similar --> <link rel="stylesheet" type="text/css" href="options.css"> <link rel="stylesheet" type="text/css" href="completion_engines.css"> - <link rel="import" href="vimium_resources.html"> + <script src="../lib/utils.js"></script> + <script src="../lib/keyboard_utils.js"></script> + <script src="../lib/dom_utils.js"></script> + <script src="../lib/rect.js"></script> + <script src="../lib/handler_stack.js"></script> + <script src="../lib/settings.js"></script> + <script src="../lib/find_mode_history.js"></script> + <script src="../content_scripts/mode.js"></script> + <script src="../content_scripts/ui_component.js"></script> + <script src="../content_scripts/link_hints.js"></script> + <script src="../content_scripts/vomnibar.js"></script> + <script src="../content_scripts/scroller.js"></script> + <script src="../content_scripts/marks.js"></script> + <script src="../content_scripts/mode_insert.js"></script> + <script src="../content_scripts/mode_find.js"></script> + <script src="../content_scripts/mode_key_handler.js"></script> + <script src="../content_scripts/mode_visual.js"></script> + <script src="../content_scripts/hud.js"></script> + <script src="../content_scripts/mode_normal.js"></script> + <script src="../content_scripts/vimium_frontend.js"></script> + <link rel="stylesheet" type="text/css" href="../content_scripts/vimium.css" /> + <script src="../background_scripts/completion_engines.js"></script> <script src="completion_engines.js"></script> </head> diff --git a/pages/help_dialog.coffee b/pages/help_dialog.coffee index 4ac9116b..08180a72 100644 --- a/pages/help_dialog.coffee +++ b/pages/help_dialog.coffee @@ -73,7 +73,7 @@ HelpDialog = for key in command.keys.sort compareKeys @instantiateHtmlTemplate keysElement, "#keysTemplate", (element) -> lastElement = element - $$(element, ".vimiumHelpDialogKey").innerHTML = Utils.escapeHtml key + $$(element, ".vimiumHelpDialogKey").textContent = key # And strip off the trailing ", ", if necessary. lastElement.removeChild $$ lastElement, ".commaSeparator" if lastElement @@ -83,7 +83,7 @@ HelpDialog = commandNameElement.textContent = command.command commandNameElement.title = "Click to copy \"#{command.command}\" to clipboard." commandNameElement.addEventListener "click", -> - chrome.runtime.sendMessage handler: "copyToClipboard", data: commandNameElement.textContent + HUD.copyToClipboard commandNameElement.textContent HUD.showForDuration("Yanked #{commandNameElement.textContent}.", 2000) @showAdvancedCommands(@getShowAdvancedCommands()) @@ -109,7 +109,7 @@ HelpDialog = vimiumHelpDialogContainer.scrollTop += scrollHeightDelta if 0 < scrollHeightDelta showAdvancedCommands: (visible) -> - document.getElementById("toggleAdvancedCommands").innerHTML = + document.getElementById("toggleAdvancedCommands").textContent = if visible then "Hide advanced commands" else "Show advanced commands" # Add/remove the showAdvanced class to show/hide advanced commands. @@ -131,6 +131,9 @@ UIComponentServer.registerHandler (event) -> # Abandon any HUD which might be showing within the help dialog. HUD.abandon() +document.addEventListener "DOMContentLoaded", -> + DomUtils.injectUserCss() # Manually inject custom user styles. + root = exports ? window root.HelpDialog = HelpDialog root.isVimiumHelpDialog = true diff --git a/pages/help_dialog.html b/pages/help_dialog.html index 7bc0d86c..7f053265 100644 --- a/pages/help_dialog.html +++ b/pages/help_dialog.html @@ -1,7 +1,28 @@ <html> <head> <title>Vimium Help</title> - <link rel="import" href="vimium_resources.html"> + <script src="../lib/utils.js"></script> + <script src="../lib/keyboard_utils.js"></script> + <script src="../lib/dom_utils.js"></script> + <script src="../lib/rect.js"></script> + <script src="../lib/handler_stack.js"></script> + <script src="../lib/settings.js"></script> + <script src="../lib/find_mode_history.js"></script> + <script src="../content_scripts/mode.js"></script> + <script src="../content_scripts/ui_component.js"></script> + <script src="../content_scripts/link_hints.js"></script> + <script src="../content_scripts/vomnibar.js"></script> + <script src="../content_scripts/scroller.js"></script> + <script src="../content_scripts/marks.js"></script> + <script src="../content_scripts/mode_insert.js"></script> + <script src="../content_scripts/mode_find.js"></script> + <script src="../content_scripts/mode_key_handler.js"></script> + <script src="../content_scripts/mode_visual.js"></script> + <script src="../content_scripts/hud.js"></script> + <script src="../content_scripts/mode_normal.js"></script> + <script src="../content_scripts/vimium_frontend.js"></script> + <link rel="stylesheet" type="text/css" href="../content_scripts/vimium.css" /> + <script type="text/javascript" src="ui_component_server.js"></script> <script type="text/javascript" src="help_dialog.js"></script> </head> @@ -87,7 +108,7 @@ <a class="vimiumHelDialogLink" target="_blank" href="https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb/reviews">Leave us feedback</a>.<br/> - Found a bug? <a class="vimiumHelDialogLink" target="_blank" href="http://github.com/philc/vimium/issues">Report it here</a>. + Found a bug? <a class="vimiumHelDialogLink" target="_blank" href="https://github.com/philc/vimium/issues">Report it here</a>. </div> <div class="vimiumReset vimiumColumn" style="text-align:right"> <span class="vimiumReset">Version <span id="help-dialog-version"></span></span><br/> diff --git a/pages/hud.coffee b/pages/hud.coffee index 36e4cbd2..5ff2e07e 100644 --- a/pages/hud.coffee +++ b/pages/hud.coffee @@ -12,25 +12,28 @@ setTextInInputElement = (inputElement, text) -> selection.removeAllRanges() selection.addRange range +document.addEventListener "DOMContentLoaded", -> + DomUtils.injectUserCss() # Manually inject custom user styles. + document.addEventListener "keydown", (event) -> inputElement = document.getElementById "hud-find-input" return unless inputElement? # Don't do anything if we're not in find mode. - if (event.keyCode in [keyCodes.backspace, keyCodes.deleteKey] and inputElement.textContent.length == 0) or - event.keyCode == keyCodes.enter or KeyboardUtils.isEscape event + if (KeyboardUtils.isBackspace(event) and inputElement.textContent.length == 0) or + event.key == "Enter" or KeyboardUtils.isEscape event UIComponentServer.postMessage name: "hideFindMode" - exitEventIsEnter: event.keyCode == keyCodes.enter + exitEventIsEnter: event.key == "Enter" exitEventIsEscape: KeyboardUtils.isEscape event - else if event.keyCode == keyCodes.upArrow + else if event.key == "ArrowUp" if rawQuery = FindModeHistory.getQuery findMode.historyIndex + 1 findMode.historyIndex += 1 findMode.partialQuery = findMode.rawQuery if findMode.historyIndex == 0 setTextInInputElement inputElement, rawQuery findMode.executeQuery() - else if event.keyCode == keyCodes.downArrow + else if event.key == "ArrowDown" findMode.historyIndex = Math.max -1, findMode.historyIndex - 1 rawQuery = if 0 <= findMode.historyIndex then FindModeHistory.getQuery findMode.historyIndex else findMode.partialQuery setTextInInputElement inputElement, rawQuery @@ -58,7 +61,10 @@ handlers = hud.innerText = "/\u200A" # \u200A is a "hair space", to leave enough space before the caret/first char. inputElement = document.createElement "span" - inputElement.contentEditable = "plaintext-only" + try # NOTE(mrmr1993): Chrome supports non-standard "plaintext-only", which is what we *really* want. + inputElement.contentEditable = "plaintext-only" + catch # Fallback to standard-compliant version. + inputElement.contentEditable = "true" inputElement.id = "hud-find-input" hud.appendChild inputElement @@ -89,5 +95,19 @@ handlers = " (No matches)" countElement.textContent = if showMatchText then countText else "" + copyToClipboard: (data) -> + focusedElement = document.activeElement + Clipboard.copy data + focusedElement?.focus() + window.parent.focus() + UIComponentServer.postMessage {name: "unfocusIfFocused"} + + pasteFromClipboard: -> + focusedElement = document.activeElement + data = Clipboard.paste() + focusedElement?.focus() + window.parent.focus() + UIComponentServer.postMessage {name: "pasteResponse", data} + UIComponentServer.registerHandler ({data}) -> handlers[data.name ? data]? data FindModeHistory.init() diff --git a/pages/hud.html b/pages/hud.html index 60d737e1..7bd27171 100644 --- a/pages/hud.html +++ b/pages/hud.html @@ -2,9 +2,12 @@ <head> <title>HUD</title> <link rel="stylesheet" type="text/css" href="../content_scripts/vimium.css" /> + <script type="text/javascript" src="../lib/utils.js"></script> <script type="text/javascript" src="../lib/dom_utils.js"></script> + <script type="text/javascript" src="../lib/settings.js"></script> <script type="text/javascript" src="../lib/keyboard_utils.js"></script> <script type="text/javascript" src="../lib/find_mode_history.js"></script> + <script type="text/javascript" src="../lib/clipboard.js"></script> <script type="text/javascript" src="ui_component_server.js"></script> <script type="text/javascript" src="hud.js"></script> </head> diff --git a/pages/logging.coffee b/pages/logging.coffee index 3ccef4ff..a437b442 100644 --- a/pages/logging.coffee +++ b/pages/logging.coffee @@ -1,6 +1,7 @@ $ = (id) -> document.getElementById id document.addEventListener "DOMContentLoaded", -> + DomUtils.injectUserCss() # Manually inject custom user styles. $("vimiumVersion").innerText = Utils.getCurrentVersion() chrome.storage.local.get "installDate", (items) -> diff --git a/pages/logging.html b/pages/logging.html index bc4ffb80..17aafd70 100644 --- a/pages/logging.html +++ b/pages/logging.html @@ -1,7 +1,28 @@ <html> <head> <title>Vimium Logging</title> - <link rel="import" href="vimium_resources.html"> + <script src="../lib/utils.js"></script> + <script src="../lib/keyboard_utils.js"></script> + <script src="../lib/dom_utils.js"></script> + <script src="../lib/rect.js"></script> + <script src="../lib/handler_stack.js"></script> + <script src="../lib/settings.js"></script> + <script src="../lib/find_mode_history.js"></script> + <script src="../content_scripts/mode.js"></script> + <script src="../content_scripts/ui_component.js"></script> + <script src="../content_scripts/link_hints.js"></script> + <script src="../content_scripts/vomnibar.js"></script> + <script src="../content_scripts/scroller.js"></script> + <script src="../content_scripts/marks.js"></script> + <script src="../content_scripts/mode_insert.js"></script> + <script src="../content_scripts/mode_find.js"></script> + <script src="../content_scripts/mode_key_handler.js"></script> + <script src="../content_scripts/mode_visual.js"></script> + <script src="../content_scripts/hud.js"></script> + <script src="../content_scripts/mode_normal.js"></script> + <script src="../content_scripts/vimium_frontend.js"></script> + <link rel="stylesheet" type="text/css" href="../content_scripts/vimium.css" /> + <script src="logging.js"></script> <style type="text/css"> body { diff --git a/pages/options.coffee b/pages/options.coffee index 7021322a..9e95bcd3 100644 --- a/pages/options.coffee +++ b/pages/options.coffee @@ -39,9 +39,14 @@ class Option bgSettings.clear @field @fetch() + @onSaveCallbacks: [] + @onSave: (callback) -> + @onSaveCallbacks.push callback + # Static method. @saveOptions: -> Option.all.map (option) -> option.save() + callback() for callback in @onSaveCallbacks # Abstract method; only implemented in sub-classes. # Populate the option's DOM element (@element) with the setting's current value. @@ -93,8 +98,10 @@ class ExclusionRulesOption extends Option element populateElement: (rules) -> - for rule in rules - @appendRule rule + # For the case of restoring a backup, we first have to remove existing rules. + exclusionRules = $ "exclusionRules" + exclusionRules.deleteRow 1 while exclusionRules.rows[1] + @appendRule rule for rule in rules # Append a row for a new rule. Return the newly-added element. appendRule: (rule) -> @@ -193,6 +200,7 @@ Options = nextPatterns: NonEmptyTextOption previousPatterns: NonEmptyTextOption regexFindMode: CheckBoxOption + ignoreKeyboardLayout: CheckBoxOption scrollStepSize: NumberOption smoothScroll: CheckBoxOption grabBackFocus: CheckBoxOption @@ -203,7 +211,7 @@ Options = initOptionsPage = -> onUpdated = -> $("saveOptions").removeAttribute "disabled" - $("saveOptions").innerHTML = "Save Changes" + $("saveOptions").textContent = "Save Changes" # Display either "linkHintNumbers" or "linkHintCharacters", depending upon "filterLinkHints". maintainLinkHintsView = -> @@ -221,10 +229,10 @@ initOptionsPage = -> maintainAdvancedOptions = -> if bgSettings.get "optionsPage_showAdvancedOptions" $("advancedOptions").style.display = "table-row-group" - $("advancedOptionsButton").innerHTML = "Hide Advanced Options" + $("advancedOptionsButton").textContent = "Hide Advanced Options" else $("advancedOptions").style.display = "none" - $("advancedOptionsButton").innerHTML = "Show Advanced Options" + $("advancedOptionsButton").textContent = "Show Advanced Options" maintainAdvancedOptions() toggleAdvancedOptions = (event) -> @@ -237,9 +245,10 @@ initOptionsPage = -> HelpDialog.toggle showAllCommandDetails: true saveOptions = -> + $("linkHintCharacters").value = $("linkHintCharacters").value.toLowerCase() Option.saveOptions() $("saveOptions").disabled = true - $("saveOptions").innerHTML = "No Changes" + $("saveOptions").textContent = "Saved" $("saveOptions").addEventListener "click", saveOptions $("advancedOptionsButton").addEventListener "click", toggleAdvancedOptions @@ -248,7 +257,7 @@ initOptionsPage = -> for element in document.getElementsByClassName "nonEmptyTextOption" element.className = element.className + " example info" - element.innerHTML = "Leave empty to reset this option." + element.textContent = "Leave empty to reset this option." window.onbeforeunload = -> "You have unsaved changes to options." unless $("saveOptions").disabled @@ -264,10 +273,30 @@ initOptionsPage = -> maintainLinkHintsView() initPopupPage = -> - chrome.tabs.getSelected null, (tab) -> + chrome.tabs.query { active: true, currentWindow: true }, ([tab]) -> exclusions = null document.getElementById("optionsLink").setAttribute "href", chrome.runtime.getURL("pages/options.html") + tabPorts = chrome.extension.getBackgroundPage().portsForTab[tab.id] + unless tabPorts and Object.keys(tabPorts).length > 0 + # The browser has disabled Vimium on this page. Place a message explaining this into the popup. + document.body.innerHTML = """ + <div style="width: 400px; margin: 5px;"> + <p style="margin-bottom: 5px;"> + Vimium is not running on this page. + </p> + <p style="margin-bottom: 5px;"> + Your browser does not run web extensions like Vimium on certain pages, + usually for security reasons. + </p> + <p> + Unless your browser's developers change their policy, then unfortunately it is not possible to make Vimium (or any other + web extension, for that matter) work on this page. + </p> + </div> + """ + return + # As the active URL, we choose the most recently registered URL from a frame in the tab, or the tab's own # URL. url = chrome.extension.getBackgroundPage().urlForTab[tab.id] || tab.url @@ -285,12 +314,12 @@ initPopupPage = -> onUpdated = -> $("helpText").innerHTML = "Type <strong>Ctrl-Enter</strong> to save and close." $("saveOptions").removeAttribute "disabled" - $("saveOptions").innerHTML = "Save Changes" + $("saveOptions").textContent = "Save Changes" updateState() if exclusions saveOptions = -> Option.saveOptions() - $("saveOptions").innerHTML = "Saved" + $("saveOptions").textContent = "Saved" $("saveOptions").disabled = true $("saveOptions").addEventListener "click", saveOptions @@ -309,6 +338,7 @@ initPopupPage = -> # # Initialization. document.addEventListener "DOMContentLoaded", -> + DomUtils.injectUserCss() # Manually inject custom user styles. xhr = new XMLHttpRequest() xhr.open 'GET', chrome.extension.getURL('pages/exclusions.html'), true xhr.onreadystatechange = -> @@ -320,6 +350,55 @@ document.addEventListener "DOMContentLoaded", -> xhr.send() +# +# Backup and restore. "?" is for the tests." +DomUtils?.documentReady -> + # Only initialize backup/restore on the options page (not the popup). + return unless location.pathname == "/pages/options.html" + + restoreSettingsVersion = null + + populateBackupLinkUrl = -> + backup = settingsVersion: bgSettings.get "settingsVersion" + for option in Option.all + backup[option.field] = option.readValueFromElement() + # Create the blob in the background page so it isn't garbage collected when the page closes in FF. + bgWin = chrome.extension.getBackgroundPage() + blob = new bgWin.Blob [ JSON.stringify backup, null, 2 ] + $("backupLink").href = bgWin.URL.createObjectURL blob + + $("backupLink").addEventListener "mousedown", populateBackupLinkUrl, true + + $("chooseFile").addEventListener "change", (event) -> + document.activeElement?.blur() + files = event.target.files + if files.length == 1 + file = files[0] + reader = new FileReader + reader.readAsText file + reader.onload = (event) -> + try + backup = JSON.parse reader.result + catch + alert "Failed to parse Vimium backup." + return + + restoreSettingsVersion = backup["settingsVersion"] if "settingsVersion" of backup + for option in Option.all + if option.field of backup + option.populateElement backup[option.field] + option.onUpdated() + + Option.onSave -> + # If we're restoring a backup, then restore the backed up settingsVersion. + if restoreSettingsVersion? + bgSettings.set "settingsVersion", restoreSettingsVersion + restoreSettingsVersion = null + # Reset the restore-backup input. + $("chooseFile").value = "" + # We need to apply migrations in case we are restoring an old backup. + bgSettings.applyMigrations() + # Exported for tests. root = exports ? window extend root, {Options, isVimiumOptionsPage: true} diff --git a/pages/options.css b/pages/options.css index 490ae164..dab342a3 100644 --- a/pages/options.css +++ b/pages/options.css @@ -115,7 +115,7 @@ input#scrollStepSize { textarea#userDefinedLinkHintCss, textarea#keyMappings, textarea#searchEngines { width: 100%;; min-height: 140px; - white-space: nowrap; + white-space: pre; } input#previousPatterns, input#nextPatterns { width: 100%; @@ -227,7 +227,10 @@ input.pattern, input.passKeys, .exclusionHeaderText { #saveOptionsTableData { float: right; } -#saveOptions { +#saveOptions, #exclusionAddButton { white-space: nowrap; width: 110px; } +#backupLink { + cursor: pointer; +} diff --git a/pages/options.html b/pages/options.html index 92bed6f0..b118bbd9 100644 --- a/pages/options.html +++ b/pages/options.html @@ -2,7 +2,28 @@ <head> <title>Vimium Options</title> <link rel="stylesheet" type="text/css" href="options.css"> - <link rel="import" href="vimium_resources.html"> + <script src="../lib/utils.js"></script> + <script src="../lib/keyboard_utils.js"></script> + <script src="../lib/dom_utils.js"></script> + <script src="../lib/rect.js"></script> + <script src="../lib/handler_stack.js"></script> + <script src="../lib/settings.js"></script> + <script src="../lib/find_mode_history.js"></script> + <script src="../content_scripts/mode.js"></script> + <script src="../content_scripts/ui_component.js"></script> + <script src="../content_scripts/link_hints.js"></script> + <script src="../content_scripts/vomnibar.js"></script> + <script src="../content_scripts/scroller.js"></script> + <script src="../content_scripts/marks.js"></script> + <script src="../content_scripts/mode_insert.js"></script> + <script src="../content_scripts/mode_find.js"></script> + <script src="../content_scripts/mode_key_handler.js"></script> + <script src="../content_scripts/mode_visual.js"></script> + <script src="../content_scripts/hud.js"></script> + <script src="../content_scripts/mode_normal.js"></script> + <script src="../content_scripts/vimium_frontend.js"></script> + <link rel="stylesheet" type="text/css" href="../content_scripts/vimium.css" /> + <script type="text/javascript" src="options.js"></script> </head> @@ -46,7 +67,7 @@ unmapAll <a href="#" id="showCommands">Show available commands</a>. </div> </div> - <textarea id="keyMappings" type="text"></textarea> + <textarea id="keyMappings" type="text" tabIndex="1"></textarea> </td> </tr> <tr> @@ -95,11 +116,11 @@ b: http://b.com/?q=%s description </td> </tr> <tr id="linkHintNumbersContainer"> - <td class="caption">Numbers used<br/> for link hints</td> + <td class="caption">Characters used<br/> for link hints</td> <td verticalAlign="top"> <div class="help"> <div class="example"> - The numbers placed next to each link after typing "f" to enter link-hint mode. + The characters placed next to each link after typing "f" to enter link-hint mode. </div> </div> <input id="linkHintNumbers" type="text" /> @@ -125,7 +146,7 @@ b: http://b.com/?q=%s description </div> <label> <input id="filterLinkHints" type="checkbox"/> - Use the link's name and numbers for link-hint filtering + Use the link's name and characters for link-hint filtering </label> </td> </tr> @@ -182,7 +203,22 @@ b: http://b.com/?q=%s description </div> <label> <input id="regexFindMode" type="checkbox"/> - Treat find queries as regular expressions + Treat find queries as JavaScript regular expressions + </label> + </td> + </tr> + <tr> + <td class="caption"></td> + <td verticalAlign="top" class="booleanOption"> + <div class="help"> + <div class="example"> + This forces the use of <code>en-US</code> QWERTY layout and + can be helpful for non-Latin keyboards. + </div> + </div> + <label> + <input id="ignoreKeyboardLayout" type="checkbox"/> + Ignore keyboard layout </label> </td> </tr> @@ -228,7 +264,7 @@ b: http://b.com/?q=%s description <td verticalAlign="top"> <div class="help"> <div class="example"> - The search engine to use in the Vomnibar <br> (e.g.: "http://duckduckgo.com/?q="). + The search engine to use in the Vomnibar <br> (e.g.: "https://duckduckgo.com/?q="). </div> </div> <input id="searchUrl" type="text" /> @@ -236,11 +272,12 @@ b: http://b.com/?q=%s description </td> </tr> <tr> - <td class="caption">CSS for link hints</td> + <td class="caption">CSS for Vimium UI</td> <td verticalAlign="top"> <div class="help"> <div class="example"> - The CSS used to style the characters next to each link hint.<br/><br/> + These styles are applied to link hints, the Vomnibar, the help dialog, the exclusions pop-up and the HUD.<br /> + By default, this CSS is used to style the characters next to each link hint.<br/><br/> These styles are used in addition to and take precedence over Vimium's default styles. </div> @@ -280,6 +317,33 @@ b: http://b.com/?q=%s description </tr> --> </tbody> + <tbody id='backupAndRestore'> + <tr> + <td colspan="2"><header>Backup and Restore</header></td> + </tr> + <tr> + <td class="caption">Backup</td> + <td> + <div class="help"> + <div class="example"> + Click to backup your settings, or right-click and select <i>Save As</i>. + </div> + </div> + <a id="backupLink" download="vimium-options.json">Click to download backup</a> + </td> + </tr> + <tr> + <td class="caption">Restore</td> + <td> + <div class="help"> + <div class="example"> + Choose a backup file to restore, then click <i>Save Changes</i>, below, to confirm. + </div> + </div> + <input id="chooseFile" type="file" accept=".json" style="width: 200px;"/> + </td> + </tr> + </tbody> </table> </div> diff --git a/pages/popup.html b/pages/popup.html index fdf116e5..03c466d6 100644 --- a/pages/popup.html +++ b/pages/popup.html @@ -13,7 +13,6 @@ } #helpText, #stateLine, #state { color: #979ca0; } - #exclusionAddButton { width: 80px; } #saveOptions { margin-top: 5px; /* Match #exclusionAddButton */ @@ -49,6 +48,7 @@ </style> <script src="../lib/utils.js"></script> + <script src="../lib/dom_utils.js"></script> <script src="../lib/settings.js"></script> <script src="options.js"></script> </head> diff --git a/pages/vimium_resources.html b/pages/vimium_resources.html deleted file mode 100644 index 2fad22a2..00000000 --- a/pages/vimium_resources.html +++ /dev/null @@ -1,24 +0,0 @@ -<!-- All content scripts (and CSS) listed in the manifest must be listed here too. - These load Vimium on Vimium's internal pages (such as the options page). --> - -<script src="/lib/utils.js"></script> -<script src="/lib/keyboard_utils.js"></script> -<script src="/lib/dom_utils.js"></script> -<script src="/lib/rect.js"></script> -<script src="/lib/handler_stack.js"></script> -<script src="/lib/settings.js"></script> -<script src="/lib/find_mode_history.js"></script> -<script src="/content_scripts/mode.js"></script> -<script src="/content_scripts/ui_component.js"></script> -<script src="/content_scripts/link_hints.js"></script> -<script src="/content_scripts/vomnibar.js"></script> -<script src="/content_scripts/scroller.js"></script> -<script src="/content_scripts/marks.js"></script> -<script src="/content_scripts/mode_insert.js"></script> -<script src="/content_scripts/mode_find.js"></script> -<script src="/content_scripts/mode_key_handler.js"></script> -<script src="/content_scripts/mode_visual.js"></script> -<script src="/content_scripts/hud.js"></script> -<script src="/content_scripts/vimium_frontend.js"></script> - -<link rel="stylesheet" type="text/css" href="/content_scripts/vimium.css" /> diff --git a/pages/vomnibar.coffee b/pages/vomnibar.coffee index 95ef8151..8c790ca8 100644 --- a/pages/vomnibar.coffee +++ b/pages/vomnibar.coffee @@ -106,17 +106,17 @@ class VomnibarUI if (KeyboardUtils.isEscape(event)) return "dismiss" else if (key == "up" || - (event.shiftKey && event.keyCode == keyCodes.tab) || + (event.shiftKey && event.key == "Tab") || (event.ctrlKey && (key == "k" || key == "p"))) return "up" - else if (event.keyCode == keyCodes.tab && !event.shiftKey) + else if (event.key == "Tab" && !event.shiftKey) return "tab" else if (key == "down" || (event.ctrlKey && (key == "j" || key == "n"))) return "down" - else if (event.keyCode == keyCodes.enter) + else if (event.key == "Enter") return "enter" - else if event.keyCode == keyCodes.backspace || event.keyCode == keyCodes.deleteKey + else if KeyboardUtils.isBackspace event return "delete" null @@ -125,8 +125,7 @@ class VomnibarUI @lastAction = action = @actionFromKeyEvent event return true unless action # pass through - openInNewTab = @forceNewTab || - (event.shiftKey || event.ctrlKey || event.altKey || KeyboardUtils.isPrimaryModifierKey(event)) + openInNewTab = @forceNewTab || event.shiftKey || event.ctrlKey || event.altKey || event.metaKey if (action == "dismiss") @hide() else if action in [ "tab", "down" ] @@ -336,5 +335,8 @@ UIComponentServer.registerHandler (event) -> when "hidden" then Vomnibar.onHidden() when "activate" then Vomnibar.activate event.data +document.addEventListener "DOMContentLoaded", -> + DomUtils.injectUserCss() # Manually inject custom user styles. + root = exports ? window root.Vomnibar = Vomnibar diff --git a/pages/vomnibar.html b/pages/vomnibar.html index 87acc081..19736d78 100644 --- a/pages/vomnibar.html +++ b/pages/vomnibar.html @@ -2,6 +2,7 @@ <head> <title>Vomnibar</title> <script type="text/javascript" src="../lib/utils.js"></script> + <script type="text/javascript" src="../lib/settings.js"></script> <script type="text/javascript" src="../lib/keyboard_utils.js"></script> <script type="text/javascript" src="../lib/dom_utils.js"></script> <script type="text/javascript" src="../lib/handler_stack.js"></script> |
