From aa5c6c25b85b057b12814b34d0b138c93f9b1edc Mon Sep 17 00:00:00 2001 From: goosepirate <71612256+goosepirate@users.noreply.github.com> Date: Sun, 20 Nov 2022 01:17:22 -0500 Subject: [PATCH] Version 4.1 --- README.md | 42 ++++++++++++++++++++++++++++++++++++------ build/Lox365.oxt | Bin 65455 -> 65892 bytes build/interface.rdb | Bin 15360 -> 15360 bytes build/interface.urd | Bin 14336 -> 14336 bytes description.xml | 2 +- interface.idl | 2 +- loader.py | 12 +++++++++++- pythonpath/lox365.py | 3 ++- 8 files changed, 51 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8dc388f..39c182f 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Lox365 is a LibreOffice extension that adds modern spreadsheet functions like XL ![Screenshot](image2.png) -## Install +## Install or update 1. Download the extension `Lox365.oxt` from [Releases](https://github.com/goosepirate/lox365/releases). 2. Start LibreOffice > Tools > Extension Manager > Add > Select the oxt file > restart LibreOffice. @@ -44,6 +44,10 @@ Here are what others are saying about this project: — u/timespreader +> Great work, goose! 😊 + +— Mike Saunders + > Really nice idea. — Behzat Yildirim @@ -62,7 +66,11 @@ Here are what others are saying about this project: — Marius Spix -## Other functions +> Pues muchísimas gracias. + +— Guille + +## Availability of other function These functions are not in LibreOffice and not provided by Lox365 but are available in the latest Excel: @@ -73,6 +81,10 @@ These functions are not in LibreOffice and not provided by Lox365 but are availa * TOROW * XMATCH +These functions are not in LibreOffice but are planned to be added to Calc: + +* XLOOKUP + These functions are already available in LibreOffice: * CONCAT @@ -94,9 +106,7 @@ Media https://blog.documentfoundation.org/blog/2022/09/23/lox365-extension-xlookup-and-more-for-libreoffice-calc/ -https://es.blog.documentfoundation.org/extension-lox365-xlookup-y-mas-para-libreoffice-calc/ - -https://blog.libreoffice.org.tr/2022/09/23/libreoffice-calc-icin-yeni-bir-eklenti-goosepirate/ +https://blog.documentfoundation.org/blog/2022/10/06/libreoffice-project-and-community-recap-september-2022/ https://www.reddit.com/r/libreoffice/comments/x98nqt/lox365_xlookup_for_libreoffice/ @@ -110,6 +120,16 @@ https://fosstodon.org/@libreoffice/109046849962893237 https://www.facebook.com/libreoffice.org/posts/pfbid07mXEodbV2i32W6JkbRYWdDoyw8sUkiw7cX8QdTLU357AhJKGr9QoH5zKeJUxArkzl +https://es.blog.documentfoundation.org/extension-lox365-xlookup-y-mas-para-libreoffice-calc/ (es) + +https://forest.watch.impress.co.jp/docs/news/1442776.html (jp) + +https://www.zaikei.co.jp/article/20220928/691186.html (jp) + +https://www.matsuura.com.br/2022/09/extensao-lox365-xlookup-e-mais-para.html (pt) + +https://blog.libreoffice.org.tr/2022/09/23/libreoffice-calc-icin-yeni-bir-eklenti-goosepirate/ (tr) + Development https://bugs.documentfoundation.org/show_bug.cgi?id=126573 @@ -118,14 +138,24 @@ https://bugs.documentfoundation.org/show_bug.cgi?id=127293 https://gerrit.libreoffice.org/c/core/+/131905 +https://flywire.github.io/lo-p/ + https://wiki.openoffice.org/wiki/Calc/Add-In/Python_How-To https://wiki.openoffice.org/wiki/Python/Python_Language_Binding +https://wiki.documentfoundation.org/Documentation/DevGuide/Spreadsheet_Documents + +https://help.libreoffice.org/latest/en-US/text/sbasic/python/main0000.html + +https://api.libreoffice.org/docs/idl/ref/namespaces.html + https://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star_1_1sheet.html https://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star_1_1uno.html +https://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/module-ix.html + https://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/AddIn.html -https://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/module-ix.html +https://git.libreoffice.org/core/ diff --git a/build/Lox365.oxt b/build/Lox365.oxt index 9917f21f1b52bd7baa625e8bd0c73dd711525844..b88f73b7c18fc81d3b88093293787a9f082b42be 100644 GIT binary patch delta 8846 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

44K?%=DF_eUcNhvb`Lg_xUC zgd}xcQ^lRY*9VQXNy@0;RF0_&V1sdBU;s#BBln``d1EFd$k5U{c%^b-+z*#+v7T`D z12|!)q~v4O=TtUz-%&Pw@6vVlE9d8K-0sRLU@!a(7*$@R-ZOFDsa)mWx9^>eFVDKX zN6iBaw$IRd}Z6-6=9zhPY(VHvEFm z2Pgj=Cg3G_EqMc{cwlc_li-3dJ^Oec%5#SU@4TN4NA7$9IeqdD<#&wxGm3dis8@MG z+9jv~+dtzNe11-}#9-;w(&xmb#$?Y!;zEzfN?O|bgZ*a*SktA1RLC^=-t<*ycvSCb zY2#nuyE0b25W8NvqNm3KoWCNLLWNQJ|fPQM@BwPotmyBtrh6}nsfnD5GuY6=UWcYJkeWKAXN(-LFlV7Za4)|%TB@XGny z3g`Y0zcGhguM|aC^y=I49H=Qrs-A27VwEDSN5*{k`t668Q#*8Y0W=9&XNDfUa$NoiAKN?x znn~fd+AIDB=H<-=r${R+R|C|yIG8Hz{wAC7?&5mXG+)KKGJOI<;TLd04D=wl0MiwF zV9zi-nc<0c+VbUO#x4ddxjM-VOd9bdebd}cNQIeBBhb{N_@_yPA=j52bg@-n1CogQB+r=|NmJ3sE_6=0#(!$4xS3C}O$OBp>C zGK6FAe{151A0x2hxx3`NyL>=Hz14-wbeg;0roprOFW5rWS>cY=Sz75^r*d;~DoRPw z<^E)4uoKZ?lbl)0w;nMYzm~-pZjESNVYut9CoI?3V}MfN8-U zuefHRq?+rVK2^@3H38wvm$;wo3>E2#xN;TJK5A-mZD@Ju*(XL_qC90ja@_h~@J$Ga$oekbPo|S+)5~+SepL=GS&% zLuMtiF@3~x@{o~Tbo+{|pemUp#yLLHd5;K&kz*KQ7IJIICLS2+UUB-SesNd?uXD*kM(z34s4ut<(K|Q~N2hLH8mE27aj?PZ@}b81^rg>^5=+WvRBBS- zAy|q8o}1GrPQ8!%#F=(2?V_z82YU(dx@N9V*_w_CZQxSqqRq8Fa zk^v;*vEF$`u5q5!SXR-|x~M7*!#6(N`nbuSSiEg>?*j1!+~_+JQ3$6Skw0y^iFDw$ z>PBrx&&a8@7PkAY5m&lh=j5{1X5%vW;;@xKk^3uqjAN}6oXqUnT&z$gv}ktmXj^Oi zUCGZz9#03i*ziWkO7TX?`y4DkLaNHMmFUP&s3k>$CX@E<9Z7wJ@vK3sBgpysQ7-1- zrsd1trXHspSFcHGt9rzFmM30kz}0v=;h;ZbFvdgA4Ft+nfHb_)LQts3kejf4SiV+v zQ6kjUXN>UD0#^B=S~y-*DKQ8jkQ)jJg#Ey8>*QhSW@Tz_$!=@mP^s}+&e7a$& zBD$C7s)`4??!wyAi*(c?O&_WVdE)H8qk78I&DFR8D-ls7UnB@f_VC04KA4OKKW#A# zpn$kMYAm9i!itL{Xn2_(Jo&>+q==?qc})kD#11A@iyCTL~}leG|aR{fUI! z@|1ImgxoPosRe6}KBHNvWj|sfIcv{q=Se@v3Y6Zw z3(`k?xx ztbHjt4IB3F4=22X>@Y|3mzj*`DlD-bo%aZSpRMu_XDfmBX2&xm5aVcly9erq|ejSaV6a9;_5eZ=ql|0yjre(~P{~6X~7LguxyG*FuuKV(FuD zW(X~0Lz|QJ#SCIzDqXz2pOu-SQs?5{da&BT`KGs%2EXS#I!j;8m~rb?!u8BJtF-8!mMXr({5iAjRp?-9 zs7{9bMxlNkzkqpqBe_qpGReQ`BLbo6b3P?vy0^>_ULFTB^C2llQ&rXPI?|9qgS4jt zP6p+>a-87NVN%Z_b-JIbjti%|SDfLhK9)~gCJ%nj(;z2FX1^v7$BDb~>ZPqvVkN zxEf0V@pI{s5P*9O-*lbz*@%n=W1|si4q*C`TQCo7ZuEqm*P&$!a zImhaFbI1OIw3AATOAzOy{`U7Aq<#hH#o#4>&K(d+c}IS>k14tzluSv~@TpVusgm;8 zrKv(}v^hur7J>d@05N6y#L&>}#+rkN&;oj;2!GD{D&W&_IWuL>^W}4FaW=aOS(mRz zy0g-YG4Y_UMkT~PcUML8fpb&?o-U4Tu10$$X#+yIO<#YU+NB7Mhg~G3I zsu}8GX26k8{((}@_!8{q=Ij!let!?2GCp&iJx)hn;60DD>JTIQ=5TPCS6d#^JWBbj zfMdUO!ow21c8|R#lT7iPHYzRcq<%tVf4MBozf{h zk4!b~Hn<>CW0>gR>N;~NMZrCescp~DgYn&`5|Xt!c*K{!fcaBj=wBzspHmtT=)4K? z`iu#C^+vk-1p4;J)EKq>jI^SI_1LCx%2CFl6!WmW9CCYzwLF^kTMz%e6w^h&Tzc9eSyK}1`_4Pt5)ox&oy2k$%ZeEG ztX`(%v)(3r&s>b|#_LP5eBoKD9v6@w!?V+n;fwi{zR}8LN$}(NZbd7RY>c@?3NOjP z)(?T%{X{+a{LvekwCZ}1K-Y0I;A4Ap7`PMf?3Yb$VzFMe+^ZOE z_e?f_jDJX4&sMo9SRZ&o5|HZ}AY;GR6z*uue1kn!(&NhJ_7WNlF%$Qv-uhy)Rw>I@ z+l$bxc#IZ}6O~&e2bzDneC!>$SvH#2kNEm$2IW+|=yMBYOQGGi1HQKRH>}1xnF3Dd zFXaGRjRES~6F!;t6r}t;dC#(|ZE1IgbnV)U-usujQr7Ai3&KEop_i0$zur>C1Hu=J+ijfo2(PtM*azG_*#cONHr1~9 zhobn{lSqN1YC7SwkgP||2#g_NV-R7&cGg^@h>)$)JJz1*fympzYvJcnd{^Sa{9zME z3&spUt^GOb$RD>$G1!8p*~H8sB@EGzlVFK;pM3FmhnHJKZ|7ciD9;zC>Sf@{eh6y7 zMC4sL5STx5$T6w$E8g$-Lt~}Mu`-LTMo?=C+@uR_yCa*jRFLd!Az*CZlyvl7bQh5| zmbe+kEpXXoYZ79_gRJF{6Az~+$bS=53$y8fE$Ua>qOF}`eJ~)uOedb4&x>v??^jV( zKtL3K^lMNIfnNzz`DcMYLVCU+faV69KJ|Y=_{{SlBwT`0eaYv;9q(ii$Zd4Xr=z%0rWrCfA09-hR>fkFa9Uaup|We_Wuj#SB=K@ zP?&@vf%3UjVPo%x^3HqW>e%f2*I$TMER_a*)rroKOEx2lx+T zodSg9jslSe4B@}~ZL424`=^d|3d~v^Iu5F-lpxU0hY!ZTWcyhKiMykw{Pp0k^`8Jq zb&#=#t?EZ1`*$on-?DX@r~mzH{O_{tpI)_d1d+R^07$;|*#AR$(BJewH~QZt!as5H zPC%gl77YJ%E&ut;o`1U5FZwt1LyiD6iD>=h&wpPq|7!(Y|2v7(a}dbojfai1lZ&Z` z&A%Mi|8IqVS>_l08yyYwuhat*1S0$|_@93(ii-zuh#8!k4K+&nPeDPG0p1M{HU#}m Xt12Kr6tf@@{=>WE;ad^xPwM{xNjHdj delta 8410 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 diff --git a/build/interface.rdb b/build/interface.rdb index 201fc0736d2c02cb5a50e6cc1fd245395f9e30b8..f68b8ad57dab65da06bdf93772aa44d06dc8e781 100644 GIT binary patch delta 63 zcmZpuXsFm=pvtl4LG>gC4F-nEj-1hx12{Paud*;OfY1dYlduX9y?L$b8>Y#})Kn&$ Ps`GE&reVUoNJjtwc7_vB delta 66 zcmZpuXsFm=pvrOj`-5W)8Vn4R9XX>X2XJx - + goosepirate Lox365 diff --git a/interface.idl b/interface.idl index 87d10c2..acf6652 100644 --- a/interface.idl +++ b/interface.idl @@ -35,7 +35,7 @@ module org { module openoffice { module sheet { module addin { [in] sequence< sequence< any > > array ); sequence< sequence< any > > UNIQUE( - [in] sequence< sequence< any > > array + [in] com::sun::star::table::XCellRange array ); sequence< sequence< any > > XLOOKUP( [in] any lookupValue, diff --git a/loader.py b/loader.py index 8b1563f..97fd8f6 100644 --- a/loader.py +++ b/loader.py @@ -1,3 +1,8 @@ +# LibreOffice 7.4 on Windows bundles Python 3.8, so import from __future__ +# in order to use new type hinting. +# https://peps.python.org/pep-0585/ +from __future__ import annotations + import uno import unohelper from org.openoffice.sheet.addin import XLox365 @@ -41,7 +46,12 @@ def FILTER (self, *args): return lx.FILTER (*args) def SORT (self, *args): return lx.SORT (*args) def TEXTSPLIT(self, *args): return lx.TEXTSPLIT(*args) def TOCOL (self, *args): return lx.TOCOL (*args) - def UNIQUE (self, *args): return lx.UNIQUE (*args) + + def UNIQUE(self, *args): + shrunk_corners = self._get_shrunk_corners(args[0]) + shrunk_dataarray = self._get_dataarray(args[0], shrunk_corners) + args = (shrunk_dataarray,) + return lx.UNIQUE(*args) def XLOOKUP(self, *args): shrunk_corners1 = self._get_shrunk_corners(args[1]) diff --git a/pythonpath/lox365.py b/pythonpath/lox365.py index 7248284..3b9288f 100644 --- a/pythonpath/lox365.py +++ b/pythonpath/lox365.py @@ -18,7 +18,8 @@ def DBG_PY(cr, evalx): useful_positions['left'], useful_positions['top'], useful_positions['right'], useful_positions['bottom']).DataArray return ((repr(evalx),),) - # return ((pprint.pformat(repr(eval(evalx))),),) + # try: return ((pprint.pformat(repr(eval(evalx))),),) + # except Exception as e: return ((pprint.pformat(repr(e)),),) def FILTER(array, include, ifEmpty=ERR_CALC): if ifEmpty is None: ifEmpty = ERR_CALC