Pannello di Controllo Moderatore ]

come settare PyCharm per interagire con LibreOffice

Creare una macro - Scrivere uno script - Usare le API

come settare PyCharm per interagire con LibreOffice

Messaggioda nickGiard » domenica 28 ottobre 2018, 15:55

Buongiorno a tutti gli appassionati
vladboscaneanu, che ringrazio, mi suggeriva tempo fa di utilizzare PyCharm per lo sviluppo di funzioni Python.
Effettivamente tale ambiente è veramente professionale, anche se non si può nascondere una certa pesantezza e verbosità nei suggerimenti di stile.
L'architettura del mio software prevede la gestione dei menù che controllano le funzioni principali in Basic che agiscono sui fogli e le celle (non vedo vantaggi nel delegare queste funzioni ad altri ambienti che poi devono interagire comunque con i service UNO).
Mentre i dati prelevati dai Range con la funzione Rg.DataArray() come array di array vengono elaborati in maniera efficiente e veloce in Python che viene richiamato dal servizio MasterScriptProviderFactory che restituisce quanto elaborato in forma di array. La mia routine per chi interessa in fondo.
Efficienza e velocità sono veramente strabilianti ma un unico neo: NON riesco a fare interrompere l'esecuzione del Python per ispezionare le variabili e scoprire eventuali errori per un debug passo passo utilizzando PyCharm, ossia se l'avvio di oScript.invoke(args, Array(), Array()) può entrare in PyCharm (ovviamente già aperto e con il file.py caricato) ed attivare il suo debug e i suoi punti di interruzione .
Lamento che purtroppo non trovo molto materiale che illustri in modo semplice tali collegamenti con altri linguaggi, e quello che trovo rimandano ad esempi senza spiegare in modo elementare come utilizzarli o sono per me troppo complessi.
Chiedo pertanto a chi ne sa più di me
1) Se esiste tale possibilità, posso pensare ad un listener o socket che consenta a PyCharm di inserirsi ed appropriarsi o comunicare col processo di LibreOffice
2) La procedura passo passo e chiaramente esplicativa sui vari settings da attivare in PyCharm perché esso sia in grado di intercettare uno script lanciato da LibreOffice con oScript.invoke(args, Array(), Array())

Ringrazio in anticipo
Nicola Giardinelli


Codice: Seleziona tutto   Espandi visualeStringi visuale
Function _invokePyFunc(func As String,  args, Optional sFilePy)'  As Array
    MyErrorMsg("WrapPy._invokePyFunc:" & func) ' segnala rout errore
    Dim  sFunctionPy, oMSPF, oScript
    If IsMissing(sFilePy) Then sFilePy = "MyPyFunct.py" ' quello implementato

    sFunctionPy = "vnd.sun.star.script:" & sFilePy & "$" & func & _
            "?language=Python&location=user" 

    if IsNullEmpty(gScriptProvider) then
        oMSPF = createUnoService( _
         "com.sun.star.script.provider.MasterScriptProviderFactory")
        gScriptProvider = oMSPF.createScriptProvider("")
    end if
    On Local Error GoTo ErrorHandler
    '
    oScript = gScriptProvider.getScript(sFunctionPy)
    Dim pyReturn ' Empty se Py Error
   '
    pyReturn = oScript.invoke(args, Array(), Array())
   '
    _invokePyFunc = pyReturn
    MyErrorMsg()
    Exit Function
   '
ErrorHandler:
    Dim msg As String, toFix As String
    msg = Error$
    toFix = ""
    If 1 = Err AND InStr(Error$, "an error occurred during file opening") Then
        msg = "Non apro the script file."
        toFix = "Make sure the user\Scripts\python\" & sFilePy & ".py."
    End If
    MsgBox msg & chr(13) & toFix, 16, "Error " & Err & " calling " & func
    'MyErrorMsg()
End Function
Nicola con LibreOffice 5.4.5 (x64) su Windows 7 Home Premium
nickGiard
 
Messaggi: 14
Iscritto il: lunedì 14 maggio 2012, 21:04

Re: come settare PyCharm per interagire con LibreOffice

Messaggioda xergio » lunedì 19 novembre 2018, 0:26

Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
Avatar utente
xergio
 
Messaggi: 313
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)


Torna a Macro e UNO API

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti