Wskazówki dotyczące pisania w języku Python — odnoszące się do publicznych metod i właściwości usług ScriptForge — można uzyskać z IDE obsługujących takie udogodnienia. Wizualnie, podczas edycji skryptu użytkownika:
W zależności od tego, co chcesz osiągnąć, możesz wybrać jedno z następujących podejść do uruchamiania skryptów Pythona w LibreOfficeDev:
-
Uruchamianie skryptów w bieżącym procesie LibreOfficeDev: skrypty Pythona są wykonywane w procesie LibreOfficeDev za pomocą menu lub rozszerzenia APSO, aby wywołać skrypty użytkownika zapisane w folderze skryptów Pythona. Można również użyć powłoki Pythona APSO do interaktywnego uruchamiania skryptów Pythona.
-
Uruchamianie skryptów niezależnie od procesu LibreOfficeDev: skrypty Pythona są wykonywane z poziomu procesu zewnętrznego, który łączy się z trwającym procesem LibreOfficeDev za pomocą pipe lub socket.
Jeśli planujesz uruchamiać skrypty z poziomu procesu LibreOfficeDev, zaleca się zainstalowanie rozszerzenia APSO (Alternative Script Organizer for Python). Aby jednak tworzyć skrypty Pythona poza LibreOfficeDev, możesz wybrać preferowane środowisko IDE dla Pythona.
Uruchamianie skryptów z poziomu procesu LibreOfficeDev
Korzystanie z rozszerzenia APSO
Najprostszym sposobem na rozpoczęcie pisania skryptów w Pythonie w LibreOfficeDev jest zainstalowanie rozszerzenia APSO. Po jego zainstalowaniu otwórz dowolny komponent LibreOfficeDev i przejdź do .
W głównym oknie APSO przejdź do .
Ewentualnie możesz otworzyć APSO za pomocą domyślnego skrótu Alt + Shift + F11.
Teraz możesz zacząć wpisywać polecenia języka Python, a powłoka wypisze odpowiedni wynik po wykonaniu każdego wiersza kodu.
Aby rozpocząć korzystanie z biblioteki ScriptForge, należy zaimportować metodę CreateScriptService, dzięki której będzie można uzyskać dostęp do usług udostępnianych przez bibliotekę. Poniższy przykład wykorzystuje usługę Basic do wyświetlania okna komunikatu.
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello!")
Aby uruchomić powyższy przykład, wpisz kolejno każdy wiersz kodu w powłoce Pythona i naciśnij klawisz Enter po wpisaniu każdego wiersza kodu.
Teraz możesz rozpocząć wykonywanie poleceń Pythona za pomocą dowolnej usługi ScriptForge. Na przykład poniższy fragment kodu wykorzystuje usługę UI do utworzenia pustego dokumentu Writer.
ui = CreateScriptService("UI")
doc = ui.CreateDocument("Writer")
Tworzenie plików skryptów Pythona
Możesz tworzyć własne pliki Pythona i edytować je w preferowanym edytorze tekstu. Później możesz je wywołać z poziomu dowolnego komponentu LibreOfficeDev.
Pierwszym krokiem jest ustalenie miejsca przechowywania skryptów użytkownika. Więcej informacji znajdziesz na stronie pomocy Organizacja i lokalizacja skryptów Pythona.
Teraz możesz utworzyć plik tekstowy w folderze skryptów użytkownika Pythona, na przykład my_script.py, i zacząć pisać swoje skrypty.
Oto prosty przykład, który pobiera wartość liczbową z komórki programu Calc i zwiększa ją o 1. Wystarczy wpisać poniższy kod do pliku my_script.py.
from scriptforge import CreateScriptService
doc = CreateScriptService("Calc")
def increment_cell(args=None):
value = doc.GetValue("A1")
value += 1
doc.SetValue("A1", value)
g_exportedScripts = (increment_cell, )
Ten przykład tworzy funkcję increment_cell. Należy pamiętać, że g_exportedScripts to krotka wskazująca, które funkcje będą wyświetlane w LibreOfficeDev jako skrypty użytkownika.
Aby uruchomić ten skrypt z poziomu dokumentu Calc:
-
Utwórz lub otwórz plik Calc.
-
Wpisz wartość liczbową do komórki „A1” w bieżącym arkuszu.
-
Przejdź do .
-
Wybierz Moje makra - my_script w selektorze bibliotek. Następnie wybierz funkcję increment_cell z listy .
-
Kliknij Uruchom. Zauważ, że wartość w komórce „A1” została zwiększona o 1.
Możesz również użyć APSO do uruchomienia skryptów Pythona w podobny sposób:
-
Najpierw otwórz APSO, wybierając .
-
Na liście makr przejdź do .
-
Kliknij .
Uruchamianie skryptów oddzielnie od procesu LibreOfficeDev
Określanie ścieżki instalacji
Pierwszym krokiem do uruchomienia skryptów z osobnego procesu jest znalezienie folderu, w którym zainstalowany jest LibreOfficeDev. Można to zrobić na kilka sposobów, ale ScriptForge zapewnia szybki sposób na zidentyfikowanie ścieżki instalacji. W tym celu otwórz powłokę Pythona APSO i wpisz:
from scriptforge import CreateScriptService
fs = CreateScriptService("FileSystem")
fs.FileNaming = "SYS"
inst_dir = fs.InstallFolder
print(inst_dir)
Wynik powyższego kodu to katalog bazowy, w którym zainstalowano LibreOfficeDev. Teraz należy dodać podfolder „program” do wynikowej ścieżki. To jest folder bazowy, z którego będą uruchamiane skrypty Pythona z oddzielnego procesu.
Załóżmy na przykład, że po uruchomieniu powyższego kodu Pythona otrzymasz ścieżkę /usr/lib/libreoffice/. W takim przypadku ścieżkę /usr/lib/libreoffice/program należy traktować jako ścieżkę do uruchamiania skryptów Pythona.
Uruchom LibreOfficeDev z ustawieniami pipe lub socket
Aby uruchamiać skrypty Pythona z poziomu osobnego procesu, należy uruchomić LibreOfficeDev z kilkoma dodatkowymi opcjami określającymi nazwę potoku lub nazwę hosta i port, za pośrednictwem których proces zewnętrzny będzie komunikował się z procesem komponentu LibreOfficeDev.
Otwórz wiersz poleceń swojego systemu operacyjnego, przejdź do folderu programu w katalogu instalacyjnym LibreOfficeDev i wpisz:
W systemach Linux / Mac OS:
libreoffice --accept='pipe,name=aPipeName;urp;'
W systemie Windows:
soffice.exe --accept='socket,host=localhost,port=2021;urp;'
jako Flatpak:
flatpak run org.libreOffice.LibreOffice accept='socket,host=localhost,port=2021;urp;'
Obie powyższe komendy uruchomią LibreOfficeDev z otwartym kanałem komunikacyjnym, aby inne procesy mogły wymieniać z nim komunikaty.
Zwróć uwagę, że poprzedni przykład otwiera centrum startowe LibreOfficeDev. Jeśli chcesz otworzyć konkretny komponent, na przykład Writer, możesz dodać flagę --writer do polecenia w następujący sposób.
./soffice --writer --accept='socket,host=localhost,port=2021;urp;'
Zwróć uwagę na parametry name lub host i port, którymi w tym przykładzie są odpowiednio aPipeName lub localhost i 2021.
Uruchamianie zewnętrznej powłoki Pythona
Uruchom powłokę Pythona z folderu program w ścieżce instalacji LibreOfficeDev. Wykonaj kroki powyżej, aby dowiedzieć się, jak znaleźć ścieżkę instalacji.
W systemach Linux / Mac OS:
$ cd /usr/lib/libreoffice/program
$ python
W systemie Windows:
$ cd C:\\Program Files\\LibreOffice\\program\
$ python.exe
Spowoduje to otwarcie powłoki Pythona i będzie można zacząć wpisywać polecenia, które zostaną wykonane przez LibreOfficeDev. Najpierw jednak musisz skonfigurować połączenie pipe lub socket. Poniższe polecenie ScriptForge() musi poprzedzać pierwsze wywołanie CreateScriptService().
Uruchom jedno z poniższych:
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(pipe='aPipeName')
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(hostname='localhost', port=2021)
Przeczytaj sekcję Ustawianie PYTHONPATH poniżej w przypadku wystąpienia błędów podczas importowania scriptforge.py lub uno.py.
Druga linia kodu powyżej definiuje ustawienia pipe lub host i port, dzięki czemu powłoka Pythona może komunikować się z trwającym procesem LibreOfficeDev otwartym przy użyciu tych samych ustawień potoku lub gniazda.
Teraz możesz uruchamiać inne polecenia Pythona, które będą mogły komunikować się z procesem LibreOfficeDev. Na przykład:
ui = CreateScriptService("UI")
bas = CreateScriptService("Basic")
doc = ui.OpenDocument("~/Documents/myFile.ods")
bas.MsgBox(doc.DocumentType)
Ustawianie PYTHONPATH
W zależności od konfiguracji systemu operacyjnego konieczne będzie ustawienie zmiennej środowiskowej PYTHONPATH w celu zaimportowania biblioteki scriptforge.py, co z kolei wymaga zaimportowania biblioteki uno.py.
Użyj narzędzia do wyszukiwania plików w swoim systemie operacyjnym, aby ustalić katalog, w którym znajdują się oba pliki.
Na przykład w domyślnej instalacji Ubuntu oba pliki mogą znajdować się w następującym miejscu:
W takim przypadku przed uruchomieniem interpretera Pythona należy ustawić zmienną środowiskową PYTHONPATH w następujący sposób:
export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages
Lokalizacja tych plików będzie się różnić w zależności od systemu operacyjnego i metody instalacji LibreOfficeDev.