[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 !

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

Messagepar Hubert Lambert » 28 Oct 2016 16:10

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 édition par Hubert Lambert le 01 Oct 2017 16:09, édité 9 fois.
AOOo 4.1.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar jeanmi2403 » 28 Oct 2016 21:36

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 5.1.6 et AoO 4.1.3
Windows 7 Familiale Premium SP1 x64 et Windows 10 x64
Avatar de l’utilisateur
jeanmi2403
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 461
Inscrit le : 18 Jan 2008 11:02
Localisation : Sucy en Brie

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

Messagepar Churay » 29 Oct 2016 10:35

Bonjour,

jeanmi2403 a écrit:Un ÉNORME merci !

+1
:super:
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 4.2.8.2 Debian 7.8 & Ubuntu 14.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
 
Message(s) : 2582
Inscrit le : 30 Avr 2009 06:54
Localisation : CATALUNYA

Re: [OXT] Gérer les scripts Python

Messagepar Dude » 08 Nov 2016 13:18

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   AgrandirRéduire
               <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
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 19562
Inscrit le : 03 Mars 2006 09:45
Localisation : 127.0.0.1

Re: [OXT] Gérer les scripts Python

Messagepar martinbrait » 08 Nov 2016 20:02

Bonjour,
Hubert LAMBERT, premier de cordée :bravo: :bravo: :bravo:
Merci et à bientôt !
LibreOffice version 5.1.6.2
Windows 10
+
LibreOffice version 4.3.6.2.0
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0


Bonjour, merci et à bientôt !
Avatar de l’utilisateur
martinbrait
PassiOOnné
PassiOOnné
 
Message(s) : 682
Inscrit le : 09 Avr 2013 09:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [OXT] Gérer les scripts Python

Messagepar Hubert Lambert » 08 Nov 2016 21:02

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.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 03 Jan 2017 16:23

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
apso-v0.4.oxt installation error.png
Erreur en installant apso v0.4
Dernière édition par LibreOfficiant le 03 Jan 2017 19:13, édité 1 fois.
libO 5.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54

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

Messagepar Hubert Lambert » 03 Jan 2017 16:42

Bonjour,

Il faut sans doute ajouter la passerelle pyuno :
Code : Tout sélectionner   AgrandirRéduire
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.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 03 Jan 2017 19:12

Hubert Lambert a écrit:Bonjour,

Il faut sans doute ajouter la passerelle pyuno :
Code : Tout sélectionner   AgrandirRéduire
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.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54

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

Messagepar jeanmi2403 » 03 Jan 2017 20:43

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 5.1.6 et AoO 4.1.3
Windows 7 Familiale Premium SP1 x64 et Windows 10 x64
Avatar de l’utilisateur
jeanmi2403
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 461
Inscrit le : 18 Jan 2008 11:02
Localisation : Sucy en Brie

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

Messagepar Hubert Lambert » 03 Jan 2017 21:33

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.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 09 Jan 2017 11:36

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.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54

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

Messagepar Hubert Lambert » 10 Jan 2017 12:09

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.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 10 Jan 2017 18:47

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.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54

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

Messagepar Hubert Lambert » 13 Jan 2017 20:10

Une nouvelle version est disponible dans la section dédiée.
Cordialement.
AOOo 4.1.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 14 Jan 2017 19:00

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   AgrandirRéduire
name = self._input_name(RR.resolvestring('msg04'), default="directory")


Merci beaucoup pour ton travail ainsi que ta diligence !
libO 5.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54

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

Messagepar Hubert Lambert » 16 Jan 2017 16:25

LibreOfficiant a écrit:Il reste un petit bout d'anglais dans apso.py

C'est corrigé. Merci.
AOOo 4.1.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar Hubert Lambert » 29 Jan 2017 15:04

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.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 16 Fév 2017 15:04

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.

Pout 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
libO 5.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54

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

Messagepar Hubert Lambert » 17 Fév 2017 19:05

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.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 18 Fév 2017 16:13

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.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54

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

Messagepar Hubert Lambert » 18 Fév 2017 19:04

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.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 22 Mars 2017 13:15

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.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54

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

Messagepar Hubert Lambert » 01 Oct 2017 18:02

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.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 02 Oct 2017 20:58

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 édition par LibreOfficiant le 03 Oct 2017 15:20, édité 1 fois.
libO 5.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54

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

Messagepar Jurassic Pork » 03 Oct 2017 06:54

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 5.x sous windows et linux
Avatar de l’utilisateur
Jurassic Pork
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 66
Inscrit le : 10 Août 2017 00:15

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

Messagepar Hubert Lambert » 03 Oct 2017 10:24

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.2 sur Win7 | LibreOffice 5.x sur divers systèmes Linux
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
PassiOOnné
PassiOOnné
 
Message(s) : 598
Inscrit le : 06 Avr 2016 09:26

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

Messagepar LibreOfficiant » 03 Oct 2017 15:01

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.3 32bit sur Win7 x64 & Win10 x64 | libO 5.2 sur Ubuntu 16.10 Yakkety Yak x64 | aOOo 4.2.6.3 sur Mint 17.1 x64
Boîte à Outils Python: StarUML, Geany, PyCharm et bien sûr Apso, MRI, xRay, Object Inspector..
https://wiki.documentfoundation.org/Macros/Design_Guide/fr
LibreOfficiant
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 03 Jan 2017 15:54


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 17 invité(s)