From 3f135f0adc5b41ed5066ca5432a4c299b9c3aaae Mon Sep 17 00:00:00 2001 From: tophf Date: Wed, 28 Jun 2017 13:49:04 +0300 Subject: [PATCH] option to switch toolbar icon sets --- .eslintrc | 2 +- _locales/en/messages.json | 9 +++++++++ background.js | 10 ++++++---- dom.js | 9 +++++---- images/icon/16.png | Bin 294 -> 617 bytes images/icon/16w.png | Bin 296 -> 676 bytes images/icon/16x.png | Bin 262 -> 583 bytes images/icon/light/16.png | Bin 0 -> 654 bytes images/icon/light/16w.png | Bin 0 -> 671 bytes images/icon/light/16x.png | Bin 0 -> 358 bytes images/icon/light/19.png | Bin 0 -> 654 bytes images/icon/light/19w.png | Bin 0 -> 671 bytes images/icon/light/19x.png | Bin 0 -> 358 bytes images/icon/light/32.png | Bin 0 -> 654 bytes images/icon/light/32w.png | Bin 0 -> 671 bytes images/icon/light/32x.png | Bin 0 -> 358 bytes images/icon/light/38.png | Bin 0 -> 654 bytes images/icon/light/38w.png | Bin 0 -> 671 bytes images/icon/light/38x.png | Bin 0 -> 358 bytes options/index.css | 8 ++++++++ options/index.html | 24 ++++++++++++++++++++++++ options/index.js | 24 ++++++++++++++++++++++++ prefs.js | 4 ++++ 23 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 images/icon/light/16.png create mode 100644 images/icon/light/16w.png create mode 100644 images/icon/light/16x.png create mode 100644 images/icon/light/19.png create mode 100644 images/icon/light/19w.png create mode 100644 images/icon/light/19x.png create mode 100644 images/icon/light/32.png create mode 100644 images/icon/light/32w.png create mode 100644 images/icon/light/32x.png create mode 100644 images/icon/light/38.png create mode 100644 images/icon/light/38w.png create mode 100644 images/icon/light/38x.png diff --git a/.eslintrc b/.eslintrc index af049f37..6441aad4 100644 --- a/.eslintrc +++ b/.eslintrc @@ -215,7 +215,7 @@ rules: no-unreachable: [2] no-unsafe-finally: [2] no-unsafe-negation: [2] - no-unused-expressions: [2] + no-unused-expressions: [1] no-unused-labels: [0] no-unused-vars: [1, {args: after-used, vars: local, argsIgnorePattern: ^_}] no-use-before-define: [2, nofunc] diff --git a/_locales/en/messages.json b/_locales/en/messages.json index c6a336cf..4fe186cf 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -681,6 +681,15 @@ "optionsUpdateImportNote": { "message": "When importing style backups from old version or from Stylish, do a one-time check for updates manually in the styles manager to ensure all styles are updated." }, + "optionsCustomizeIcon": { + "message": "Toolbar icon" + }, + "optionsIconLight": { + "message": "Light browser themes" + }, + "optionsIconDark": { + "message": "Dark browser themes" + }, "optionsCustomizeBadge": { "message": "Badge on the toolbar icon" }, diff --git a/background.js b/background.js index ea7db689..7b9daa43 100644 --- a/background.js +++ b/background.js @@ -258,15 +258,17 @@ function updateIcon(tab, styles) { const postfix = disableAll ? 'x' : numStyles == 0 ? 'w' : ''; const color = prefs.get(disableAll ? 'badgeDisabled' : 'badgeNormal'); const text = prefs.get('show-badge') && numStyles ? String(numStyles) : ''; + const iconset = ['', 'light/'][prefs.get('iconset')] || ''; + const path = 'images/icon/' + iconset; chrome.browserAction.setIcon({ tabId: tab.id, path: { // Material Design 2016 new size is 16px - 16: `images/icon/16${postfix}.png`, - 32: `images/icon/32${postfix}.png`, + 16: `${path}16${postfix}.png`, + 32: `${path}32${postfix}.png`, // Chromium forks or non-chromium browsers may still use the traditional 19px - 19: `images/icon/19${postfix}.png`, - 38: `images/icon/38${postfix}.png`, + 19: `${path}19${postfix}.png`, + 38: `${path}38${postfix}.png`, // TODO: add Edge preferred sizes: 20, 25, 30, 40 }, }, () => { diff --git a/dom.js b/dom.js index 139619cc..be081107 100644 --- a/dom.js +++ b/dom.js @@ -12,16 +12,17 @@ for (const type of [NodeList, NamedNodeMap, HTMLCollection, HTMLAllCollection]) } // add favicon in Firefox -if (/Firefox/.test(navigator.userAgent)) { - for (const size of [128, 38, 32, 19, 16]) { +navigator.userAgent.includes('Firefox') && setTimeout(() => { + const iconset = ['', 'light/'][prefs.get('iconset')] || ''; + for (const size of [38, 32, 19, 16]) { document.head.appendChild($element({ tag: 'link', rel: 'icon', - href: `/images/icon/${size}.png`, + href: `/images/icon/${iconset}${size}.png`, sizes: size + 'x' + size, })); } -} +}); function onDOMready() { diff --git a/images/icon/16.png b/images/icon/16.png index fa6c32b32cb5d195e12dd25c9df02ea4d082a520..48252ae4ef41957af6cbd55894c5cd3cc2735b2f 100644 GIT binary patch delta 592 zcmV-W0n3IG5B_DMuRR5;6xlgn#UQ4q#|_oQh}ZXS@dC5zfdrFCOn z2o-#Tx)J;fV&enT5?uILh#TFAAnt^^s1K;5f)o@til~bsl7EH@t%8V(8zrR;+Qi&E z8*Xy0i-b#KVw2e%m^1Uu$M?-BgXtu~?Ft~}Btkf8Cn{3IB0^HjJW&SINfcGplK1aA zl2Z>vJN@3!INsA|Ge)uKR%#54Z@YJy1)cqVyrFT_y?d~@+yIml34Tr7Ci~_!0NdX$ zBDIXt@h`fyZ+|lb52q0hwJzV`^MPn2*Z|-;F={ri+_+Bu-CH`hY{j-?Cxy9KYXECs zKLCcVlb@ZXlGP~wS)jPM&{U5GPHUe(0ial|_#e;U2?P-~`+o%$!tF9v?@gMC)O3Wx z#}8F{y}k5Yyu`K_ukehXs%!jxX9D4N8KUN^`62T;;(y^W61Q%m$Cs*894bBMFVG!6 zXVxheOZ9DL^3Z_vxSX;Ae)AV z$R{5TID0-*Hs2bHY0F@SyFe$oJWq<<&CuxE7z{J-h0FQoK2UQLbb>C(pQ2ktqtXD1}&bLtVPZ!x*}*t#=_0y8YkN|_X<9`MtZQ?Lc zEm#jO12ifs{%f2)`(NYNF9d$}?7zm8DTEEsC@VwNh>VFcV9y>D4H`v75IlSKe~q*> zA`G~E8EybsVW6>gEy4vaU;fuvu;9N&YAS96;F@6uBq#sZxPN{f)Bmehp%?%+1l<65 zOw678U*o|8?1ms4Kqwt(ba(&P`28D#Vc|k39bg!8>=^L|XslTAU*ps%h!-YIKy|^R zM?@HK^(sOGI&N+z!hpWM{~Cu5{nxmC8*C#uMmBH$uaTcmd|n_qGf|SA0kX9JJGETi RjsO4v07*qoL;YP4gdfGF-b&0R5;6xlV3USx#jIp@c%;Wxf8XO_0VUfM_(julv@` z#J-*f{QCK0S#WAv8kJQwt7{vNRs$CjW*M|rmTo4jC;((yvZ+6IoTAb)R;8o>@NH^} zjw_ewcRWFFFn{oPU=W)iwMlcG=fD}6SzPPt#%MClo1AVoBZ?vbp|~)&CMpP7Znb1q{6!Sg_K91{qmv0Ek2)IA1)+@AKgqapM_rFRFT6NV?ffl7BIoqLQub*?$mK)9}8169Y!V z3YYEnasfb7wOHZz^fafN8oAnjo{90#02oasnogeL@QLQX)P)&AV>a40biRJ@(XYez9tk1 zkZH-L#D7{2!1$++_m)e4U(NZSJ}m zQT=|#M!obsddTFLae#TY&OMV-Ra+wH1mwtrOc(;Z}4Mg_~VKpe-Q zY1*}bgo!{^Rp|Tvqy98a83C1?1%xPyU>wJ<5=OxL2d?YFaU2+OFWi4{rm8A&L6Rg; z*EKG|_kHFB(=_n~UDwgT8OL$>0?+fHEK3-M0q=-jB+qj&3`4vZZa33E?feAj)hqL( T6Q-m90000=c9B!32COGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA z00(qQO+^Rc1_~AeE(dzY%m4rZ)Ja4^R5;6xld)?PQ5?rV@14mtmoL?qIDUadMWd|wYE zu;_W*C=`N}QaN?xK+dnP#}B4$n?=v#tn1=h765*?%j2CLJ~SEtd_Lr<6TRwFw#~Dd z8Jr{H9~9DQEPtgEZW00u`Fu=%u)WQvW|Na6Bg|*BtOmhgfhpSt;6Q|rjRrv!vDR+0 z)^7LBBN5v7P6vRLQoNjwkS~JdVp_W85tkaV(2{W4N@j zff0#o95|f!^*Uc#EdVlFNfEDH?hdD^z>qm?f?J)07*qoM6N<$f+oKH-v9sr delta 234 zcmV z4VVW~z{d9fzr8&ItEv4zK#T!%K$6HBkuXsPd_pn+q+tdWp910zVhs4l&kr|%tT1?h z>;+BD{}+&K#%cgeGt7V%kSm0RG5miA%>cL|=mx;>8IS@61!Js+MBs7-Hvet|DRgv% zU}(4yOb6)rAIuP947df7WMKh&VGp_sfL6BsK>Q1&KvEKHBgnvK kK>id`@&d`3iIVIL01&jE<(Xj{%K!iX07*qoM6N<$f>Zroi2wiq diff --git a/images/icon/light/16.png b/images/icon/light/16.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec57b4e6a6c98088abde81f61ae895977599e11 GIT binary patch literal 654 zcmV;90&)F`P)t!U0{FLo~PuEeZB7`s|G9Mt8IM_=xqdKn47Rn?)7TuIot}0m5kV;>XTJAh z*i8U}Uq<-Y@Q`nvT}%f<0Ay|1MCpwy>^NRYA{wLBRg8!zW1;dwa%g0fj*64SBhi%3 z(H~>T>>L2LtV|0x7LVB9)M_Pr@7=<6*vIdoVJ7@NIDO?yR$5XZ6c`0Sv)R~IRe_n8 zi#@-D&1EIaa-uB;HWcpzU@np1dHE6gnp#LiV=I!XDW$|yS8D<8+H-6y^~^IqHbHm& z9iHv=(tH1LN@7X6DclM`JQC&o^#=U68?AS9NkT0d z&rc35JL2c|4&K$>Bp!)kWM)tk_<*MCJX*gS5m6fdiCxvlaQeIe%*3XMha;=2(AU($ zxc?K*gJswt;JTU4q2{|Q|AU!7e=+PP z?%K0tyPQn+4_c(=yZ2CZx*ErJ7eI=vMpA|FKyzEp{!14q@Oddn?z~d;K6rv=v(1|% oY3FLCX~DJHS?Ss&a6&}*2U>>G5xLRnhyVZp07*qoM6N<$f&&m9{Qv*} literal 0 HcmV?d00001 diff --git a/images/icon/light/16w.png b/images/icon/light/16w.png new file mode 100644 index 0000000000000000000000000000000000000000..6287ce91db1863933157463ada15e55d8a8a86f5 GIT binary patch literal 671 zcmV;Q0$}}#P)*y> zTjUeb1vQmTn5-z%Y9!(Zei{IT(b#zI=5_Pw^RB&jDA3dS-PKz2-)w>da zwzw!)U%8}%e~$+6RJ%F8bq6lVic7L`G9wHB^OtN(Pp7*6A~98!0gTJc7DWLdI5v(u zzld-sv?B9VaDup|0bsS+biZ+Ri9TL@mUn4*G-akM=dFh&#)(`~8#+L#n z6D3uZ*c}d>#c4Q;kFKkUwAzuAcNl=hSd23V^YD3FnV*~6P*edl)irzc4B5_HhWfrR z6`Wvxc9yUHcf4rpKoWvOM+$VHS(X`m-&-O92qE-<&2FdTqo0Ph`|Qlz3qUv&;$g!L z+C9zszhyxUiFeare16>$d%B*|a-p7ZD1?%dLhs*6gb=tSE5I%3e_K~kbC$w{`jK#$ zxtW>dQ}B6P8SWn-zw{VZn~guC0Y1O(0U#r5KX!*BIYD2~TfX&v;=`-%mHTh8aNF0p z@g6KhB3KlKnroNYzGpXqq2Yw6TgZ0iQdL*Wu6>yRE5>R}9FzL&L7VJuyh>qt8HMF# zNpnD@002ovPDHLk FV1nwsE%N{X literal 0 HcmV?d00001 diff --git a/images/icon/light/16x.png b/images/icon/light/16x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccc3e502e6f341d369e9f7d896a2189346dc6b9 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%A+0*}aI1_o|n5N2eUHAey{7#QFa;_8!G_-9!S4?Ek(d1XK`4pxwnEKE!+ z%uGN=O`y$-nMKWE4i1{~5mwq=QO?toJr`y9U+>LQkr4d3q)J+dcV}f(u7|0SqQuFT zm%Rd@90CjSe1o;Is{Qv*o=hpv^A3_5@uR8@4?eKJQ43W6(+kacES%HT|_<|_o z&K04z|Np9gzopr0B7)fumAu6 literal 0 HcmV?d00001 diff --git a/images/icon/light/19.png b/images/icon/light/19.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec57b4e6a6c98088abde81f61ae895977599e11 GIT binary patch literal 654 zcmV;90&)F`P)t!U0{FLo~PuEeZB7`s|G9Mt8IM_=xqdKn47Rn?)7TuIot}0m5kV;>XTJAh z*i8U}Uq<-Y@Q`nvT}%f<0Ay|1MCpwy>^NRYA{wLBRg8!zW1;dwa%g0fj*64SBhi%3 z(H~>T>>L2LtV|0x7LVB9)M_Pr@7=<6*vIdoVJ7@NIDO?yR$5XZ6c`0Sv)R~IRe_n8 zi#@-D&1EIaa-uB;HWcpzU@np1dHE6gnp#LiV=I!XDW$|yS8D<8+H-6y^~^IqHbHm& z9iHv=(tH1LN@7X6DclM`JQC&o^#=U68?AS9NkT0d z&rc35JL2c|4&K$>Bp!)kWM)tk_<*MCJX*gS5m6fdiCxvlaQeIe%*3XMha;=2(AU($ zxc?K*gJswt;JTU4q2{|Q|AU!7e=+PP z?%K0tyPQn+4_c(=yZ2CZx*ErJ7eI=vMpA|FKyzEp{!14q@Oddn?z~d;K6rv=v(1|% oY3FLCX~DJHS?Ss&a6&}*2U>>G5xLRnhyVZp07*qoM6N<$f&&m9{Qv*} literal 0 HcmV?d00001 diff --git a/images/icon/light/19w.png b/images/icon/light/19w.png new file mode 100644 index 0000000000000000000000000000000000000000..6287ce91db1863933157463ada15e55d8a8a86f5 GIT binary patch literal 671 zcmV;Q0$}}#P)*y> zTjUeb1vQmTn5-z%Y9!(Zei{IT(b#zI=5_Pw^RB&jDA3dS-PKz2-)w>da zwzw!)U%8}%e~$+6RJ%F8bq6lVic7L`G9wHB^OtN(Pp7*6A~98!0gTJc7DWLdI5v(u zzld-sv?B9VaDup|0bsS+biZ+Ri9TL@mUn4*G-akM=dFh&#)(`~8#+L#n z6D3uZ*c}d>#c4Q;kFKkUwAzuAcNl=hSd23V^YD3FnV*~6P*edl)irzc4B5_HhWfrR z6`Wvxc9yUHcf4rpKoWvOM+$VHS(X`m-&-O92qE-<&2FdTqo0Ph`|Qlz3qUv&;$g!L z+C9zszhyxUiFeare16>$d%B*|a-p7ZD1?%dLhs*6gb=tSE5I%3e_K~kbC$w{`jK#$ zxtW>dQ}B6P8SWn-zw{VZn~guC0Y1O(0U#r5KX!*BIYD2~TfX&v;=`-%mHTh8aNF0p z@g6KhB3KlKnroNYzGpXqq2Yw6TgZ0iQdL*Wu6>yRE5>R}9FzL&L7VJuyh>qt8HMF# zNpnD@002ovPDHLk FV1nwsE%N{X literal 0 HcmV?d00001 diff --git a/images/icon/light/19x.png b/images/icon/light/19x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccc3e502e6f341d369e9f7d896a2189346dc6b9 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%A+0*}aI1_o|n5N2eUHAey{7#QFa;_8!G_-9!S4?Ek(d1XK`4pxwnEKE!+ z%uGN=O`y$-nMKWE4i1{~5mwq=QO?toJr`y9U+>LQkr4d3q)J+dcV}f(u7|0SqQuFT zm%Rd@90CjSe1o;Is{Qv*o=hpv^A3_5@uR8@4?eKJQ43W6(+kacES%HT|_<|_o z&K04z|Np9gzopr0B7)fumAu6 literal 0 HcmV?d00001 diff --git a/images/icon/light/32.png b/images/icon/light/32.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec57b4e6a6c98088abde81f61ae895977599e11 GIT binary patch literal 654 zcmV;90&)F`P)t!U0{FLo~PuEeZB7`s|G9Mt8IM_=xqdKn47Rn?)7TuIot}0m5kV;>XTJAh z*i8U}Uq<-Y@Q`nvT}%f<0Ay|1MCpwy>^NRYA{wLBRg8!zW1;dwa%g0fj*64SBhi%3 z(H~>T>>L2LtV|0x7LVB9)M_Pr@7=<6*vIdoVJ7@NIDO?yR$5XZ6c`0Sv)R~IRe_n8 zi#@-D&1EIaa-uB;HWcpzU@np1dHE6gnp#LiV=I!XDW$|yS8D<8+H-6y^~^IqHbHm& z9iHv=(tH1LN@7X6DclM`JQC&o^#=U68?AS9NkT0d z&rc35JL2c|4&K$>Bp!)kWM)tk_<*MCJX*gS5m6fdiCxvlaQeIe%*3XMha;=2(AU($ zxc?K*gJswt;JTU4q2{|Q|AU!7e=+PP z?%K0tyPQn+4_c(=yZ2CZx*ErJ7eI=vMpA|FKyzEp{!14q@Oddn?z~d;K6rv=v(1|% oY3FLCX~DJHS?Ss&a6&}*2U>>G5xLRnhyVZp07*qoM6N<$f&&m9{Qv*} literal 0 HcmV?d00001 diff --git a/images/icon/light/32w.png b/images/icon/light/32w.png new file mode 100644 index 0000000000000000000000000000000000000000..6287ce91db1863933157463ada15e55d8a8a86f5 GIT binary patch literal 671 zcmV;Q0$}}#P)*y> zTjUeb1vQmTn5-z%Y9!(Zei{IT(b#zI=5_Pw^RB&jDA3dS-PKz2-)w>da zwzw!)U%8}%e~$+6RJ%F8bq6lVic7L`G9wHB^OtN(Pp7*6A~98!0gTJc7DWLdI5v(u zzld-sv?B9VaDup|0bsS+biZ+Ri9TL@mUn4*G-akM=dFh&#)(`~8#+L#n z6D3uZ*c}d>#c4Q;kFKkUwAzuAcNl=hSd23V^YD3FnV*~6P*edl)irzc4B5_HhWfrR z6`Wvxc9yUHcf4rpKoWvOM+$VHS(X`m-&-O92qE-<&2FdTqo0Ph`|Qlz3qUv&;$g!L z+C9zszhyxUiFeare16>$d%B*|a-p7ZD1?%dLhs*6gb=tSE5I%3e_K~kbC$w{`jK#$ zxtW>dQ}B6P8SWn-zw{VZn~guC0Y1O(0U#r5KX!*BIYD2~TfX&v;=`-%mHTh8aNF0p z@g6KhB3KlKnroNYzGpXqq2Yw6TgZ0iQdL*Wu6>yRE5>R}9FzL&L7VJuyh>qt8HMF# zNpnD@002ovPDHLk FV1nwsE%N{X literal 0 HcmV?d00001 diff --git a/images/icon/light/32x.png b/images/icon/light/32x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccc3e502e6f341d369e9f7d896a2189346dc6b9 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%A+0*}aI1_o|n5N2eUHAey{7#QFa;_8!G_-9!S4?Ek(d1XK`4pxwnEKE!+ z%uGN=O`y$-nMKWE4i1{~5mwq=QO?toJr`y9U+>LQkr4d3q)J+dcV}f(u7|0SqQuFT zm%Rd@90CjSe1o;Is{Qv*o=hpv^A3_5@uR8@4?eKJQ43W6(+kacES%HT|_<|_o z&K04z|Np9gzopr0B7)fumAu6 literal 0 HcmV?d00001 diff --git a/images/icon/light/38.png b/images/icon/light/38.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec57b4e6a6c98088abde81f61ae895977599e11 GIT binary patch literal 654 zcmV;90&)F`P)t!U0{FLo~PuEeZB7`s|G9Mt8IM_=xqdKn47Rn?)7TuIot}0m5kV;>XTJAh z*i8U}Uq<-Y@Q`nvT}%f<0Ay|1MCpwy>^NRYA{wLBRg8!zW1;dwa%g0fj*64SBhi%3 z(H~>T>>L2LtV|0x7LVB9)M_Pr@7=<6*vIdoVJ7@NIDO?yR$5XZ6c`0Sv)R~IRe_n8 zi#@-D&1EIaa-uB;HWcpzU@np1dHE6gnp#LiV=I!XDW$|yS8D<8+H-6y^~^IqHbHm& z9iHv=(tH1LN@7X6DclM`JQC&o^#=U68?AS9NkT0d z&rc35JL2c|4&K$>Bp!)kWM)tk_<*MCJX*gS5m6fdiCxvlaQeIe%*3XMha;=2(AU($ zxc?K*gJswt;JTU4q2{|Q|AU!7e=+PP z?%K0tyPQn+4_c(=yZ2CZx*ErJ7eI=vMpA|FKyzEp{!14q@Oddn?z~d;K6rv=v(1|% oY3FLCX~DJHS?Ss&a6&}*2U>>G5xLRnhyVZp07*qoM6N<$f&&m9{Qv*} literal 0 HcmV?d00001 diff --git a/images/icon/light/38w.png b/images/icon/light/38w.png new file mode 100644 index 0000000000000000000000000000000000000000..6287ce91db1863933157463ada15e55d8a8a86f5 GIT binary patch literal 671 zcmV;Q0$}}#P)*y> zTjUeb1vQmTn5-z%Y9!(Zei{IT(b#zI=5_Pw^RB&jDA3dS-PKz2-)w>da zwzw!)U%8}%e~$+6RJ%F8bq6lVic7L`G9wHB^OtN(Pp7*6A~98!0gTJc7DWLdI5v(u zzld-sv?B9VaDup|0bsS+biZ+Ri9TL@mUn4*G-akM=dFh&#)(`~8#+L#n z6D3uZ*c}d>#c4Q;kFKkUwAzuAcNl=hSd23V^YD3FnV*~6P*edl)irzc4B5_HhWfrR z6`Wvxc9yUHcf4rpKoWvOM+$VHS(X`m-&-O92qE-<&2FdTqo0Ph`|Qlz3qUv&;$g!L z+C9zszhyxUiFeare16>$d%B*|a-p7ZD1?%dLhs*6gb=tSE5I%3e_K~kbC$w{`jK#$ zxtW>dQ}B6P8SWn-zw{VZn~guC0Y1O(0U#r5KX!*BIYD2~TfX&v;=`-%mHTh8aNF0p z@g6KhB3KlKnroNYzGpXqq2Yw6TgZ0iQdL*Wu6>yRE5>R}9FzL&L7VJuyh>qt8HMF# zNpnD@002ovPDHLk FV1nwsE%N{X literal 0 HcmV?d00001 diff --git a/images/icon/light/38x.png b/images/icon/light/38x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccc3e502e6f341d369e9f7d896a2189346dc6b9 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%A+0*}aI1_o|n5N2eUHAey{7#QFa;_8!G_-9!S4?Ek(d1XK`4pxwnEKE!+ z%uGN=O`y$-nMKWE4i1{~5mwq=QO?toJr`y9U+>LQkr4d3q)J+dcV}f(u7|0SqQuFT zm%Rd@90CjSe1o;Is{Qv*o=hpv^A3_5@uR8@4?eKJQ43W6(+kacES%HT|_<|_o z&K04z|Np9gzopr0B7)fumAu6 literal 0 HcmV?d00001 diff --git a/options/index.css b/options/index.css index a08485a9..fbc0e803 100644 --- a/options/index.css +++ b/options/index.css @@ -114,6 +114,14 @@ input[type="color"] { height: 2em; } +.iconset { + display: flex; +} + +.iconset input { + display: block; +} + #actions { justify-content: space-around; align-items: stretch; diff --git a/options/index.html b/options/index.html index 5812ddc3..3a7318be 100644 --- a/options/index.html +++ b/options/index.html @@ -13,6 +13,30 @@
+
+

+
+ + +
+
+

diff --git a/options/index.js b/options/index.js index 3b4dce31..decc038d 100644 --- a/options/index.js +++ b/options/index.js @@ -1,6 +1,7 @@ 'use strict'; setupLivePrefs(); +setupRadioButtons(); enforceInputRange($('#popupWidth')); // actions @@ -61,3 +62,26 @@ function checkUpdates() { $('#updates-installed').dataset.value = updated || ''; } } + +function setupRadioButtons() { + const sets = {}; + const onChange = function() { + const newValue = sets[this.name].indexOf(this); + if (newValue >= 0 && prefs.get(this.name) != newValue) { + prefs.set(this.name, newValue); + } + }; + // group all radio-inputs by name="prefName" attribute + for (const el of $$('input[type="radio"][name]')) { + (sets[el.name] = sets[el.name] || []).push(el); + el.addEventListener('change', onChange); + } + // select the input corresponding to the actual pref value + for (const name in sets) { + sets[name][prefs.get(name)].checked = true; + } + // listen to pref changes and update the values + prefs.subscribe((key, value) => { + sets[key][value].checked = true; + }, Object.keys(sets)); +} diff --git a/prefs.js b/prefs.js index a84cb52d..c34a0546 100644 --- a/prefs.js +++ b/prefs.js @@ -47,6 +47,9 @@ var prefs = new function Prefs() { 'editor.autocompleteOnTyping': false, // show autocomplete dropdown on typing a word token 'editor.contextDelete': contextDeleteMissing(), // "Delete" item in context menu + 'iconset': 0, // 0 = dark-themed icon + // 1 = light-themed icon + 'badgeDisabled': '#8B0000', // badge background color when disabled 'badgeNormal': '#006666', // badge background color @@ -61,6 +64,7 @@ var prefs = new function Prefs() { 'disableAll', 'badgeDisabled', 'badgeNormal', + 'iconset', ]; const onChange = {