Tenesta SFWidgets.PopupMenu

Tenesta PopupMenu kan brukast til å laga sprettoppmenyar som kan knyttast til hendingar eller køyrast av skript. Denne tenesta inneheld desse funksjonane:

Oppkall av tenester

Før du brukar tenesta PopupMeny, må biblioteket ScriptForge vera lasta inn eller importert:

note

• Grunnleggjande makroar krev innlasting av biblioteket ScriptForge ved hjelp av denne setninga:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Python-skript krev import frå scriptforge-modulen:
from scriptforge import CreateScriptService


I Basic

Tenesta PopupMenu kan setjast opp på fleire måtar. Eksempelet nedanfor lagar ein sprettoppmeny utan å knyte han til ei mus- eller ei programhending.


    Sub ShowPopup
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim myPopup As Object
        Set myPopup = CreateScriptService("SFWidgets.PopupMenu", , 300, 300)
        myPopup.AddItem("Item ~A")
        myPopup.AddItem("Item ~B")
        vResponse = myPopup.Execute()
        MsgBox("Vald element-ID: " & vResponse)
        myPopup.Dispose()
    End Sub
  

Når du køyrer Sub definert ovanfor, vert det laga ein sprettoppmeny med to element i plasseringa X=300 og Y=300 på skjermen.

tip

Prefikset SFWidgets kan undertrykkjast når du kallar opp tenesta PopupMenu.


Eksempelet nedanfor definerer eit Sub som kan knyttast til ei musehending:


    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        Fyll sprettoppmenyen med element
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Gjer noko basert på vResponse
        ' ...
        myPopup.Dispose()
    End Sub
  
tip

Bruk metoden Dispose for å frigjera resursar når sprettoppmenyen er ferdig.


Det er også mogleg å kopla ein sprettoppmeny til hendingar som som vert utløyst av LibreOffice-program, skjema- og dialogvindaugekontrollar. Hendingar som «Museknapp trykt» og «Museknapp sleppt» er til vanleg knytt til sprettoppmenyar.


    Sub MyPopupClick(Optional poEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poEvent)
        ' ...
    End Sub
  
I Python

Eksempelet ovanfor kan skrivast slik i Python:


    from scriptforge import CreateScriptService
    
    def show_popup(args=None):
        my_popup = CreateScriptService("SFWidgets.PopupMenu", None, 300, 300)
        bas = CreateScriptService("Basic")
        my_popup.AddItem("Item ~A")
        my_popup.AddItem("Item ~B")
        response = my_popup.Execute()
        bas.MsgBox(f"Selected item ID: {response}")
        my_popup.Dispose()
  

    def my_popup_click(poEvent=None):
        my_popup = CreateScriptService("SFWidgets.PopupMenu", poEvent)
        # Fyll sprettoppmenyen med element
        response = my_popup.Execute()
        # Gjer noko basert på respons
        my_popup.Dispose()
  

Eigenskapar

Namn

Skriveverna

Type

Skildring

ShortcutCharacter

Nei

String

Teikn som vert brukt for å definera tilgangsnøkkelen til eit menyelement. Standardteiknet er ~.

SubmenuCharacter

Nei

String

Teikn eller streng som definerer korleis elementa er nøsta. Standardteikn er >.


Menyar og undermenyar

Når du skal laga sprettoppmenyar med undermenyar, brukar du det teiknet som er definert i eigenskapen SubmenuCharacter for å definera kor dei skal plasserast. Du kan for eksempel vurdera dette meny/undermeny-hierakiet:


    ' Item A
    ' Item B > Item B.1
    '          Item B.2
    ' ------ (line separator)
    ' Item C > Item C.1 > Item C.1.1
    '                     Item C.1.2
    ' Item C > Item C.2 > Item C.2.1
    '                     Item C.2.2
    '                     ------ (line separator)
    '                     Item C.2.3
    '                     Item C.2.4
  

Koden nedanfor brukar standard undermeny-teiknet > for å laga meny-/undermenyhierarkiet definert ovanfor:


    myPopup.AddItem("Item A")
    myPopup.AddItem("Item B>Item B.1")
    myPopup.AddItem("Item B>Item B.2")
    myPopup.AddItem("---")
    myPopup.AddItem("Item C>Item C.1>Item C.1.1")
    myPopup.AddItem("Item C>Item C.1>Item C.1.2")
    myPopup.AddItem("Item C>Item C.2>Item C.2.1")
    myPopup.AddItem("Item C>Item C.2>Item C.2.2")
    myPopup.AddItem("Item C>Item C.2>---")
    myPopup.AddItem("Item C>Item C.2>Item C.2.3")
    myPopup.AddItem("Item C>Item C.2>Item C.2.4")
  
note

Strengen --- vert brukt for å definera skiljelinjer i menyar eller undermenyar.


Bruka ikon

Elementa i menyen kan ha ikon som er spesifiserte som argument i metodane AddCheckBox, AddItem og AddRadioButton.

Alle tilgjengelege ikon i LibreOffice kan brukast ved å spesifisera banen deira i høve til mappa der ikonfilene er plasserte i installasjonsmappa. Ikona er lagde i denne mappa:

INSTALLDIR/share/config

tip

Bruk eigenskapen InstallFolder i tenesta FileSystem for å bestemma kor LibreOffice er installert på systemet.


Denne mappa inneheld ein serie ZIP-filer som inneheld biletfiler for kvart av dei tilgjengelege ikonsetta. Bileta i desse ZIP-filene er organiserte i mapper. For å bruka eit ikon, spesifiserer du ikonfila med stien til plasseringa inne i ZIP-fila.

Eksempelet nedanfor brukar ikonet "sc_newdoc.svg" som ligg i mappa "cmd". Teiknet skråstrek "/" vert brukt som stiskiljeteikn same kva operativsystem som er i bruk.

I Basic

      myMenu.AddItem("Item A", Icon := "cmd/sc_newdoc.svg")
    
I Python

      myMenu.AddItem("Item A", icon="cmd/sc_newdoc.svg")
    
note

Alle ikonsetta har den same interne strukturen. Kva for ikon som vert vist er avhengig av kva ikonsett som er i bruk.


Metodar

Liste over metodar i tenesta PopupMenu

AddCheckBox
AddItem

AddRadioButton

Execute


AddCheckBox

Set inn ein avkryssingsboks i sprettoppmenyen. Returnerer ein heiltalsverdi som identifiserer det innsette elementet.

Syntaks:

svc.AddCheckBox(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int

Parametrar:

menuitem: Definerer teksten som skal visast i menyen. Dette argument definerer også plassen elementet har i menyhierarkiet ved hjelp av undermeny-teiknet.

namn: Strengverdien som skal returnerast når det vert klikka på elementet. Som standard vert det siste elementet i menyhierakiet brukt.

status: Definerer om elementet er vald når menyen vert laga (Standard = Usann).

ikon: Sti til og namn på ikonet som skal visast utan det innleiande stiskiljeteiknet. Kva ikon som vert vist er avhengig av kva ikonsett som er i bruk.

verktøytips: Teksten som skal visast som verktøytips.

Eksempel:

I Basic

      myPopup.AddCheckBox("Option A", Status := True)
    
I Python

      my_popup.AddCheckBox("Option A", status=True)
    

AddItem

Set inn ei menyoppføring i sprettoppmenyen. Returnerer ein heiltalsverdi som identifiserer det innsette elementet.

Syntaks:

svc.AddItem(menuitem: str, opt name: str, opt icon: str, opt tooltip: str): int

Parametrar:

menuitem: Definerer teksten som skal visast i menyen. Dette argument definerer også plassen elementet har i menyhierarkiet ved hjelp av undermeny-teiknet.

namn: Strengverdien som skal returnerast når det vert klikka på elementet. Som standard vert det siste elementet i menyhierakiet brukt.

ikon: Sti til og namn på ikonet som skal visast utan det innleiande stiskiljeteiknet. Kva ikon som vert vist er avhengig av kva ikonsett som er i bruk.

verktøytips: Teksten som skal visast som verktøytips.

Eksempel:

I Basic

      myPopup.AddItem("Item A", Tooltip := "Ei forklarande melding")
    
I Python

      my_popup.AddItem("Element A", tooltip = "Ei forklarande melding")
    

AddRadioButton

Set inn ein radioknapp i sprettoppmenyen. Returnerer ein heiltalsverdi som identifiserer det innsette elementet.

Syntaks:

svc.AddRadioButton(menuitem: str, opt name: str, opt status: bool = False, opt icon: str, opt tooltip: str): int

Parametrar:

menuitem: Definerer teksten som skal visast i menyen. Dette argument definerer også plassen elementet har i menyhierarkiet ved hjelp av undermeny-teiknet.

namn: Strengverdien som skal returnerast når det vert trykt på elementet. Som standard vert det siste elementet i menyhierakiet brukt.

status: Definerer om elementet er vald når menyen vert laga (Standard = Usann).

ikon: Sti til og namn på ikonet som skal visast utan det innleiande stiskiljeteiknet. Kva ikon som vert vist er avhengig av kva ikonsett som er i bruk.

verktøytips: Teksten som skal visast som verktøytips.

Eksempel:

I Basic

      myPopup.AddRadioButton("Option A", Name := "A", Status := True)
    
I Python

      my_popup.AddRadioButton("Option A", name="A", status=True)
    

Execute

Visar sprettoppmenyen og ventar på ei handling frå brukaren. Returnerer det elementet det vert trykt på.

Viss brukaren klikkar utanfor sprettoppmenyen eller trykkjer på Esc-tasten, er ingen element valde. I slike tilfelle avhenger den returnerte verdien av parameteren returnid. Viss returnid = Sann og ingen element er valde, vert verdien 0 (null) returnert. Elles vert det returnert ein tom streng "".

Syntaks:

svc.Execute(opt returnid: bool = True): any

Parametrar:

returnid: Viss denne er Sann vert ID for det valde elementet returnert. Viss metoden returnerer Usann vert namnet på elementet returnert (Standard = Sann).

Eksempel:

I eksempelet nedanfor vert det laga ein sprettoppmeny og namnet på elementet vert returnert fordi argumentet returnid er sett til Usann.

I Basic

      myPopup.AddItem("Item A", Name := "A")
      myPopup.AddItem("Item B", Name := "B")
      Dim vResponse as Variant
      vResponse = myPopup.Execute(False)
    
I Python

      my_popup.AddItem("Item A", name="A")
      my_popup.AddItem("Item B", name="B")
      response = my_popup.Execute(False)
    
warning

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


Støtt oss!