SFWidgets . PopupMenu serbisyo

Ang PopupMenu maaaring gamitin ang serbisyo upang lumikha ng mga popup menu na maaaring iugnay sa mga kaganapan o isagawa ng mga script. Ang serbisyong ito ay nagbibigay ng mga sumusunod na kakayahan:

Panawagan sa serbisyo

Bago gamitin ang PopupMenu serbisyo ang ScriptForge kailangang i-load o i-import ang library:

note

• Ang mga pangunahing macro ay kailangang mag-load ScriptForge aklatan gamit ang sumusunod na pahayag:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Ang mga script ng Python ay nangangailangan ng pag-import mula sa scriptforge module:
mula sa scriptforge import CreateScriptService


Sa Basic

Ang PopupMenu maaaring maisagawa ang serbisyo sa maraming paraan. Ang halimbawa sa ibaba ay lumilikha ng isang popup menu nang hindi ito iniuugnay sa isang mouse o kaganapan ng application.


    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("Napiling item ID: " & vResponse)
        myPopup.Dispose()
    End Sub
  

Pagpapatakbo ng Sub na tinukoy sa itaas ay lilikha ng popup menu na may dalawang entry sa posisyong X=300 at Y=300 sa screen.

tip

Ang prefix SFWidgets ay maaaring sugpuin habang invoking ang PopupMenu serbisyo.


Ang sumusunod na halimbawa ay tumutukoy sa a Sub na maaaring iugnay sa isang kaganapan ng mouse:


    Sub MyPopupClick(Optional poMouseEvent as Object)
        Dim myPopup As Object
        Set myPopup = CreateScriptService("PopupMenu", poMouseEvent)
        ' Populate ang popupmenu ng mga item
        Dim vResponse As Variant
        vResponse = myPopup.Execute(False)
        ' Gumawa ng isang bagay batay sa vResponse
        ' ...
        myPopup.Dispose()
    End Sub
  
tip

Gamitin ang Itapon paraan upang magbakante ng mga mapagkukunan pagkatapos isagawa ang popup menu.


Posible ring iugnay ang isang popup menu sa mga kaganapang na-trigger ng mga application, form at dialog ng LibreOffice. Ang mga kaganapan tulad ng "Pinindot ang pindutan ng mouse" at "Inilabas ang pindutan ng mouse" ay karaniwang nauugnay sa mga popup na menu.


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

Ang mga halimbawa sa itaas ay maaaring isulat sa Python tulad ng sumusunod:


    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)
        # Populate ang popupmenu ng mga item
        response = my_popup.Execute()
        # Gumawa ng isang bagay batay sa tugon
        my_popup.Dispose()
  

Mga Katangian

Pangalan

Readonly

Type

Mga nilalaman

ShortcutCharacter

Hindi

String

Character na ginamit upang tukuyin ang access key ng isang menu item. Ang default na character ay ~ .

SubmenuCharacter

Hindi

String

Character o string na tumutukoy kung paano naka-nest ang mga item sa menu. Ang default na character ay > .


Menu at Submenu

Upang lumikha ng popup menu na may mga submenu, gamitin ang character na tinukoy sa SubmenuCharacter property habang ginagawa ang menu entry para tukuyin kung saan ito ilalagay. Halimbawa, isaalang-alang ang sumusunod na hierarchy ng menu/submenu.


    ' 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
  

Ang code sa ibaba ay gumagamit ng default na submenu na character > upang lumikha ng hierarchy ng menu/submenu na tinukoy sa itaas:


    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

Ang string --- ay ginagamit upang tukuyin ang mga linya ng separator sa mga menu o submenus.


Paggamit ng mga icon

Maaaring may mga icon ang mga item sa menu, na tinukoy bilang mga argumento sa AddCheckBox , AddItem at AddRadioButton pamamaraan.

Ang lahat ng mga icon na available sa LibreOffice ay maaaring gamitin sa pamamagitan ng pagtukoy sa kanilang landas na nauugnay sa folder kung saan ang mga icon na file ay matatagpuan sa folder ng pag-install. Ang mga icon ay matatagpuan sa sumusunod na folder:

INSTALLDIR/share/config

tip

Gamitin ang InstallFolder ari-arian ng FileSystem serbisyo upang matukoy kung saan naka-install ang LibreOffice sa iyong system.


Ang folder na ito ay naglalaman ng isang serye ng mga ZIP file na naglalaman ng mga file ng imahe ng bawat available na hanay ng icon. Ang mga imahe sa loob ng mga ZIP file na ito ay nakaayos sa mga folder. Upang gumamit ng icon, tukuyin ang icon na file na may path patungo sa lokasyon nito sa loob ng ZIP file.

Ang halimbawa sa ibaba ay gumagamit ng icon na "sc_newdoc.svg" na matatagpuan sa loob ng "cmd" na folder. Ang forward slash "/" na character ay ginagamit bilang path separator anuman ang operating system.

Sa Basic

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

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

Ang lahat ng mga hanay ng icon ay may parehong panloob na istraktura. Ang aktwal na icon na ipinapakita ay depende sa icon set na kasalukuyang ginagamit.


Pamamaraan

Listahan ng Mga Paraan sa Serbisyo ng PopupMenu

AddCheckBox
AddItem

AddRadioButton

Execute


AddCheckBox

Naglalagay ng check box sa popup menu. Nagbabalik ng integer value na tumutukoy sa ipinasok na item.

Syntax:

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

Mga Parameter:

menuitem: Tinutukoy ang tekstong ipapakita sa menu. Tinutukoy din ng argumentong ito ang hierarchy ng item sa loob ng menu sa pamamagitan ng paggamit ng submenu na character.

pangalan: String value na ibabalik kapag na-click ang item. Bilang default, ginagamit ang huling bahagi ng hierarchy ng menu.

katayuan: Tinutukoy kung napili ang item kapag ginawa ang menu (Default = Mali ).

icon: Path at pangalan ng icon na ipapakita nang walang nangungunang path separator. Ang aktwal na icon na ipinapakita ay depende sa icon set na ginagamit.

tooltip: Tekstong ipapakita bilang tooltip.

Halimbawa:

Sa Basic

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

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

AddItem

Naglalagay ng menu entry sa popup menu. Nagbabalik ng integer value na tumutukoy sa ipinasok na item.

Syntax:

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

Mga Parameter:

menuitem: Tinutukoy ang tekstong ipapakita sa menu. Tinutukoy din ng argumentong ito ang hierarchy ng item sa loob ng menu sa pamamagitan ng paggamit ng submenu na character.

pangalan: String value na ibabalik kapag na-click ang item. Bilang default, ginagamit ang huling bahagi ng hierarchy ng menu.

icon: Path at pangalan ng icon na ipapakita nang walang nangungunang path separator. Ang aktwal na icon na ipinapakita ay depende sa icon set na ginagamit.

tooltip: Tekstong ipapakita bilang tooltip.

Halimbawa:

Sa Basic

      myPopup.AddItem("Item A", Tooltip := "Isang naglalarawang mensahe")
    
Sa Python

      my_popup.AddItem("Item A", tooltip = "Isang naglalarawang mensahe")
    

AddRadioButton

Naglalagay ng entry sa radio button sa popup menu. Nagbabalik ng integer value na tumutukoy sa ipinasok na item.

Syntax:

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

Mga Parameter:

menuitem: Tinutukoy ang tekstong ipapakita sa menu. Tinutukoy din ng argumentong ito ang hierarchy ng item sa loob ng menu sa pamamagitan ng paggamit ng submenu na character.

pangalan: String value na ibabalik kapag na-click ang item. Bilang default, ginagamit ang huling bahagi ng hierarchy ng menu.

katayuan: Tinutukoy kung napili ang item kapag ginawa ang menu (Default = Mali ).

icon: Path at pangalan ng icon na ipapakita nang walang nangungunang path separator. Ang aktwal na icon na ipinapakita ay depende sa icon set na ginagamit.

tooltip: Tekstong ipapakita bilang tooltip.

Halimbawa:

Sa Basic

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

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

Execute

Ipinapakita ang popup menu at naghihintay ng aksyon ng user. Ibinabalik ang item na na-click ng user.

Kung nag-click ang user sa labas ng popup menu o pinindot ang Esc key, pagkatapos ay walang napiling item. Sa ganitong mga kaso, ang ibinalik na halaga ay depende sa ibinalik parameter. Kung returnid = Totoo at walang napiling item, pagkatapos ay ibabalik ang halagang 0 (zero). Kung hindi, isang walang laman na string "" ang ibinalik.

Syntax:

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

Mga Parameter:

ibinalik: Kung totoo ibinalik ang napiling item ID. Kung Mali ibinabalik ng pamamaraan ang pangalan ng item (Default = totoo ).

Halimbawa:

Sa mga halimbawa sa ibaba, isang popup menu ang ginawa at ibinalik ang pangalan ng item dahil ang ibinalik argumento ay nakatakda sa Mali .

Sa Basic

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

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

Lahat ScriptForge Ang mga pangunahing gawain o identifier na may prefix na may underscore na character na "_" ay nakalaan para sa panloob na paggamit. Ang mga ito ay hindi nilalayong gamitin sa Basic macros o Python script.


Mangyaring suportahan kami!