From e3e5ffecc3a5f8589bc1ee778ac23eab9166fb69 Mon Sep 17 00:00:00 2001 From: wareya Date: Sat, 9 Dec 2017 19:42:11 -0500 Subject: [PATCH] Settings, toggle button --- action16.png | Bin 0 -> 246 bytes action32.png | Bin 0 -> 1028 bytes action512.png | Bin 0 -> 10061 bytes background-script.js | 53 ++++++++++++++++++++++++++++++++++++----- enabled16.png | Bin 0 -> 252 bytes enabled32.png | Bin 0 -> 1035 bytes enabled512.png | Bin 0 -> 10108 bytes icontest.png | Bin 0 -> 11022 bytes manifest.json | 18 +++++++++++++- options.html | 23 ++++++++++++++++++ options.js | 49 ++++++++++++++++++++++++++++++++++++++ texthook.js | 55 +++++++++++++++++++++++++++++++++---------- 12 files changed, 179 insertions(+), 19 deletions(-) create mode 100644 action16.png create mode 100644 action32.png create mode 100644 action512.png create mode 100644 enabled16.png create mode 100644 enabled32.png create mode 100644 enabled512.png create mode 100644 icontest.png create mode 100644 options.html create mode 100644 options.js diff --git a/action16.png b/action16.png new file mode 100644 index 0000000000000000000000000000000000000000..79e83b799b48961657fc4ae3effb91a42ba330a8 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwwYY*EWF^rFptIhFJKY?TzMZFyLU>`G0A4clW2953Bv0mTYeLlHbO(imkZOH>KZc z%W4~ikiSm%KL0-Cws7i~x}3MR2R=@yGJ3RS{$AF7tYJzg&dS#+o_}~{;>+q=jXE1T l-zavJEoI-=bak;n?2^oR1-qu1nF4KO@O1TaS?83{1OOz+TDAZH literal 0 HcmV?d00001 diff --git a/action32.png b/action32.png new file mode 100644 index 0000000000000000000000000000000000000000..daa6c05149ecf1476c66e19324df8697b6bc53f0 GIT binary patch literal 1028 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%0D7x(WmKGlxmO zuoc3Rid}_AWLu(X?=fVH0j2?W9T|zwfL<>T(y!D_>H{9^-t(NV3e%PLDH(tw_h@n4 z$w=E5+>O7)iVxpI;{7mW=-itURnIqoUu?nfxX~nhlX;S$h>8_9s+&!h!}%H4^j{5Gp+d!Cx^yAvA2)xV7a$HAtl^Oj?rxWj&xsYloXm1n1R8H>g-$eZfY2<~H3L?Y z^wqa0@s5}x$Q@w>qyY3Z{tNV+%kf+TFOWf2R!9h?C8?O(Fl178|+52^~mv=r7T}#mcHm(?P%?wq=@xO6MZr6U6L?fvP^3J8$qA31FUySOkpYVaaMP8M){qM;)kA25>$ul(@o z5X9_*9e$rKBQGO==3cwSTxF|uQdMgc(HI8y^U|2D#g}xk5fELHWooo=~F$eC-CzO{|TdAMm*F Fe*k%KAin?r literal 0 HcmV?d00001 diff --git a/background-script.js b/background-script.js index 94b080d..2f11625 100644 --- a/background-script.js +++ b/background-script.js @@ -3,8 +3,8 @@ 'use strict'; // We use JMdict converted to JSON. It's like 32MB so we don't want to load it for every tab. -// So we need to use a backgroudn script and send messages to it from the content script. -// Unfortunately webextensions don't have an easy way to load files even from in extension. +// So we need to use a background script and send messages to it from the content script. +// Unfortunately webextensions don't have an easy way to load files, even from in the extension. // We have to send an HTTP request and store the result in a string before parsing it into an object. // Seriously. @@ -152,17 +152,58 @@ function search(text) if(ret) return ret; } -browser.runtime.onMessage.addListener((request, sender, sendResponse) => { +browser.runtime.onMessage.addListener((request, sender, sendResponse) => +{ if (request.type == 'search') { - //console.log("running search"); sendResponse(search(request.text)); } else { - //console.log("unhandled request"); - //return; return; } }); +async function update_icon(enabled) +{ + if(enabled) + { + browser.browserAction.setIcon({path:{ + "16": "enabled16.png", + "32": "enabled32.png", + "512": "enabled512.png" + }},) + } + else + { + browser.browserAction.setIcon({path:{ + "16": "action16.png", + "32": "action32.png", + "512": "action512.png" + }},) + } +} + +async function toggle_enabled() +{ + let enabled = (await browser.storage.local.get("enabled")).enabled; + if(enabled == undefined) + enabled = false; + enabled = !enabled; + browser.storage.local.set({enabled: enabled}); + update_icon(enabled); +} + +async function init_icon() +{ + browser.browserAction.onClicked.addListener(toggle_enabled); + let enabled = (await browser.storage.local.get("enabled")).enabled; + if(enabled == undefined) + enabled = false; + update_icon(enabled); +} + +init_icon(); + + + diff --git a/enabled16.png b/enabled16.png new file mode 100644 index 0000000000000000000000000000000000000000..29e240f3af2177fc612f9fa3829d295350896cf5 GIT binary patch literal 252 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 QsQ@tEXKwgtkISY11Fn)$i~s-t literal 0 HcmV?d00001 diff --git a/icontest.png b/icontest.png new file mode 100644 index 0000000000000000000000000000000000000000..654f2f75f91a9aaece5e72ffd527ee30ff8cb32d GIT binary patch literal 11022 zcmeHtcT`jPzVD7OpduimC?M5gutbU?NJ~&DI!M=nNR<`@0ci#)35o>_MFtHZLQpKA z6oElNN>IUo0fHk^g&-|RfCNHFAnk4RyfZVtv(`Ot-TT%%_pb8?E6LtpzUA|6zw%AC zx3!YosIUjh1wSAWj#fv3vaX$9z#pQ>BQ{3>pdwv@ zclHPH_l66{5fK0&^=9o4LJTeP1s}>sTDU|yh5ARL&W8H|7tWpwiPQ@5i&WLq($Ug2 z?CGrpiT0vTm>)S6?J+kTHtmPZql6(3=*k{cB>wo;0U4E&d01CgY5d2W*~ha9M=D8B z8{Oj%FWc%Ke<`{(S))6_Nh75|ugAW{GP~@^74z)U;)kxmNL?(#pnf9#wpgIr?dHdN zu1EVqs@$VO2^3Fi2;L1&h$S16>&VPc^h=o0YYVYdwlN`MKE7*ZB$j-sOVPhd9ssg; zAVfjq+SLId$wm$Wn4Pa&4*=eo767n07rG8e==YTYfR>-I0HCV>Z_>XYaQm#GZ(3+k zV_+U|UJM~>e|<7#LD+9j{AdK}-&DE2V3UL-kg(TR#!OyL0RT?7sV5wO>H)yhTNZ$y zO8@|zQo{o8o_7O4(NQ_b?X&kGfc-V-y4`P%iU0*0*Z5r%1I)Jl(~LHS0O&b8WMRLs z*lCfCG7|yL>-^ty`7cxFKgDRG!o;f!qSSEy_ryTtj2Fz@QiO5OfhG!NJ|7HyV1h7L zCXJ$^%$&cy0yc%&&KWr5L)Ftk$bz0oO&#k73Um|_EZfup$Z8*{$(FKmO^S5K0R|KNQ@tjo06}~yWvPm>hjDC zbX{Uy4mH)pz+W;&Y6f4#zXw`Wv28xZy#R;qKu~!zYZ!MjgsK)Icpnrl|2~y9*tB$g ze34yP&&L~S)C7C#0lMFOex;UIh-#lRY002BsAkD1Ntzi40Jna%n5gImL>Id3V7qIW zn{Ozi9kq5DDI{F%22?dbIrky!$DWF-+!?x*B!Z7M|NfnK3AJ^O+k%`p@Bj=YaY?|j zGRZ_vAwdNX>KLbEu{cF{N^)A!wPO_QeSy&TG}Inl)dgRDtb|f^vt2? z^>_#S{XQH2$`XZHC50y~@;eFn!|e0kB8)4B+dD{>r9qmou=K&V#~Nr&AHwCW zO?-NcKI#R;{t^PHHeH^QiWXS4 z?IA=Aq0D_!O!X6O5Mir9>zDsKB4REc;D2OEEYIEmABQK_X4HA#q1aoq|C;Ey1L{W%D(V?QS#Wr8bl4K>J*Jsm<(6Z<4OZCh^7>oUxTkeos`)g!>Z&q ztJS&RSd{s?`X>ail-@%_TdB?Xg<`OMAGrV3ZjG69{J6C(5#;t1$>K};q9>^+j z3Z?UT@*vM07uFRRKj?k-J;&rp^Ge&s_~}`@iHk~O?(94q$>nU#nQ}SM>3;@U1NTZ3 zNHc|WC&&Z24HBdGzC*)X-b7^7Po>T&p{-8KpR?CC!1Nc*_) zud%zk<5w16SnV1Aa|l^YEMJw?aHbsh9TaDAuP8!#Lo~U!Bt9@!>T7aOmN1I`5v5gT z)R$I5x${u?ZlTeU{m5&vJu%fSe+6Y@6!B0?^Ha3d!-`ujQJ28ZY;%GE3a8qubl!L z&wwTM&-s4Mr4lB9GwQ4+F7BKednQGiEa_g_lo0V<)Fo-q#)Z-tx<;K67{VLgO_p4& zKU4F)Otm$c^hVazPuGvFG>Z0w8}&cyEj{#=R|BNqB{0wa+nS&NAbBtcR|tffW761=XUQ$FH*2n;qu5x*dpZ8E%|rUE%u}@qaoGk{gvS2=km8c)C-oT z#Txb$ll3gI!`_)UH5_iZkJBhoW>4!=2g}apq_64d)d{uJ#KdZ&RUO2$@AJlmO55jg zq%&s=yRN_Z6SKDPA6M#QnYpYYkq&$MrO}{pL#0pUz2&Dto39rYVZ_f{eXW|$Epb)t zlwnd?qjO3O6^?4JwwkOoI$ZRP(z4{{s=QamH^DYgVkV)kX03lpYaMeJb|NRkjiQf~ zdXm71mONhNKAZ^?+x@M69;z_O<#jf?Jx9`u3Pi};g|tJNJxMeGp@tlC^F zQ?b9bu%JK{eSu1@pmU1OE3;ezm03G*CDK+@Ksj2B*GC&dG@pcqrWL3_sAh# z1hft3nu_skJaM<-$IdY)fmHqyam9VL2ckh7qBnVJJxk2$)T%Bk1-r>9{q&fVCkmB` zzqPA(Z?x{U5~4rgE6TZSJJ|!af}z?fAr*w}4yeSCtpe-tV{5s~axQ7|cx{T1tSSy; zCz)hVFqj*9Dvbt<+A)rx+ungVWFb;k4YK7BqJdSjx{35<>heyQ{>*-i`&7L!^)45a z0p=y-T+cWOYROkTc>}tx8llYOfABI!b;1~>)QQVKTCGvmvC6%{bZar0snC)u6iAL` zS`_?5if^)er@PD-xKFjf%kK^c#v5D%*{Ok8y*vYoO#)Rs14ZM7C3L>_Am+l7tni+v zO#!a&{VtF+86?#ONmuP1gi;l4>h_7P+V~D5PJM;c;XR?dc{kTpH>81$Z{$bN6fqD@ zRJD5#!2;a=-1c9HX(_8MX9)UOr=Ka$kOWhXd7 z`SVH#1$8nb{2PbYuT@)|Z%^{$7ueOBekjP!djRRd;GZa4%V6o9bt6%fb9D`AXm9=S zDS`#a^KBkEtHXm8T{ibXuzye!YqkOR#-E`iaHQ1^q}PA0*Y3LLR_m%&Rj4Db3VMGW zI$|#jWu~m$S~c)N$g$|}l@X%7o#DCdf-Xwq+Tsi1vuUkwXAL-Hql8^x0XiW0&7NI{q!Aw}OE z6DlfbiF@t#0PU}Yv*5?}s9~F5y4Z4IUYm@yM-FmFYw%g(Shuw$LX|}MC+(~uhob*2 zmf!yJiN`^-vyE_K?kKB@_PfRm^*Oq7eM)ELkjcDHJhU(F%Z5t@JC41bLsMTXMX$A@ zs<{0K)TA)`Ns7U`P)CB#@Jn<4&bOM_=4>cBRmg;u5y!*>qHgU-q#SFeYZTyy9BM&v zi_NJx*$pT1 zm{yiL~q(VK(F@$0fGMuvrq!?Nj$wtfuyk zOUAMMo1>Cf4WXcqrAUqbx2<`OG#Cd1E+}5uLQj$A+u&agm%KP3inBQn*cL}6w}qoB zM+|vUJW2;W2jf+ykCw8N?QC|-D#E`Jf{1L!@uyCxpnP1}uP7LHZkeHa*6^|E#ME-n z%CfxEA%MO>E5#k5Y~33RW%`d&a_n-Yv-fIBm#w+s@kzPMFlcP&_EgV6JxW-L|FAfQ zY9QlCnt%1=;K($WU+z87A~wnmbbnAWs~aSbNyg{G4KQ9XWQb1IU5S%Uc&S<~2e^So z<@(683-tB$g98SO1GdSD!qd{Qy;;K_N&^)wzOwME)_U*qc9lce2S<)#vXPy;rsz3A z9l0kXIumG$EaL|m7GB#(N^iAMx%ADJ&SRtWES_H%i~iGsZdGgfw2K@2&RzpxKKl&* zI26`S9*fCZ>YE~WNOvBax;W0(2$(WI>UX+_Y_5)Nz6d3D45IX5;=-5G0@yW%A_Z-x zMGzw z0e~N0oh;6n@0$LwvTP*uCt7SLUsPbZK%{@daNj+oov~J6aUN${oXl+{&#-fEmds5w zS=4I{85pnaKF3vZDaTYJo_bQ96zL8_+IvZ*)V{_nON9hO%m~j-Ot?2_{4NCRnNAlM z9AW$Qb7_P__4A&BSF`&uRP$6zuOYj$U~ZyVq@_rOVSiK#mwHm|RUqhnczgUb{8RQ>A+XrWO zQs@Vl>PjkB(lVvb2a|j-OMSv}8BQv}c&LuMWhJz4G$F=4_=$B7IW<_B)xT!ljaG^S zN1op#vNNhnprs|8b`OFNgmy^_at`u4hs$30MdFS~Hpjv-mN1q0R2}Cx6OHtJNY5IZ zbW^5t6;1e2rE_F;NE2DF)z~5EO!HjL$!K`$;S?X4yjtf5b^-l7s5%Ubxksy!if{EC zY8|M*AXJ78%a?u-C-8YL;==Zm`=3G2V{O+~@;+VVaSlVvIJjVCwhbltFgu6mEX}?q zu{%ee`#cdSy)k{{VP^>9c3$Ogtbf8%pe>pa2pWs~jB~pl&2Jo(DSZQO;GajOU0!vK ziE#|>+f%{uOUDlR6;~)E)WpwvtZ?6_lAqmw5j2BS5uRVZUnRV>{0wh&sJ=}*L#bTG zC3gJNp&4XNrlo1q7hjn$mogpna>QKn(HA3^XKR$KldXAEYn%7CMx59WddW0?R>e}& zn{gM(1fenuWKH?v80#_uvdTng5r1CK|jTh-r~i^EXtO@9+@ncCdpE3P9W)mrL0NjhdxP4 zyn_H;@*;@7EwQV5!E*F1Mo6s+vc<$+{31!vU3v$hh#v}T?YLD$k-Y}>u5#hU#1r(U zNsniUT*AZG^=N~!R}_?onr4Rl>oMnKXh`9sDP(^7=ihTfGD*$hSWO`-iiGEN&Q8I3 zo>d}jVZ;j8Ioh@ncjo!t8KioK#c$*>=6P;Ui6E_{J*PRafrb*~36sQy#vhmQd$DBc zirPHfVkWzXsdtr-Z&{lX;rRBGKt!`U#-$NwkB2@ml_R*3k>1QqP7Frc^;ZlPJz6Eb z9n(kWIl_gtPJDOMFvfPM;KYZq7iXT5+L7^`mZRHe2li!M>r>?BD~M3N58wB&F0zwz zz-yR}az#~XO?@bRLPr;To-*%P7{xqy)hY(n_6nmYht~)Xi`_q2F2RbMWMmripIyta zWo#lUKCG~9y2reZZhrJz6J@aU8@K#cREcKC_D;*43?WV_k{!=$@~&FhGZNiKD1}Q2 z_PNA(ZmcaUzrrhs&G$#%2VTRrD zucuD2ll^xsoS>L%@5_b6XkQr`((pXbm}iwrw#%2goBH|S%Ga%}RG}ywa9hYlkqE(n zlt9TPuD7i!AIte&d-v#m=Nb$=f>;ZVu+SnDEc|Oer83!2W^VZ)SP2|rt1gZ z8_hCWO>}-SGFMCpUE_dIHX(ExG3}CiB9b~sQ)ai>*duvZOhIGpzT6AzD^qYZ9*)KdF zG~xZtK}b&|r{iE1c3I^%hHZv!9*b?yaEZZ4j>`6=7#>vW4H|9S-c{TuF}Mr6qiYN) ze3E$I5Ehn%QE}xSXqw|_Sh>n_Q;ezHeN(kDT{v!8gh3It zT;%P*^;;I3kP8PN^0||dW~ZpgPOi-n-Yx+S)g&mxkU#r`D;?l$QxN~iyk;Ut=!pu8 zEjO3#)>pZK?z$c`|I6sGP;712%3&93=c{b~$N`o~sIrycWo`1hpK$Jo?dqB~pn^`= z|7#95&IXFgX`LI{U}KicixsBCLK*XzL~whGc3x%V8+{$3&lCt)>}9Z{GX3 z>rFN>R#D)&W9V>;d8w1w2y46lLUEb6CuCexY}HVu6!Y`89J&F|=9uNKd20U!#N71^ zixlGT+>>AKT%7%MSA>FW30j!tpXN;*BV;AG)tEHU%3H?RbuMwRm<3e6;OD~XV2nlRWn+GvGbmUrUth+bar$JZnuz~IRbg^Jn(Z1n zP9jp2Suti@Uzzc$rKW2$dyTak0xmM}g85mni>Qgm1;cLC5;7H|4d3rYUzyzVre1K} zB`r5Bcld{qtsLV%5k_bDu2s zoTCY843SSs{Y>5`E(E}e=Tj%-sVb1u@~Xi8c5Jc0?F!~o?ezh!BdkiD!VKMkHE2MS zCR?epxipP8`+rNkWl@sux8L&zH^#ou9Cu+o949^<#ZY|7(Qw_BfAS#*F{#;evBm#6 z=d_OCPUlzzwsV}jzbQt-T&}_ccPMV#bDtONK1|TXacM!liC20nawF4vrB^4y^Bu*H zleewTFLbjUA*_3M)`ka%;rMaLo9IoJausN*_$i~d%3$|xjBBB3Xjp>X$JKc|%%x%a zavuIPPyS5~AA;b0DCchSlsGR%82BK=it}c+tM`(}jE@nn>noif(2Aj+u2Qthb{*FA zS|B~;HLVLW%7sr3y?SCZ)eM)x8J~fj~}F zdB~gSZtdH)x`0|i>kH3C)PF93pRG))gtG5O-tr$>cspEmOgQUFm@fcVqANu1u3_Ne zK6vtU$Qw3y$F<3Xg>o|QXBoUV*I^w0aE09~IDLf@7qqmYM*k`%d`uIu`ht;M#nVa^ z6yH>t%`ulK--X>xs>I2z?EKnO^->F(;`$YWJxMRglBMJw|6Eb~=2`2XNLR{Ov>WkG4Ip;*vVVMr+S# z0=Y;2D`qkNQ^ODcPo_iut8E)`i7T6PB%99__HLN=!4H;u z^L=IbE?qg1#Pub2z_iF1005uS%!fa(Jq`fuZ+}gd1TpY}Kpi^`&R--v0Ap&s0-%>5 zRw?6tdmjVIr2im|b4>+Q-8w|=TVt`};q{v+E{o3$~MKLH@4+sDx%`_^L z(BMh#?w^%9ZWKVwL;`@l;9dv3Pcw7)HqN48CSsoqeV_u~BHeTpXQ~AN-GD;EKdln3 zOEQ6e;j-J>tO=KZwiTdNvj&C1iQg1ndpo#6#7r+xSR?s&u7K+OWz5hY>H=H-C%%3Z z@pZ;VB!ST*2vz)>yCOrtIluB_e}^2{^#Aqyzen@_jle&Rz`(4eaQiQd2U(xfj30tw P44kmAH7`5rb>)8nR`+I) literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index f8a885b..8e8eba6 100644 --- a/manifest.json +++ b/manifest.json @@ -22,5 +22,21 @@ "js": ["texthook.js"], "all_frames": true } - ] + ], + + "options_ui": { + "browser_style": true, + "page": "options.html" + }, + + "browser_action": { + "browser_style": false, + "default_icon": { + "16": "action16.png", + "32": "action32.png", + "512": "action512.png" + }, + "default_title": "Nazeka (disabled)", + "default_area": "navbar" + } } diff --git a/options.html b/options.html new file mode 100644 index 0000000..6ad21c0 --- /dev/null +++ b/options.html @@ -0,0 +1,23 @@ + + + + + +Nazeka: options + + + +
+
+
+ + + + + + +
+
+
+ + diff --git a/options.js b/options.js new file mode 100644 index 0000000..8ffdb58 --- /dev/null +++ b/options.js @@ -0,0 +1,49 @@ +function restoreListeners() +{ + document.querySelector("#enabled").addEventListener("change", setOptions); + document.querySelector("#compact").addEventListener("change", setOptions); +} +function removeListeners() +{ + document.querySelector("#enabled").removeEventListener("change", setOptions); + document.querySelector("#compact").removeEventListener("change", setOptions); +} + +async function restoreOptions() +{ + restoreListeners(); + try + { + let enabled = (await browser.storage.local.get("enabled")).enabled; + if(enabled == undefined) + enabled = false; + let compact = (await browser.storage.local.get("compact")).compact; + if(compact == undefined) + compact = true; + removeListeners(); + document.querySelector("#enabled").checked = enabled?true:false; + document.querySelector("#compact").checked = compact?true:false; + restoreListeners(); + } + catch (error){} +} + +function setOptions() +{ + browser.storage.local.set( + { + enabled: document.querySelector("#enabled").checked, + compact: document.querySelector("#compact").checked, + }); +} + +if (document.readyState == "complete") +{ + restoreOptions(); + //setOptions(); +} +else +{ + document.addEventListener("DOMContentLoaded", restoreOptions); + //document.addEventListener("DOMContentLoaded", setOptions); +} diff --git a/texthook.js b/texthook.js index dd17fd9..f8fe4fa 100644 --- a/texthook.js +++ b/texthook.js @@ -3,12 +3,11 @@ /* * TODO: * - * ! Toggle button - * ! Fix katakana-hiragana matching (only happens in lookups right now, not display generation) * ! Port all of Spark Reader's deconjugation rules https://github.com/wareya/Spark-Reader/blob/master/preferences/underlay https://github.com/wareya/Spark-Reader/tree/master/src/language/deconjugator * ! Different CSS for different parts of definitions + * - Fix katakana-hiragana matching (only happens in lookups right now, not display generation) * - Definition priority handling (prefer words with any commonness tags, shorter deconjugations, expressions, non-archaic/non-obscure words, high frequencies) - * - Settings + * - More configurability * - VNstats frequency data * - Load deconjugation rules from an advanced setting, with a reset button * - Work with text input fields @@ -26,7 +25,10 @@ function print_object(message) console.log(message); } -let compact = true; +let settings = { +enabled: false, +compact: true, +}; let last_time_display = Date.now(); @@ -46,7 +48,7 @@ function delete_div () function display_div (middle, x, y, time) { middle.style = "background-color: #111; border-radius: 2.5px; border: 1px solid #111;"; - middle.firstChild.style = "border: 1px solid white; border-radius: 2px; padding: 2px; background-color: #111; color: #CCC; font-family: Arial, sans-serif; font-size: 13px;"; + middle.firstChild.style = "border: 1px solid white; border-radius: 2px; padding: 2px; background-color: #111; color: #CCC; font-family: Arial, sans-serif; font-size: 13px; text-align: left;"; let other = document.body.getElementsByClassName(div_class); if(other.length > 0) @@ -318,13 +320,13 @@ function build_div (text, result) parts.push(sense.pos[l]); temptag += parts.join(", "); temptag += ")"; - if(compact) + if(settings.compact) temptag += " "; else temptag += "
"; temp.innerHTML += temptag; } - if(compact) + if(settings.compact) { if(goodsenses.length > 1) temp.innerHTML += " (" + (j+1) + ") "; @@ -347,7 +349,7 @@ function build_div (text, result) temp.innerHTML += temptag; } temp.innerHTML += sense.gloss.join("; "); - if(compact) + if(settings.compact) { if(sense.gloss.length > 1 || j+1 != goodsenses.length) temp.innerHTML += "; "; @@ -357,7 +359,7 @@ function build_div (text, result) temp.innerHTML += "
"; } } - if(compact) + if(settings.compact) temp.innerHTML += "
"; } middle.appendChild(temp); @@ -662,14 +664,43 @@ function lookup_cancel() delete_div(); } +let settings_reload_rate = 200; +let settings_reloader = undefined; +async function settings_reload() +{ + try + { + settings.enabled = (await browser.storage.local.get("enabled")).enabled; + if(settings.enabled == undefined) + settings.enabled = false; + settings.compact = (await browser.storage.local.get("compact")).compact; + if(settings.compact == undefined) + settings.compact = true; + //console.log("set settings"); + //console.log(settings.enabled); + //console.log(settings.compact); + } + catch(error) + { + console.log("failed to set settings, maybe not stored yet?"); + } // not stored yet, probably + + settings_reloader = setTimeout(settings_reload, settings_reload_rate); +} + +settings_reloader = setTimeout(settings_reload, settings_reload_rate); + + let max_search_len = 25; let time_of_last = Date.now(); let throttle = 8; -var seach_x_offset = -3; +let seach_x_offset = -3; window.addEventListener("mousemove", (event)=> { + if(!settings.enabled) return; + if(Date.now() - time_of_last < throttle) { //console.log("too soon, returning"); @@ -696,7 +727,7 @@ window.addEventListener("mousemove", (event)=> } // try without the offset - if (textNode.nodeType != 3) + if (textNode == undefined || textNode.nodeType != 3) { if (document.caretPositionFromPoint) { @@ -712,7 +743,7 @@ window.addEventListener("mousemove", (event)=> } } // if there was text, use it - if (textNode.nodeType == 3) + if (textNode && textNode.nodeType == 3) { //print_object(textNode); //print_object(textNode.parentNode);