Tenesta ScriptForge.Basic

Tenesta ScriptForge.Basic tilbyr ei samling av LibreOffice Basic-metodar som kan kĂžyrast i ein Python-samanheng. Tenesta Basic sine metodar reproduserer dei innebygde Basic-funksjonane nĂžyaktig i hĂžve til syntaks og oppfĂžrsel.

note

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


Typisk eksempel:


   svc.MsgBox('Dette vert vist i ein meldingsboks')
  
warning

Tenesta ScriptForge.Basic er avgrensa til Python-skript.


Oppkall av tenester

FÞr du kan bruka tenesta Basic mÄ du importera metoden CreateScriptService() frÄ modulen scriptforge:


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

Eigenskapar

Namn

Skriveverna

Type

Skildring

MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL

Ja

heiltal

Verdiar: 0, 1, 5, 4, 3

MB_ICONEXCLAMATION, MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONSTOP

Ja

heiltal

Verdiar: 48, 64, 32, 16

MB_ABORTRETRYIGNORE, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3

Ja

heiltal

Verdiar: 2, 128, 256, 512

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

Ja

heiltal

Verdiar: 3, 2, 5, 7, 1, 4, 6
Konstantar som peikar pÄ den valde knappen i MsgBox.

StarDesktop

Ja

UNO-
objekt

Objektet StarDesktop representerer LibreOffice Startsenter.


Liste over metodar i tenesta Base

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

Konverterer eit numerisk uttrykk eller ein streng til eit standard datetime.datetime Python-objekt.

note

Denne metoden viser den innebygde Basic-funksjonen CDate for Python-skript.


Syntaks:

svc.CDate(expression: any): obj

Parametrar:

uttrykk: eit numerisk uttrykk eller ein streng som representerer ein dato.

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

Konverterer ein UNO dato/klokkeslett-representasjon til eit vanleg datetime.datetime Python-objekt.

Syntaks:

svc.CDateFromUnoDateTime(unodate: uno): obj

Parametrar:

unodato: Eit UNO dato/klokkeslett-objekt av desse typane: com.sun.star.util.DateTime, com.sun.star.util.Date eller com.sun.star.util.Time

Eksempel:

Det neste eksempelet lagar eit com.sun.star.util.DateTime-objekt og konverterer det til eit datetime.datetime Python-objekt.


    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

Konverterer ein dato-representasjon til eit com.sun.star.util.DateTime-objekt.

Syntaks:

svc.CDateToUnoDateTime(date: obj): uno

Parametrar:

dato: Eit Python dato/klokkeslett-objekt av ein av dei fĂžlgjande typane: datetime.datetime, datetime.date, datetime.time, float (time.time) eller 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

Returnerer eit filnamn for systembanen for den gjevne file: URL.

Syntaks:

svc.ConvertFromUrl(url: str): str

Parametrar:

url: Ei absolutt file: URL.

Returverdi:

Eit filnamn for systembane.

Eksempel:


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

ConvertToUrl

Returnerer ei file: URL for den gjevne systemstien.

Syntaks:

svc.ConvertToUrl(systempath: str): str

Parametrar:

systemsti: Namnet pÄ ei systemfil som ein streng.

Returverdi:

Ein file: URL som ein streng.

Eksempel:


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

CreateUnoService

Startar ei UNO-teneste med ProcessServiceManager.

Syntaks:

svc.CreateUnoService(servicename: str): uno

Parametrar:

tenestenamn: Eit fult kvalifisert tenestenamn som for eksempel «com.sun.star.ui.dialogs.FilePicker» eller «com.sun.star.sheet.FunctionAccess».

Eksempel:


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

DateAdd

Legg til eit dato- eller klokkeslett-intervall i eit gjeve dato/klokkeslett eit bestemt tal gonger og returnerer den nye datoen.

Syntaks:

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

Parametrar:

intervall: Eit strenguttrykk frÄ den fÞlgjande tabellen som inneheld dato- eller tidsintervallet.

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: Eit numerisk uttrykk som bestemmer kor ofte verdien av intervall skal leggjast til nÄr han er positiv eller trekkjast frÄ nÄr han er negativ.

dato: Ein gjeven datetime.datetime-verdi. Verdien intervall vert lagt til «number» gongar til denne dato-/klokkeslett-verdien.

Returverdi:

Ein datetime.datetime-verdi.

Eksempel:


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

DateDiff

Returnerer talet pÄ dato- eller klokkeslett-intervall mellom to gjevne dato-/klokkeslett-verdiar.

Syntaks:

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

Parametrar:

intervall: Eit strengudtrykk som spesifiserer datointervallet, forklart i metoden DateAdd ovanfor.

dato1, dato2: Dei to datetime.datetime-verdiane som skal samanliknast.

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:

Eit tal

Eksempel:


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

DatePart

Funksjonen DatePart returnerer ein spesifisert del av ein dato.

Syntaks:

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

Parametrar:

intervall: Eit strenguttrykk som spesifiserer datointervallet, forklart i metoden DateAdd ovanfor.

dato: Datoen/klokkeslettet som resultatet skal reknast ut for.

fÞrstedagiveka, fÞrstevekeiÄret: valfrie parameterar som spesifiserer den fÞrste dagen i veka og den fÞrste veka i Äret ut frÄ forklaringa ovanfor i metoden DateDiff.

Returverdi:

Den uttrukne delen av ein gjeven dato/eit gjeve klokkeslett.

Eksempel:


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

DateValue

Reknar ut ein datoverdi frÄ ein datostreng.

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: Heiltalsuttrykk som bestemmer den vassrette plasseringa av dialogvindauget. Plasseringa er ein absolutt koordinat og har ingen ting med LibreOffice-vindauget Ă„ gjera.

ypostwips: Heiltalsuttrykk som bestemmer den loddrette plasseringa av dialogvindauget. Plasseringa er ein absolutt koordinat og har ingen ting med LibreOffice-vindauget Ă„ gjera.

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.