SFWidgets.PopupMenu service

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 standardteiknet til undermenyar «>» for Ä laga det meny/undermeny-hierakiet som er 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 linjeskift i menyar og 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Ä.

If the user clicks outside the popup menu or presses the Esc key, then no item is selected. In such cases, the returned value depends on the returnid parameter. If returnid = True and no item is selected, then the value 0 (zero) is returned. Otherwise an empty string "" is returned.

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.