[OXT] Gérer les scripts Python (discussion)

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

[OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

Bonjour à tous,

Python est un langage qui ne manque pas d'atouts : puissant, relativement simple à apprendre, très bien adapté au contexte des macros et bénéficiant d'une passerelle efficace avec le langage UNO.
Malgré cela, son emploi comme langage de macro pour OpenOffice ou LibreOffice reste visiblement peu populaire. Deux motifs évidents en sont partiellement la cause :
1. il n'existe pas d'éditeur intégré pour le langage python ;
2. l'accès aux scripts est malaisé, voire quasi impossible pour l'utilisateur ordinaire lorsqu'il s'agit d'embarquer une macro dans un document.

Hanya, l'un des contributeurs les plus éclairés et efficaces de la sections "Macros et API" du forum anglophone, a pourtant proposé en 2012 un script (alternative python script organizer) qui résout en grande partie le deuxième écueil et entrouvre une porte pour contourner le premier. Ce script mérite me semble-t-il une bien meilleure visibilité.

Téléchargement
Pour assurer cette visibilité et en faciliter l'emploi, j'ai "empaqueté" ce script dans une extension qui est désormais disponible dans la section dédiée, selon la suggestion ci-dessous de Dude.
Dernière modification par Hubert Lambert le 01 oct. 2017 16:09, modifié 9 fois.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: [Python] Gérer les scripts pour un document

Message par jeanmi2403 »

Bonsoir,
GÉNIAL !!
Je commençais à en avoir assez de plonger dans les profondeurs du disque C (même avec des raccourcis, c'est pénible...).
De plus, l'option "Modifier" envoie direct le fichier dans Notpad++ avec l'association Windows.
Quel gain de temps !
Un ÉNORME merci !
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 06:54
Localisation : CATALUNYA
Contact :

Re: [Python] Gérer les scripts pour un document

Message par Churay »

Bonjour,
jeanmi2403 a écrit :Un ÉNORME merci !
+1
:super:
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [OXT] Gérer les scripts Python

Message par Dude »

Salut,

Joli travail !

C'est dommage de ne pas internationaliser ton OXT.
Par exemple pour l'AddonUI.xcu, tu peux ajouter une ligne pour avoir le menu en anglais :

Code : Tout sélectionner

               <node oor:name="MenuItems">
                  <node oor:name="N002" oor:op="replace">
                     <prop oor:name="Context" oor:type="xs:string">
                        <value/>
                     </prop>
                     <prop oor:name="Title" oor:type="xs:string">
                        <value xml:lang="en">Managing python scripts</value>
                        <value xml:lang="fr">Gérer les scripts python</value>
                     </prop>
                     ...
Avant que ce fil ne se perde dans les méandres du forum, il serait peut être judicieux qu'il soit posté dans la section des extensions ou mieux, publier sur le site concerné.
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 09:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [OXT] Gérer les scripts Python

Message par martinbrait »

Bonjour,
Hubert LAMBERT, premier de cordée :bravo: :bravo: :bravo:
Merci et à bientôt !
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [OXT] Gérer les scripts Python

Message par Hubert Lambert »

Merci à tous pour vos encouragements ! :)
Dude a écrit :C'est dommage de ne pas internationaliser ton OXT.
Je le ferai bien volontiers. Le plus gros morceau sera le dialogue : ce n'est pas compliqué en soi (OpenOffice contient déjà tout ce qu'il faut), mais je dois juste trouver le temps de le faire...
Dude a écrit :Avant que ce fil ne se perde dans les méandres du forum, il serait peut être judicieux qu'il soit posté dans la section des extensions ou mieux, publier sur le site concerné.
Bien volontiers de nouveau. Pour le porter sur le site des extensions, il faudra peaufiner plusieurs choses (dont l'internationalisation) et au minimum informer l'auteur du code de départ.
martinbrait a écrit :Hubert LAMBERT, premier de cordée
J'aimerais mais non : le coeur de l'extension reste quand même le travail de hanya :wink: .
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Dans une VM VirtualBox, j'ai installé successivement:
o Ubuntu 16.10 Yakkety Yak 64 bits
o LibreOffice Base (via sudo apt-get ...)
o apso v0.4.oxt

J'ai obtenu un message d'erreur que je n'ai pas su analyser
Erreur en installant apso v0.4
Erreur en installant apso v0.4
Dernière modification par LibreOfficiant le 03 janv. 2017 18:13, modifié 1 fois.
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

Bonjour,

Il faut sans doute ajouter la passerelle pyuno :

Code : Tout sélectionner

sudo apt-get install libreoffice-script-provider-python
En outre n'installer que Base ne te donnera pas un programme fonctionnel, car ce module utilise les modules Writer et Calc. Il faut installer tout les modules LibreOffice ou, bien mieux, installer les paquets officiels (voir le tutoriel de Papayes).
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Hubert Lambert a écrit :Bonjour,

Il faut sans doute ajouter la passerelle pyuno :

Code : Tout sélectionner

sudo apt-get install libreoffice-script-provider-python
En outre n'installer que Base ne te donnera pas un programme fonctionnel, car ce module utilise les modules Writer et Calc. Il faut installer tout les modules LibreOffice ou, bien mieux, installer les paquets officiels (voir le tutoriel de Papayes).
Cordialement.
C'est tout à fait celà :bravo:
Calc, Impress, Writer et Draw sont inclus dans la distribution Ubuntu 16.10. Base & Math peuvent être ajoutés.
L'ajout de la passerelle à résolu mon problème.
Encore Merci ! :super:

PS: Je me suis autorisé à parler d'apso*.oxt dans le wiki de LibreOffice cf. https://wiki.documentfoundation.org/Macros. Si vous le permettez.. :wink:
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par jeanmi2403 »

Bonjour,
LibreOfficiant a écrit : Je me suis autorisé à parler d'apso*.oxt dans le wiki de LibreOffice cf.
Tu aurais pu mettre le lien sur la partie francophone
https://wiki.documentfoundation.org/Macros/fr.
Qui a un lien sur le wiki OpenOffice, qui en parle aussi.
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

LibreOfficiant a écrit :PS: Je me suis autorisé à parler d'apso*.oxt dans le wiki de LibreOffice cf. https://wiki.documentfoundation.org/Macros. Si vous le permettez.. :wink:
jeanmi2403 a écrit :le wiki OpenOffice [...] en parle aussi
Pas de problème évidemment !
Un grand merci à tous les deux.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Bonjour,

o Lorsqu'il s'agit de développer en Python, on parle de modules, de fonctions, de classes etc..
o *Office utilise les idiomes bibliothèques et macros dans son interface.
o apso.. parle de fichier et de répertoire ( file/directory ).

Pas de quoi choquer un développeur, cependant..

Est-il possible, par souci de cohérence avec l'interface utilisateur d'*Office, de modifier apso.. en remplaçant fichier et répertoire par ?

o bibliothèque, macro, module ( remplacer/exporter une bibl. par/vers module )
o library, macro, module ( substitute/export library by/to module )
o ? en hongrois ?
o etc

C'est partiellement le cas: On sélectionne nouveau fichier on obtient 'macro' en pré-saisie.

Par avance Merci

cf. https://wiki.documentfoundation.org/Mac ... e#Preamble / https://wiki.documentfoundation.org/Mac ... n_Guide/fr
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

En effet, j'ai traduit le travail d'Hanya sans trop m'attarder sur le vocabulaire.
Le plus cohérent me semble-t-il serait de remplacer "fichier" par "module" et "répertoire" par "bibliothèque", à l'instar du gestionnaire de macro.
J'essaierai de le prévoir pour la prochaine version.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Merci

De la même façon les dépôts "user", "share" et Document pourraient être traduits par:

o Mes Macros
o Macros (Open|Libre)Office
o Nom du document

Cordialement
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

Une nouvelle version est disponible dans la section dédiée.
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Bonjour Hubert,

Il reste un petit bout d'anglais dans apso.py, ligne 638, à la création d'une bibliothèque:

Code : Tout sélectionner

name = self._input_name(RR.resolvestring('msg04'), default="directory")
Merci beaucoup pour ton travail ainsi que ta diligence !
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

LibreOfficiant a écrit :Il reste un petit bout d'anglais dans apso.py
C'est corrigé. Merci.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

Une version 0.6 est disponible.
Parmi les améliorations :
- prise en compte de la propriété AllowMacroExecution pour les macros embarquées ;
- sous réserve de fournir les paramètres d'édition, possibilité d'accéder directement aux erreurs de syntaxe depuis le message d'erreur ;
- édition directe des macros embarquées (uniquement dans le contexte de l'extension).
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Bonjour Hubert,

Apso est lançable où que l'on soit dans *Office :

o depuis le lanceur proposant les derniers documents ouverts,
o depuis un document ouvert,
o et même depuis l'IDE Basic intégré.

Cependant Apso ne liste pas les scripts Python lorsqu'il est lancé depuis l'IDE Basic intégré de LibreOffice 5.x, quant à OpenOffice je ne sais.. Les scripts Python s'affichent dans les deux autres contextes.

Pour autant on peut vouloir mettre à jour et exécuter ceux-ci même dans le contexte de l'IDE Basic.

Merci encore et toujours pour cette extension ! :D
Dernière modification par LibreOfficiant le 24 févr. 2018 12:39, modifié 1 fois.
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

Bonjour,
LibreOfficiant a écrit :Cependant Apso ne liste pas les scripts Python lorsqu'il est lancé depuis l'IDE Basic
Je ne reproduis pas : chez moi il affiche bien la liste des scripts :
BasicIDE.png
Si tu penses aux scripts contenus dans les documents ouverts, c'est en réalité normal.
Il n'y a que deux solutions possibles :
1. afficher les scripts accessibles dans le contexte courant, comme le fait le code d'Hanya ou la commande Outils -> Macros -> Exécuter la macro (voir la capture ci-dessous) ;
2. afficher les scripts accessibles depuis tous les documents ouverts, comme avec la commande Outils -> Macros -> Gérer les macros (mais l'adaptation du code ne me paraît pas si simple que cela).
Aucune des deux options ne me semble rencontrer ton besoin...
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Bonjour,

En effet je parlais des macros Python présentes dans un document. Mes excuses pour mon commentaire insuffisamment détaillé. J'ai certainement surréagi sans prendre le temps de la réflexion :? .
Mon cas est bien le 2. et comme il est aisément contournable, modifier apso me paraît peu nécessaire et certainement complexe.

Merci pour ta réponse circonstanciée :)
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

Pas de souci, j'ai dû répondre dans la hâte, donc sans trop mettre les formes. J'avais quand même prévu d'essayer la deuxième solution, par acquit de conscience :wink: .
En y réfléchissant hier soir, il y aurait en théorie une solution idéale dans l'esprit de cette extension : pouvoir récupérer, depuis l'IDE basic, l'uri du script en cours ou, à défaut, un lien quelconque vers le document auquel il appartient.
Mais, à ce stade, je n'ai toujours pas trouver comment faire. Si quelqu'un a une idée... :).
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [Résolu][OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Bonjour

Je rencontre des difficultés à réinstaller apso-0.8.3, un message d'erreur indiquant une étrange version s'affiche :
Add extension(s):
<User>\LibreOffice\4\user\uno_packages\cache\uno_packages\lu102281sblnv.tmp_\apso_0.8.6.oxt does not exist.
Le problème persiste même après avoir:
  • Réparé LibreOffice 5.3.x via le panneau de configuration
  • Réinstallé LibreOffice 5.3.x
Je soupçonne une corruption du registre de LibreOffice.
Une idée ou suggestion ?
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

Pour les utilisateurs intéressés, une nouvelle version bêta d'APSO est disponible ici. La principale nouveauté consiste en un interpréteur interactif intégré à l'extension.
Tous les avis et suggestions sont les bienvenus, merci :) .
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Bonsoir Hubert,

Je ne suis pas sûr de saisir la pertinence qu'il y a à inclure une console Python ou bien un débogueur au sein d'apso. Apso apporte un gain énorme dans l'écriture, le développement et la maintenance de macros écrites en Python, cependant vouloir étendre ses aptitudes au débogage me paraît Prométhéen. Mais il est tout à fait possible que ses évolutions futures me démentent.

Pour le débogage de macros complexes en Python j'utilise PyCharm dont le débogueur complet affiche le contenu d'objets UNO, de classes et d'objets Python comme illustré ici. J'y adjoins un objet XSCRIPTCONTEXT, agissant comme une passerelle avec *Office.

PyCharm n'est pas le seul outil pour déboguer les macros Python, mais il s'avère simple d'usage en ce qui me concerne.

Cordialement
Dernière modification par LibreOfficiant le 03 oct. 2017 15:20, modifié 1 fois.
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 623
Inscription : 10 août 2017 00:15

Re: [OXT] Gérer les scripts Python (discussion)

Message par Jurassic Pork »

hello,
tout d'abord merci à Hubert pour avoir inclus une console python dans son extension. Cela permet de débugger (avec pdb) une macro en python à moindre coût et sans utiliser d'outils externes. D'autre part avec cette console on utilise la même version python que celle du OpenOffice ou LibreOffice installé. Avec pdb on peut faire des points d'arrêt, tracer des variables aux points d'arrêt, faire du pas à pas dans sa fonction etc... voir ici. On ne travaille plus "à l'aveugle" en essayant de trouver pourquoi la fonction ne marche pas.
Voici par exemple comment débugger une fonction (comme exemple ma macro personnelle calcCombi (qui calcule les combinaisons possibles sur 3 éléments) qui se trouve dans mon module testcombi)
- ouvrir une console python (interpréteur python) par le menu de APSOS.
- lancer pdb sur la fonction à débugger :
>>> pdb.runcall(calcCombi)
> c:\users\lcm\appdata\roaming\libreoffice\4\user\scripts\python\testcombi.py(6)calcCombi()
-> doc = XSCRIPTCONTEXT.getDocument()
(Pdb)
on voit alors la première ligne de la fonction qui est en point d'arrêt.
on peut lister les lignes de la fonction avec la commande ll :
(Pdb) ll
5 def calcCombi():
6 -> doc = XSCRIPTCONTEXT.getDocument()
7 sheet = doc.Sheets.getByIndex(0)
8 elemtest = 'ab01'
9 totalelem = string.ascii_lowercase + string.digits
10 sheet.getCellByPosition(1,22).String = ''.join(totalelem)
11 r = 0 # ligne de départ
12 c = 0 # colonne de départ
13 for s in itertools.product(elemtest, repeat=3):
14 sheet.getCellByPosition(c,r).String = ''.join(s)
15 r+=1
16 if r==20:
17 r=0
18 c+=1
(Pdb)
on peut faire un point d'arrêt sur une ligne particulière :
(Pdb) b 14
Breakpoint 1 at c:\users\lcm\appdata\roaming\libreoffice\4\user\scripts\python\testcombi.py:14
(Pdb)
on peut écrire une liste de commandes qui sera exécutée sur le point d' arrêt (par exemple lister la valeur de variables, ici j'affiche les valeurs des variables s et r):
(
Pdb) commands
(com) pp "s : {} - r : {}".format(s,r)
(com) end
(Pdb)
faire du pas à pas :
(Pdb) n
> c:\users\jp\appdata\roaming\libreoffice\4\user\scripts\python\testcombi.py(14)calcCombi()
-> sheet = doc.Sheets.getByIndex(0)
(Pdb)
exécuter jusqu'à un point d'arrêt (c = continue) :
(Pdb) c
"s : ('a', 'a', 'a') - r : 0"
> c:\users\lcm\appdata\roaming\libreoffice\4\user\scripts\python\testcombi.py(14)calcCombi()
-> sheet.getCellByPosition(c,r).String = ''.join(s)
(Pdb) c
"s : ('a', 'a', 'b') - r : 1"
> c:\users\lcm\appdata\roaming\libreoffice\4\user\scripts\python\testcombi.py(14)calcCombi()
-> sheet.getCellByPosition(c,r).String = ''.join(s)
(Pdb)
la commande pp "s : {} - r : {}".format(s,r) est exécutée à chaque fois qu'on arrive sur le point d'arrêt.
Voilà ceci n'est qu'un bref aperçu de ce qu'on peut faire avec pdb, mais on voit qu'il peut s'avérer bien utile pour débugger sa macro en python.
En ce qui concerne l'éditeur Python j'utilise Geany qui a l'avantage d'être très léger et de tourner sur de nombreux O.S.
geany.png
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

Bonjour LibreOfficiant et Jurassic Pork,

Un grand merci de vous être penchés sur cette nouveauté, et pour vos points de vue détaillés.
Il va de soi qu'APSO n'aura jamais la prétention de remplacer un environnement de développement complet, indispensable pour un projet complexe (ou simplement pour un confort maximal).
L'objectif reste le même qu'au départ (j'espère) : fournir des outils simples et, surtout, faciles, d'accès, ne nécessitant qu'un minimum de paramétrages pour l'utilisateur. L'ambition étant de "démocratiser" et encourager l'usage de python dans le contexte d'OpenOffice ou LibreOffice.
Certes, l'utilisation de pdb ne peut sans doute prétendre être "facile d'accès", mais ce n'est que le fruit d'une première réflexion pour intégrer un débogueur "de première ligne". Merci d'ailleurs à Jurassic Pork pour le mini tutoriel ;-).
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Bonjour,

Merci à tous deux pour vos éclaircissements. Mais aussi pour votre travail et la qualité de vos interventions au sein de ce forum.

Cordialement
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 14:54

Re: [OXT] Gérer les scripts Python (discussion)

Message par LibreOfficiant »

Bonjour,

Voici une suggestion d'icône pour l'extension Apso. Leurs licences d'utilisation respectives me paraissent compatibles.

J'ai testé avec LibreOffice sa version PNG en 48x48, elle fonctionne bien qu'Extension Compiler stipule 42x42.

Cordialement et respectueusement
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [OXT] Gérer les scripts Python (discussion)

Message par Hubert Lambert »

Merci pour la suggestion. J'ai déjà une esquisse de logo, visible sur le site des extensions LibreOffice.
Il sera intégré à l'extension pour la prochaine version.
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Répondre