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