aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2016-05-03 22:07:05 -0700
committerAlex Yatskov <alex@foosoft.net>2016-05-03 22:07:05 -0700
commit8926eeab4501724ce4627ae9cff97963f2bd2b72 (patch)
tree31ec51f06c2959c98f4d5f0288bd0c7b0c59acec
parentf535683e9b35aabe0c481bf5e4b040dc40d019e7 (diff)
WIP
-rw-r--r--ext/bg/js/templates.js110
-rw-r--r--ext/fg/css/frame.css5
-rw-r--r--ext/fg/img/add_expression.png (renamed from ext/fg/img/icon_add_expression.png)bin733 -> 733 bytes
-rw-r--r--ext/fg/img/add_kanji.pngbin0 -> 733 bytes
-rw-r--r--ext/fg/img/add_reading.png (renamed from ext/fg/img/icon_add_reading.png)bin286 -> 286 bytes
-rw-r--r--ext/fg/img/icon_copy_definition.pngbin663 -> 0 bytes
-rw-r--r--ext/fg/js/client.js2
-rw-r--r--ext/manifest.json6
-rw-r--r--util/tmpl/kanji.html7
-rw-r--r--util/tmpl/term.html14
10 files changed, 82 insertions, 62 deletions
diff --git a/ext/bg/js/templates.js b/ext/bg/js/templates.js
index e47364d1..b523936a 100644
--- a/ext/bg/js/templates.js
+++ b/ext/bg/js/templates.js
@@ -19,55 +19,55 @@ templates['header.html'] = template({"compiler":[7,">= 4.0.0"],"main":function(c
templates['kanji.html'] = template({"1":function(container,depth0,helpers,partials,data,blockParams,depths) {
var stack1;
- return " "
- + ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.kanji : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
- + "\n";
+ return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.kanji : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0, blockParams, depths),"inverse":container.program(4, data, 0, blockParams, depths),"data":data})) != null ? stack1 : "");
},"2":function(container,depth0,helpers,partials,data,blockParams,depths) {
- return "<a href=\"#\" title=\"Add Kanji\"><img src=\""
+ return " <a href=\"#\" title=\"Add Kanji\"><img src=\""
+ + container.escapeExpression(container.lambda((depths[1] != null ? depths[1].root : depths[1]), depth0))
+ + "/add_kanji.png\"></a>\n";
+},"4":function(container,depth0,helpers,partials,data,blockParams,depths) {
+ return " <img src=\""
+ container.escapeExpression(container.lambda((depths[1] != null ? depths[1].root : depths[1]), depth0))
- + "/img/icon_add_expression.png\"></a>";
-},"4":function(container,depth0,helpers,partials,data) {
+ + "/add_kanji.png\" class=\"inactive\">\n";
+},"6":function(container,depth0,helpers,partials,data) {
var stack1;
return " <dt>Meanings</dt>\n <dd>\n"
- + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.glossary : depth0),{"name":"each","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.glossary : depth0),{"name":"each","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " </dd>\n";
-},"5":function(container,depth0,helpers,partials,data) {
+},"7":function(container,depth0,helpers,partials,data) {
var stack1;
return " "
+ container.escapeExpression(container.lambda(depth0, depth0))
- + ((stack1 = helpers.unless.call(depth0 != null ? depth0 : {},(data && data.last),{"name":"unless","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.unless.call(depth0 != null ? depth0 : {},(data && data.last),{"name":"unless","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\n";
-},"6":function(container,depth0,helpers,partials,data) {
- return ", ";
},"8":function(container,depth0,helpers,partials,data) {
+ return ", ";
+},"10":function(container,depth0,helpers,partials,data) {
var stack1;
return " <dt>Kunyomi</dt>\n <dd>\n"
- + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.kunyomi : depth0),{"name":"each","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.kunyomi : depth0),{"name":"each","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " </dd>\n";
-},"10":function(container,depth0,helpers,partials,data) {
+},"12":function(container,depth0,helpers,partials,data) {
var stack1;
return " <dt>Onyomi</dt>\n <dd>\n"
- + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.onyomi : depth0),{"name":"each","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.onyomi : depth0),{"name":"each","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " </dd>\n";
},"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data,blockParams,depths) {
- var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
+ var stack1, helper, alias1=depth0 != null ? depth0 : {};
return "<div class=\"kanji-definition\">\n <div class=\"action-icons\">\n"
+ ((stack1 = helpers["with"].call(alias1,(depth0 != null ? depth0.addable : depth0),{"name":"with","hash":{},"fn":container.program(1, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
- + " <a href=\"#\" title=\"Copy definition\"><img src=\""
- + alias4(((helper = (helper = helpers.root || (depth0 != null ? depth0.root : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"root","hash":{},"data":data}) : helper)))
- + "/img/icon_copy_definition.png\"></a>\n </div>\n\n <div class=\"kanji-glyph\">"
- + alias4(((helper = (helper = helpers.character || (depth0 != null ? depth0.character : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"character","hash":{},"data":data}) : helper)))
+ + " </div>\n\n <div class=\"kanji-glyph\">"
+ + container.escapeExpression(((helper = (helper = helpers.character || (depth0 != null ? depth0.character : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"character","hash":{},"data":data}) : helper)))
+ "</div>\n\n <div class=\"kanji-info\">\n <dl>\n"
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.glossary : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.glossary : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\n"
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.kunyomi : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.kunyomi : depth0),{"name":"if","hash":{},"fn":container.program(10, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\n"
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.onyomi : depth0),{"name":"if","hash":{},"fn":container.program(10, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.onyomi : depth0),{"name":"if","hash":{},"fn":container.program(12, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " </dl>\n </div>\n</div>\n</div>\n";
},"useData":true,"useDepths":true});
templates['kanji-link.html'] = template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
@@ -91,62 +91,68 @@ templates['kanji-list.html'] = template({"1":function(container,depth0,helpers,p
templates['term.html'] = template({"1":function(container,depth0,helpers,partials,data,blockParams,depths) {
var stack1, alias1=depth0 != null ? depth0 : {};
- return " "
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.vocabExp : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
- + "\n "
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.vocabReading : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
- + "\n";
+ return ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.vocabExp : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0, blockParams, depths),"inverse":container.program(4, data, 0, blockParams, depths),"data":data})) != null ? stack1 : "")
+ + "\n"
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.vocabReading : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0, blockParams, depths),"inverse":container.program(8, data, 0, blockParams, depths),"data":data})) != null ? stack1 : "");
},"2":function(container,depth0,helpers,partials,data,blockParams,depths) {
- return "<a href=\"#\" title=\"Add as expression\"><img src=\""
+ return " <a href=\"#\" title=\"Add as expression\"><img src=\""
+ container.escapeExpression(container.lambda((depths[1] != null ? depths[1].root : depths[1]), depth0))
- + "/img/icon_add_expression.png\"></a>";
+ + "/img/add_expression.png\"></a>\n";
},"4":function(container,depth0,helpers,partials,data,blockParams,depths) {
- return "<a href=\"#\" title=\"Add as reading\"><img src=\""
+ return " <img src=\""
+ container.escapeExpression(container.lambda((depths[1] != null ? depths[1].root : depths[1]), depth0))
- + "/img/icon_add_reading.png\"></a>";
-},"6":function(container,depth0,helpers,partials,data) {
+ + "/img/add_expression.png\" class=\"inactive\">\n";
+},"6":function(container,depth0,helpers,partials,data,blockParams,depths) {
+ return " <a href=\"#\" title=\"Add as reading\"><img src=\""
+ + container.escapeExpression(container.lambda((depths[1] != null ? depths[1].root : depths[1]), depth0))
+ + "/img/add_reading.png\"></a>\n";
+},"8":function(container,depth0,helpers,partials,data,blockParams,depths) {
+ return " <img src=\""
+ + container.escapeExpression(container.lambda((depths[1] != null ? depths[1].root : depths[1]), depth0))
+ + "/img/add_reading.png\" class=\"inactive\">\n";
+},"10":function(container,depth0,helpers,partials,data) {
var stack1, helper, options, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3="function", buffer =
" <div class=\"term-expression\"><ruby>";
- stack1 = ((helper = (helper = helpers.kanjiLinks || (depth0 != null ? depth0.kanjiLinks : depth0)) != null ? helper : alias2),(options={"name":"kanjiLinks","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));
+ stack1 = ((helper = (helper = helpers.kanjiLinks || (depth0 != null ? depth0.kanjiLinks : depth0)) != null ? helper : alias2),(options={"name":"kanjiLinks","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));
if (!helpers.kanjiLinks) { stack1 = helpers.blockHelperMissing.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer + "<rt>"
+ container.escapeExpression(((helper = (helper = helpers.reading || (depth0 != null ? depth0.reading : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"reading","hash":{},"data":data}) : helper)))
+ "</rt></ruby></div>\n";
-},"7":function(container,depth0,helpers,partials,data) {
+},"11":function(container,depth0,helpers,partials,data) {
var helper;
return container.escapeExpression(((helper = (helper = helpers.expression || (depth0 != null ? depth0.expression : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},{"name":"expression","hash":{},"data":data}) : helper)));
-},"9":function(container,depth0,helpers,partials,data) {
+},"13":function(container,depth0,helpers,partials,data) {
var stack1, helper, options, buffer =
" <div class=\"term-expression\">";
- stack1 = ((helper = (helper = helpers.kanjiLinks || (depth0 != null ? depth0.kanjiLinks : depth0)) != null ? helper : helpers.helperMissing),(options={"name":"kanjiLinks","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data}),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},options) : helper));
+ stack1 = ((helper = (helper = helpers.kanjiLinks || (depth0 != null ? depth0.kanjiLinks : depth0)) != null ? helper : helpers.helperMissing),(options={"name":"kanjiLinks","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data}),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},options) : helper));
if (!helpers.kanjiLinks) { stack1 = helpers.blockHelperMissing.call(depth0,stack1,options)}
if (stack1 != null) { buffer += stack1; }
return buffer + "</div>\n";
-},"11":function(container,depth0,helpers,partials,data) {
+},"15":function(container,depth0,helpers,partials,data) {
var stack1;
return " <div class=\"term-rules\">\n"
- + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.rules : depth0),{"name":"each","hash":{},"fn":container.program(12, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.rules : depth0),{"name":"each","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " </div>\n";
-},"12":function(container,depth0,helpers,partials,data) {
+},"16":function(container,depth0,helpers,partials,data) {
var stack1;
return " <span class=\"rule\">"
+ container.escapeExpression(container.lambda(depth0, depth0))
+ "</span> "
- + ((stack1 = helpers.unless.call(depth0 != null ? depth0 : {},(data && data.last),{"name":"unless","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.unless.call(depth0 != null ? depth0 : {},(data && data.last),{"name":"unless","hash":{},"fn":container.program(17, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\n";
-},"13":function(container,depth0,helpers,partials,data) {
+},"17":function(container,depth0,helpers,partials,data) {
return "&laquo;";
-},"15":function(container,depth0,helpers,partials,data) {
+},"19":function(container,depth0,helpers,partials,data) {
var stack1;
return " <div class=\"term-tags\">\n"
- + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.tags : depth0),{"name":"each","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.tags : depth0),{"name":"each","hash":{},"fn":container.program(20, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " </div>\n";
-},"16":function(container,depth0,helpers,partials,data) {
+},"20":function(container,depth0,helpers,partials,data) {
var helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
return " <span class=\"tag tag-"
@@ -156,25 +162,23 @@ templates['term.html'] = template({"1":function(container,depth0,helpers,partial
+ "\">"
+ alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data}) : helper)))
+ "</span>\n";
-},"18":function(container,depth0,helpers,partials,data) {
+},"22":function(container,depth0,helpers,partials,data) {
return " <li><span>"
+ container.escapeExpression(container.lambda(depth0, depth0))
+ "</span></li>\n";
},"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data,blockParams,depths) {
- var stack1, helper, alias1=depth0 != null ? depth0 : {};
+ var stack1, alias1=depth0 != null ? depth0 : {};
return "<div class=\"term-definition\">\n <div class=\"action-icons\">\n"
+ ((stack1 = helpers["with"].call(alias1,(depth0 != null ? depth0.addable : depth0),{"name":"with","hash":{},"fn":container.program(1, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
- + " <a href=\"#\" title=\"Copy definition\"><img src=\""
- + container.escapeExpression(((helper = (helper = helpers.root || (depth0 != null ? depth0.root : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"root","hash":{},"data":data}) : helper)))
- + "/img/icon_copy_definition.png\"></a>\n </div>\n\n"
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.reading : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0, blockParams, depths),"inverse":container.program(9, data, 0, blockParams, depths),"data":data})) != null ? stack1 : "")
+ + " </div>\n\n"
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.reading : depth0),{"name":"if","hash":{},"fn":container.program(10, data, 0, blockParams, depths),"inverse":container.program(13, data, 0, blockParams, depths),"data":data})) != null ? stack1 : "")
+ "\n"
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.rules : depth0),{"name":"if","hash":{},"fn":container.program(11, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.rules : depth0),{"name":"if","hash":{},"fn":container.program(15, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\n"
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tags : depth0),{"name":"if","hash":{},"fn":container.program(15, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tags : depth0),{"name":"if","hash":{},"fn":container.program(19, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\n <div class=\"term-glossary\">\n <ol>\n"
- + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.glossary : depth0),{"name":"each","hash":{},"fn":container.program(18, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.glossary : depth0),{"name":"each","hash":{},"fn":container.program(22, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " </ol>\n </div>\n</div>\n";
},"useData":true,"useDepths":true});
templates['term-list.html'] = template({"1":function(container,depth0,helpers,partials,data,blockParams,depths) {
diff --git a/ext/fg/css/frame.css b/ext/fg/css/frame.css
index d28816f8..956ade8b 100644
--- a/ext/fg/css/frame.css
+++ b/ext/fg/css/frame.css
@@ -68,6 +68,11 @@ body {
display: block;
}
+.action-icons .inactive {
+ -webkit-filter: grayscale(100%);
+ opacity: 0.25;
+}
+
/* term styles */
.term-expression {
diff --git a/ext/fg/img/icon_add_expression.png b/ext/fg/img/add_expression.png
index 6332fefe..6332fefe 100644
--- a/ext/fg/img/icon_add_expression.png
+++ b/ext/fg/img/add_expression.png
Binary files differ
diff --git a/ext/fg/img/add_kanji.png b/ext/fg/img/add_kanji.png
new file mode 100644
index 00000000..6332fefe
--- /dev/null
+++ b/ext/fg/img/add_kanji.png
Binary files differ
diff --git a/ext/fg/img/icon_add_reading.png b/ext/fg/img/add_reading.png
index 41ff8335..41ff8335 100644
--- a/ext/fg/img/icon_add_reading.png
+++ b/ext/fg/img/add_reading.png
Binary files differ
diff --git a/ext/fg/img/icon_copy_definition.png b/ext/fg/img/icon_copy_definition.png
deleted file mode 100644
index 195dc6d6..00000000
--- a/ext/fg/img/icon_copy_definition.png
+++ /dev/null
Binary files differ
diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js
index 8393e58c..1f7f7633 100644
--- a/ext/fg/js/client.js
+++ b/ext/fg/js/client.js
@@ -105,7 +105,7 @@ class Client {
} else {
range.setLength(length);
renderText(
- {defs: results, root: this.fgRoot},
+ {defs: results, root: this.fgRoot, options: this.options},
'term-list.html',
(content) => this.showPopup(range, content)
);
diff --git a/ext/manifest.json b/ext/manifest.json
index a99f0730..a5ced735 100644
--- a/ext/manifest.json
+++ b/ext/manifest.json
@@ -25,9 +25,9 @@
"fg/css/frame.css",
"fg/js/frame.js",
"fg/ttf/kanji-stroke-orders.ttf",
- "fg/img/icon_add_expression.png",
- "fg/img/icon_add_reading.png",
- "fg/img/icon_copy_definition.png"
+ "fg/img/add_expression.png",
+ "fg/img/add_reading.png",
+ "fg/img/add_kanji.png"
],
"content_scripts": [{
diff --git a/util/tmpl/kanji.html b/util/tmpl/kanji.html
index e74fb5ae..7f797c4b 100644
--- a/util/tmpl/kanji.html
+++ b/util/tmpl/kanji.html
@@ -1,9 +1,12 @@
<div class="kanji-definition">
<div class="action-icons">
{{#with addable}}
- {{#if kanji}}<a href="#" title="Add Kanji"><img src="{{../root}}/img/icon_add_expression.png"></a>{{/if}}
+ {{#if kanji}}
+ <a href="#" title="Add Kanji"><img src="{{../root}}/add_kanji.png"></a>
+ {{else}}
+ <img src="{{../root}}/add_kanji.png" class="inactive">
+ {{/if}}
{{/with}}
- <a href="#" title="Copy definition"><img src="{{root}}/img/icon_copy_definition.png"></a>
</div>
<div class="kanji-glyph">{{character}}</div>
diff --git a/util/tmpl/term.html b/util/tmpl/term.html
index f31d9da0..3d3d4eb0 100644
--- a/util/tmpl/term.html
+++ b/util/tmpl/term.html
@@ -1,10 +1,18 @@
<div class="term-definition">
<div class="action-icons">
{{#with addable}}
- {{#if vocabExp}}<a href="#" title="Add as expression"><img src="{{../root}}/img/icon_add_expression.png"></a>{{/if}}
- {{#if vocabReading}}<a href="#" title="Add as reading"><img src="{{../root}}/img/icon_add_reading.png"></a>{{/if}}
+ {{#if vocabExp}}
+ <a href="#" title="Add as expression"><img src="{{../root}}/img/add_expression.png"></a>
+ {{else}}
+ <img src="{{../root}}/img/add_expression.png" class="inactive">
+ {{/if}}
+
+ {{#if vocabReading}}
+ <a href="#" title="Add as reading"><img src="{{../root}}/img/add_reading.png"></a>
+ {{else}}
+ <img src="{{../root}}/img/add_reading.png" class="inactive">
+ {{/if}}
{{/with}}
- <a href="#" title="Copy definition"><img src="{{root}}/img/icon_copy_definition.png"></a>
</div>
{{#if reading}}