OO-Snippets: MessageBox with the UNO based toolkit

Commons

Keywordscom.sun.star.awt.WindowDescriptor, WindowServiceName, messbox, infobox, querybox, warningbox, errorbox
LanguagePython
ApplicationOffice
AuthorsPaolo Mantovani (initial)
Supported Versions1.0.x  1.1.x  2.0.x  
Supported OSAll  
QuestionHow do I display a message box from a PyUno component / script ?

I'm wondering if it is possible to display message boxes (similar to those displayed by Basic's MsgBox function) using the OpenOffice.org API

Answer

You can use the following function as a replacement for the Msgbox StarBasic function:

Code-Snippet-Listing (snippet-source)

from com.sun.star.awt import Rectangle
from com.sun.star.awt import WindowDescriptor

from com.sun.star.awt.WindowClass import MODALTOP
from com.sun.star.awt.VclWindowPeerAttribute import OK, OK_CANCEL, YES_NO, YES_NO_CANCEL, RETRY_CANCEL, DEF_OK, DEF_CANCEL, DEF_RETRY, DEF_YES, DEF_NO



def TestMessageBox():
	doc = XSCRIPTCONTEXT.getDocument()
	parentwin = doc.CurrentController.Frame.ContainerWindow
	
	s = "This is a test"
	t = "Test"
	res = MessageBox(parentwin, s, t, "querybox", YES_NO_CANCEL + DEF_NO)
	
	s = res
	MessageBox(parentwin, s, t, "infobox")



# Show a message box with the UNO based toolkit
def MessageBox(ParentWin, MsgText, MsgTitle, MsgType="messbox", MsgButtons=OK):
	
	MsgType = MsgType.lower()
	
	#available msg types
	MsgTypes = ("messbox", "infobox", "errorbox", "warningbox", "querybox")
	
	if not ( MsgType in MsgTypes ):
		MsgType = "messbox"
	
	#describe window properties.
	aDescriptor = WindowDescriptor()
	aDescriptor.Type = MODALTOP
	aDescriptor.WindowServiceName = MsgType
	aDescriptor.ParentIndex = -1
	aDescriptor.Parent = ParentWin
	#aDescriptor.Bounds = Rectangle()
	aDescriptor.WindowAttributes = MsgButtons
	
	tk = ParentWin.getToolkit()
	msgbox = tk.createWindow(aDescriptor)
	
	msgbox.setMessageText(MsgText)
	if MsgTitle :
		msgbox.setCaptionText(MsgTitle)
		
	return msgbox.execute()



g_exportedScripts = TestMessageBox,






Changelog

DateUserModification
2006-07-04paolomantovaniInitial version

and