[Résolu][Writer] Extension : analyse ouverture de fichiers
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 !
-
chbok
- Membre lOOyal

- Messages : 45
- Inscription : 03 déc. 2013 15:26
[Résolu][Writer] Extension : analyse ouverture de fichiers
Bonjour,
Je cherche à savoir s'il est possible pour une extension de surveiller les ouvertures de fichiers d'un utilisateur, afin de "réagir" (boite de dialogue par exemple) lorsque des mots clés y sont présents ?
Une extension permet d'ajouter un menu contextuel ou de modifier les préférences. Je ne souhaite pas modifier de force "l'action assignée" de l'évènement "Chargement du document terminé".
Est-ce possible ?
Je cherche à savoir s'il est possible pour une extension de surveiller les ouvertures de fichiers d'un utilisateur, afin de "réagir" (boite de dialogue par exemple) lorsque des mots clés y sont présents ?
Une extension permet d'ajouter un menu contextuel ou de modifier les préférences. Je ne souhaite pas modifier de force "l'action assignée" de l'évènement "Chargement du document terminé".
Est-ce possible ?
Dernière modification par chbok le 13 déc. 2016 09:02, modifié 1 fois.
Version Libo (imposée) 7.3.7.2.M8 (x64) - Win 10
-
Dude
- IdOOle de la suite

- Messages : 26195
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Writer] Extension : analyse ouverture de fichiers
Salut,
Donc, je ne vois pas trop ce que Writer vient faire là-dedans.
Le processus d'E/S est assuré par le système d'exploitation.chbok a écrit :une extension de surveiller les ouvertures de fichiers d'un utilisateur,
Donc, je ne vois pas trop ce que Writer vient faire là-dedans.
-
chbok
- Membre lOOyal

- Messages : 45
- Inscription : 03 déc. 2013 15:26
Re: [Writer] Extension : analyse ouverture de fichiers
Salut,
Je ne parlais pas d'une surveillance de tous les fichiers de l'OS, uniquement de pouvoir exécuter une action macro après que l'utilisateur ait ouvert un document ODT (Writer) et que celui-ci contiennent certains mots. Ma question porte bien sur une extension de Writer pouvant (ou non) répondre à ce besoin.
Peut être ai-je mal formulé ma question ?
Je ne parlais pas d'une surveillance de tous les fichiers de l'OS, uniquement de pouvoir exécuter une action macro après que l'utilisateur ait ouvert un document ODT (Writer) et que celui-ci contiennent certains mots. Ma question porte bien sur une extension de Writer pouvant (ou non) répondre à ce besoin.
Peut être ai-je mal formulé ma question ?
Version Libo (imposée) 7.3.7.2.M8 (x64) - Win 10
-
Piaf
- GourOOu

- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: [Writer] Extension : analyse ouverture de fichiers
Bonjour
Sans extension, une simple macro dans Mes macros > Standard affectée à l'évènement Ouvrir le document de Libre Office devrait faire l'affaire.A tester.
A+
Sans extension, une simple macro dans Mes macros > Standard affectée à l'évènement Ouvrir le document de Libre Office devrait faire l'affaire.
Code : Tout sélectionner
oDoc = thisComponent
If Right(odoc.Title,3) = "odt" Then
Dim Recherche As Object, motCle as String, trouv As Variant
Recherche = oDoc.createSearchDescriptor
motCle = "Test"
With Recherche
.SearchString = motCle
.SearchWords = true
End With
trouv = oDoc.findAll(Recherche)
If trouv.Count > 0 Then MsgBox "Bonjour"
End ifA+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
chbok
- Membre lOOyal

- Messages : 45
- Inscription : 03 déc. 2013 15:26
Re: [Writer] Extension : analyse ouverture de fichiers
Merci Piaf,
Je n'ai pas de difficulté pour le script de recherche.
Comme je l'indiquais, ma question porte vraiment sur une extension qui doit pouvoir surveiller chaque ouverture de fichiers, sans modifier manuellement les paramètres des évènements de libreoffice.
Si j'arrive à passer cette étape, je pourrai finir mon projet qui concerne plusieurs personnes (d'où une extension). En fait, je ne sais pas si c'est possible ou non !
Je n'ai pas de difficulté pour le script de recherche.
Comme je l'indiquais, ma question porte vraiment sur une extension qui doit pouvoir surveiller chaque ouverture de fichiers, sans modifier manuellement les paramètres des évènements de libreoffice.
Si j'arrive à passer cette étape, je pourrai finir mon projet qui concerne plusieurs personnes (d'où une extension). En fait, je ne sais pas si c'est possible ou non !
Version Libo (imposée) 7.3.7.2.M8 (x64) - Win 10
-
Hubert Lambert
- SuppOOrter

- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Writer] Extension : analyse ouverture de fichiers
Bonjour,
Pour réagir à un événement global, il faut :
- définir et enregistrer un service qui implémente la fonction "execute" de l'interface com.sun.star.task.XJob ou la fonction "executeAsync" de l'interface com.sun.star.task.XAsyncJob;
- définir un fichier de configuration "job.xcu" qui fera le lien entre ce service et le ou les événements auxquels on souhaite réagir.
Un bon exemple d'extension de ce type est ImpressRunner.
Dans ton cas, le fichier d'implémentation (en python) pourrait ressembler à ceci :
et le job.xcu à ceci :
Je joins un oxt test pour illustrer la chose.
Cordialement.
Pour réagir à un événement global, il faut :
- définir et enregistrer un service qui implémente la fonction "execute" de l'interface com.sun.star.task.XJob ou la fonction "executeAsync" de l'interface com.sun.star.task.XAsyncJob;
- définir un fichier de configuration "job.xcu" qui fera le lien entre ce service et le ou les événements auxquels on souhaite réagir.
Un bon exemple d'extension de ce type est ImpressRunner.
Dans ton cas, le fichier d'implémentation (en python) pourrait ressembler à ceci :
Code : Tout sélectionner
import unohelper
from com.sun.star.task import XJob
from com.sun.star.awt.MessageBoxType import MESSAGEBOX, INFOBOX, ERRORBOX, WARNINGBOX, QUERYBOX
implementation_name = "org.chbok.TestOnLoad"
class TestOnLoad(unohelper.Base, XJob):
def __init__ (self, ctx):
self.ctx = ctx
def createUnoService(self, service):
return self.ctx.ServiceManager.createInstanceWithContext(service, self.ctx)
def msgbox(self, message, titre="Message", boxtype='message', boutons=1):
types = {'message': MESSAGEBOX, 'info': INFOBOX, 'error': ERRORBOX,
'warning': WARNINGBOX, 'query': QUERYBOX}
tk = self.createUnoService("com.sun.star.awt.Toolkit")
win = self.createUnoService("com.sun.star.frame.Desktop").getCurrentFrame().ContainerWindow
box = tk.createMessageBox(win, types[boxtype], boutons, titre, message)
return box.execute()
def execute(self, args):
desktop = self.createUnoService("com.sun.star.frame.Desktop")
doc = desktop.CurrentComponent
url = unohelper.fileUrlToSystemPath(doc.URL)
if doc:
self.msgbox("Vous accédez au document\n< {} >".format(url))
g_ImplementationHelper = unohelper.ImplementationHelper()
g_ImplementationHelper.addImplementation (TestOnLoad,
implementation_name,
(implementation_name,))Code : Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd">
<oor:component-data oor:name="Jobs" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<node oor:name="Jobs">
<node oor:name="org.chbok.TestOnLoad.Job" oor:op="fuse">
<prop oor:name="Service">
<value>org.chbok.TestOnLoad</value>
</prop>
</node>
</node>
<node oor:name="Events">
<node oor:name="OnLoad" oor:op="fuse">
<node oor:name="JobList">
<node oor:name="org.chbok.TestOnLoad.Job" oor:op="fuse"/>
</node>
</node>
</node>
</oor:component-data>Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
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)
-
Dude
- IdOOle de la suite

- Messages : 26195
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Writer] Extension : analyse ouverture de fichiers
A priori, la question est posée pour du Basic.Hubert Lambert a écrit :Dans ton cas, le fichier d'implémentation (en python) pourrait ressembler à ceci
Ce langage ne supporte pas l'implémentation de service.
-
Hubert Lambert
- SuppOOrter

- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Writer] Extension : analyse ouverture de fichiers
L'auteur du fil sera peut-être heureux de savoir qu'une solution existe, même en dehors du basic...
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)
-
chbok
- Membre lOOyal

- Messages : 45
- Inscription : 03 déc. 2013 15:26
Re: [Writer] Extension : analyse ouverture de fichiers
Bonjour,Hubert Lambert a écrit :L'auteur du fil sera peut-être heureux de savoir qu'une solution existe, même en dehors du basic...
Oui, tout a fait heureux. Je ne savais si c'était possible ou non, maintenant je vais pouvoir creuser le sujet, et bien sur l'adapter en Basic (Edit : arg, je viens de lire cette phrase moins optimiste pour moi : Ce langage ne supporte pas l'implémentation de service.).
Merci de m'avoir aiguiller.
(Je vais clore le sujet même si je n'ai pas une solution en Basic)
Version Libo (imposée) 7.3.7.2.M8 (x64) - Win 10