Bonsoir et bonnes fêtes à toutes-tous,
d'abord merci à jeanmi2403, à LibreOfficiant et à Hubert Lambert pour leurs indications précieuses.
Malgré tout, je ne sais pas déterminer quel objet a été sélectionné par l'utilisateur dans un document writer pour faire un traitement approprié à chaque cas.
J'ai bien vu la fonction native de Python 'hasattr' mais ne sait pas quels paramètres lui passer.
Merci à tous les contributeurs.
Joel.
[Résolu][Python]Equivalent 'supportsService'
Modérateur : Vilains modOOs
Règles du forum
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 !

Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- InconditiOOnnel
- Messages : 839
- Inscription : 10 janv. 2009 08:05
[Résolu][Python]Equivalent 'supportsService'
Dernière modification par joel275 le 31 déc. 2017 08:44, modifié 3 fois.
A jour de LibreOffice et de Ubuntu
-
- PassiOOnné
- Messages : 639
- Inscription : 09 août 2017 22:15
Re: [Python]Equivalent 'supportsService'
hello,
je n'ai peut-être pas compris ta question, mais on peut très bien utiliser la fonction SupportsService dans une macro en python.
Voici un exemple de code qui va balayer le texte d'un document writer et qui va afficher paragraphe trouvé à chaque fois qu'un paragraphe est détecté. D'autre part il va afficher le texte contenu dans le paragraphe en séparant ceux qui n'ont pas les mêmes attributs (par exemple du texte coloré).
Ami calmant, J.P
je n'ai peut-être pas compris ta question, mais on peut très bien utiliser la fonction SupportsService dans une macro en python.
Voici un exemple de code qui va balayer le texte d'un document writer et qui va afficher paragraphe trouvé à chaque fois qu'un paragraphe est détecté. D'autre part il va afficher le texte contenu dans le paragraphe en séparant ceux qui n'ont pas les mêmes attributs (par exemple du texte coloré).
Code : Tout sélectionner
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
#------------MESSAGEBOX----------------
def messagebox(message):
doc = XSCRIPTCONTEXT.getDocument()
win = doc.CurrentController.Frame.ContainerWindow
tk = win.Toolkit
box = tk.createMessageBox(win, 3, 1, "Message", message)
return box.execute()
def chercherParagraphes( ):
document = XSCRIPTCONTEXT.getDocument()
parenum = document.Text.createEnumeration()
while parenum.hasMoreElements():
par = parenum.nextElement()
if par.supportsService("com.sun.star.text.Paragraph"):
messagebox("paragraphe trouvé")
textenum = par.createEnumeration()
while textenum.hasMoreElements():
text = textenum.nextElement()
messagebox(text.getString())
g_exportedScripts = chercherParagraphes,
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
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- InconditiOOnnel
- Messages : 839
- Inscription : 10 janv. 2009 08:05
Re: [Python]Equivalent 'supportsService'
Bonjour,
merci beaucoup pour ta réponse rapide: mon problème ne venait pas de supportsService, mais d'une erreur de syntaxe Python de néophyte plus habitué à basic qu'à python.
A part ces problèmes de syntaxe, je trouve python facile à apprendre. De plus, le code me semble plus concis et plus facile à relire qu'en basic. Bref, je le recommande chaudement
Bonne année
joel
merci beaucoup pour ta réponse rapide: mon problème ne venait pas de supportsService, mais d'une erreur de syntaxe Python de néophyte plus habitué à basic qu'à python.
A part ces problèmes de syntaxe, je trouve python facile à apprendre. De plus, le code me semble plus concis et plus facile à relire qu'en basic. Bref, je le recommande chaudement
Bonne année
joel
A jour de LibreOffice et de Ubuntu
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Résolu][Python]Equivalent 'supportsService'
Bonjour,
À toute fin utile, une petite fonction qui reproduit la fonction HasUnoInterfaces de la bibliothèque basic :
À utiliser comme l'originale :
Bon réveillon à tous
.
À toute fin utile, une petite fonction qui reproduit la fonction HasUnoInterfaces de la bibliothèque basic :
Code : Tout sélectionner
def hasUnoInterfaces(obj, *interfaces):
return set(interfaces).issubset(t.typeName for t in obj.Types)
Code : Tout sélectionner
estdoctexte = hasUnoInterfaces(doc, "com.sun.star.text.XTextDocument")

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)
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)