[Libreoffice] complete

Timo timo at iera.de
Thu Apr 14 08:50:05 PDT 2011


Maybe this task should be moved to “completed”?
http://wiki.documentfoundation.org/Easy_Hacks#Make_python_.2F_mail-merge_debuggable


Am Montag, den 11.04.2011, 21:26 +0200 schrieb Timo:
> Hi Michael,
> 
> MessageBoxButtons as well as XSCRIPTCONTEXT do not exist for me. Python
> doesn´t find them and they are documented as “not published” [1]. I
> think it would be nice to use createMessageBox() and to have a dynamic
> size and a nice error icon. But with the use of Laurent´s implementation
> I could solve the task. [2]
> 
> With the modified mailmerge.py I get the expected pythonerror in a
> messagebox after closing the MsgBox. [3] In fact all pythonerrors are
> reported like this on my computer. What does it look like on nonfree
> platforms? In fact it is better to display only one error message.
> 
> Not all python errors are reported in a message by default. If there are
> syntax errors at the beginning of the file, office remains silent. This
> is problem. 
> 
> When there is a MsgBox that works for everybody I suggest to implement
> it into pythonscript.py so that it is being used for all exceptions. 
> 
> 
> regards,
> 
> Timo
> 
> 
> [1]
> http://api.openoffice.org/docs/common/ref/com/sun/star/awt/MessageBoxButtons.html#BUTTONS_OK
> 
> [2] see mailmerge.py and MsgBox.py from the attachments
> 
> [3] see screenshot Bildschirmfoto.png
> 
> 
> Am Montag, den 11.04.2011, 17:01 +0100 schrieb Michael Meeks:
> > Hi Timo,
> > 
> > On Sat, 2011-04-09 at 02:22 +0200, Timo wrote:
> > > Is there a way to test the pythonfile within office? At the moment each
> > > time i kill soffice, restart writer and click
> > 
> > 	So - after a bit more digging; I got to here:
> > 
> > class MessageBox:
> >     def __init__(self, XParentWindow):
> >         try:
> >             if XParentWindow is None:
> >                 frame = XSCRIPTCONTEXT.getDesktop().getCurrentFrame()
> >                 XParentWindow = frame.getContainerWindow()
> >             self.Parent = XParentWindow
> >             self.Toolkit = XParentWindow.getToolkit()
> >         except:
> >             raise AttributeError, 'Did not get a valid parent window'
> > 
> >     def msgbox(self, message='', flag=0, title=''):
> >         '''Wrapper for com.sun.star.awt.XMessageBoxFactory.'''
> >         rect = uno.createUnoStruct('com.sun.star.awt.Rectangle')
> >         dlg = self.Toolkit.createMessageBox(self.Parent, rect, "errorbox", 1, title, message)
> >         dlg.execute()
> > 
> > 
> > 	Which at least works for me, though I couldn't see why the
> > com.sun.star.awt.MessageBoxButtons set of constants wouldn't work nicely
> > for me.
> > 
> > 	When I whack that into my system's TableSample.py and add:
> > 
> >     box = MessageBox(None)
> >     box.msgbox ("What is this ?")
> > 
> > 	to createTable() - I get a nice message-box first :-) I bound running
> > that macro to F4 to make it quicker to loop iterate / check the code
> >  
> > 	The UNO API is pretty fearsome to use, it can help to read the
> > interface comments in offapi/ but it is not for the faint hearted,
> > clearly :-)
> > 
> > 	I guess, seeing how broken the C++ side is - with helpful comments
> > like:
> > 
> >     if(!bIsLoggedIn)
> >     {
> >         OSL_FAIL("create error message");
> >         return;
> >     }
> > 
> > 	that simply don't create an error message, or do anything useful -
> > perhaps a chunk of the work needed is on the C++ side anyway.
> > 
> > 	HTH,
> > 
> > 		Michael.
> > 
> 
> _______________________________________________
> LibreOffice mailing list
> LibreOffice at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/libreoffice




More information about the LibreOffice mailing list