come settare PyCharm per interagire con LibreOffice

Creare una macro - Scrivere uno script - Usare le API
Rispondi
nickGiard
Messaggi: 82
Iscritto il: lunedì 14 maggio 2012, 22:04

come settare PyCharm per interagire con LibreOffice

Messaggio da nickGiard »

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

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 7.1 (x64) su Windows 11
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: come settare PyCharm per interagire con LibreOffice

Messaggio da xergio »

Ciao nickGiard,
sembra fattibile vedendo qui: https://wiki.documentfoundation.org/Mac ... th_PyCharm e qui https://wiki.documentfoundation.org/Mac ... #Debugging e infine qui https://wiki.documentfoundation.org/Mac ... hon_Basics , personalmente non ho fatto uso di questo collegamento (uso PyCharm per lavoro).
Ultima modifica di xergio il lunedì 19 novembre 2018, 17:00, modificato 1 volta in totale.
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
charlie
Site Admin
Site Admin
Messaggi: 8950
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: come settare PyCharm per interagire con LibreOffice

Messaggio da charlie »

Un saluto a @xergio, un gradito ritorno il suo :D .
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: come settare PyCharm per interagire con LibreOffice

Messaggio da xergio »

charlie ha scritto:Un saluto a @xergio, un gradito ritorno il suo :D .
Grazie @charlie :D bello vedere tanto impegno nel forum!
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
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: come settare PyCharm per interagire con LibreOffice

Messaggio da patel »

[OT]
Ciao xergio, ho letto che usi pycharm per lavoro, io ho iniziato da poco a programmare in python, vorrei sapere come creare un eseguibile che giri su mac attivabile col doppio clic. Esiste un modo che non richieda l'uso del terminale ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: come settare PyCharm per interagire con LibreOffice

Messaggio da xergio »

Ciao patel,
scusa il ritardo.
Non uso PyCharm per creare eseguibili, quindi purtroppo non ti so dire (uso Python ecc. per Odoo su server *nix)
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
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: come settare PyCharm per interagire con LibreOffice

Messaggio da patel »

grazie xergio, ma pycharm è solo una comoda ide, quello che a me interessa è creare l'eseguibile con o senza pycharm
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
nickGiard
Messaggi: 82
Iscritto il: lunedì 14 maggio 2012, 22:04

Re: come settare PyCharm per interagire con LibreOffice

Messaggio da nickGiard »

Buona sera a tutti gli appassionati
riscrivo in sintesi la mia nota di risposta che non trovo nelle bozze.
In sostanza, ringrazio xergio per le sue indicazioni, i cui link rimangono purtroppo troppo complessi.
Ho risolto il mio problema, ossia la necessità di debug passo passo di una funzione python che riceve come parametro un DataArray di un range Calc tramite script.provider.MasterScriptProviderFactory, gestendo il tutto direttamente da Python che recupera i dati dal foglio elettronico.

Codice: Seleziona tutto

def AArrayFromCalcSelection():
    # Restituisce la selezione attiva in calc; Non fa parte di LO
    # installato in C:\Users\Nicola\AppData\Roaming\Python\Python35\site-packages
    import win32com.client  # pywin32 pakage
    oSM = win32com.client.Dispatch('com.sun.star.ServiceManager')
    oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
    oWb = oDesk.getCurrentComponent()
    oSel = oWb.CurrentSelection
    aaDataArray = oSel.DataArray
    return aaDataArray
Ovviamente funziona solo in Window, e preventivamente con PyCharm ho installato pywin32 pakage.
Questa è l'equivalente del basic CreateObject("com.sun.star.ServiceManager") nel mondo COM e da questo oggetto Application Global Servicemanager discendono tutti gli altri.
Lascio a charlie valutare se questa soluzione possa definirsi risolta, di cui sto leggendo la Guida-alla-programmazione-in-OpenOffice.org-BASIC :D :bravo: .
Grazie ancora per il supporto.
Nicola
Nicola con LibreOffice 7.1 (x64) su Windows 11
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: come settare PyCharm per interagire con LibreOffice

Messaggio da hubert lambert »

Buongiorno a tutti,

Per la cronaca, l'ultima versione di Apso viene con un debugger incorporato ;) .
Cordiali saluti.
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
Rispondi