From aa7d5edf618eb48c8816fb19e44cf6702b678de5 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Tue, 29 Jul 2014 14:20:04 +0000 Subject: [PATCH 01/16] declare compatibility with up to 31.* cosmetics, we have the bump server-side since ages --- install.rdf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.rdf b/install.rdf index ede36be..92f812f 100644 --- a/install.rdf +++ b/install.rdf @@ -13,7 +13,7 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 1.4 - 16.* + 31.* -- 2.39.2 From e62a1245f531b45ec12165bca6a66e5d913a915f Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Tue, 29 Jul 2014 14:20:12 +0000 Subject: [PATCH 02/16] bump version --- install.rdf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.rdf b/install.rdf index 92f812f..ddeae21 100644 --- a/install.rdf +++ b/install.rdf @@ -5,7 +5,7 @@ Query Debian-related pages using the text in the clipboard Damyan Ivanov {8fb11c5b-84eb-4da0-9128-292eacce2dcb} - 1.10 + 1.11 http://icedeb.ktnx.net/ 2 chrome://icedeb/content/icon.png -- 2.39.2 From 65c1f737369448e2d2ec6adaf8df75c2f36a46b2 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Tue, 29 Jul 2014 14:32:56 +0000 Subject: [PATCH 03/16] update years of copyright --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index 45e0811..a266deb 100644 --- a/README +++ b/README @@ -30,7 +30,7 @@ SOFTWARE. All the rest ------------ -Copyright (C) 2009, 2010, 2011, 2012 Damyan Ivanov +Copyright (C) 2009, 2010, 2011, 2012, 2014 Damyan Ivanov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in -- 2.39.2 From 770b99eb23ca37c131fd5497cb5d1ce22bfb1b8d Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Sat, 17 Jun 2017 21:54:26 +0000 Subject: [PATCH 04/16] initial implementation of e10s. XUL/XPCOM is dropped --- build | 5 +- icedeb-content.js | 6 ++ icedeb.css | 10 +++ icedeb.html | 19 ++++++ icedeb.js | 141 +++++++++++++++++++++++++++++++++++++++++ icons/icedeb-addon.png | Bin 0 -> 2722 bytes icons/openlogo-nd.svg | 86 +++++++++++++++++++++++++ manifest.json | 28 ++++++++ res/icon.xcf | Bin 0 -> 5873 bytes 9 files changed, 294 insertions(+), 1 deletion(-) create mode 100644 icedeb-content.js create mode 100644 icedeb.css create mode 100644 icedeb.html create mode 100644 icedeb.js create mode 100644 icons/icedeb-addon.png create mode 100644 icons/openlogo-nd.svg create mode 100644 manifest.json create mode 100644 res/icon.xcf diff --git a/build b/build index 62e4af7..08d261a 100644 --- a/build +++ b/build @@ -12,6 +12,8 @@ btn2png() { xcf2png -o "chrome/content/$PKG-$btn.png" res/button-bts.xcf "base" "$tag small" "$tag big" } +xcf2png -o "icons/icedeb-addon.png" res/icon.xcf -f -T + btn2png bts btn2png pts btn2png deb @@ -22,4 +24,5 @@ btn2png security [ ! -e $PKG.xpi ] || rm $PKG.xpi -zip -r $PKG.xpi chrome install* chrome.manifest README TODO res +zip -r $PKG.xpi README TODO res \ + icedeb.html icedeb.css icedeb.js icedeb-content.js icons manifest.json diff --git a/icedeb-content.js b/icedeb-content.js new file mode 100644 index 0000000..c2a2d36 --- /dev/null +++ b/icedeb-content.js @@ -0,0 +1,6 @@ +function listener(request, sender, sendResponse) { + window.location = request.url; + browser.runtime.onMessage.removeListener(listener); +} + +browser.runtime.onMessage.addListener(listener); diff --git a/icedeb.css b/icedeb.css new file mode 100644 index 0000000..d1b2f8b --- /dev/null +++ b/icedeb.css @@ -0,0 +1,10 @@ +div.icedeb-button { + background: lightgray; + border-radius: 5px; +} +.hidden { display: none; } +#clipboard { + position: absolute; + left: -50000px; +} +#sorry { font-size: 80%; } diff --git a/icedeb.html b/icedeb.html new file mode 100644 index 0000000..c00a15b --- /dev/null +++ b/icedeb.html @@ -0,0 +1,19 @@ + + + + + + + +

Query Debian pages

+
Bug tracker (bugs.debian.org)
+
Package tracker (tracker.debian.org)
+
Package directory (packages.debian.org)
+
Mailing lists (lists.debian.org)
+
Developer overview
+
Build daemons (buildd.debian.org)
+
Security tracker (security-tracker.debian.org)
+ + + + diff --git a/icedeb.js b/icedeb.js new file mode 100644 index 0000000..dcd1197 --- /dev/null +++ b/icedeb.js @@ -0,0 +1,141 @@ +function load_settings() { + browser.storage.local.get({auto_close: true}) + .then( + function(v) { + document.getElementById('auto-close').checked = v.auto_close === true; + //console.log('Success', v); + }, + function() { + document.getElementById('auto-close').checked = true; + //console.log('Failure'); + } + ); +} + +function save_settings() { + let v = document.getElementById('auto-close').checked; + browser.storage.local.set({ + auto_close: v, + }); + //console.log('stored', v); +} + +function trim(word) { + if (!word) return word; + + var oldword; + do { + oldword = word; + + word = word.replace(/^[^a-zA-Z0-9]+/, ''); + word = word.replace(/[^a-zA-Z0-9]+$/, ''); + word = word.replace(/^Bug#/i, ''); + } while ( oldword != word ); + + return word; +} + +function open_tab(url) { + browser.tabs.create({url:url}) + .then( + function() {}, + function(err) { + console.log('Error creating tab', err); + } + ); +} + +document.addEventListener('click', (e) => { + console.log(e.button); + if ( !e.target.classList.contains('icedeb-button') ) + return; + + let autoclose = true; + + let clip_input = document.getElementById("clipboard"); + clip_input.focus(); + if (!document.execCommand("paste")) { + let err = document.getElementById('error'); + err.textContent = 'Error executing Paste'; + err.classList.remove('hidden'); + return; + } + + let clip = trim(clip_input.textContent); + + let url; + + switch (e.target.id) { + case 'bts': + url = 'https://bugs.debian.org/' + clip; + break; + case 'pts': + url = 'https://tracker.debian.org/' + clip; + break; + case 'deb': + url = 'https://packages.debian.org/' + clip; + break; + case 'ml': + url = 'https://lists.debian.org/msgid-search/' + clip; + break; + case 'ddpo': + url = 'https://qa.debian.org/developer.php'; + if (clip != '') + url += '?login=' + clip; + break; + case 'buildd': + url = 'https://buildd.debian.org/' + clip; + break; + case 'security': + url = 'https://security-tracker.debian.org/'; + if (clip != '') + url += 'tracker/' + clip; + break; + } + + if (e.button == 1) { + open_tab(url); + if (autoclose) window.close(); + return; + } + + browser.tabs.query({active:true, currentWindow:true}) + .then( + function(tabs) { + browser.tabs.executeScript(tabs[0].id, {file: '/icedeb-content.js'}) + .then( + function(){ + browser.tabs.sendMessage( tabs[0].id, {url:url} ); + if (autoclose) window.close(); + }, + function(err){ + console.log('Error executing script', err); + }); + + }, + function(err) { + console.log('Error querying the active tab of the current window', err); + open_tab(url); + if (autoclose) window.close(); + } + ); +}); + +document.addEventListener('change', (e) => { + if ( !e.target.classList.contains('icedeb-option') ) + return; + + save_settings(); +}); + +browser.runtime.getPlatformInfo() + .then(function(info) { + console.log(info.os); + + switch (info.os) { + case 'linux': + case 'openbsd': + document.getElementById('sorry').classList.remove('hidden'); + break; + } + }); diff --git a/icons/icedeb-addon.png b/icons/icedeb-addon.png new file mode 100644 index 0000000000000000000000000000000000000000..54ac607dfe5e0ec3a393061e9275f6a7caa4e042 GIT binary patch literal 2722 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 literal 0 HcmV?d00001 diff --git a/icons/openlogo-nd.svg b/icons/openlogo-nd.svg new file mode 100644 index 0000000..50dcb70 --- /dev/null +++ b/icons/openlogo-nd.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..025f970 --- /dev/null +++ b/manifest.json @@ -0,0 +1,28 @@ +{ + "applications": { + "gecko": { + "id": "{8fb11c5b-84eb-4da0-9128-292eacce2dcb}", + "strict_min_version": "42.0" + } + }, + "author": "Damyan Ivanov", + "manifest_version": 2, + "version": "2.0", + "name": "Debian buttons", + "description": "Query Debian-related pages using the text in the clipboard", + "homepage_url": "http://icedeb.ktnx.net/", + "icons": { + "48": "icons/icedeb-addon.png" + }, + "permissions": [ + "activeTab", "storage", "clipboardRead" + ], + "browser_action": { + "browser_style": true, + "default_icon": { + "48": "icons/openlogo-nd.svg" + }, + "default_title": "Query Debian pages", + "default_popup": "icedeb.html" + } +} diff --git a/res/icon.xcf b/res/icon.xcf new file mode 100644 index 0000000000000000000000000000000000000000..9f6cc29bb317706fcb7849d9bba5e56b1f7f7b35 GIT binary patch literal 5873 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 literal 0 HcmV?d00001 -- 2.39.2 From 5dc3ac34880c52f61bdac672374d08b87a921051 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Sun, 18 Jun 2017 20:56:28 +0000 Subject: [PATCH 05/16] update years of copyright --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index a266deb..e53e4bd 100644 --- a/README +++ b/README @@ -30,7 +30,7 @@ SOFTWARE. All the rest ------------ -Copyright (C) 2009, 2010, 2011, 2012, 2014 Damyan Ivanov +Copyright (C) 2009, 2010, 2011, 2012, 2014, 2017 Damyan Ivanov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in -- 2.39.2 From 8b4cc4bb03e6fdd909226a01d0ef3332c1256d5f Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Sun, 18 Jun 2017 20:57:47 +0000 Subject: [PATCH 06/16] nicer popup, site links, remove text about absent selection-clipboard support --- icedeb.css | 28 ++++++++++---- icedeb.html | 20 +++++----- icedeb.js | 103 ++++++++++++++++++++++++++-------------------------- 3 files changed, 83 insertions(+), 68 deletions(-) diff --git a/icedeb.css b/icedeb.css index d1b2f8b..c12c541 100644 --- a/icedeb.css +++ b/icedeb.css @@ -1,10 +1,24 @@ -div.icedeb-button { - background: lightgray; +body { padding: 1ex; } +#clipboard { margin: 2px; } + +#button-list-container { + background: linear-gradient(to bottom, hsl(222,4%,89%) 0%, hsl(0,0%,100%) 100%); + display: flex; + flex-direction: column; + padding: 0.1ex; +} +#button-list-container > * { + margin: 0.5ex; + padding 0.1ex; +} + +.icedeb-button { border-radius: 5px; + cursor: pointer; + color: blue; } -.hidden { display: none; } -#clipboard { - position: absolute; - left: -50000px; +.icedeb-button:hover { + text-decoration: underline; } -#sorry { font-size: 80%; } +.hidden { display: none; } +a, a:visited { color: blue; } diff --git a/icedeb.html b/icedeb.html index c00a15b..f709ee9 100644 --- a/icedeb.html +++ b/icedeb.html @@ -5,15 +5,15 @@ -

Query Debian pages

-
Bug tracker (bugs.debian.org)
-
Package tracker (tracker.debian.org)
-
Package directory (packages.debian.org)
-
Mailing lists (lists.debian.org)
-
Developer overview
-
Build daemons (buildd.debian.org)
-
Security tracker (security-tracker.debian.org)
- + +
+
Bug tracker (site)
+
Package tracker (site)
+
Package directory (site)
+
Mailing lists (site)
+
Developer overview (site)
+
Build logs (site)
+
Security tracker (site)
+
- diff --git a/icedeb.js b/icedeb.js index dcd1197..8c2a7e6 100644 --- a/icedeb.js +++ b/icedeb.js @@ -45,23 +45,48 @@ function open_tab(url) { ); } -document.addEventListener('click', (e) => { - console.log(e.button); +function open_link(url, in_new_tab) { + if (in_new_tab) { + open_tab(url); + return; + } + + browser.tabs.query({active:true, currentWindow:true}) + .then( + function(tabs) { + browser.tabs.executeScript(tabs[0].id, {file: '/icedeb-content.js'}) + .then( + function(){ + browser.tabs.sendMessage( tabs[0].id, {url:url} ); + }, + function(err){ + console.log('Error executing script', err); + }); + + }, + function(err) { + console.log('Error querying the active tab of the current window', err); + open_tab(url); + } + ); +} + +function link_clicked(e) { + if (e.target.tagName == 'a') { + open_link(e.target.href, e.button == 1); + e.preventDefault(); + return false; + } + if ( !e.target.classList.contains('icedeb-button') ) return; let autoclose = true; let clip_input = document.getElementById("clipboard"); - clip_input.focus(); - if (!document.execCommand("paste")) { - let err = document.getElementById('error'); - err.textContent = 'Error executing Paste'; - err.classList.remove('hidden'); - return; - } + let clip = trim(clip_input.value); - let clip = trim(clip_input.textContent); + console.log(clip); let url; @@ -93,49 +118,25 @@ document.addEventListener('click', (e) => { break; } - if (e.button == 1) { - open_tab(url); - if (autoclose) window.close(); - return; - } + open_link(url, e.button == 1); + if (autoclose) window.close(); +} - browser.tabs.query({active:true, currentWindow:true}) - .then( - function(tabs) { - browser.tabs.executeScript(tabs[0].id, {file: '/icedeb-content.js'}) - .then( - function(){ - browser.tabs.sendMessage( tabs[0].id, {url:url} ); - if (autoclose) window.close(); - }, - function(err){ - console.log('Error executing script', err); - }); +window.addEventListener('load', (e) => { + document.getElementById('button-list-container').addEventListener('click', link_clicked); - }, - function(err) { - console.log('Error querying the active tab of the current window', err); - open_tab(url); - if (autoclose) window.close(); - } - ); -}); + document.addEventListener('change', (e) => { + if ( !e.target.classList.contains('icedeb-option') ) + return; -document.addEventListener('change', (e) => { - if ( !e.target.classList.contains('icedeb-option') ) - return; + save_settings(); + }); - save_settings(); + let clip_input = document.getElementById("clipboard"); + clip_input.focus(); + if (!document.execCommand("paste")) { + let err = document.getElementById('error'); + err.textContent = 'Error retrieving clipboard contents'; + err.classList.remove('hidden'); + } }); - -browser.runtime.getPlatformInfo() - .then(function(info) { - console.log(info.os); - - switch (info.os) { - case 'linux': - case 'openbsd': - document.getElementById('sorry').classList.remove('hidden'); - break; - } - }); -- 2.39.2 From db0f9bb3e2380d29af6134a266bcb6cd426e292f Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Mon, 19 Jun 2017 12:28:21 +0000 Subject: [PATCH 07/16] put content JS into a closure --- icedeb-content.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/icedeb-content.js b/icedeb-content.js index c2a2d36..30a3cef 100644 --- a/icedeb-content.js +++ b/icedeb-content.js @@ -1,6 +1,9 @@ -function listener(request, sender, sendResponse) { - window.location = request.url; - browser.runtime.onMessage.removeListener(listener); -} +(function () { + var listener; + listener = function(request, sender, sendResponse) { + browser.runtime.onMessage.removeListener(listener); + window.location = request.url; + } -browser.runtime.onMessage.addListener(listener); + browser.runtime.onMessage.addListener(listener); +})(); -- 2.39.2 From f66505894940dddd7c03c24d19869b1205e8d7f7 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Mon, 19 Jun 2017 12:28:48 +0000 Subject: [PATCH 08/16] make the clipboard content box look like a mozilla one --- icedeb.css | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/icedeb.css b/icedeb.css index c12c541..a5ead51 100644 --- a/icedeb.css +++ b/icedeb.css @@ -1,5 +1,17 @@ body { padding: 1ex; } -#clipboard { margin: 2px; } +#clipboard { + margin: 2px; + min-height: 1.5em; + max-height: 2.5em; + border: 1px solid hsl(0,0%,69.4%); + box-shadow: 0 0 0 0 hsla(208.1, 100%, 69%, 0); + transition: 250ms box-shadow; +} +#clipboard:focus { + border-color: hsl(204.6, 94.5%, 50.4%); + box-shadow: 0 0 0 2px hsla(208.1, 100%, 69%, 0.8); + outline: none; +} #button-list-container { background: linear-gradient(to bottom, hsl(222,4%,89%) 0%, hsl(0,0%,100%) 100%); -- 2.39.2 From 6be63dfb18953e222b6c166db7ccecc8399d8749 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Mon, 19 Jun 2017 12:29:11 +0000 Subject: [PATCH 09/16] make the error message appear smoothly --- icedeb.css | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/icedeb.css b/icedeb.css index a5ead51..0aed167 100644 --- a/icedeb.css +++ b/icedeb.css @@ -34,3 +34,16 @@ body { padding: 1ex; } } .hidden { display: none; } a, a:visited { color: blue; } +#error { + display: block; + background: hsl(48.2,100%,90%); + visibility: visible; + opacity: 1; + transition: visibility 250ms, opacity 250ms; +} +#error.hidden { + display: block; + visibility: hidden; + opacity: 0; + transition: none; +} -- 2.39.2 From 1fe6af3a746feee42cc3fc2d953c119d0bd7541e Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Mon, 19 Jun 2017 12:29:24 +0000 Subject: [PATCH 10/16] Fix DDPO site URL --- icedeb.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/icedeb.html b/icedeb.html index f709ee9..e6a62f6 100644 --- a/icedeb.html +++ b/icedeb.html @@ -11,7 +11,7 @@
Package tracker (site)
Package directory (site)
Mailing lists (site)
-
Developer overview (site)
+
Developer overview (site)
Build logs (site)
Security tracker (site)
-- 2.39.2 From f58a4234607ccc574ea15773b26c7fec6eb259d7 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Mon, 19 Jun 2017 12:31:40 +0000 Subject: [PATCH 11/16] open links/tabs via promises closing the pop-up before the promise is resolved/rejected stops the JS --- icedeb.js | 106 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 74 insertions(+), 32 deletions(-) diff --git a/icedeb.js b/icedeb.js index 8c2a7e6..c36044c 100644 --- a/icedeb.js +++ b/icedeb.js @@ -36,44 +36,82 @@ function trim(word) { } function open_tab(url) { - browser.tabs.create({url:url}) - .then( - function() {}, - function(err) { - console.log('Error creating tab', err); - } - ); + return new Promise((resolve, reject) => { + browser.tabs.create({url:url, active:false}) + .then( + function() { + resolve(); + }, + function(err) { + //console.log('Error creating tab', err); + reject(err); + } + ); + }); } function open_link(url, in_new_tab) { + //console.log('open_link', url, in_new_tab); + if (in_new_tab) { - open_tab(url); - return; + return open_tab(url); } - browser.tabs.query({active:true, currentWindow:true}) - .then( - function(tabs) { - browser.tabs.executeScript(tabs[0].id, {file: '/icedeb-content.js'}) - .then( - function(){ - browser.tabs.sendMessage( tabs[0].id, {url:url} ); - }, - function(err){ - console.log('Error executing script', err); - }); - - }, - function(err) { - console.log('Error querying the active tab of the current window', err); - open_tab(url); - } - ); + //console.log('querying active tab'); + return new Promise((resolve, reject) => { + browser.tabs.query({active:true, currentWindow:true}) + .then( + function(tabs) { + //console.log('active tab queried'); + browser.tabs.executeScript(tabs[0].id, {file: '/icedeb-content.js'}) + .then( + function(){ + //console.log('content script executed'); + browser.tabs.sendMessage( tabs[0].id, {url:url} ) + .then( + function() { + //console.log('message sent'); + resolve(); + }, + function(err) { + console.log('error sending message', err); + reject(err); + } + ); + }, + function(err){ + console.log('Error executing script. Probably a system tab is active', err, tabs[0]); + open_tab(url) + .then( + function() { resolve(); }, + function(err) { reject(err); } ); + }); + + }, + function(err) { + console.log('Error querying the active tab of the current window', err); + open_tab(url) + .then( + function() { resolve(); }, + function(err) { reject(err) } + ); + } + ); + }); } function link_clicked(e) { - if (e.target.tagName == 'a') { - open_link(e.target.href, e.button == 1); + //console.log(e.target.tagName); + let autoclose = true; + + if (e.target.tagName == 'A') { + open_link(e.target.href, e.button == 1) + .then( function() { + if (autoclose) { + //console.log('closing pop-up'); + window.close(); + } + }); e.preventDefault(); return false; } @@ -118,9 +156,13 @@ function link_clicked(e) { break; } - open_link(url, e.button == 1); - if (autoclose) window.close(); -} + open_link(url, e.button == 1) + .then( function() { + if (autoclose) { + //console.log('closing pop-up'); + window.close(); + } + }); window.addEventListener('load', (e) => { document.getElementById('button-list-container').addEventListener('click', link_clicked); -- 2.39.2 From 35a72bd219624257632d7bfafb586ba9b32d067f Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Mon, 19 Jun 2017 12:32:55 +0000 Subject: [PATCH 12/16] always close the pop-up when tab is re-loaded/opened otherwise JS has no access to the tab, since pop-up's context is no longer related to user action --- icedeb.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/icedeb.js b/icedeb.js index c36044c..30f4c3e 100644 --- a/icedeb.js +++ b/icedeb.js @@ -116,15 +116,12 @@ function link_clicked(e) { return false; } - if ( !e.target.classList.contains('icedeb-button') ) - return; - - let autoclose = true; - let clip_input = document.getElementById("clipboard"); + if(clip_input.value == '') + get_clipboard_contents(); let clip = trim(clip_input.value); - console.log(clip); + if(clip_input.value == '') return; let url; -- 2.39.2 From 11c055c006bdb91316309563251d91981439cf33 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Mon, 19 Jun 2017 12:35:03 +0000 Subject: [PATCH 13/16] put clipboard retrieval in a routine, hook to DOMContentLoaded --- icedeb.js | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/icedeb.js b/icedeb.js index 30f4c3e..338f292 100644 --- a/icedeb.js +++ b/icedeb.js @@ -117,11 +117,11 @@ function link_clicked(e) { } let clip_input = document.getElementById("clipboard"); - if(clip_input.value == '') + if(clip_input.textContent == '') get_clipboard_contents(); - let clip = trim(clip_input.value); + let clip = trim(clip_input.textContent); - if(clip_input.value == '') return; + if(clip_input.textContent == '') return; let url; @@ -161,15 +161,12 @@ function link_clicked(e) { } }); -window.addEventListener('load', (e) => { - document.getElementById('button-list-container').addEventListener('click', link_clicked); + e.preventDefault(); + return false; +} - document.addEventListener('change', (e) => { - if ( !e.target.classList.contains('icedeb-option') ) - return; - - save_settings(); - }); +function get_clipboard_contents() { + document.getElementById('error').classList.add('hidden'); let clip_input = document.getElementById("clipboard"); clip_input.focus(); @@ -178,4 +175,20 @@ window.addEventListener('load', (e) => { err.textContent = 'Error retrieving clipboard contents'; err.classList.remove('hidden'); } +} + +window.addEventListener('DOMContentLoaded', (e) => { + document.querySelectorAll('.icedeb-button, #button-list-container a') + .forEach(function(el){ + el.addEventListener('mouseup', link_clicked); + }); + + document.addEventListener('change', (e) => { + if ( !e.target.classList.contains('icedeb-option') ) + return; + + save_settings(); + }); + + get_clipboard_contents(); }); -- 2.39.2 From a616d47af8df39cffe632272af83772d904d5cbf Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Mon, 19 Jun 2017 12:46:43 +0000 Subject: [PATCH 14/16] remove legacy XPCOM implementation --- Makefile | 24 +--- build | 15 --- chrome.manifest | 8 -- chrome/content/icedeb-bts.png | Bin 1217 -> 0 bytes chrome/content/icedeb-buildd.png | Bin 1180 -> 0 bytes chrome/content/icedeb-ddpo.png | Bin 1145 -> 0 bytes chrome/content/icedeb-deb.png | Bin 1240 -> 0 bytes chrome/content/icedeb-ml.png | Bin 1245 -> 0 bytes chrome/content/icedeb-pts.png | Bin 1228 -> 0 bytes chrome/content/icedeb-security.png | Bin 1245 -> 0 bytes chrome/content/icedeb.css | 34 ----- chrome/content/icedeb.js | 195 ----------------------------- chrome/content/icedeb.xul | 76 ----------- chrome/content/icon.png | Bin 2259 -> 0 bytes chrome/locale/bg-BG/icedeb.dtd | 14 --- chrome/locale/en-US/icedeb.dtd | 14 --- install.rdf | 20 --- 17 files changed, 5 insertions(+), 395 deletions(-) delete mode 100644 chrome.manifest delete mode 100644 chrome/content/icedeb-bts.png delete mode 100644 chrome/content/icedeb-buildd.png delete mode 100644 chrome/content/icedeb-ddpo.png delete mode 100644 chrome/content/icedeb-deb.png delete mode 100644 chrome/content/icedeb-ml.png delete mode 100644 chrome/content/icedeb-pts.png delete mode 100644 chrome/content/icedeb-security.png delete mode 100644 chrome/content/icedeb.css delete mode 100644 chrome/content/icedeb.js delete mode 100644 chrome/content/icedeb.xul delete mode 100644 chrome/content/icon.png delete mode 100644 chrome/locale/bg-BG/icedeb.dtd delete mode 100644 chrome/locale/en-US/icedeb.dtd delete mode 100644 install.rdf diff --git a/Makefile b/Makefile index 61187fe..da40095 100644 --- a/Makefile +++ b/Makefile @@ -1,29 +1,15 @@ #!/usr/bin/make -f -# vim: noet ts=8 ft=makefile +# vim: noet sts=8 sw=8 ts=8 ft=makefile PKG := icedeb -ALL_FILES := README TODO install.rdf chrome.manifest \ - $(shell find res -type f) $(shell find chrome -type f) +ALL_FILES := README TODO manifest.json icedeb.js icedeb.css icedeb.html icedeb-content.js \ + $(shell find res -type f) icons/openlogo-nd.svg icons/icedeb-addon.png all: $(PKG).xpi $(PKG).xpi: $(ALL_FILES) rm -f $@ zip $@ $^ -XCF := res/button-bts.xcf - -chrome/content/icedeb-bts.png: $(XCF) - xcf2png -o "$@" "$<" "base" "bts small" "bts big" -chrome/content/icedeb-buildd.png: $(XCF) - xcf2png -o "$@" "$<" "base" "buildd small" "buildd big" -chrome/content/icedeb-ddpo.png: $(XCF) - xcf2png -o "$@" "$<" "base" "DD small" "DD big" -chrome/content/icedeb-deb.png: $(XCF) - xcf2png -o "$@" "$<" "base" "deb small" "deb big" -chrome/content/icedeb-ml.png: $(XCF) - xcf2png -o "$@" "$<" "base" "ML small" "ML big" -chrome/content/icedeb-pts.png: $(XCF) - xcf2png -o "$@" "$<" "base" "pts small" "pts big" -chrome/content/icedeb-security.png: $(XCF) - xcf2png -o "$@" "$<" "base" "security small" "security big" +icons/icedeb-addon.png: res/icon.xcf + xcf2png -o "$@" $< -f -T diff --git a/build b/build index 08d261a..c9b7c2a 100644 --- a/build +++ b/build @@ -5,23 +5,8 @@ set -u export PKG=icedeb -btn2png() { - local tag="$1" - local btn="${2:-$tag}" - - xcf2png -o "chrome/content/$PKG-$btn.png" res/button-bts.xcf "base" "$tag small" "$tag big" -} - xcf2png -o "icons/icedeb-addon.png" res/icon.xcf -f -T -btn2png bts -btn2png pts -btn2png deb -btn2png ML ml -btn2png DD ddpo -btn2png buildd -btn2png security - [ ! -e $PKG.xpi ] || rm $PKG.xpi zip -r $PKG.xpi README TODO res \ diff --git a/chrome.manifest b/chrome.manifest deleted file mode 100644 index 88666b5..0000000 --- a/chrome.manifest +++ /dev/null @@ -1,8 +0,0 @@ -content icedeb chrome/content/ -style chrome://global/content/customizeToolbar.xul chrome://icedeb/content/icedeb.css - -locale icedeb en-US chrome/locale/en-US/ -locale icedeb bg-BG chrome/locale/bg-BG/ - -# Firefox -overlay chrome://browser/content/browser.xul chrome://icedeb/content/icedeb.xul diff --git a/chrome/content/icedeb-bts.png b/chrome/content/icedeb-bts.png deleted file mode 100644 index c691b25dba5c1a34e6b07f4584273ded619fcabc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1217 zcmV;y1U~zTP)FSNL7>v;c|Qy4`T~vVO>aZ+f?T0m~$Df!mD^0Ph&0q6;j;Y==I)bk{S3e zzK^0qWj8k9dHf)x_`(#xK8ahf6kG8R?7#^)T5W*yLW(c%6|gGG6L2r)=cYIC0A9m3 z9Ey{$1p8q-mWLGoyq7tT$^gT-Hl%pVK>vmKmD;L{LW(;&0jr{%k0&t)Z(|jH5>njW zp?f0M;X{}}8B%w<%j;-hLy zZp93&s)}-?Lv@+@#LjKQRYiGvRg_E16#kU4msfu!D-u05~ zL=EHO zexRlD5Dvqx4#3w#iaT2y>SK>JW_z*WnTwmK?@U`R#IyKI2i!+;|M?-s@!b5>fZE@3 z+2wqrRZ-3gDUPDow|sb$@k6Sjob^ij_t<>%4mjK~|EY?Z$77-iS%Vf_h}aI4Ex8)2 zT5$i9=Y4Hv{yZ?3AMY5yMID;JjozRI$JJ52 zOXg#9SI1#)Z;oz6eUJatq4p%MX)25Ta@?4$RZ-p?Qmm??JRLs|DZbqvG-$zuH{S!W zz{ds~pR;^+t9m5Xh7`M;gVs`F2F4~yla7p-tP5S zS{3C|Sn%$>|6FX{JEwYRqAJQG)Q)v+NO6*bwd6)vG2_@%2ip5+?(uP1?^Y(?!7cdQ zz`!1iq_J(gMvC8HWmS}a$L}x?r{Q3HC#1MxFL0V5{ny>EUOudM{Vx4)=dR!59ks!B zs(s-e2Esv3fg(-{DL&Q)Z0UR%b3=-&tD?LHYeI^f_6F7^RZ%WcXEbZ^Vo0$oc1~J+ zMD3|NaZC;=@0IaPf}alA;|}K6;|3gsQ*!f-7*z-11ueLyY`(vOXVk~D6_@UFz$~}r z1+K{To$6HTezo_pr{^`_t8tk+(>_IgeA6RUQ7)^B@?Eucn%Ch#wIv(r4-C5r8`atJ zY10PRg1i9z6*G=Ka*BX(1iq!thJHQ0gc;%+!$+qLBWHXbKf)hdeWU8krIFS6s5*3g zTAg-HKj6aN?BDKZXnbz3cGzc$;;ILDidmFId@+GOgT*C$NW=x5YL7b fckBy*_mlqugf*B^5RMQ?00000NkvXXu0mjfJ>*qm diff --git a/chrome/content/icedeb-buildd.png b/chrome/content/icedeb-buildd.png deleted file mode 100644 index 977755f7c36d44e2437a13bd204cbe0ab8956565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1180 zcmV;N1Y`S&P)Al zOralyUT#KZB_oMYEVLioV!9t%X;?aC&fUJ>?b9E3AN%aHb8a?z{`r3Ip7-6o?)lvF z++`Ss8KFvmCxI$pKhO#k0gck?j^WG^n6nyq3HTE@3H$;y0KZGC`(s_^3X|jmF92%+ z5s>r)-vDjEtJ3P@!vMPr*aB1n?ZD5#d0;j$9T$Kl((02#0ve%a1G|7y-}N`J2RIFM z05<{ifC}ImpcAN(R)00boVR&^F~B-$^_G->8SpMHsdt_6F3<>E599zPt=<#RjRp4l4L%)5D4<&cdfg-X8)> zLH-In2txyU~d@X-4QS;1o!}O9k5{-x6DtnWUO zlKtp^lgStP_5~wUk+ixSh$3q8o5@ZwLKU5|XM5+L3FLgqiqa9B0qA6* zOxS9mE&+GR+IY0k|DE7}X9mW%;z|<$-&34Nl=n8Uu|yQ#4bUu(ya?P6JRa-P5zOMM zddNzFmXM>2ZSkioz@6hS0q`T+0=I+!bD93V zK&26?5@6cJUB8vn*gc=7oDu3)Tw<-0Ru4+B*m~&e#$9v6wiqx<0G6aQ5kP_M?Eu~f zHW;Bc8=>w2A|upR+*SCzw0diLoVRCzeYi8Y6u=0z+_(1u&m^=1`r>jB0U7@U(!e}v z^?{@>9&Lnr2v?^{rPVJRp`^6BIk5QwQL<*1XzH})E?k=f9(Vp zGC~zdtL+dFLjsP}BA^!Nnv^MQ`?BD^$Ou)H@WoaJ9K^kFYDeI^YD*?b7MOfCvLCI_ z9qtC63g|cCYTRVpV|BQ`|7;Qe-U1Wy$?GygUGy27j6`QrHv->P+o1O#K#u+_u3&yX z8jFmEMZjyowYWmL8^8$l1g@0C=dmHBOGarZ->3lA;tu#h+=0L3GeYe!LOoZO88@B( uIZ1|H28>V(fH}aYz)@-S`OyHllKlhrQ?MxgXY;TC0000q@p1Ab)0mO}Xu5W#Y3E7RWF^dW_~lX z=j?32IAnyH2|Nib1v-FkpbTh}R`-mj4^N*Bz-Hh)a2EIpXa&wltB2#bV2n;mfMYaK1b-+7Bt6C+k&UgWhP!+&oU@FiDGy$(l zt9w1Mi-0y@I*kqpLY}xaz=yyVY4!FAo`3*oad78=dTI3wJ~#kr z_18ozc>*W_nv76sPiOJA@R z9^_Hr5g>FETki>b0@xv~&L+lN30#s^?*clFP!pVA1Jeos9rYW)SHN0n_2v9gj8LU+ z*0nB)V#x1+kAcg;F%RI~z@9`u0WeQmeaN-9{kA;i+#zs_5Ab2&Cg3G$^`HlC5%9i? zvA{|r)TBg6J1_^xc>sTxR$om_C7aq77&i|;iddQiN zcRF|M1>k7)Z_uOl{vx; zQ86z7w7{iN00nSczVR51QxcE21Fh0(Uy{5HtVlfn25inSRO1p1X?0(02bTB%e88=fqXB57AI|k_-I+E?G7KyL|0kMR?8UE2ezFZeXr2FdGc-2kMMabpZ4J z+5foc$es8@|4H-4bh=;G>zr|$0`7H zUy4nPtXcm*8KKq!p%JP)VgApzcr1lRsLa0fvK7Ds6ed9oIB69B^#=sP6hU@+AkLJM z+UWBWm6;<%e}30g`Gq=P0YHwBFVpqQf%|}kK$o;S!x(>s*Ft{*%0!p>{FiNL00000 LNkvXXu0mjfaS9A* diff --git a/chrome/content/icedeb-deb.png b/chrome/content/icedeb-deb.png deleted file mode 100644 index 3718c76f5eddea9af73ab2ff563282e7e9f52418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1240 zcmV;}1Sk86P)5z&7AFsnz8mE_RJc`T&c8 zWq@#mTn4@Zjsh#BR>!XcYywaVlme~5&p7Nh0hso-Asa3lZ&=+1Iuph_+&I45Xp3PXPz=-qW2IJm zTwoE%L%_p8)^2Q}BkXZtt<)+LT5kq$R%%rT9QK75xBUtj+zrrDzYcs2%#&K3i>~4e zudm&8i7lc4@_S$_a1J=)0K5m-5}GFl6iKa`?0B8h`3c*d1#Wc#&IASkFH5aD9dKp9 zdK;sG8NTrPheCD(BY{f}z(1r`9ia_nfi7zdA`UET$h`ob#(D7v`$*J2tkJizXZFT7Eh!dfo1>Q-QZEldBf&TeKFrjRNzuUVp} zG0}Ih1(+J~Wr0{ycOJWx6dQrnzVHqJ9|QTogTQT4s}kV89@bd_e3>FsZ`(5$Bt~zn zyVP9Em9svm{AYmK*sOMu1A7HhK)KZFn=oJ~W;RBr3W1A2gVgF^H11mF3$FxoquBh)m-S*gVF6;|084>dv0{qwZc23#SF|h&J1hEdF#x5LK0p>=cfkT)} zLKv_HNMQuK=w|SAyUje6-aBbhd|2B)QMm)7i(z{U_y}{F>bk*;Y(7_KKyp zBrE3n!n?R3XYy3KX7Idi2cPhXljX`uG6<8&-T?##`NEs`t(b8x0+<4Z_b~2%1Kf#` z1yLR!+6ZKQ;Z@ka28`0@VFZ0c1aJlB#90Y^+FO8QfCHEe)L6jvzVM!(5Faue^FQSR zMlU>ZD0000APnrM%@<4cyVj)0+ zh!`LQR9NK_5HV4S`ho}svyfh(1w@0AQUO_dELXbqO>}l#l<>tk^tTWmI5LG zNdw;iXMwk+)lFR>HUd}=i~-I8r+^kKt9k6Op{h0>A>e8PaqB~lUA?KvCjtH$3=Chw7Mlo&Wp>0e1mOKuN3j2XH-r!+wFUWFr*7O$T-Yi=@>n^8$bvu-lXS6__NgUJ@b)Ag%r$ z7s+!#0;n-U6$GG_xQsm$C1->xH$u%ZLJjq*-M9!g1GFLNi(xJ>3iucpBCS3eB9=q) z4Db|?@e7+9fXxHeNvo5Q`6_@b((0{1tr05E+cnU;9YN1}4e%{6OIm$3cNQa5pijaN?qzJ~TG{)I>yq7ox^5SWzxuI(|k-!UqSnz(!&z!%E`U~6c+?+B}b zB{`-#TwB`(yox(Ep8(!y=fnuL&It8EXo6FPPYyOhZ8JiRiKxqfJ#k{^i%GQhixnB* z^}xcj{u4&1kBm@LBkE^yN9RP~4qyiGaMqaXr~&93a$aC>H3B<;l}4zw!}5A$P!CAmI)6P^iF8KLHQ^-f?huok!P@^Lqt;0h~^P)Q@y z=pevho?e)EX@>902O1)h*pcq9gemTsWUBT@F=(00000NkvXX Hu0mjfsk$<* diff --git a/chrome/content/icedeb-pts.png b/chrome/content/icedeb-pts.png deleted file mode 100644 index d13f38ede8a5f0d19c057bbf73dff8da5cd42d29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1228 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 Hu0mjfQF>%Y diff --git a/chrome/content/icedeb.css b/chrome/content/icedeb.css deleted file mode 100644 index acd8e43..0000000 --- a/chrome/content/icedeb.css +++ /dev/null @@ -1,34 +0,0 @@ -#icedeb-bts, -#wrapper-icedeb-bts -{list-style-image: url("chrome://icedeb/content/icedeb-bts.png");} - -#icedeb-pts, -#wrapper-icedeb-pts -{list-style-image: url("chrome://icedeb/content/icedeb-pts.png");} - -#icedeb-deb, -#wrapper-icedeb-deb -{list-style-image: url("chrome://icedeb/content/icedeb-deb.png");} - -#icedeb-ml, -#wrapper-icedeb-ml -{list-style-image: url("chrome://icedeb/content/icedeb-ml.png");} - -#icedeb-ddpo, -#wrapper-icedeb-ddpo -{list-style-image: url("chrome://icedeb/content/icedeb-ddpo.png");} - -#icedeb-buildd, -#wrapper-icedeb-buildd -{list-style-image: url("chrome://icedeb/content/icedeb-buildd.png");} - -#icedeb-security, -#wrapper-icedeb-security -{list-style-image: url("chrome://icedeb/content/icedeb-security.png");} - -/* common style for all custom buttons */ -.icedeb-button -{-moz-image-region: rect( 0px 24px 24px 0px);} - -[iconsize="small"] .icedeb-button -{-moz-image-region: rect( 0px 40px 16px 24px);} diff --git a/chrome/content/icedeb.js b/chrome/content/icedeb.js deleted file mode 100644 index a8db84b..0000000 --- a/chrome/content/icedeb.js +++ /dev/null @@ -1,195 +0,0 @@ -IceDeb = { - getClipboardText: function() { - var clip = Components.classes['@mozilla.org/widget/clipboard;1'] - .getService(Components.interfaces.nsIClipboard); - if (!clip) return null; - - var trans = Components.classes['@mozilla.org/widget/transferable;1'] - .createInstance(Components.interfaces.nsITransferable); - if (!trans) return null; - - if (typeof(trans.init) === 'function') - trans.init(null); - - trans.addDataFlavor("text/unicode"); - clip.getData(trans, - clip.supportsSelectionClipboard() - ? clip.kSelectionClipboard - : clip.kGlobalClipboard - ); - - var s = new Object; - var p; - var len = new Object; - trans.getTransferData("text/unicode", s, len); - - var text = null; - var res; - - if (s) - p = s.value.QueryInterface(Components.interfaces.nsISupportsString, res); - if (p) - text = p.data.substring(0, len.value / 2); - - return text; - }, - trim_keyword: function(word) { - if (!word) return word; - - var oldword; - do { - oldword = word; - - word = word.replace(/^[^a-zA-Z0-9]+/, ''); - word = word.replace(/[^a-zA-Z0-9]+$/, ''); - word = word.replace(/^Bug#/i, ''); - } while ( oldword != word ); - - return word; - }, - lookup_bts: function(in_new) { - var bug = IceDeb.trim_keyword(IceDeb.getClipboardText()); - if (!bug) return null; - var uri="https://bugs.debian.org/" + bug; - - if (in_new) { - var b = getBrowser(); - var new_tab = b.addTab(uri); - b.selectedTab = new_tab; - } - else { - loadURI(uri); - } - }, - lookup_pts: function(in_new) { - var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText()); - if (!pkg) return null; - var uri="https://tracker.debian.org/" + pkg; - - if (in_new) { - var b = getBrowser(); - var new_tab = b.addTab(uri); - b.selectedTab = new_tab; - } - else { - loadURI(uri); - } - }, - lookup_deb: function(in_new) { - var pkg = IceDeb.trim_keyword(IceDeb.getClipboardText()); - if (!pkg) return null; - var uri="https://packages.debian.org/" + pkg; - - if (in_new) { - var b = getBrowser(); - var new_tab = b.addTab(uri); - b.selectedTab = new_tab; - } - else { - loadURI(uri); - } - }, - lookup_ml: function(in_new) { - var msg_id = IceDeb.trim_keyword(IceDeb.getClipboardText()); - if (!msg_id) msg_id = ''; - var uri="https://lists.debian.org/msgid-search/" + msg_id; - - if (in_new) { - var b = getBrowser(); - var new_tab = b.addTab(uri); - b.selectedTab = new_tab; - } - else { - loadURI(uri); - } - }, - lookup_ddpo: function(in_new) { - var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText()); - var uri="https://qa.debian.org/developer.php"; - - if (keyword) uri += "?login=" + keyword; - - if (in_new) { - var b = getBrowser(); - var new_tab = b.addTab(uri); - b.selectedTab = new_tab; - } - else { - loadURI(uri); - } - }, - lookup_buildd: function(in_new) { - var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText()); - var uri="https://buildd.debian.org/"; - - if (keyword) uri += keyword; - - if (in_new) { - var b = getBrowser(); - var new_tab = b.addTab(uri); - b.selectedTab = new_tab; - } - else { - loadURI(uri); - } - }, - lookup_security: function(in_new) { - var keyword = IceDeb.trim_keyword(IceDeb.getClipboardText()); - var uri="https://security-tracker.debian.org/"; - - if (keyword) uri += "tracker/" + keyword; - - if (in_new) { - var b = getBrowser(); - var new_tab = b.addTab(uri); - b.selectedTab = new_tab; - } - else { - loadURI(uri); - } - }, - - btsButton: function (e) { - if ( e.button == 0 ) - IceDeb.lookup_bts(false) - else if ( e.button == 1 ) - IceDeb.lookup_bts(true); - }, - ptsButton: function (e) { - if ( e.button == 0 ) - IceDeb.lookup_pts(false) - else if ( e.button == 1 ) - IceDeb.lookup_pts(true); - }, - debButton: function (e) { - if ( e.button == 0 ) - IceDeb.lookup_deb(false) - else if ( e.button == 1 ) - IceDeb.lookup_deb(true); - }, - mlButton: function (e) { - if ( e.button == 0 ) - IceDeb.lookup_ml(false) - else if ( e.button == 1 ) - IceDeb.lookup_ml(true); - }, - ddpoButton: function (e) { - if ( e.button == 0 ) - IceDeb.lookup_ddpo(false) - else if ( e.button == 1 ) - IceDeb.lookup_ddpo(true); - }, - builddButton: function (e) { - if ( e.button == 0 ) - IceDeb.lookup_buildd(false) - else if ( e.button == 1 ) - IceDeb.lookup_buildd(true); - }, - securityButton: function (e) { - if ( e.button == 0 ) - IceDeb.lookup_security(false) - else if ( e.button == 1 ) - IceDeb.lookup_security(true); - } -} - diff --git a/chrome/content/icedeb.xul b/chrome/content/icedeb.xul deleted file mode 100644 index 7b8e347..0000000 --- a/chrome/content/icedeb.xul +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -