I've now dropped the dialog and ProgressBar in favour of the status bar with 


REM Create a NEW status indicator
oBar = document.createStatusIndicator()
oBar.start("Started...", rsSUBSCRIBERS.Row() + 3)
oBar.Value = 1 ' show  progress bar
Bar.Text = "Progressing..."

Then each time the MailMergeListener is triggered I do this 

Sub MailMergeListener_notifyMailMergeEvent( oEv As Object )
        
cursorWait
        ProgressValue = ProgressValue + 1
        oBar.Value = ProgressValue
     
End Sub


Iain


On Monday 25 Mar 2013 09:59:20 [email protected] wrote:
> Hi Andrew
> 
> I had read the document and had hoped this might have changed. From a
> professional point of view some customers dictate that a mouse pointer must
> be changed to a hour glass if an action cannot be completed in a
> pre-determined amount of time.
> 
> 
> So anyway, I've done a belts and braces job for now
> 
> 
> added a MailMergeEventListener which gets triggered each time the Mail Merge
> routine processes another row so my block of code looks like -
> 
> 
> 
> oMailMerge = CreateUnoService("com.sun.star.text.MailMerge")
> oMailMerge.DocumentURL =  ConvertToUrl(DirectoryName & "/" & "nwcircMaster"
> & ".odt")
> oMailMerge.DataSourceName =  "NWcirculation"
> oMailMerge.CommandType = 1
> 'oMailMerge.Command = "qrySUBSCRIBERS"
> oMailMerge.Command = "Query_SUBSCRIBERS_For_Wrappers"
> oMailMerge.OutputType = com.sun.star.text.MailMergeType.FILE
> oMailMerge.OutputUrl = ConvertToUrl(DirectoryName)
> oMailMerge.FileNamePrefix = sColour & "Merged"
> oMailMerge.SaveAsSingleFile=True
> oMailMerge.FileNameFromColumn=False
> oMailMerge.Filter="COLOUR='" & sColour & "'"
> oListener1 = createUNOListener("MailMergeListener_",
> "com.sun.star.text.XMailMergeListener")
> oMailMerge.addMailMergeEventListener(oListener1)
> oMailMerge.execute(Array())
> 
> 
> added these two subroutines and a dialog with a progress bar. The dialog is
> shown just before the mail merge process starts and the progress bar
> increments each time the merge completes another row -
> 
> 
> Sub MailMergeListener_notifyMailMergeEvent( oEv As Object )
> 
>       cursorWait
>       ProgressValue = ProgressValue + 1
>       oProgressBarModel.setPropertyValue( "ProgressValue", ProgressValue )
> 
> End Sub
> 
> Sub MailMergeListener_disposing()
> 
> End Sub
> 
> Seems to work quite nicely, though I would like to drop the title bar of the
> dialog so all the user sees is the incrementing progress bar.
> 
> 
> Note that in the subroutine, MailMergeListener_notifyMailMergeEvent, I've
> got a call to another subroutine called cursorWait which is -
> 
> Sub cursorWait()
>       Dim oWindow As Object
>       Dim oPointer As Object
> 
>       oWindow = ThisComponent.CurrentController.Frame.ComponentWindow window
>       oPointer = createUnoService("com.sun.star.awt.Pointer")
>       oPointer.SetType(com.sun.star.awt.SystemPointer.WAIT)
>       changeMousePointerRecursively(oPointer, oWindow)
> 
> End sub
> 
> sub changeMousePointerRecursively(oMousePointer as object, oWin as object)
> on error resume next
> 
>       oWin.setPointer(oMousePointer)
> 
>       if HasUnoInterfaces(oWin, "com.sun.star.awt.XVclContainer") then
>               oWindows = oWin.Windows
>               for k=0 to UBound(oWindows)
>                               call 
> changeMousePointerRecursively(oMousePointer,
> oWindows(k))
>               next k
>       endif
> 
> end sub
> 
> 
> With the above, the pointer is presented as an hourglass most of the time,
> occasionally it changes to the Text Insert shape but then quickly reverts
> back to the hourglass. I did try listening on the MouseMotionListener and
> placing a call to cursorWait there but when there was excessive movement of
> the mouse the application ground to a halt, but then if a user is randomly
> moving the mouse whilst the application is running they may deserve a slow
> running application!
> 
> Any other suggestions gratefully received.
> 
> Iain
> 
> On Sunday 24 Mar 2013 18:04:30 Andrew Douglas Pitonyak wrote:
> > Read section "5.21.  Changing The Mouse Cursor" in AndrewMacro.odt,
> > which discusses this topic. It begins as follows:
> > 
> > The quick answer is: This is not supported.
> > 
> > A desire to change the mouse cursor sparked an interesting discussion
> > that I took the time to follow but I did not test. I have edited the
> > messages for brevity.
> > 
> > .....
> > 
> > Includes who said what with example code.
> > 
> > On 03/21/2013 01:31 PM, [email protected] wrote:
> > > Hi All
> > > 
> > > I've built a database, using Base, which amongst other things produces a
> > > mailing list. On my 10 year old DeskTop it can take several minutes to
> > > produce the list.
> > > 
> > > I want to show some activity to the users, so the mouse cursor morphing
> > > into an HourGlass would suit me fine.
> > > 
> > > I've got this to work as long as I don't move the mouse. The code is -
> > > 
> > > 
> > > oFrame = StarDesktop.CurrentFrame
> > > oWindow = oFrame.getContainerWindow()
> > > 
> > > oPointer = createUnoService("com.sun.star.awt.Pointer")
> > > oPointer.SetType(com.sun.star.awt.SystemPointer.WAIT)
> > > oWindow.setPointer(oPointer)
> > > 
> > > 
> > > However, If I move the mouse the cursor reverts back to the appropriate
> > > style for the control which it is over.
> > > 
> > > >From several discussions there seems to be an indication that I need to
> > > 
> > > disable the mousemotionlisteners. In going any further I seem to have
> > > hit
> > > a
> > > brick wall.
> > > 
> > > Can anyone advise what I should do to keep the cursor displaying the
> > > hourglass during the duration of a task irrespective as the whether the
> > > mouse moves or not.
> > > 
> > > 
> > > Thanks

-- 
For unsubscribe instructions e-mail to: [email protected]
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted

Reply via email to