Home
Comprendre l`API d`OpenOffice.org
Contents
1. CharFontFamily CharFontFamily sian CharFontFamilyComplex CharFontName CharFontNamesian CharFontNameComplex ScTableSheet0bj False Xray Rev 4 0 Afficher C Propri t s Propri C M thodes C Services C Interfaces support es s A Z Objet d origine ScTableSheetObj Documentation du SDK Xray sur la propri t m thode Configuration Objet affich Vous pouvez s lectionner et copier les lignes affich es lt gt Objet d origine x icreateSubTotalDescriptor decrementIndent firePropertiesChangeEvent igetannotations get rrayFormula igetCellByPosition igetCellFormatRanges igetCellRangeByName igetCellRangeByPosition igetCharts igetColummDescriptions igetColummnPageBreaks leat Ca timne bEmpty as boolean aDescriptor as struct nFillDirection as integer nSourceCount as cee AS object nFillDirection as integer nFillMode as integer xDescriptor as object xDesc as object AS object xDesc as object AS object x tart t as object xDesc as object AS object aPropertyNames as string xListener as object AS object AS string nColumn as long nRow as long AS object AS object aRange as string AS object nLeft as long nTop as long nRight as long nBt AS object AS string AS struct AG nahianr 710 Outils et ressources ANNEXES Figure C 7 Xray version Python AA Deer oo ne Propri t s Laurent Godard
2. Notez que ThisComponent n est pas une variable mais un appel de fonction s il y a plu sieurs documents OpenOffice org ouverts elle renvoie le document OpenOffice org dont la fen tre est actuellement en avant plan C est pourquoi il est pr f rable de ne l appeler qu au d but de la macro et de sauver le r sultat dans une variable interne Outils et ressources ANNEXES CreateUnoStruct Sert obtenir une structure UNO par exemple Dim uneProp As Object uneProp CreateUnoStruct com sun star beans Property Il est plus simple de d finir directement la variable Dim uneProp As New com sun star beans Property CreateUnoValue Sert cr er une donn e quelconque pour la transmettre PAPI Cette m thode est pr vue pour des probl mes tr s particuliers de conversion Basic UNO CreateUnoService Permet d obtenir un objet capable de fournir le service donn en argument Dim demandePasse As Object demandePasse CreateUnoService _ com sun star task InteractionHandler Cette fonction est un raccourci pour Dim outilService As Object demandePasse As Object outilService GetProcessServiceManager demandePasse outilService createInstance _ com sun star task InteractionHandler CreateUnoListener Permet un programme de s enregistrer comme auditeur d un ensemble d v nements Voir le principe au chapitre 19 et un exemple au chapitre 17 CreateUnoDialog En fait cette fonction
3. rentes langues La figure C 1 montre un sous menu cr pour acc der Vadd on Figure C 1 Sous menu pour un add on 21122 23 24 25 26 27 2 La figure C 2 montre deux boutons ajout s sur la barre d outils de la version 1 1 d Open Office org Dans la version 2 0 chaque add on est accessible dans une barre d outil sup pl mentaire qui peut tre juxtapos e aux autres Figure C 2 Nouveaux boutons pour un add on ARE FA me Han De 6 17 18 19 20 2 22 23 24 25 26 27 26 Ceci est expliqu dans le document HowTo Comment diffuser vos macros avec un Add on Le document est lui m me un outil r alis par macros qui sert cr er ladd on sous forme d un fichier ZIP gt http fropenoffice org Documentation How to indexht html section programmation Basic document n 4 Avec la version 1 1 d OpenOffice org le fichier add on doit tre install en ex cutant le programme pkgchk partir de la ligne de commande La m thode suivre est indiqu e dans le document mais certains utilisateurs ont quelques difficult s le faire correctement aussi d autres d veloppeurs ont ils cherch une m thode plus simple pour diffuser un add on Parmi ceux ci Didier Lachi ze a r alis le HowTo Installeur de macros D autres travaux sont en cours gt http fropenoffice org Documentation How to indexht html section programmation Basic document n 6 Avec la versio
4. As String nomStyle As String As String Dim uneFamille As Variant Dim desStyles As Object unStyle As Object on Error Goto pbStyle desStyles leDoc StyleFamilies getByName fam unStyle desStyles getByName nomStyle getLocaleStyleName unStyle DisplayName On Error Goto 0 exit function pbStyle On Error Goto 0 getLocaleStyleName End Function Nous avons utilis un traitement d erreur pour renvoyer des points d interrogation sur les cas d chec notamment si le nom de famille de styles ou le nom de style est inconnu u un ex utine utili ion Vou u Le document comporte un exemple de routine utilisant la fonction Vous remarquerez que si vous entrez un nom localis la fonction renvoie ce m me nom gr ce la souplesse de getByName Routines utilitaires 699 ANNEXE B Rappel des routines d j d crites dans les chapitres Dialogue La fonction Dialogue cr e un objet dialogue connaissant le nom de la bo te de dialogue et sa biblioth que Le sous programme CenterDialog centre un nouveau dialogue par rapport un dialogue p re Voir le chapitre 16 pour ces deux routines Tableur et base de donn es Les fonctions suivantes se trouvent dans le fichier CalcSQL sxc qui se trouve dans le r pertoire regroupant les exemples du chapitre 17 La fonction CALCSQL1 sert effectuer dans une cellule Calc une requ te SQL sur une base de donn es Elle renvoie un tableau de r sultats La fonction CALCSQL2
5. C M thodes Documentation du SDK Igodard indesko com Faas Vous pouvez s lectionner et copier le d tail affich Objet affich Origine o D tail de la s lection e Interfaces support es Xray sur la s lection C Listeners support s Annotations ArrayFormula AsianVerticalMode AutomaticPrintArea BorderColor BottomBorder CellBackColor CellFormatRanges CellProtection com sun star util CellProtection Valeur IsLocked booleanjtrue IsFormulaHidden boolean false IsHidden boolean false IsPrintHidden boolean false CellStyle CharColor CharContoured CharCrossedOut CharEmphasis CharFont CharFontCharSet CharFontCharSetAsian CharFontCharSetComplex CharFontFamily CharFontFamilyAsian Certaines propri t s d objet sont list es mais non disponibles dans le contexte d autres ren voient un objet qui n est autre que l objet lui m me Lorsque vous demandez la documentation sur un l ment d un objet la recherche peut chouer la documentation manque ou l l ment est un fossile des temps r volus ou l objet n est pas officiellement utilisable Les biblioth ques de DannyB DannyB est la signature de Danny Brewer Il propose sur la page Developers du site OOoMacros des exemples et des routines r utilisables dont Danny Brewers Examples bas sur les r ponses donn es dans OOoForum Dannys Draw P
6. RightL et AscL Elles utilisent les m mes arguments que les fonctions d origine Remplacer un motif partout dans une cha ne de caract res La fonction RemplaceChaine disponible sur la page Internet http fr openoffice org index html a pour but de remplacer une s quence de caract res par une autre chaque fois qu elle appa ra t dans une cha ne de caract res Un exemple trivial consiste remplacer les caract res de s paration dans un chemin de fichier Les arguments de la macro sont dans l ordre e la cha ne initiale e la s quence rechercher cha ne de caract res e la s quence qui doit la remplacer cha ne de caract res un indicateur mis True pour que la recherche distingue la casse La fonction renvoie une cha ne de caract res modifi e Cette macro est cod e afin de fonctionner aussi sur des cha nes de plus de 32 767 caract res Trier un tableau de donn es La fonction TriShe11 disponible sur la page Internet http fr openoffice org index html effectue le tri d un tableau Array de Variant Elle est facilement modifiable pour trier une struc ture quelconque Le c ur de la macro est la comparaison des l ments et leur change Adaptez le vos besoins par exemple une comparaison de String tenant compte de la casse Ainsi que le pr cise le texte du document contenant la macro des th oriciens ont tudi avant nous comment optimiser un tri alors c est l occasion de ne p
7. This property defines the rendering of joints between thick lines LOPTIONAT 1 El Conclusion Une compr hension de l API elle m me hors du contexte des macros et une connaissance des sources d information disponibles nous semblent n cessaires pour parvenir en tirer parti Lannexe suivante offre un panorama de routines utilitaires qui compl te utilement les techniques vues au chapitre 19 689 Routines utilitaires Les sous programmes pr sent s dans cette annexe seront souvent utilis s dans vos projets de macros Certains sont soumis la licence LGPL d crite sur le site http www gnu org copyleft lesser html LICENCE LGPL Une traduction non officielle de la licence LGPL est disponible sur le site http www linux france org article these licence lgpl Igpl_monoblock html Cette licence stipule que vous pouvez utiliser ces routines dans vos programmes et les am liorer condition de maintenir les indications de licence et d auteur initial La premi re partie des routines d crites ici ont d j t utilis es dans divers chapitres de ce livre Elles peuvent servir de base des constructions plus labor es notamment sur le plan du traitement d erreurs Tableaux de propri t s Certains objets de PAPI se pr sentent sous la forme d un tableau de propri t s dont la liste est pr d finie C est le cas des descripteurs de tri pour Calc et Writer 692 Outils et ressources A
8. Width Taille Width 2 dessin setSize Taille Lutilisateur OOoBasic ne voit qu une propri t Size En r alit cette propri t n existe pas mais elle est un raccourci vers deux m thodes e setSize valeur qui modifie la taille en anglais size de l objet e getSize qui renvoie la taille de l objet Pour retrouver dans l API la description d une propri t d objet il est donc n cessaire d ajouter get ou set sl s agit d une pseudo propri t Certaines donn es internes Xyz peuvent tre manipul es seulement par getXyz ou seulement par setXyz Dans ces cas la pseudo propri t est restreinte la seule lecture ou criture On acc de aux vraies propri t s des objets de PAPI de mani re plus simple en OOoBasic que dans d autres langages comme Java Exemple codage autoris par OOoBasic couleur UneCellule Cel1BackColor UneCellule Cel11BackColor RGB 255 255 204 deuxi me mani re plus complexe et aussi valide en O0oBasic ici la casse de CellBackColor doit tre respect e couleur UneCellule getPropertyValue Cel1BackColor UneCel lule setPropertyValue Cel1BackColor RGB 255 255 204 Un objet dans une collection est accessible en OOoBasic par une indexation comme si la collection tait un tableau En r alit OO oBasic fait appel la fonction getByIndex de la collection codage autoris par OOoBasic uneFeuille monDocument Sheets 1 deuxi me mani re plus comp
9. ce une unit Delphi contenant des fonctions simplifi es d acc s PAPI une unit listant toutes les constantes API et un programme pour la mettre jour partir d un SDK e une unit apportant les fonctionnalit s de Xray e des exemples de programmation e un mode d emploi avec des conseils pour convertir une macro Basic en quivalent Delphi RESSOURCE Le fil de discussion Using COM for OOo with different languages donne des exemples en Visual Basic C C C Python Perl Ruby TCL et Delphi Comprendre l API d OpenOffice org 687 ANNEXE A La documentation de l API Software Development Kit L ensemble de la documentation est appel SDK Software Development Kit con u l origine pour un environnement de d veloppement en Java ou en C Il se compose de diverses parties d o sa taille respectable e le Developers Guide qui est un hypertexte expliquant la conception de PAPI OpenOffice org une version PDF imprimable du Developers Guide plus de 1000 pages pour ceux qui veulent d truire les for ts ou pour imprimer quelques pages d un chapitre e la r f rence IDL Interface Definition Language qui est un gigantesque hypertexte documentant presque tous les objets au sens le plus g n ral de PAPI e les fichiers id1 ayant servi constituer la r f rence ce sont des fichiers texte o on peut lire les valeurs des
10. ci dessus donne cette erreur car elle n existe pas en Basic mais elle existe dans d autres langages L quivalent Basic est wait 1000 Erreur runtime exception Traduction anomalie l ex cution Sur un appel de fonction API vous d clenchez un message d erreur contenant Type com sun star uno RuntimeException MesSage XXXXXX Comprendre l API d OpenOffice org 683 ANNEXE A Parfois la section Type indique un nom d exception plus sp cifique Bien souvent la sec tion Message ne contient rien C est la fonction API qui vous renvoie un diagnostic suite ses propres contr les V rifiez chacun des arguments et relisez la documentation de PAPI La raison est parfois plus subtile Dim MonDocument As Object MonTexte As Object Dim MonCurseur As Object MonCadre As Object MonDocument ThisComponent MonTexte MonDocument Text MonCurseur MonTexte createTextCursor MonCadre MonDocument createInstance com sun star text TextFrame MonCadre Width 10400 104 mm largeur MonCadre Height 2530 25 3 mm de haut MonCadre String hello Ci dessus il s agit d une erreur de m thodologie API ne permet pas d initialiser la pro pri t String du cadre avant de l avoir ins r dans le texte Erreur cannot coerce argument type during corereflection call Ce message en anglais est issu de l API Il nest compr hensible que par un informaticien connaissant les m canismes inter
11. connexion OLE et la syntaxe propre au langage le c ur des instructions peut tre remarquablement similaire ce qui a t expos Voici l quiva lent en langage Delphi du codage exemple cit plus haut en Java et OOoBasic const _awtFontWeightBOLD 150 000000 var mxDocText mxDocCursor Variant extrait du codage mxDocCursor mxDocText createTextCursor mxDocCursor gotoNextSentence false mxDocCursor gotoNextWord false mxDocCursor gotoNextWord true mxDocText insertString mxDocCursor hello mxDocCursor CharWeight _awtFontWeightBOLD true Comme nous n avons pas un acc s direct aux constantes nomm es nous devons d finir celles dont nous avons besoin Les valeurs de ces constantes sont lisibles dans les fichiers de l arborescence id1 du SDK Les constantes nomm es enum sont implicitement num rot es partir de z ro En Delphi les noms des propri t s employ s comme ci dessus ne sont pas sensibles la casse Il en est de m me pour les noms de m thodes Les pseudo propri t s sont aussi utilisables Les tableaux r els comme ElementNames fournis par certains objets peuvent tre index s normalement En revanche les pseudo indexations de collections permises par OOoBasic doivent tre remplac es par l usage de la m thode getByIndexO de l objet collection La bo te outils Delphi_OOo disponible en fran ais sur le site frOpenOffice org facilite la programmation OOo gr
12. constantes nomm es une r f rence pour le d veloppement en Java une r f rence pour le d veloppement en C e des exemples repris dans le Developers Guide e la sp cification des formats XML utilis s e divers outils de d veloppement Le SDK est disponible pour consultation en ligne la page http api openoffice org o vous trouverez aussi la derni re version a t l charger Il existe une version du SDK pour OOo 1 1 0 et une autre pour OOo 2 0 Dans cette derni re vous trouverez aussi des informations concernant les versions 1 1 2 et suivantes qui ne sont pas int gr es au SDK 1 1 0 Dans sa version hypertexte le Developer s Guide contient de nombreux liens vers la r f rence IDL et r ciproquement ce qui rend une lecture interactive souvent pr f rable une lecture imprim e D ailleurs la r f rence IDL est disponible seulement en version HTML La principale difficult lorsqu on tudie cette documentation est qu elle est con ue pour un d veloppeur Java ou C charg de faire voluer OpenOffice org ou d en r aliser une variante Ce point de vue est intimement m lang avec les descriptions des fonctionnalit s disponibles ce qui en rend la lecture assez difficile D autre part et principalement dans le Developers Guide les exemples sont donn s en langage Java notablement plus lourd que OOoBasic La r f rence IDL est r dig e par les programmeurs eux m
13. nom d objet La fonction getIndexByName recherche dans la collection l objet dont le nom est pass en argument En cas de succ s elle renvoie l index correspondant en cas d chec elle affiche une erreur et renvoie un index hors limites rem CodeAnnexeB 01 sxw bibli Collections Modulel Option Explicit renvoie l index de l l ment ayant le nom donn en argument Function getIndexByName collection As Object _ leNom As String As Long Const Titre Collection Dim x As Long for x 0 to collection Count 1 if collection x Name leNom then getIndexByName x renvoyer l index correspondant au nom Exit Function end if next MsgBox Nom inconnu amp leNom 16 Titre getIndexByName 100 valeur d index hors limites End Function Coordonn es de cellules L API fournit des fonctions pour convertir en adresse num rique une adresse utilisateur de cellule ou de zone de cellules Les fonctions de cette biblioth que r alisent l inverse sur toute l tendue des adresses possibles La version 2 d OpenOffice org devrait repousser les limites de Calc au del de 32 000 lignes Ces macros peuvent facilement tre adapt es mais plusieurs fonctions Basic pourront aussi tre modifi es par cette volution La fonction adrZoneString renvoie la cha ne de caract res correspondant aux coordon n es de la zone de cellules pass e en argument La fonction adresseString effectue le m me travail pour une adresse d
14. origine Nom interne de l objet ScTableSheetO0bj sianVerticalMode boolean False struct long struct string long CharContoured boolean CharCrossedout boolean CharEmphasis integer CharFont integer CharFontChar et integer CharFontChar et sian integer CharFontChar etComplex integer CharFontFamily integer CharFontFamily sian integer CharFontFamilyComplex integer CharFontName string CharFontNameAsian string CharFontNameComplex string o VVVOOumHHH EN En positionnant le curseur sur la ligne d un l ment un simple clic sur le bouton Docu mentation permet de visualiser sur votre navigateur Internet la documentation API con cernant l objet s lectionn voir figure C 5 Pour utiliser cette fonction il faut toutefois avoir install la documentation SDK sur l ordinateur La figure C 6 montre les m thodes offertes par l objet en analyse On peut approfondir l analyse sur une des m thodes condition qu elle ne comporte aucun argument ou encore acc der sa documentation Xray liste les services propos s par l objet et ceux disponibles par invocation ou liste les interfaces prises en charge La encore la documentation d un service ou d une interface est directement accessible Une version quivalente de Xray pour le langage Python est disponible Naturellement appell e pyXray voir figure C 7 elle a t r alis e par Laurent Godard et est disponible sur le site http www indesko com Cet ou
15. passez autre chose revenez y et relisez encore Respectez la casse des caract res majuscule minuscule pour les arguments en cha ne de caract res ainsi que pour les constantes API Ce codage est un exemple typique DescrTri 0 Name SortFields Attention la casse DescrTri 0 Value ConfigTriQ DescrTri 1 Name Orientation Attention la casse Constante API sur la ligne suivante attention la casse DescrTri 1 Value com sun star table TableOrientation ROWS DescrTri 2 Name ContainsHeader Attention a la casse DescrTri 2 Value true Erreur variable ind finie Le message signifie plut t variable non d finie Il appara t si vous avez utilis option de d claration obligatoire des variables Option Explicit Quelque part sur la ligne en erreur une variable n a pas t d clar e pr alablement Sou vent il s agit d une simple faute de frappe Relisez encore une fois Et b nissez l Option Explicit Erreur variable objet non param tr e Premier cas Vous utilisez une propri t ou une m thode d une variable objet mais cette variable est un objet vide Nu11 Exemple Dim tata as object toto as object tata toto truc Comprendre l API d OpenOffice org 681 ANNEXE A L erreur est que la variable toto rest pas un v ritable objet puisque nous avons oubli de lui affecter un objet API Basic ne peut pas trouver un truc dans cet objet Contre exe
16. 06 sxw bibli PressePapier Modulel Option Explicit Sub CopierDansPressePapier dim fenetreDoc as object dsp as object fenetreDoc StarDesktop CurrentFrame dsp createUnoService com sun star frame DispatchHel per dsp executeDispatch fenetreDoc uno Copy 0 ArrayO End Sub Sub CollerDepuisPressePapier dim fenetreDoc as object dsp as object fenetreDoc StarDesktop CurrentFrame dsp createUnoService com sun star frame DispatchHelper dsp executeDispatch fenetreDoc uno Paste 0 Array End Sub Routines utilitaires EUR ANNEXE B Les deux macros doivent tre lanc es sans utiliser le bouton de PEDI En premier plan doit s afficher une fen tre g r e par OpenOffice org en g n ral celle d un document ouvert Notez que m me la fen tre de PEDI conviendra La premi re macro copie dans le presse papiers la zone s lectionn e par l utilisateur ou s lectionn e par macro puis rendue visible pour l utilisateur comme expliqu dans la partie Writer Pour cela elle r cup re la fen tre courante affich e par OpenOffice org alors que le codage de l enregistreur de macros r cup re la fen tre courante du docu ment L utilisation du service DispatchHelper est reprise du code de l enregistreur de macros le nom de la variable ayant t chang pour raison de mise en pages La deuxi me macro copie le presse papiers dans la fen tre OpenOffice org en premier plan en crasant ventuellem
17. Comprendre l API d OpenOffice org Cette annexe offre une introduction la principale source d information officielle sur les m canismes internes OpenOffice org Tous ces documents en anglais sont accessibles un utilisateur confirm Qu est ce que l API L API Application Programming Interface d OpenOffice org est un ensemble de points d entr e permettant de manipuler OpenOffice org quoique ne couvrant cependant tous ses m canismes Sans tre li e un langage de programmation particulier elle est acces sible de mani re privil gi e avec OOoBasic mais on peut aussi utiliser des langages tels que Java Python Delphi voire d autres outils de script tel VBscript L API est un syst me logiciel tr s complexe par son tendue et par ses concepts elle est compos e de tr s nombreux objets h ritant les uns des autres Le d veloppeur la verra comme un ensemble de m thodes de fonctions de propri t s de structures de donn es Elle est organis e en un arbre dont la racine est com sun star Outils et ressources ANNEXES partir de cette racine elle se subdivise en modules qui sont des groupements de logi ciels par exemple com sun star text Tout l ment de l API se situe un n ud de cet arbre en juxtaposant les branches successives com sun star text WrapTextMode PARALLEL Un module se d compose en un service ou plusieurs et parfois en sous modules comme pou
18. La position d une page dans cet arbre est rappel e en haut a gauche des pages par exemple com sun star et l organisation des r pertoires contenant les pages HTML refl te exactement cette hi rarchie Lorsque nous indiquons une r f rence de documentation comme com sun star drawing LineProperties vous afficherez la page correspondante en suivant depuis la premi re page de PIDL le lien intitul drawing puis dans la page obtenue le lien intitul LineProperties comme on peut le voir sur la figure A 1 L autre moyen d acc s l IDL partir de n importe laquelle de ses pages est d utiliser le lien Index sur la premi re ligne du haut de la page Il vous affiche la page A d un diction naire Si vous cherchez la documentation sur LineProperties affichez la page L et recherchez ce mot dans celle ci en d but de ligne Vous rep rerez la ligne LineProperties service com sun star drawing LineProperties Ici il s agit d un service dont la page de description est accessible par lien hypertexte Dans bien des cas vous obtiendrez plusieurs lignes avec le m me nom car plusieurs types d objets ayant une propri t ou une m thode similaire ont normalement le m me nom Ce sera vous de d terminer lequel correspond votre contexte gr ce aux autres infor mations de la ligne Un dernier moyen tr s rapide d acc der directement la bonne page de PIDL consiste utiliser l outil XRay dont nous
19. NNEXES La routine printProps affiche les noms de ces propri t s et leur rang dans le tableau La fonction getPropVal renvoie la valeur de la propri t dont le nom est en argument La routine setPropVal affecte une valeur une propri t rem CodeAnnexeB 01 sxw bibli Proprietes Modulel Option Explicit affiche les noms de propri t s du tableau descr Sub printProps descr As Variant Const Titre Tableau de propri t s Dim x As Long liste As String for x 0 to UBound descr liste liste amp Index amp x _ amp descr x Name amp chr 13 next MsgBox liste 0 Titre End Sub affecte la valeur valProp a la propri t nomProp Sub setPropVal descr As Variant _ nomProp As String valProp As Variant Const Titre Tableau de propri t s Dim x As Long for x 0 to UBound descr if descr x Name nomProp then descr x Value valProp Exit Sub end if next MsgBox Propri t inconnue amp nomProp 16 Titre End Sub renvoie la valeur de la propri t nomProp Function getPropVal descr As Variant nomProp As String _ As Variant Const Titre Tableau de propri t s Dim x As Long for x 0 to UBound descr if descr x Name nomProp then getPropVal descr x Value Exit Function end if next MsgBox Propri t inconnue amp nomProp 16 Titre End Function Routines utilitaires 693 ANNEXE B Collections Certaines collections d objets ne permettent pas un acc s direct par le
20. age il est plus difficile crire et relire En contrepartie les exemples du Developers Guide tant crits pour la plupart en Java sont facilement transposables Avec ces langages la casse doit tre respect e tant pour les noms de m thodes et de pro pri t s que pour tous les noms symboliques du programme Les pseudo propri t s de Basic n existent pas vous devez utiliser les m thodes de l objet Les pseudo indexations de collections permises par OOoBasic doivent tre remplac es par l usage de la m thode getByIndex de l objet collection Pour des interactions simples avec l utilisateur vous devrez d velopper des quivalents de MsgBox et InputBox Python Dans Python la casse doit tre respect e tant pour les noms de m thodes et de propri t s que pour tous les noms symboliques du programme Les pseudo indexations de collec tions permises par OOoBasic doivent tre remplac es par l usage de la m thode getByIndex de l objet collection Pour des interactions simples avec l utilisateur vous devrez d velopper des quivalents de MsgBox et InputBox Dans l tat actuel pr version 1 9 ou version 2 0 0 il est n cessaire de cr er et diter les scripts Python dans un diteur externe produisant un codage source avec des fins de ligne fa on Unix m me sous MS Windows Le fichier doit tre mis dans un sous r pertoire user Scripts python ou share Scripts python Dans le premier cas le sous r per toire
21. as r inventer la roue en plus mal La m thode Shell est tr s efficace sans n cessiter un codage r cursif Elle est probablement assez rapide pour vos besoins en Basic et pas plus compliqu e employer qu un tri Bulle m thode vidente mais tr s lente EUR Outils et ressources ANNEXES Obtenir des adresses URL de fichiers et r pertoires Le document CodeAnnexeB 05 sxw contient plusieurs fonctions facilitant l analyse d adresses de chemins de fichiers Elles sont crites en anglais pour tre comprises du plus grand nombre Toutes ces fonctions voir le tableau B 2 utilisent des adresses au format URL Toutes les adresses de r pertoires doivent se terminer par le caract re Tableau B 2 Fonctions d adresses URL Fonction Argument R sultat getDirectory Chemin d un fichier Chemin du r pertoire contenant le fichier getParentDir Chemin d un r pertoire Chemin du r pertoire parent getFullFileName Chemin d un fichier Nom et extension du fichier exemple monfichier sxw getFileNameOnly Chemin d un fichier Nom du fichier sans l extension exemple monfichier getFileExt Chemin d un fichier Extension du fichier avec le point exemple sxw Copier coller avec le presse papiers C est avec un peu de scrupules que nous pr sentons ces deux macros qui ont t r alis es avec l enregistreur de macros c est cependant une solution simple et efficace et nous en avons am lior le code obtenu rem CodeAnnexeB
22. asic et l API ont leur place sur la liste prog fr openoffice org Il arrive que certains messages soient sign s de l un ou l autre des auteurs de ce livre gt http fr openoffice org servlets ProjectMailingListList Le site OOoConv cr par un des auteurs pr sente plusieurs outils dont l analyse sera instructive OOoConv FitOO BatchConv gt http oooconv free fr En anglais Le site http www oooforum org a une vitalit semblable aux forums fran ais d Open Office org mais il n est accessible qu avec un navigateur Web On y trouve en particulier e le forum Macros and API supervis par Danny Brewer o vous trouverez de nombreu ses informations dans les r ponses d ja faites e le pseudo forum Code Snippets d j cit qui n est pas un vrai forum de discussion mais un r pertoire d exemples de codage La page http Awww openoffice org mail_list html vous donne acc s tous les forums Open Office org de langue anglaise Le forum dev api openoffice org est consacr aux questions sur PAPI elle m me pos es par des programmeurs exp riment s Les r ponses sont souvent Outils et ressources ANNEXES apport es par les chefs d veloppeurs d OpenOffice org dans la mesure de leur disponibi lit Abstenez vous d y poser des questions de d butant Pour les programmeurs aguerris le site du projet UDK d OpenOffice org http udk openoffice org est consacr aux d veloppements permet
23. avons d j parl Comprendre l API d OpenOffice org ANNEXE A 7 Service LineProperties Opera _ of x Figure A 1 G Fichier Editer Afficher Navigation Signets Courier Fen tre Aide l x Une page de dene IT EEE TT es Re y Recherche L QQ Actu France ActuUS World wire Clubint Actus Flashmail cl Silicon fr Menu d outils O Module star O Module drawing jc Service LineProperties CR og Cr a 91 1_SDK docs common ref com sun star drawing LineProperties html x Aller amp cherche d Overview Module Use Devguide Index IncLuDeD SERVICES EXPORTED INTERFACES PROPERTIES Summary Properties DETAILS sun star drawing service LineProperties Description This is a set of properties to describe the style for rendering a Line The properties for line ends and line starts are only supported by shapes with open line ends Developers Guide 9 3 2 Drawing Documents and Presentation Documents Working with Drawing Documents Shapes Shape Operations General Drawing Properties Properties Summary LineStyle This property contains the type ofthe line LineDach The property contains the dash ofthe line LineColor This property contains the line color LineTransparence This property contains the extent of transparency Line Width This property contains the width of the line in 1 100th mm LineJoint
24. cit retrouve un objet diagramme partir du nom de l objet Function FindChartByObjName laFeuille As Object _ nomDiag As String As Object Dim dessin As Object sv As String sv com sun star drawing OLE2Shape dessin FindObjectByName laFeuille Drawpage nomDiag sv if not IsNull dessin then if dessin Model supportsService _ com sun star chart ChartDocument then FindChartByObjName dessin Model end if end if End Function renvoie Null en cas d chec Routines utilitaires ANNEXE B Redimensionner une image Le sous programme resizelmageByWidth redimensionne une image une largeur donn e en gardant ses proportions Il obtient de l objet image l objet GraphicObjectFil1Bitmap qui donne acc s aux informations sur l image elle m me Dans ce dernier objet la structure Size nous donne la taille de l image mesur e en pixels Une r gle de trois nous permet d en d duire les dimensions en 1 100 de millim tres rem CodeAnnexeB 02 sxw bibli Images Modulel Option Explicit Sub resizeImageByWidth uneImage As Object largeur As Long Dim leBitMap As Object Proportion As Double Dim Taillel As New com sun star awt Size LeBitmap uneImage GraphicObjectFil1Bitmap Taillel LeBitMap Size taille en pixels Proportion Taillel Height Taillel Width Taillel Width largeur largeur en 1 100 de mm Taillel Height Taillel Width Proportion uneImage Size Taillel End Sub Vous pourrez facilement r alis
25. d riv d OpenOffice org Vous y trouverez une description succincte mais couvrant l ensemble OOoBasic et API avec quelques informations non d crites ici et des con seils pour un programmeur Visual Basic for Application La page Macros du site fran ais d OpenOffice org met disposition un grand nombre d exemples de macros s lectionn s pour leur valeur explicative gt http fr openoffice org Documentation Macros indexmac html Le document El ments de programmation des macros dans OOo est une traduction francaise d un document anglais crit par Andrew Pitonyak Il contient un grand nombre de recettes sur des aspects assez sp cialis s de la programmation OpenOffice org La traduction tant assez en retard sur le document original consultez plut t la version anglaise si vous maitrisez la langue de Mark Twain gt Fran ais http fr openoffice org Documentation Guides Indexguide html Anglais http www pitonyak org oo php Outils et ressources ANNEXES Le site de langue anglaise OOoMacros contient de nombreuses macros la plupart assez voire tr s labor es On y trouve notamment des macros crites par Danny Brewer qui sont des mod les de bonne programmation Vous y retrouverez aussi certaines macros fran aises publi es en version anglaise gt http ooomacros org Le site de langue anglaise OOoForum consacre la section Code Snippets des exemples de codage la plupart en OOoBasic C
26. dCursor xWordCursor XWordCursor UnoRuntime queryInterface XWordCursor class mxDocCursor xWordCursor gotoNextWord false xWordCursor gotoNextWord true mxDocText insertString xWordCursor hello true XPropertySet xCursorProps XPropertySet UnoRuntime queryInterface XPropertySet class mxDocCursor xCursorProps setPropertyValue CharWeight new Float com sun star awt FontWe ight BOLD Ce code Java n cessite trois variables suppl mentaires pour g rer le curseur une pour chaque interface n cessaire Voici pour comparaison le code OOoBasic quivalent qui utilise que la variable curseur mxDocCursor mxDocText createTextCursor mxDocCursor gotoNextSentence false mxDocCursor gotoNextWord false mxDocCursor gotoNextWord true mxDocText insertString mxDocCursor hello true mxDocCursor CharWeight com sun star awt FontWeight BOLD Lorsqu il existe deux m thodes compl mentaires simples l une servant affecter une valeur une donn e interne l autre servant obtenir la valeur de cette donn e OOoBasic 676 Outils et ressources ANNEXES combine les deux sous la forme d une pseudo propri t utilisable comme une simple variable Voici deux codages OOoBasic qui r alisent exactement la m me chose Dim Taille As Object codage autoris par OOoBasic Taille dessin Size Taille Width Taille Width 2 dessin Size Taille application stricte de l API Taille dessin getSize Taille
27. e target milestone Ceci ne veut pas dire qu elles seront intro duites car d autres crit res entrent en jeu ressources int r t marketing complexit Avant d crire un rapport d anomalie v rifiez tr s soigneusement qu il s agit bien d une erreur de l application OpenOffice org et non pas d une erreur de compr hension de votre part ou une mauvaise configuration de votre ordinateur Simplifiez au maximum les con ditions d apparition de l anomalie Joignez si possible un document d montrant l erreur par exemple une macro r duite au codage minimum n cessaire En effectuant ce travail vous analyserez mieux l anomalie et souvent vous verrez qu elle provient d une erreur de votre part Soyez le plus clair possible dans les explications restez factuel Pensez que les d veloppeurs ont lire des dizaines de rapports en plus de leur activit habituelle L criture de rapports est r serv e aux membres d OpenOffice org Ce mest pas une soci t secr te nimporte qui peut devenir membre gratuitement et sans engagement Allez la page http www openoffice org servlets Join et remplissez le formulaire Vous avez maintenant une identit dans le syst me et un mot de passe Pour cr er un rapport vous devez d abord vous connecter au syst me en allant a la page http Awww openoffice org servlets TLogin Puis commencez la page http www openoffice org issues enter_bug cgi Une fois choisi le domain
28. e cellule Les autres fonctions sont utilis es par les deux pr c dentes Notez que ces routines effectuent un contr le de vraisemblance sur les coordonn es four nies En cas d anomalie la cha ne renvoy e comportera des caract res Outils et ressources ANNEXES rem CodeAnnexeB 01 sxw bibli Cellules Modulel Option Explicit convertit une adresse de zone de cellules en adresse textuelle Function adrZoneString maDoc As Object adrZone As Object As String Dim resu As String resu maDoc Sheets adrZone Sheet Name amp amp _ alphaXY adrZone StartColumn adrZone StartRow if adrZone StartColumn lt gt adrZone EndColumn or _ adrZone StartRow lt gt adrZone EndRow then resu resu amp amp alphaXY adrZone EndColumn adrZone EndRow end if adrZoneString resu End Function convertit une adresse de cellule en adresse textuelle Function adresseString maDoc As Object adrCellule As Object As String adresseString maDoc Sheets adrCellule Sheet Name amp amp _ alphaXY adrCellule Column adrCellule Row End Function convertit une coordonn e XY en coordonn e alphanum rique Function alphaXY X As Long Y As Long As String if Y gt 0 and Y lt 32000 then alphaXY lettreColonne X amp CStr Y 1 else alphaXY lettreColonne X amp end if End Function 1 convertit num ro de colonne 0 255 en lettres A IV Function lettreColonne n As Long As String Select Case n Case
29. e principal vous vous retrouvez devant un formu laire dont il faut remplir au mieux les cases Ce rest pas facile les premi res fois Le titre du rapport et le texte explicatif doivent obligatoirement tre en anglais Envoyez le rap port Un num ro sera attribu automatiquement et vous recevrez un courrier lectronique pour chaque volution de ce rapport Utilisez la page Web renvoy e pour ajouter ven tuellement un fichier Plus tard en r affichant le rapport vous pourrez ajouter de nou velles informations condition de vous tre identifi Soyez tr s patient un rapport peut rester plusieurs mois sans r ponse Si votre anomalie est reconnue comme telle la date pr visionnelle de correction sera indi qu e dans le champ Target Milestone Les ressources humaines tant toujours limit es il est encore possible que cette date soit repouss e plus tard lors d une r analyse des priorit s Partager la connaissance Comme nous l avons vu dans l expos pr c dent la communaut est tr s active en ce qui concerne l API et les macros De nombreuses sources sont disponibles et il ne tient qu nous acteurs et utilisateurs d enrichir notre connaissance commune Vous venez d crire une macro qui comble un manque d OpenOffice org ou simplement se r v le utile au jour le jour il est fort probable que cette macro puisse servir quelqu un d autre Comme nous apprenons tous de la lecture des macros publi es
30. e type Variant Si vous aviez utilis l option le message d erreur aurait t plus clair Outils et ressources ANNEXES Erreur utilisation incorrecte d un objet Cela signifie que vous essayez d affecter une variable objet quelque chose qui n est pas un objet par exemple une valeur num rique ou une cha ne de caract res comme ici l l ment Author Dim tata as object tata ThisComponent DocumentInfo Author Erreur propri t ou m thode introuvable Ce message est assez explicite Vous cherchez utiliser dans un objet qui existe bien une propri t ou une m thode que l objet ne poss de pas Souvent c est une faute typogra phique parfois c est une mauvaise connaissance de API comme ici pour un document Writer Dim tata as object tata thisComponent DrawPages La propri t est DrawPage sans s alors qu un document Draw poss de effectivement une propri t DrawPages Si l erreur provient de ce que vous cherchez deviner une propri t d un objet API vous perdez votre temps Relisez plut t ce livre et utilisez la macro Xray Erreur la sous proc dure ou proc dure fonctionnelle n est pas d finie Dans instruction en faute Basic pense que vous essayez d appeler une fonction ou pro c dure qu il ne conna t pas V rifiez l orthographe de la proc dure que vous voulez uti liser et v rifiez qu elle existe bien Exemple sleep 1000 Linstruction
31. ent une zone s lectionn e L utilisateur peut afficher une autre application OpenOffice org alors que le codage original ne le permettrait pas La seule diff rence avec la premi re macro r side dans le deuxi me argument de la m thode executeDispatch NOTER L enregistreur de macros Utiliser l enregistreur de macros est quelquefois frustrant mais cela peut tre un moyen simple de couvrir une fonctionnalit difficile ou impossible impl menter avec l API La liste des commandes du dispatch est disponible sur internet aux adresses suivantes e pour la version 1 1 d OpenOffice org gt http framework openoffice org files documents 25 1042 commands_11beta html e pour la version 2 0 d OpenOffice org gt http framework openoffice org files documents 25 2570 commandsReference html Les commandes de la forme uno xxxxx sont dans la premi re colonne des tableaux L utilisation des cons tantes num riques ID de cette page est a proscrire Elles sont a usage interne et peuvent changer a tout moment Conclusion Les macros expos es dans ce chapitre sont directement op rationnelles Elles illustrent la notion de r utilisabilit qui permet de gagner du temps et de l nergie en p rennisant les d veloppements Il est inutile de r crire plusieurs fois le m me code pour effectuer la m me action Usez et abusez de telles routines elles constitueront progressivement une bo te outils adapt e v
32. er sur ce mod le un sous programme redimensionnant selon une hauteur donn e Autre variation le sous programme resizeImageByDPI redimensionne l image en respec tant une densit de points donn e en DPI rem CodeAnnexeB 02 sxw bibli Images Module2 Option Explicit Sub resizeImageByDPI uneImage As Object DPI As Long Dim leBitMap As Object Proportion As Double Dim Taillel As New com sun star awt Size Const pouce 2540 longueur en 1 100 de mm LeBitmap uneImage GraphicObjectFil1Bitmap Taillel LeBitMap Size taille en pixels Proportion pouce DPI Taillel Width Taillel Width Proportion Taillel Height Taillel Height Proportion uneImage Size Taillel End Sub 697 698 Outils et ressources ANNEXES Traduire un nom de style Le nom d un style obtenu par exemple avec la propri t ParaStyleName est le nom interne en anglais Le nom affich dans le styliste est dans la langue locale La fonction getLocaleStyleName renvoie le nom localis correspondant un nom interne Elle emploie trois arguments e l objet document qui contient les styles e le nom de la famille de styles e le nom anglais du style Cette fonction ne donnera pas de bons r sultats dans Impress pour les styles de la famille Standard voir le chapitre 13 rem CodeAnnexeB 03 sxw bibli NomsStyles Modulel Option Explicit renvoie le nom localis d un style Function getLocaleStyleName leDoc As Object _ fam
33. es codages ont t choisis pour leur int r t p dago gique et technique Danny Brewer est un des mod rateurs de OOoForum gt http www oooforum org forum viewforum php f 11 Le projet API du site anglais OpenOffice org n est pas en reste et publie les Snippets que lui fournissent les programmeurs API gt http codesnippets services openoffice org Le projet DBA d OpenOffice org consacr aux bases de donn es en anglais offre un fichier ZIP contenant quelques macros d acc s aux bases de donn es D compressez ce ZIP et utilisez Outils gt Macros gt Macro pour ins rer une biblioth que qui aura pour nom DBATools gt http dba openoffice org downloads DBATools zip Votre application OpenOffice org elle m me est livr e avec plusieurs biblioth ques de macros dans soffice Ces codages sont malheureusement tr s peu document s et sou vent anciens On peut y glaner des s quences int ressantes et m me utiliser des macros telles quelles Voyez notamment les biblioth ques ImportWizard Gimmicks et Tools D une mani re plus g n rale les solutions base de macros cit es dans le chapitre 1 du pr sent ouvrage peuvent aussi apporter des solutions vos besoins Sites Web et forums Parmi les sources d information nous citerons des forums en langue fran aise anglaise ou autres Rappelons quelques principes communs tous les forums e Commencez par observer les changes de messages avant de participe
34. gt 255 lettreColonne Case lt 0 lettreColonne Case lt 26 lettreColonne _Lettre n Case Else lettreColonne _Lettre n 26 1 amp _Lettre n Mod 26 End Select End Function moon fonction interne Function _Lettre p As Long As String _Lettre chr Asc A p End Function Routines utilitaires 655 ANNEXE B Rechercher un objet par son nom La fonction findObjectByName est inspir e des travaux de Danny Brewer Cette fonction recherche dans une page de dessin un objet dont le nom est donn en argument En cas chec la fonction renvoie la valeur Nu11 rem CodeAnnexeB 02 sxw bibli Dessin Modulel Option Explicit retrouve un objet a partir de son nom Function FindObjectByName unePage As Object _ nomObj As String Optional service As String As Object Dim objX As Object x As Long For x 0 To unePage Count 1 objX unePage x If objX Name nomObj Then if IsMissing service then FindObjectByName objX objet trouv Exit Function else if objX supportsService service then FindObjectByName objX objet trouv Exit Function end if end if EndIf Next End Function renvoie Null en cas d chec Le param tre service est optionnel Il permet de ne rechercher qu un objet proposant le service indiqu En effet une page de dessin peut contenir diff rentes sortes d objets et vous pourriez par exemple obtenir une image ayant le nom du dessin que vous cherchez par programmation on
35. importe le r sultat d une requ te SQL depuis une base de donn es Le r sultat est obtenu dans un tableau de cellules d une feuille du tableur Rechercher la forme d un contr le de formulaire La fonction FindCtr1ShapeByName recherche dans une page de dessin une forme correspon dant un contr le de formulaire dont le nom est donn en argument Voir le chapitre 18 Cr ation et d compression d un fichier ZIP Plusieurs sous programmes de gestion de fichier ZIP sont d crits dans le chapitre 19 Les routines suivantes n ont pas t utilis es dans les chapitres pr c dents mais elles sont d une incontestable utilit Conversion date heure vers heure minute seconde Les fonctions Basic Hour Minute Second sont incorrectes sur les versions d Open Office org ant rieures 1 1 4 et corrig es partir de celle ci et sur la version 2 0 0 Pour les utilisateurs des versions posant probl me nous proposons le sous programme Time_HMS qui r alise une conversion correcte Il a t test sur les 86 400 valeurs possibles de la partie heure Le sous programme Time_HMS re oit une valeur de date heure au format interne et en extraie les valeurs d heure minute seconde e Argument 1 date heure e Argument 2 variable qui recevra la valeur d heure 0 23 700 Outils et ressources ANNEXES Argument 3 variable qui recevra la valeur de minute 0 59 e Argument 4 variable qui recevra la valeur de
36. lexe et aussi valide en O0oBasic uneFeuille monDocument Sheets getByIndex 1 Comprendre l API d OpenOffice org 677 ANNEXE A Il existe aussi un raccourci OOoBasic pour acc der par son nom un objet de collection Nous ne l avons pas employ car il peut donner des expressions ambigu s codage recommand uneFeuille monDocument Sheets getByName Total deuxi me mani re valide en OOoBasic d conseill e uneFeuille monDocument Sheets Total ALLER PLUS LOIN Liaison Basic UNO L interfa age entre OOoBasic et UNO le concept logiciel d OpenOffice org est d crit plus longuement dans le Developer s Guide chapitre 3 4 3 Les fonctions Basic d di es a I API Tout au long de cet ouvrage nous avons utilis plusieurs fonctions OOoBasic qui facili tent l acc s PAPI En voici une liste plus syst matique StarDesktop Il s agit d un objet pr d fini qui est le service de base d OpenOffice org Il est un raccourci pour Dim mon00o As Object mon000o createUnoService com sun star frame Desktop ThisComponent Repr sente l objet document en cours il est en g n ral quivalent Dim monDocument As Object monDocument StarDesktop CurrentComponent Cependant si PEDI est en premier plan CurrentComponent renverra PEDI et la macro ne fonctionnera pas alors que ThisComponent continue renvoyer l objet document C est pourquoi ThisComponent est pr f rable
37. mes lors du d veloppement et compil e ensuite automatiquement Lennui c est que les programmeurs sont rarement int ress s par l criture de la documentation Aussi est elle parfois d cevante par son aspect r p titif et ses lacunes 688 Outils et ressources ANNEXES Comment s y retrouver Nous vous conseillons d installer le SDK sur votre ordinateur pour un acc s plus rapide et d utiliser un navigateur Internet capable d afficher de multiples pages accessibles sous forme d onglets par exemple Mozilla Firefox http frenchmozilla org Dans une installation standard sous MS Windows la page d entr e se trouve sur votre disque a l adresse C OpenOffice orgl 1_SDK index htm1 En fait cette page est assez peu utilis e Vous commencerez plut t par la page Developers Guide ou la page IDL Reference qui sont accessibles depuis la premi re La page d introduction au Developers Guide vous renvoie vers le sommaire Table of contents de ce qui est en fait un v ritable livre Beaucoup de recherches g n rales parti ront de ce sommaire Comme certaines pages sont tr s lentes 4 charger sur un navigateur il peut tre plus pratique d afficher la version PDF du Developer s Guide La premi re page de la r f rence IDL liste les diff rents modules qui composent le module Star l ensemble de l application Tout est ensuite d compos en un arbre avec de nombreuses ramifications
38. mest concevable que dans un environnement OOoBasic puisqu elle sert cr er une bo te de dialogue voir chapitre 15 GetProcessServiceManager Renvoie un objet permettant d obtenir un service initialis soit par d faut soit avec des arguments Le premier cas est r alis plus simplement avec CreateUnoService Le deuxi me cas est de la forme Comprendre l API d OpenOffice org 679 ANNEXE A Dim outilService As Object unService As Object Dim args 1 un ou plusieurs arguments outilService GetProtcessServiceManager initialiser le tableau args avant cette instruction unService outilService createlnstanceWithArguments _ com sun star xxx yyy zzz args Il existe aussi une troisi me forme d initialisation createlnstanceWithArgumentsAndContext Ces deux derni res formes ne sont utilis es que dans des cas assez particuliers IsUnoStruct Renvoie True si la variable est une structure UNO Exemple de structure UNO le des cripteur renvoy par createReplaceDescriptor voir chapitre 11 Cette fonction permet de distinguer une structure d un objet v ritable ou d une donn e simple Les variables de structure UNO sont de vraies valeurs et non des r f rences comme les variables sur les objets C est la raison des recopies n cessaires pour effectuer une modifi cation comme ici dim rognure as object rognure monImage GraphicCrop rognure Bottom 2000 monImage GraphicCrop rognu
39. mple ceci fonctionne sans erreur Dim tata as object toto as object tata toto En effet cela revient affecter tata une variable objet de valeur Nu11 En pratique le cas arrive lorsqu une fonction API est mal utilis e mais qu elle se con tente de renvoyer un objet Nu11 sans erreur d ex cution Dim MonDocument As Object lesFeuilles As Object Dim AdresseDoc As String PropFich AdresseDoc private factory calc MonDocument StarDesktop LoadComponentFromURL _ AdresseDoc _blank 0 PropFich lesFeuilles MonDocument Sheets La derni re ligne d clenche une erreur parce que MonDocument est Nu11 En effet il y a une erreur dans l appel de LoadComponentFromURL qui l emp che de cr er un nouveau document Calc on a affect une valeur incorrecte la variable AdresseDoc Cherchez l erreur Deuxi me cas Vous appelez une fonction de API un des arguments de cette fonction doit tre un objet API mais vous transmettez un autre type valeur num rique cha ne de carac t res comme ici sur la derni re ligne Dim MonDocument As Object MonTexte As Object Dim MonCurseur As Object MonDocument ThisComponent MonTexte MonDocument Text MonCurseur MonTexte createTextCursorByRange 1234 Si vous n utilisez pas Option Explicit l erreur peut aussi tre une faute de frappe dans le nom d une variable pass e en argument la fonction API ce nom est alors interpr t comme une nouvelle variable d
40. n 2 0 d OpenOffice org l installation d un add on est beaucoup plus simple car on peut utiliser le Gestionnaire de packages qui est accessible partir du menu Outils La figure C 3 montre un add on d j install Contrairement la version 1 1 d OpenOffice org un add on peut tre ajout dynamique ment OpenOffice org m me si celui ci est en cours d execution cliquer sur le bouton Ajouter et choisir le fichier zip de add on Le gestionnaire de packages peut aussi tre ex cut en ligne de commande par l interm diaire de la commande unopkg Ressources disponibles sur Internet Figure C 3 Le Gestionnaire de packages Parcourir les packages ANNEXE C FF Gestionnaire de packages oO x Package et Ajouter amp F Mes packages E Be MultiPages zip Activ Supprimer kml addon xcu Activ MultiPages Activ amp Packages OpenOffice org we Introspection et documentation avec Xray L API offre des fonctions d introspection et de core reflection permettant d obtenir l ex cution de nombreuses informations sur les objets manipul s Toutefois ces fonctions sont assez complexes utiliser Loutil Xray r alis avec des macros met en forme ces informations et permet d tudier les sous objets Il est capable de retrouver dans PIDL la documentation du sous objet si elle existe Les auteurs utilisent intensivement Xray pour tudier la structure des objets et lire leur d
41. nes de OOoBasic En termes courants il signifie vous rs m avez transmis un argument dont le type n est pas compatible avec celui que j attends je ne sais pas l utiliser En pratique un des arguments servant appeler la m thode API est incorrect vous de trouver de quel argument il s agit et en quoi il est incorrect Relisez la documentation de PAPI ou le chapitre correspondant dans ce livre Cet exemple essaie d ins rer un cadre dans un document Writer Dim MonDocument As Object MonTexte As Object Dim MonCurseur As Object MonCadre As Object MonDocument ThisComponent MonTexte MonDocument Text MonCurseur MonTexte createTextCursor MonTexte insertTextContent MonCurseur MonCadre false L erreur est qu on a oubli d initialiser la variable monCadre 684 Outils et ressources ANNEXES L API avec d autres langages de programmation Les autres langages de script de la version 2 Nous avons signal au chapitre 3 les diff rents langages de scripts utilisables avec la version 2 d OpenOffice org et le niveau de leur int gration dans l application Voici le point de vue du programmeur JavaScript et BeanShell Ces langages tr s similaires Java n cessitent comme lui d invoquer l interface des m thodes utiliser Nous n avons pas pr cis les noms des interfaces dans ce livre car c est parfaitement inutile avec Basic et Python La cons quence est une certaine lourdeur du cod
42. ocumentation dans API Sans Xray cet ouvrage ne serait pas aussi d taill gt http fr openoffice org Documentation How to indexht html section programmation Basic document n 5 Xray se pr sente sous la forme de deux biblioth ques de macros installer dans le conte neur soffice dans Mes Macros pour la version 2 0 d OpenOffice org Pour tudier un objet il est n cessaire d ajouter une instruction dans le codage pour appeler Xray monDocument thisComponent lesFeuilles monDocument Sheets maFeuille lesFeuilles getByName Janvier xray xray maFeuille L expression signifie appeler la macro xray qui se trouve dans la biblioth que xray et lui transmettre en argument l objet maFeuille On obtient le panneau de la figure C 4 o on visualise les propri t s disponibles pour l objet analys En positionnant le curseur sur la ligne d un l ment complexe comme Ce11Protection il suffit de cliquer le bouton Xray pour afficher le contenu de ce sous objet Lop ration peut tre r p t e sur diff rents sous objets a plusieurs niveaux 707 708 Outils et ressources d une feuille Calc ANNEXES Figure C 4 Xray Rev 4 0 Fi l t Afficher Ce PER Pen Obiet donne setabiesheetOb E Propri t s C Propri t s A Z C M thodes C M thodes A Z Documentation du SDK C Services Configuration C Interfaces support es Xray sur la propri t m thode Objet affich Objet d
43. or gotoNextWord False mxDocCursor gotoNextWord True mxDocText insertString mxDocCursor hello True mxDocCursor CharWeight uno getConstantByName com sun star awt FontWeight BOLD Avant de vous lancer lisez ces pages fondamentales en anglais sur le site udk conversions entre types API et types Python cr ation de composant OpenOffice org en Python http udk openoffice org python python bridge html cette page est aussi valide avec la version 1 1 d OpenOffice org mise en place de scripts Python et sorties de messages d erreur dans Open Office org 2 0 http udk openoffice org python scriptingframework index html Piloter OpenOffice org avec Microsoft COM Sous MS Windows il est possible partir d un langage de programmation ind pendant utiliser COM pour piloter l application OpenOffice org et manipuler des documents en utilisant son API telle quelle a t d crite dans cet ouvrage Le SDK de la version 2 0 d OpenOffice org fournit plusieurs exemples e dans examples CLI langages VB NET et C e dans examples OLE langages Delphi et VbScript Dans la section CodeSnippets de OOoForum http Awww oooforum org forum vous trouverez notamment le fil de discussion Using COM for OOo with different languages qui pr sente des exemples de programmation COM avec divers langages dont VB C Python Lotus Script Delphi 686 Outils et ressources ANNEXES Mises part l initialisation de la
44. os besoins et vous permettront de rester concentr sur l objectif premier de la macro que vous tes en train de concevoir Voyons maintenant quelles richesses sont disponibles sur l Internet Ressources disponibles sur Internet De nombreuses informations outils et compl ments sur la programmation Open Office org sont disponibles sur Internet Ils sont une source toujours renouvel e de savoir et d inspiration ATTENTION Lecture critique De nombreuses macros sont disponibles sur Internet mais elles ne doivent pas tre consid r es comme une r f rence absolue Elles peuvent contenir des erreurs ou tre am lior es ou correspondre aux pre miers essais d un programmeur ou des extraits d un codage plus complexe Cherchez donc toujours comprendre les principes utilis s Diffuser vos macros avec un add on Installer des macros sur un syst me et ajouter des ic nes pour les d clencher est une t che intimidante pour un utilisateur ordinaire Pour un utilisateur confirm r p ter ces op ra tions sur plusieurs ordinateurs devient lassant et sujet erreurs La m thode des add on est pr vue pour modifier la configuration d une installation OpenOffice org En particu lier elle permet d installer une biblioth que de macros d ajouter des sous menus ou des boutons avec ic nes des endroits r serv s pour cet usage et m me de pr voir des 706 Outils et ressources ANNEXES libell s en diff
45. ower Tools outils de macros pour Draw Danny Library biblioth que de l auteur Il a publi aussi dans la section Code Snippets de OOoForum plusieurs biblioth ques personnelles mises jour au long de ses recherches notamment e Dannys Basic library e Danny s Python Modules Ressources disponibles sur Internet om ANNEXE C e String utility functions for OOo Basic gt http ooomacros org dev php Comme vous pouvez vous en douter Danny Brewer crit en anglais Les ressources que nous venons de passer en revue sont essentiellement destin es au d ve loppeur Nous allons voir quelles sont celles mises la disposition des utilisateurs Documents informatifs et exemples La page des HowTo du site fran ais d OpenOffice org contient une section int ressante sur la programmation Basic gt http fr openoffice org Documentation How to indexht html Une partie de ces HowTo fait double emploi avec notre ouvrage ou sont cit s ailleurs mais nous signalerons ceux apportant des informations compl mentaires e Dans la jungle de PAPI une exp rience v cue d un essai de compr hension de PAPI racont e sur le mode humoristique e Exemples pour BDD divers conseils de programmation Basic sur les bases de donn es et formulaires e Manuel de programmation Basic StarOffice 7 ce document crit par Sun Microsystems vous fournit une autre vision de la programmation de StarOffice un
46. par d autres vous pouvez vous aussi participer en rendant public votre travail Vous serez accueillis avec enthousiasme sur les listes de diffusion francophones comme doc fr openoffice org ou prog fropenoffice org Votre contribution y sera valoris e et ce en changeant juste quelques courriers lectroniques Pourquoi s en priver Conclusion La richesse des ressources disponibles sur l Internet source d informations dynamique et vivante est illimit e et nous n en pr sentons qu une partie N h sitez pas en tirer r gu li rement profit
47. peut donner le m me nom plusieurs objets d une page En v rifiant que l objet obtenu reconna t un service caract ristique du type d objet recherch nous effectuons une v rification suppl mentaire Le tableau B 1 indique quel service caract rise un objet Tableau B 1 Services caract ristiques Type d objet recherch Service caract ristique Dessin sauf 3D com sun star drawing LineProperties Dessin 3D com sun star drawing Shape3DScene Image com sun star drawing GraphicObjectShape Objet OLE2 com sun star drawing OLE2Shape 696 Outils et ressources ANNEXES Par exemple pour rechercher seulement une forme dessin e appel e F3 nous crirons Dim sv As String sv com sun star drawing LineProperties maForme FindObjectByName maPage F3 sv En effet le service Shape trop g n ral est galement propos par une image En revanche vous pouvez tre plus pr cis et exiger par exemple une EllipseShape Rechercher un diagramme par son nom La fonction FindChartByObjName recherche dans une feuille Calc un objet diagramme partir du nom de forme d fini par l interface utilisateur Elle utilise la fonction pr c dente en recherchant un objet OLE2 Toutefois pour tre certain qu il s agit d un dia gramme elle v rifie que le sous objet Mode1 propose le service de diagramme La fonction renvoie la valeur Nu11 en cas d chec rem CodeAnnexeB 02 sxw bibli Dessin Modulel Option Expli
48. python doit tre cr par le d veloppeur Dans un document le script doit tre ins r en manipulant la structure du fichier document Actuellement le sys path fourni ne permet d importer que des modules situ s dans installation program et ceux du python core Tout ceci semble d courageant pourtant les scripts obtenus g rent l API aussi facilement qu en OOoBasic pas d invocation d interface utilisation possible des pseudo propri t s De plus contrairement a Basic il est possible avec Python de cr er de v ritables compo Comprendre l API d OpenOffice org 685 ANNEXE A sants UNO int gr s OpenOffice org Ils sont alors utilis s comme de nouveaux services m me dans une macro Basic Le programmeur profite des qualit s de Python l indentation obligatoire facilite la relec ture les variables ne sont pas d clar es mais leur usage est contr l elles peuvent changer de type dynamiquement les algorithmes sont plus simples gr ce aux fonctions puissantes int gr es dans Python et ses modules principaux la gestion des erreurs est celle des lan gages modernes et la programmation objet facilite la conception de programmes com plexes Pour montrer la similarit de programmation API voici le portage en Python de la por tion de codage Basic indiqu plus haut section LAPI r elle et PAPI selon OOoBasic mxDocCursor mxDocText createTextCursor mxDocCursor gotoNextSentence False mxDocCurs
49. r activement ceci afin de cerner le domaine des discussions et le niveau technique e Ne posez pas une question qui a d j re u une r ponse r cemment il existe des moyens de recherche dans chacun des forums Ressources disponibles sur Internet 713 ANNEXE C e Restez poli vitez le bavardage intempestif soyez bref et clair dans votre demande Il est tr s mal lev de poser dans un forum une question dans une autre langue que celle pour laquelle il est cr e Rappelez vous que ces forums sont anim s par des bonnes volont s qui ne sont pas r tribu es pour cela RETENIR S inscrire un forum Les forums cit s sont pour la plupart des listes de distribution de messages mailing lists Pour savoir com ment s y abonner gratuitement envoyer un message se d sabonner il suffit d envoyer un courrier lec tronique vide l adresse xxx info yyyy par exemple prog info fr openoffice org Un robot vous renverra un message explicatif en anglais Comme c est un robot inutile d tre poli avec lui et inutile d esp rer une r ponse personnalis e En fran ais Le site fran ais d OpenOffice org http f openoffice org est probablement le plus vivant et le plus complet de tous les sites nationaux d OpenOffice org Nous en avons cit plusieurs pages Ce site est g r par Sophie Gautier qui est aussi la mod ratrice des forums en langue fran aise Les questions et r ponses concernant OOoB
50. r le module text Un service comporte lui m me parfois des services en anglais included services Il peut avoir des propri t s Ce sont des vraies propri t s nous verrons plus loin qu OOoBasic pr sente aussi des pseudo propri t s Un service poss de en g n ral une interface ou plusieurs Tous les noms d interfaces commencent par un X majuscule La documentation dit que le service exporte des interfaces ce qui signifie qu il les met la disposition du programmeur Une interface contient des m thodes Ce sont des sous programmes utilisables partir de l objet consid r Les m thodes utilisent des arguments et renvoient ventuellement un r sultat sous programme fonction Chaque argument et chaque r sultat peut tre un objet API une donn e d un type simple bool en entier flottant une s quence de donn es ou d objets pr sent en OOoBasic sous forme de tableau une constante nomm e qui est un type entier dont les valeurs possibles sont d finies avec des noms qualifi s une structure de donn es qui est un regroupement de donn es accessibles individuel lement Comme l API est ind pendante du langage le type simple indiqu pour une donn e doit tre traduit dans le type de donn es le plus proche pour le langage de programmation utilis Cela peut poser quelques difficult s par exemple OOoBasic ne poss de ni type Byte ni type hyper Un objet API en dehors des cons
51. re EqualUnoObjects Les variables repr sentant des objets sont en fait des r f rences sur l objet lui m me Il est donc possible d avoir deux variables pointant sur le m me objet Cette fonction permet de le v rifier HasUnolnterfaces Renvoie True si l objet en premier argument prend en charge toutes les interfaces des arguments suivants Cette fonction est parfois utile pour rechercher un objet d un type particulier dans une collection Un autre moyen est dutiliser la fonction supportsService des objets pour v rifier s ils prennent en charge un service particulier Comprendre les messages d erreur OOoBasic Les messages d erreur d ex cution de OpenOffice org Basic sont souvent assez peu com pr hensibles Voici quelques informations pour vous aider 680 Outils et ressources ANNEXES vitez les erreurs V rifiez la syntaxe de chaque module que vous avez crit ou modifi Il suffit de cliquer sur le bouton Compiler dans PEDI Faites le pour chaque module modifi car seul celui affich par PEDI est analys Si vous utilisez des instructions complexes ou des notations point es en cascade il devient difficile de trouver la raison de l erreur d ex cution D composez l instruction en plusieurs instructions successives et rep rez celle qui part en erreur Remontez ensuite en v rifiant chaque variable ou valeur utilis e Beaucoup d erreurs sont dues une faute d orthographe Relisez relisez
52. seconde 0 59 Codage du sous programme rem CodeAnnexeB 04 sxw bibli Standard Modulel Option Explicit Convertit une heure de type Date en heure minute seconde Sub Time_HMS temps As Date _ hr As Integer mn As Integer sec As Integer Dim s2 As Long m2 As Long h2 As Long Dim d3 As Double s3 As Long d3 CDbl temps conversion en Double d3 d3 Fix d3 garder la partie fractionnaire s3 CLng d3 86400 convertir le temps en secondes le calcul se poursuit avec des entiers Long s2 s3 Mod 60 s3 s3 s2 60 m2 s3 Mod 60 h2 s3 m2 60 hr h2 mn m2 sec s2 End Sub Exemple d utilisation rem CodeAnnexeB 04 sxw bibli Standard Module2 Option Explicit Sub Exemple_Time_HMS Dim t1 As Date Dim h1 As Integer ml As Integer s1 As Integer t1 Now Time_HMS t1 hl ml s1 MsgBox CStr t1 amp chr 13 amp _ M amp h1 amp amp ml amp 2 amp s1 End Sub Traitement des cha nes de caract res longues Sur les versions 1 1 et ant rieures d OpenOffice org les instructions OOoBasic InStr Left Right et Asc ne traitent pas de mani re correcte les cha nes de caract res de plus de Routines utilitaires EUR ANNEXE B 32 767 caract res Elles sont corrig es partir de la version 2 0 0 Pour les utilisateurs des versions posant probl me le document CodeAnnexeB 07 sxw contient dans la biblio th que LongString des fonctions de remplacement InStrL LeftL
53. tant de programmer OpenOffice org dans diff rents langages dont OOoBasic Il fournit diff rents liens et des pages explica tives Ce projet poss de un forum dev udk openoffice org Il traite de l interfa age de langages de programmation OOoBasic Python Java etc avec l API OpenOffice org et de OOoBasic Autres langues Le site principal d OpenOffice org poss de de plus en plus de subdivisions nationales accessibles depuis la page principale voir la liste d roulante Native Language Projects Il faut reconna tre qu elles n offrent que peu d informations nouvelles sur la programmation d OpenOffice org gt http www openoffice org Le site priv allemand Kienlein offre diverses informations de programmation d Open Office org pour acc der des bases de donn es gt http kienlein com pages oo html IssueZilla IssueZilla appel aussi en abr g IZ est une base de donn es pour g rer les rapports d ano malies et de demandes d am lioration galement connue depuis peu sous le nom de IssueTracker IT en abr g elle est consultable sur Internet Les rapports IssueZilla sont r dig s en anglais afin d tre compr hensibles par des lecteurs du monde entier Il est donc n cessaire d avoir une connaissance de cette langue pour utiliser cette source d infor mation Rechercher un rapport dans IssueZilla La page d entr e pour rechercher quoi que ce soit dans IssueZilla est gt http w
54. tantes et des structures comporte un service ou plu sieurs Il y a lieu de distinguer les services pris en charge directement utilisables et les services disponibles qui peuvent tre invoqu s avec la fonction createInstance Comprendre l API d OpenOffice org 675 ANNEXE A L API r elle et PAPI selon OOoBasic OOoBasic a plusieurs avantages par rapport aux autres langages e Ilest le plus int gr l application e Il est facile apprendre Il est con u pour simplifier l acc s aux primitives de l API il n impose pas de respec ter les majuscules et minuscules dans l emploi des noms de routines et de propri t s Il conna t les valeurs des constantes nomm es Il permet d utiliser directement les interfaces dun objet contrairement Java Il permet utiliser comme une pseudo propri t le couple de m thodes get et set manipulant la m me donn e interne contrairement Java our toutes ces raisons les exemples en Java nombreux dans la documentation sont bien Pour tout l l breux dans la d tat tb plus difficiles lire que leurs quivalents en OOoBasic A titre dexemple voici un extrait de code en Java qui modifie un mot dans un texte Writer et modifie le curseur pour crire en gras mxDocCursor mxDocText createTextCursor XSentenceCursor xSentenceCursor XSentenceCursor UnoRuntime queryInterface XSentenceCursor class mxDocCursor xSentenceCursor gotoNextSentence false XWor
55. til est utilisable d s la version 1 1 d Open Office org Il faut une certaine exp rience de l API pour ne pas tre perdu dans les informations four nies Comme les objets API h ritent pour la plupart des propri t s et m thodes d un ou plusieurs autre s objet s et ainsi de suite et que vous pouvez analyser un objet interne un objet vous retrouvez certaines m thodes et propri t s des briques de base d Open Office org par exemple setDelegator getByName ou le tableau ImplementationId Ressources disponibles sur Internet Figure C 5 Xray voir la documentation d un objet Figure C 6 Xray m thodes d une feuille Calc Xray Rey 4 0 ANNEXE C EE x Afficher Propri t s C M thodes C Services C Interfaces support es Propri t s A Z C M thodes A Z Objet d origine ScTableSheetObj Mettez le curseur sur la ligne de la propri t ou m thode Documentation du SDK Objet affich lt gt Vous pouvez s lectionner et copier les lignes affich es objet d origine x Nom interne de l objet boolean struct long 1 struct string Care gt long 1 boolean boolean integer integer integer integer integer integer integer integer string string string sianVerticalMode ottomBorder CellBackColor CellProtection CharContoured CharCrossed0ut CharEmphasis CharFont CharFontChar et CharFontChar et sian CharFontCharSetComplex
56. ww openoffice org project www issues query cgi Chaque rapport IssueZilla re oit un num ro Pour afficher un rapport dont on conna t le num ro il suffit de remplir le champ en haut de la page et de cliquer sur le bouton Jump to Issue Ressources disponibles sur Internet on ANNEXE C Si vous cherchez s il existe un rapport sur un sujet donn il faut remplir certains champs propos s par le formulaire Plus vous remplissez de champs plus la recherche se focalise La difficult est de se demander quels mots ont pu tre utilis s dans les rapports d j crits Pour viter des recherches infructueuses il est pr f rable de commencer par une recherche assez g n rale un mot ou deux dans le titre du rapport et de restreindre la recherche si elle renvoie un grand nombre de rapports Souvent il faut essayer des mots synonymes ou crits diff remment R diger un rapport De nombreux rapports sont crits chaque jour et les d veloppeurs ont du mal les analyser Vous ne devriez en crire que sur un sujet que vous estimez important et faire une recherche pr alable pour viter de dupliquer un rapport existant On peut crire un rapport pour seulement deux raisons demander une am lioration ou signaler une ano malie IssueZilla n est pas un site pour demander une aide voyez les forums pour cela Les demandes d am liorations sont lues par les d veloppeurs et class s avec un horizon de prise en compte ventuell
Download Pdf Manuals
Related Search
Related Contents
Poulan P1500 User's Manual Netgear WNA1000M Installation Guide User Manual - Azuretec Press Releases Scarica il manuale Robomow RL2000 Mpman TS200/4GB Benutzerhandbuch Wiper Runner X 教育・実習用 卓上型 pHメータ D-71AC FIコン2 CBR250R用 取扱説明書 Curvassure Manual Copyright © All rights reserved.
Failed to retrieve file