Pomoc za LibreOffice 25.2
Tšojenja, kótarež se pśez dialogi, dokumenty, formulary abo grafiske wóźeńske elementy wuwabiju, daju se z makrami zwězaś, kótarež se pśez tšojenje wóźone programěrowanje pomjenjuju. Nejwěcej zwucona metoda, aby tšojenja z makrami do póśěga stajiła, su rejtarik Tšojenja w meniju a wóźeńske kakosći w dialogowem editorje z menija .
Grafiske rědy, tastaturowe zapódaśa, pógiby myški a druge interakcije mjazy cłowjekom a mašinu daju se z pomocu UNO-pśisłuchakow wóźiś, kótarež na zaźarženje wužywarja glědaju. Pśisłuchaki su dynamiske alternatiwy programowego koda za makrowe pśipokazanja. Daju se tak wjele UNO-pśisłuchakow ako tšojenja napóraś, na kótarež se maju źiwaś. Jadnotliwy pśisłuchak móžo teke z někotarymi wóźeńskimi elementami wužywaŕskego pówjercha wobchadaś.
Pśisłuchaki se k wóźeńskim elementam pśipowjesaju, kótarež su w dialogach wopśimjone, ako teke k dokumentowym abo formularowym tšojenjam. Pśisłuchaki se teke wužywaju, gaž se dialogi casa wužywanja napóraju abo gaž se dialogoju wóźeńske elementy tak pśipódla pśidawaju.
Toś ten pśikład pśisłuchak za wóźenje Button1 dialoga Dialog1 w bibliotece Standard napórajo.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import uno, unohelper
from com.sun.star.awt import XActionListener
from com.sun.star.awt import ActionEvent
from com.sun.star.lang import EventObject
from com.sun.star.ui.dialogs.ExecutableDialogResults \
import OK, CANCEL
import msgbox as util
_MY_BUTTON = "Button1"
_MY_LABEL = 'Python pśisłucha.'
_DLG_PROVIDER = "com.sun.star.awt.DialogProvider"
def Main(*args):
ui = createUnoDialog("Standard.Dialog1", embedded=True)
ui.Title = "Python X[any]Listener"
ctl = ui.getControl(_MY_BUTTON)
ctl.Model.Label = _MY_LABEL
act = ActionListener()
ctl.addActionListener(act)
rc = ui.execute()
if rc == OK:
MsgBox(„Wužywaŕ jo wobkšuśił dialog.“)
elif rc == CANCEL:
MsgBox(„Wužywaŕ jo pśetergnuł dialog.“)
ui.dispose() # ui.endExecute
ctl.removeActionListener(act)
def createUnoDialog(libr_dlg: str, embedded=False):
""" Dialog z jogo městna napóraś """
smgr = XSCRIPTCONTEXT.getComponentContext().ServiceManager
if embedded:
model = XSCRIPTCONTEXT.getDocument()
dp = smgr.createInstanceWithArguments(_DLG_PROVIDER, (model,))
location = "?location=document"
else:
dp = smgr.createInstanceWithContext(_DLG_PROVIDER, ctx)
location = "?location=application"
dlg = dp.createDialog("vnd.sun.star.script:"+libr_dlg+location)
return dlg
class ActionListener(unohelper.Base, XActionListener):
""" Pśisłuchaś a kliknjenja tłocaškow licyś """
def __init__(self):
self.count = 0
def actionPerformed(self, evt: ActionEvent):
self.count = self.count + 1
#mri(evt)
if evt.Source.Model.Name == _MY_BUTTON:
evt.Source.Model.Label = _MY_LABEL+ str( self.count )
return
def disposing(self, evt: EventObject): # obligatoriska rutina
pass
def MsgBox(txt: str):
mb = util.MsgBox(uno.getComponentContext())
mb.addButton("Ok")
mb.show(txt, 0, "Python")
g_exportedScripts = (Main,)
Zapis msgbox.py w {installation}/program/ někotare pśikłady tłocaškowych pśisłuchakow wopśimujo.
Option Explicit
Const MY_LIBRARY = "Standard", MY_DIALOG = "Dialog1", MY_BUTTON = "Button1"
Const MY_LABEL = "Basic pśisłucha."
Dim count As Integer
Sub Main
Dim libr As Object ' com.sun.star.script.XLibraryContainer
Dim dlg As Object
Dim ui As Object ' stardiv.Toolkit.UnoDialogControl
Dim ctl As Object ' stardiv.Toolkit.UnoButtonControl
Dim act As Object ' com.sun.star.awt.XActionListener
Dim rc As Object : rc = com.sun.star.ui.dialogs.ExecutableDialogResults
BasicLibraries.LoadLibrary(MY_LIBRARY)
libr = DialogLibraries.GetByName(MY_LIBRARY)
dlg = libr.GetByName(MY_DIALOG)
ui = CreateUnoDialog(dlg)
ui.Title = "Basic X[any]Listener example"
count = 0
ctl = ui.GetControl(MY_BUTTON)
ctl.Model.Label = MY_LABEL
act = CreateUnoListener("awt_", "com.sun.star.awt.XActionListener")
ctl.addActionListener(act)
Select Case ui.Execute
Case rc.OK : MsgBox „Wužywaŕ jo wobkšuśił dialog.“,, "Basic"
Case rc.CANCEL : MsgBox "Wužywaŕ jo pśetergnuł dialog.",, "Basic"
End Select
ui.dispose ' ui.endExecute()
ctl.removeActionListener(act)
End Sub
Private Sub awt_actionPerformed(evt As com.sun.star.awt.ActionEvent)
""" Kliknjenja tłocaškow pśisłuchaś a licyś """
With evt.Source.Model
If .Name = MY_BUTTON Then
count = count + 1
.Label = MY_LABEL+Cstr(count)
End If
End With
End Sub ' awt_actionPerformed
Private Sub awt_disposing(evt As com.sun.star.lang.EventObject) ' mandatory Sub
' waš kod sem słuša
End Sub ' awt_disposing
Pśisłuchaki se zwětšego gromaźe z dialogowym wócynjanim koděrujo. Wjele pśistupow jo móžne ako na pśikład tšojeńske pśeźěłowaki za dialogi abo tšojeńske monitory za dokumenty abo formulary.