ScriptForge.Basic service

The ScriptForge.Basic service proposes a collection of LibreOffice Basic methods to be executed in a Python context. Basic service methods reproduce the exact syntax and behaviour of Basic builtin functions.

note

Denne tenesta er tilgjengeleg frÄ LibreOffice 7.2 og hÞgare.


Typical example:


   svc.MsgBox('This has to be displayed in a message box')
  
warning

ScriptForge.Basic service is limited to Python scripts.


Service invocation

Before using the Basic service, import the CreateScriptService() method from the scriptforge module:


    from scriptforge import CreateScriptService
    svc = CreateScriptService("Basic")
  

Properties

Name

ReadOnly

Type

Description

MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL

Yes

integer

Values: 0, 1, 5, 4, 3

MB_ICONEXCLAMATION, MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONSTOP

Yes

integer

Values: 48, 64, 32, 16

MB_ABORTRETRYIGNORE, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3

Yes

integer

Values: 2, 128, 256, 512

IDABORT, IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY, IDYES

Yes

integer

Values: 3, 2, 5, 7, 1, 4, 6
Constants indicating MsgBox selected button.

StarDesktop

Yes

UNO
object

StarDesktop object represents LibreOffice Start Center.


List of Methods in the Basic Service

CDate
CDateFromUnoDateTime
CDateToUnoDateTime
ConvertFromUrl
ConvertToUrl
CreateUnoService
DateAdd
DateDiff
DatePart

DateValue
Format
GetDefaultContext
GetGuiType
GetPathSeparator
GetSystemTicks
GlobalScope.BasicLibraries
GlobalScope.DialogLibraries
InputBox

MsgBox
Now
RGB
ThisComponent
ThisDatabaseDocument
Xray




CDate

Converts a numeric expression or a string to a datetime.datetime Python native object.

note

This method exposes the Basic builtin function CDate to Python scripts.


Syntaks:

svc.CDate(expression: any): obj

Parametrar:

expression: a numeric expression or a string representing a date.

NĂ„r du konverterer eit strenguttrykk, mĂ„ dato og klokkeslett skrivast inn anten i eitt av dei formata som er definert for sprĂ„ket du brukar (sjĂ„ → SprĂ„kinnstillingar → SprĂ„k) eller i eit ISO datoformat (for tida er berre ISO-formatet med doble hermeteikn gyldig, for eksempel "2012-12-31"). I taluttrykk representerer verdiane til venstre for desimalteiknet datoen med start frĂ„ 31. desember 1899. Verdiane til hĂžgre for desimalteiknet representerer klokkeslettet.

Eksempel:


    d = svc.CDate(1000.25)
    svc.MsgBox(str(d)) # 1902-09-26 06:00:00
    svc.MsgBox(d.year) # 1902
  

CDateFromUnoDateTime

Converts a UNO date/time representation to a datetime.datetime Python native object.

Syntaks:

svc.CDateFromUnoDateTime(unodate: uno): obj

Parametrar:

unodate: A UNO date/time object of one of the following types: com.sun.star.util.DateTime, com.sun.star.util.Date or com.sun.star.util.Time

Eksempel:

The following example creates a com.sun.star.util.DateTime object and converts it to a datetime.datetime Python object.


    import uno
    uno_date = uno.createUnoStruct('com.sun.star.util.DateTime')
    uno_date.Year = 1983
    uno_date.Month = 2
    uno_date.Day = 23
    new_date = svc.CDateFromUnoDateTime(uno_date)
    svc.MsgBox(str(new_date)) # 1983-02-23 00:00:00
  

CDateToUnoDateTime

Converts a date representation into a com.sun.star.util.DateTime object.

Syntaks:

svc.CDateToUnoDateTime(date: obj): uno

Parametrar:

date: A Python date/time object of one of the following types: datetime.datetime, datetime.date, datetime.time, float (time.time) or time.struct_time.

Eksempel:


    from datetime import datetime
    current_datetime = datetime.now()
    uno_date = svc.CDateToUnoDateTime(current_datetime)
    svc.MsgBox(str(uno_date.Year) + "-" + str(uno_date.Month) + "-" + str(uno_date.Day))
  

ConvertFromUrl

Returns a system path file name for the given file: URL.

Syntaks:

svc.ConvertFromUrl(url: str): str

Parametrar:

url: An absolute file: URL.

Returverdi:

A system path file name.

Eksempel:


    filename = svc.ConvertFromUrl( "file:///C:/Program%20Files%20(x86)/LibreOffice/News.txt")
    svc.MsgBox(filename)
  

ConvertToUrl

Returns a file: URL for the given system path.

Syntaks:

svc.ConvertToUrl(systempath: str): str

Parametrar:

systempath: A system file name as a string.

Returverdi:

A file: URL as a string.

Eksempel:


    url = svc.ConvertToUrl( 'C:\Program Files(x86)\LibreOffice\News.txt')
    svc.MsgBox(url)
  

CreateUnoService

Instantiates a UNO service with the ProcessServiceManager.

Syntaks:

svc.CreateUnoService(servicename: str): uno

Parametrar:

servicename : A fully qualified service name such as "com.sun.star.ui.dialogs.FilePicker" or 'com.sun.star.sheet.FunctionAccess'.

Eksempel:


    dsk = svc.CreateUnoService('com.sun.star.frame.Desktop')
  

DateAdd

Adds a date or time interval to a given date/time a number of times and returns the resulting date.

Syntaks:

svc.DateAdd(interval: str, number: num, date: datetime): datetime

Parametrar:

interval: A string expression from the following table, specifying the date or time interval.

interval (strengverdi)

Forklaring

yyyy

År

q

Kvarter

m

MÄnad

y

Dagen i Äret

w

Vekedag

ww

Veke i Äret

d

Dag

h

Time

n

Minutt

s

Sekund


number: A numerical expression specifying how often the interval value will be added when positive or subtracted when negative.

date: A given datetime.datetime value, the interval value will be added number times to this date/time value.

Returverdi:

A datetime.datetime value.

Eksempel:


    dt = datetime.datetime(2004, 1, 31)
    dt = svc.DateAdd("m", 1, dt)
    print(dt)
  

DateDiff

Returns the number of date or time intervals between two given date/time values.

Syntaks:

svc.DateDiff(interval: str, date1: datetime, date2: datetime, firstdayofweek = 1, firstweekofyear = 1): int

Parametrar:

interval: A string expression specifying the date interval, as detailed in above DateAdd method.

date1, date2: The two datetime.datetime values to be compared.

firstdayofweek ‒ Ein valfri parameter som bestemmer fþrste dagen i veka.

firstdayofweek-verdi

Forklaring

0

Bruk standardverdien frÄ systemet

1

SĂžndag (standard)

2

MÄndag

3

Tysdag

4

Onsdag

5

Torsdag

6

Fredag

7

Laurdag


firstweekofyear ‒ Ein valfri parameter som bestemmer den fĂžrste veka i eit Ă„r.

firstweekofyear-verdi

Forklaring

0

Bruk standardverdien frÄ systemet

1

Veke 1 er den veka som inneheld 1. januar 8standard)

2

Veke 1 er den fÞrste veka dette Äret som inneheld fire eller fleire dagar

3

Veke 1 er den fÞrste veka som inneheld dagar berre frÄ det nye Äret


Returverdi:

A number.

Eksempel:


    date1 = datetime.datetime(2005,1, 1)
    date2 = datetime.datetime(2005,12,31)
    diffDays = svc.DateDiff('d', date1, date2)
    print(diffDays)
  

DatePart

The DatePart function returns a specified part of a date.

Syntaks:

svc.DatePart(interval: str, date: datetime, firstdayofweek = 1, firstweekofyear = 1): int

Parametrar:

interval: A string expression specifying the date interval, as detailed in above DateAdd method.

date: The date/time from which the result is calculated.

firstdayofweek, firstweekofyear: optional parameters that respectively specify the starting day of a week and the starting week of a year, as detailed in above DateDiff method.

Returverdi:

The extracted part for the given date/time.

Eksempel:


    print(svc.DatePart("ww", datetime.datetime(2005,12,31)
    print(svc.DatePart('q', datetime.datetime(1999,12,30)
  

DateValue

Computes a date value from a date string.

Syntaks:

svc.DateValue(date: str): datetime

Parametrar:

Dato: Strenguttrykk som inneheld datoen du vil rekna ut. I motsetnad til funksjonen DateSerial som gjev tilbake Ă„r, mĂ„nadar og dagar som skilde numeriske verdiar, krev funksjonen DateValue at datostrengen samsvarar med eit datogjenkjenningsmĂžnster som er definert for dei lokale innstillingane som er brukte (sjĂ„ → SprĂ„kinnstillingar → SprĂ„k)eller ISO-datoformatet (for tida vert berre ISO-format med bindestrekar, for eksempel «2012-12-31» godtekne).

Returverdi:

The computed date.

Eksempel:


    dt = svc.DateValue("23-02-2011")
    print(dt)
  

Format

Converts a number to a string, and then formats it according to the format that you specify.

Syntaks:

svc.Format(expression: any, format = ''): str

Parametrar:

uttrykk: Taluttrykket som skal konverterast til ein formatert streng.

format: Streng med formatkoden for talet. Viss format er slÞyfa, verkar format-funksjonen pÄ same mÄten som LibreOffice Basic-funksjonen Str().

Returverdi:

Tekststreng.

Formatting Codes

Lista nedanfor viser kodane som kan nyttast for Ă„ formatera eit taluttrykk:

0: Viss uttrykk har eit siffer der 0 er plassert i formatkoden, vert sifferet vist, elles vert det vis ein 0.

Viss uttrykk har fÊrre siffer enn talet pÄ nullar i formatkoden, (pÄ begge sider av desimalteiknet), vert leiande eller avsluttande nullar viste. Viss uttrykk har fleire siffer til venstre for desimalteiknet enn formatkoden har, vert dei overskytande sifra viste utan formatering.

Desimalplassar i uttrykkt vert avrunda i hÞve til talet pÄ nullar som kjem etter desimalteiknet i Format-koden.

#: Viss uttrykk har eit siffer der #-plasshaldaren er plassert i formatkoden, vert sifferet vist, elles ingenting.

Dette symbolet verkar pÄ same mÄten som 0, utanom at leiande og avsluttande nullar ikkje vert viste viss det er fleire #-teikn i formatkoden enn siffer i uttrykk. Berre dei relevante sifra i uttrykk vert viste.

.: Plasshaldaren for desimalteiknet bestemmer talet pÄ desimalplassar til hÞgre og venstre for desimalteiknet.

Viss formatkode inneheld berre #-plasshaldarar til venstre for dette symbolet, vil tal mindre enn 1 byrja med desimalteiknet. For alltid Ä visa ein leiande null ved desimaltal, bruk 0 som plasshaldar pÄ den fÞrste plassen framfÞre desimalteiknet.

%: Multipliserer uttrykk med 100 og set inn prosentteiknet (%) der uttrykk er i format-koden.

E- E+ e- e+ : Viss format-koden inneheld minst ein plasshaldar for siffer (0 eller #) til hÞgre for symbolet E-, E+, e- eller e+, vert uttrykk formatert vitskapleg i eksponentialform. Bokstaven E eller e vert set inn mellom talet og eksponenten. Talet pÄ plasshaldarar for tal til hÞgre for symbolet bestemmer talet pÄ siffer i eksponenten.

Viss eksponenten er negativ, vert eit minusteikn (-) vist direkte framfĂžre eksponenten med E-, E+, e-, e+. Viss eksponenten er positiv, vert plussteiknet vist berre framfĂžre eksponentar med E+ eller e+.

Tusenskiljeteiknet vert vist viss format-koden inneheld skiljeteiknet omgjeve av plasshaldarar for tal (0 eller #).

Bruk av punktum som tusenskilje eller desimalteikn er avhengig av dei lokale innstillingane. NÄr du skriv inn eit tal direkte i BASIC kjeldekode, mÄ du bruka punktum som desimalskiljeteikn. Kva teikn som vert vist som desimalteikn er derimot avhengig av talformatet sett i systeminnstillingane.

- + $ ( ) mellomrom: A pluss (+), minus (-), dollar ($), mellomrom, eller parentesar skrivne direkte i format-koden, vert viste som bokstavteikn.

For Ä kunna visa andre teikn enn dei som er lista her, mÄ du setja ein bakoverstrek (\) framfÞre dei eller setja dei i doble hermeteikn (" ").

\ : Bakoverstreken viser det neste teiknet i format-koden.

Teikn i format-koden med ei spesiell meining kan berre visast som bokstavteikn viss dei har ein bakoverstrek framfÞre seg. Bakoverstreken vert ikkje vist. For Ä visa bakoverstrek mÄ du skriva ein bakoverstrek framfÞre i formatkoden (\\).

Teikna som mÄ ha ein bakoverstrek framfÞre seg for Ä verta viste som bokstavteikn, er formateringsteikna for dato og klokkeslett (a, c, d, h, m, n, p, q, s, t, w, y, /, :), numeriske formateringsteikn (#, 0, %, E, e, komma, punktum) og strengformateringsteikna (@, &, <, >, !).

Du kan ogsÄ bruka fÞlgjande fÞrehandsdefinerte talformat. Med unnatak av "Generelle tal" returnerer alle dei fÞrehandsdefinerte formatkodane talet som eit desimaltal med to desimalar.

Viss du brukar fÞrehandsdefinerte format, mÄ namnet pÄ formatet skrivast mellom doble hermeteikn ("").

Predefined Formats

Generelle tal: Tala vert viste slik dei er skrivne inn.

Valuta: Set inn eit dollarteikn framfĂžre talet og set negative tal i parentes.

Fixed: Viser minst eitt tal framfĂžre desimalteiknet.

Standard: Viser talet med tusenskiljeteikn.

Prosent: Multipliserer talet med 100 og legg til prosentteiknet.

Vitskapleg: Viser talet i vitskapleg notasjon (for eksempel 1.00E+03 for 1000).

Ein format-kode kan delast i tre delar skilde med semikolon. Den fÞrste delen definerer formatet pÄ ein positiv verdi, den andre for negative verdiar og den tredje for null. Set du opp berre éin format-kode, vil denne gjelda for alle tal.

Dei lokale innstillingane som styrer formateringa av tal, datoar og valuta i LibreOffice Basic vert sette i → SprĂ„kinnstillingar → SprĂ„k. I Basic-formatkodar vert alltid punktum (.) brukt som plasshaldar for desimalskiljeteiknet som er definert lokalt. Punktumet vert erstatta med det aktuelle skiljeteiknet.

Det same gjeld for dei lokale innstillingane for dato-, tid- og valuta-format. Basic-formatet vil verta tolka og vist i hÞve til dei lokale sprÄkinnstillingane.

Eksempel:


    txt = svc.Format(6328.2, '##.##0.00')
    print(txt)
  

GetDefaultContext

Returns the default context of the process service factory, if existent, else returns a null reference.

GetDefaultContext is an alternative to the getComponentContext() method available from XSCRIPTCONTEXT global variable or from uno.py module.

Syntaks:

svc.GetDefaultContext(): uno

Returverdi:

The default component context is used, when instantiating services via XMultiServiceFactory. See the Professional UNO chapter in the Developer's Guide on api.libreoffice.org for more information.

Eksempel:


    ctx = svc.GetDefaultContext()
  

GetGuiType

Returns a numerical value that specifies the graphical user interface. This function is only provided for backward compatibility with previous versions.

Refer to system() method from platform Python module to identify the operating system.

Syntaks:

svc.GetGuiType(): int

Eksempel:


    n = svc.GetGuiType()
  

GetPathSeparator

Returns the operating system-dependent directory separator used to specify file paths.

Use os.pathsep from os Python module to identify the path separator.

Syntaks:

svc.GetPathSeparator(): str


    svc.GetPathSeparator(): str
  

Eksempel:


    sep = svc.GetPathSeparator()
  

GetSystemTicks

Returns the number of system ticks provided by the operating system. You can use this function to optimize certain processes. Use this method to estimate time in milliseconds:

Syntaks:

svc.GetSystemTicks(): int

Eksempel:


    ticks_ini = svc.GetSystemTicks()
    time.sleep(1)
    ticks_end = svc.GetSystemTicks()
    svc.MsgBox("{} - {} = {}".format(ticks_end, ticks_ini,ticks_end - ticks_ini))
  

GlobalScope.BasicLibraries

Returns the UNO object containing all shared Basic libraries and modules.

This method is the Python equivalent to GlobalScope.BasicLibraries in Basic scripts.

Syntaks:

svc.GlobalScope.BasicLibraries(): uno

Returverdi:

com.sun.star.script.XLibraryContainer

Eksempel:

The following example loads the Gimmicks Basic library if it has not been loaded yet.


    libs = svc.GlobalScope.BasicLibraries()
    if not libs.isLibraryLoaded("Gimmicks"):
        libs.loadLibrary("Gimmicks")
  

GlobalScope.DialogLibraries

Returns the UNO object containing all shared dialog libraries.

This method is the Python equivalent to GlobalScope.DialogLibraries in Basic scripts.

Syntaks:

svc.GlobalScope.DialogLibraries(): uno

Returverdi:

com.sun.star.comp.sfx2.DialogLibraryContainer

Eksempel:

The following example shows a message box with the names of all available dialog libraries.


    dlg_libs = svc.GlobalScope.DialogLibraries()
    lib_names = dlg_libs.getElementNames()
    svc.MsgBox("\n".join(lib_names))
  

InputBox

Syntaks:

svc.InputBox(prompt: str, [title: str], [default: str], [xpostwips: int, ypostwips: int]): str

Parametrar:

prompt: Strenguttrykket som vert vist som melding i dialogvindauget.

Title: Strenguttrykket som vert vist i tittelfeltet for dialogvindauget.

default: Strenguttrykket som vert vist i tekstfeltet i dialogvindauget viss det ikkje er skrive inn inndata.

xpostwips: Integer expression that specifies the horizontal position of the dialog. The position is an absolute coordinate and does not refer to the window of LibreOffice.

ypostwips: Integer expression that specifies the vertical position of the dialog. The position is an absolute coordinate and does not refer to the window of LibreOffice.

Viss xpostwips og ypostwips er slÞyfa, vert dialogvindauget midtstilt pÄ skjermen. Plasseringa vert bestemt med mÄleeininga twips.

Returverdi:

string

Eksempel:


    txt = s.InputBox('Please enter a phrase:', "Dear user")
    s.MsgBox(txt, MB_ICONINFORMATION, "Confirmation of phrase")
  
note

For in-depth information please refer to Input/Output to Screen with Python on the Wiki.


MsgBox

Displays a dialog box containing a message and returns an optional value.
MB_xx constants help specify the dialog type, the number and type of buttons to display, plus the icon type. By adding their respective values they form bit patterns, that define the MsgBox dialog appearance.

Syntaks:

svc.MsgBox(prompt: str, [buttons: int], [title: str])[: int]

Parametrar:

prompt Strenguttrykk som vert vist som ei melding i dialogvindauget. Linjeskift kan setjast inn med Chr$(13).

title: Strenguttrykk som vert vist pÄ tittellinja i dialogvindauget. Viss denne vert slÞyfa, vert programnamnet vist pÄ tittellinja.

knappar: Eit heiltalsuttrykk som bestemmer dialogvindaugetypen, kor mange og kva type knappar som skal visast og ikontypen. knappar er ein kombinasjon av bit-mĂžnster, det vil seia ein kombinasjon av element som vert definert ved Ă„ leggja saman dei respektive verdiane:

Returverdi:

An optional integer as detailed in above IDxx properties.

Eksempel:


    txt = s.InputBox('Please enter a phrase:', "Dear user")
    s.MsgBox(txt, MB_ICONINFORMATION, "Confirmation of phrase")
  
note

For in-depth information please refer to Input/Output to Screen with Python on the Wiki.


Now

Returns the current system date and time as a datetime.datetime Python native object.

Syntaks:

svc.Now(): datetime

Eksempel:


    svc.MsgBox(svc.Now(), svc.MB_OK, "Now")
  

RGB

Returns an integer color value consisting of red, green, and blue components.

Syntaks:

svc.RGB(red:int, green: int, blue: int): int

Parametrar:

Red: Kva heiltalsuttrykk som helst som representerer den raude komponenten (0 - 255) i ein samansett farge.

green: Kva heiltalsuttrykk som helst som representerer den grĂžne komponenten (0 - 255) i ein samansett farge.

blue: Kva heiltalsuttrykk som helst som representerer den blÄ komponenten (0 - 255) i ein samansett farge.

tip

Dialogvindauget Fargehentar hjelper med Ä rekna ut raude, grÞne og blÄ komponentar i ein samansett farge. Endra tekstfarge og val av Tilpass farge vil ogsÄ visa dialogvindauget for fargehentaren.


Returverdi:

integer

Eksempel:


    YELLOW = svc.RGB(255,255,0)
  

ThisComponent

If the current component refers to a LibreOffice document, this method returns the UNO object representing the document.

The method will return None when the current component does not correspond to a document.

Syntaks:

svc.ThisComponent(): uno

Eksempel:


    comp = svc.ThisComponent
    svc.MsgBox("\n".join(comp.getSupportedServiceNames()))
  

ThisDatabaseDocument

If the script is being executed from a Base document or any of its subcomponents this method returns the main component of the Base instance.

This method returns None otherwise.

Syntaks:

svc.ThisDatabaseDocument(): uno

Eksempel:


    db_doc = svc.ThisDatabaseDocument
    table_names = db_doc.DataSource.getTables().getElementNames()
    bas.MsgBox("\n".join(table_names))
  
tip

Visit the OfficeDatabaseDocument API page to learn more about Base's main component structure.


Xray

Inspect Uno objects or variables.

Syntaks:

svc.Xray(obj: any)

Parametrar:

obj: A variable or Uno object.

Eksempel:


    svc.Xray(svc.StarDesktop)
  
warning

Alle Basic-rutinane og -identifikatorane i ScriptForge som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje tenkt brukte i Basic-makroar.