2016-12-21 4 views
0

J'ai effectué une fonction dans LibreOffice calc. Cela fonctionne, mais je voudrais avoir une aide de conext/capacité de pointe, comme les fonctions intégrées de LibreOffice.UDF/Fonction définie par l'utilisateur libreoffice basic avec aide intégrée/astuce

Exemple:. Quand je tape "= besselk (" il appaears une BESSELK de pointe (X; N) A l'aide de l'assistant de fonction une fonction et arguments description ne semble aussi Besselk besselk

Disons que je l'ai. une fonction à calculte une zone rectangulaire

function arearect(a, b) 
arearect = a * b 
end function 

je voudrais avoir quelque chose comme ceci:

function arearect(a, b) 
FUNCTION DESCRIPTION "Compute rectangle area" 
ARGUMENT DESCRIPTION "base length" 
ARGUMENT DESCRIPTION "height" 
arearect = a * b 
end function 

donc, quand je tape "= arearect (" la description de l'argument apparait et tous les descripteurs apparaissent sur Function Wizard.

grâce

Répondre

0

Création de la fonction définie par l'utilisateur en tant que Spreadsheet Add-In. Entrez ensuite le texte d'aide dans le nœud Description dans le fichier .xcu qui définit le complément.

Par exemple, j'ai créé une fonction appelée REVERSE. Voici mon fichier CalcAddIns.xcu:

<?xml version="1.0" encoding="UTF-8"?> 
<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      oor:name="CalcAddIns" oor:package="org.openoffice.Office"> 
    <node oor:name="AddInInfo"> 
    <node oor:name="name.JimK.ReverseStringImpl" oor:op="replace"> 
     <node oor:name="AddInFunctions"> 
     <node oor:name="reverse" oor:op="replace"> 
      <prop oor:name="DisplayName"><value xml:lang="en">reverse</value></prop> 
      <prop oor:name="Description"> 
      <value xml:lang="en">Flips a string backwards. For example "apple" becomes "elppa".</value> 
      </prop> 
      <prop oor:name="Category"><value>Add-In</value></prop> 
      <!-- This won't help, because there is no reverse() in Excel. --> 
      <prop oor:name="CompatibilityName"><value xml:lang="en">reverse</value></prop> 
      <node oor:name="Parameters"> 
      <node oor:name="s" oor:op="replace"> 
       <prop oor:name="DisplayName"><value xml:lang="en">s</value></prop> 
       <prop oor:name="Description"><value xml:lang="en">The string to reverse.</value></prop> 
      </node> 
      </node> 
     </node> 
     </node> 
    </node> 
    </node> 
</oor:component-data> 

Un complément nécessite également d'autres fichiers. Voici mon XCalcFunctions.idl:

#include <com/sun/star/uno/XInterface.idl> 

module name { module JimK { module CalcFunctions { 

    interface XCalcFunctions 
    { 
     string reverse([in] string s); 
    }; 

}; }; }; 

L'implémentation réelle était simple. Je python:

def reverseString(inString): 
    s = unicode(inString) 
    # This is extended slice syntax [begin:end:step]. With a step of -1, 
    # it will traverse the string elements in descending order. 
    return s[::-1] 

Le résultat:

calc tooltip

EDIT:

Il y a une autre pièce en Components.py pour mon extension:

class StringReverserAddIn(unohelper.Base, XCalcFunctions): 
    def __init__(self, ctx): 
     self.ctx = ctx 

    @staticmethod 
    def factory(ctx): 
     return StringReverserAddIn(ctx) 

    def reverse(self, inString): 
     from lingt.app.calcfunctions import reverseString 
     return reverseString(inString) 

g_ImplementationHelper.addImplementation(
    StringReverserAddIn.factory, 
    "name.JimK.LinguisticTools.ReverseStringImpl", 
    ("com.sun.star.sheet.AddIn",),) 

Le fichier est déclaré en manifest.xml:

<!--- The Python code --> 
<manifest:file-entry 
manifest:full-path="Components.py" 
manifest:media-type="application/vnd.sun.star.uno-component;type=Python"/> 

L'extension complète: https://extensions.libreoffice.org/extensions/lingtools.

+0

Salut. Ces fichiers sont dans le fichier .ods? Sinon, ce sera difficile. Parce que je veux partager les fonctions du fichier calc avec des gens qui ne sont pas assez avertis pour installer un addin. – Matheus

+0

Les fichiers doivent se trouver dans un package .oxt distinct et non dans le fichier .ods. L'installation d'un fichier .oxt exige simplement un double-clic dessus, donc j'espère que la plupart des gens qui savent travailler avec des feuilles de calcul pourraient le faire. Ou pourriez-vous l'installer pour eux, peut-être à distance? –

+0

Je vais aller pour l'installation. Mais comment générer un fichier .oxt? Je sais peut peut mettre tous les fichiers sur un zip, puis renommez en .oxt. Comme dans votre exemple, quel est le nom du fichier de code python pour reverse? Pourriez-vous donner votre .oxt? Les tutoriels en ligne sur l'extension manquent de simplicité, ce qui est notre cas ici. – Matheus