Re: [libreoffice-users] Managing PopUp Menus

2014-11-10 Thread Niklas Johansson

Hi Paolo

If I understand this correctly you have created a dialog that contains a 
button that you want to give dropdown-functionality. The Main method 
starts the dialog and when the button is pressed it calls the sub 
PopupButton that creates the popup button and sets up the XMenuListener 
and a couple of subs that are used by the listener.


If you look at the api docs and search for XMenuListener you'll find:
http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1awt_1_1XMenuListener.html

There you'll find out that the memberfunctions for this listener is not 
the same as the ones you used. I actually think this is true for newer 
versions of Apache OpenOffice as well, but that is a side note and I 
haven't looked into this to deeply.


This means that you need to adapt the names of last five subs from
PopupMenuListener_select - PopupMenuListener_itemSelected
PopupMenuListener_highlight - PopupMenuListener_itemHighlighted
PopupMenuListener_activate - PopupMenuListener_itemActivated
PopupMenuListener_deactivate - PopupMenuListener_itemDeactivated
PopupMenuListener_disposing - PopupMenuListener_disposing

OK the last one did not need any adaption. ;)

A quick tip if you create a uno listener is to inspect it with xray to 
find out what methods (subs) you need to create. Let us know if you need 
more guidance.


Regards,
Niklas Johansson

Paolo Ferrario skrev 2014-11-10 07:47:

Hello everybody

We are moving from OpenOffice to LibreOffice

We have some macros that uses popup menus that work perfectly in
OpenOffice but they don't work in LibreOffice.

We developed our code starting from examples (thanks Hania and Ermione)
that we found over the internet and that are attached.

Any suggestions to make the macro run fine?
Thanks to everybody

  


REM  *  BASIC  *

  


Dim oDialog As Object

Dim oPopupMenu As Object

  


Sub Main

   sLibName = Standard

   sDialogName = Dialog1

   DialogLibraries.LoadLibrary(sLibName)

   ' create new dialog

   oDialog = CreateUnoDialog( _

 DialogLibraries.getByName(sLibName).getByName(sDialogName))

   oDialog.execute()

End Sub

  


Sub PopupButton

   ' get the size of the button

   oButton = oDialog.getControl(CommandButton1)

   aPosSize = oButton.PosSize

   ' set the position of the popup menu

   Dim aRect As New com.sun.star.awt.Rectangle

   With aRect

 .X = aPosSize.X

 .Y = aPosSize.Y + aPosSize.Height

 .Width = 0'100

 .Height = 0'100

   End With

   ' menu listener

   oMenuListener = CreateUnoListener( _

 PopupMenuListener_, com.sun.star.awt.XMenuListener)

   ' new popupmenu

   oPopupMenu = CreateUnoService(com.sun.star.awt.PopupMenu)

   ' set listener and insert menu items

   With oPopupMenu

 .addMenuListener(oMenuListener)

 .insertItem(1,Menu 1,0,0) 'id, label, type, position

 .insertItem(2,Menu 2,0,2)

 .insertSeparator(1)

 .setCommand(1,item1)

 .setCommand(2,item2)

   End With

   ' show popup menu

   oPopupMenu.execute(oDialog.Peer,aRect, _

 com.sun.star.awt.PopupMenuDirection.EXECUTE_DEFAULT)

   oPopupMenu.removeMenuListener(oMenuListener)

End Sub

  


Sub PopupMenuListener_select ( oEv )

   sCmd = oEv.Source.getCommand(oEv.MenuId)

   msgbox sCmd

End Sub

Sub PopupMenuListener_highlight ( oEv )

End Sub

Sub PopupMenuListener_activate ( oEv )

End Sub

Sub PopupMenuListener_deactivate ( oEv )

End Sub

Sub PopupMenuListener_disposing( oEv )

End Sub

  

  

  

  

  

  




Ferrario Luigi s.r.l.
Ing. Paolo Ferrario
Viale Edison 629
20099 Sesto S. Giovanni
Tel: +39.02.22.47.48.49
Fax: +39.02.24.40.418
e-mail: paolo.ferra...@ferrarioimpianti.it
mailto:paolo.ferra...@ferrarioimpianti.it


The information transmitted is intended only for the person or entity to
which
it is addressed and may contain confidential and/or privileged material.
Any
review, retransmission, dissemination or other use of, or taking of any
action
in reliance upon, this information by persons or entities other than the
intended recipient is prohibited. If you received this in error, please
contact the sender and delete the material from any computer.

  






--
To unsubscribe e-mail to: users+unsubscr...@global.libreoffice.org
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



R: [libreoffice-users] Managing PopUp Menus

2014-11-10 Thread Paolo Ferrario
Hi Niklas

Great!!
It works perfectly!!

Many, many thanks

Best regards
Paolo

Ferrario Luigi s.r.l.
Ing. Paolo Ferrario
Viale Edison 629 
20099 Sesto S. Giovanni
Tel: +39.02.22.47.48.49
Fax: +39.02.24.40.418
e-mail: paolo.ferra...@ferrarioimpianti.it 

The information transmitted is intended only for the person or entity to which
it is addressed and may contain confidential and/or privileged material. Any
review, retransmission, dissemination or other use of, or taking of any action
in reliance upon, this information by persons or entities other than the
intended recipient is prohibited. If you received this in error, please
contact the sender and delete the material from any computer.

-Messaggio originale-
Da: Niklas Johansson [mailto:sleeping.pil...@gmail.com] 
Inviato: lunedì 10 novembre 2014 10:32
A: users@global.libreoffice.org
Oggetto: Re: [libreoffice-users] Managing PopUp Menus

Hi Paolo

If I understand this correctly you have created a dialog that contains a button 
that you want to give dropdown-functionality. The Main method starts the dialog 
and when the button is pressed it calls the sub PopupButton that creates the 
popup button and sets up the XMenuListener and a couple of subs that are used 
by the listener.

If you look at the api docs and search for XMenuListener you'll find:
http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1awt_1_1XMenuListener.html

There you'll find out that the memberfunctions for this listener is not the 
same as the ones you used. I actually think this is true for newer versions of 
Apache OpenOffice as well, but that is a side note and I haven't looked into 
this to deeply.

This means that you need to adapt the names of last five subs from 
PopupMenuListener_select - PopupMenuListener_itemSelected 
PopupMenuListener_highlight - PopupMenuListener_itemHighlighted 
PopupMenuListener_activate - PopupMenuListener_itemActivated 
PopupMenuListener_deactivate - PopupMenuListener_itemDeactivated 
PopupMenuListener_disposing - PopupMenuListener_disposing

OK the last one did not need any adaption. ;)

A quick tip if you create a uno listener is to inspect it with xray to find out 
what methods (subs) you need to create. Let us know if you need more guidance.

Regards,
Niklas Johansson

Paolo Ferrario skrev 2014-11-10 07:47:
 Hello everybody

 We are moving from OpenOffice to LibreOffice

 We have some macros that uses popup menus that work perfectly in 
 OpenOffice but they don't work in LibreOffice.

 We developed our code starting from examples (thanks Hania and 
 Ermione) that we found over the internet and that are attached.

 Any suggestions to make the macro run fine?
 Thanks to everybody

   

 REM  *  BASIC  *

   

 Dim oDialog As Object

 Dim oPopupMenu As Object

   

 Sub Main

sLibName = Standard

sDialogName = Dialog1

DialogLibraries.LoadLibrary(sLibName)

' create new dialog

oDialog = CreateUnoDialog( _

  DialogLibraries.getByName(sLibName).getByName(sDialogName))

oDialog.execute()

 End Sub

   

 Sub PopupButton

' get the size of the button

oButton = oDialog.getControl(CommandButton1)

aPosSize = oButton.PosSize

' set the position of the popup menu

Dim aRect As New com.sun.star.awt.Rectangle

With aRect

  .X = aPosSize.X

  .Y = aPosSize.Y + aPosSize.Height

  .Width = 0'100

  .Height = 0'100

End With

' menu listener

oMenuListener = CreateUnoListener( _

  PopupMenuListener_, com.sun.star.awt.XMenuListener)

' new popupmenu

oPopupMenu = CreateUnoService(com.sun.star.awt.PopupMenu)

' set listener and insert menu items

With oPopupMenu

  .addMenuListener(oMenuListener)

  .insertItem(1,Menu 1,0,0) 'id, label, type, position

  .insertItem(2,Menu 2,0,2)

  .insertSeparator(1)

  .setCommand(1,item1)

  .setCommand(2,item2)

End With

' show popup menu

oPopupMenu.execute(oDialog.Peer,aRect, _

  com.sun.star.awt.PopupMenuDirection.EXECUTE_DEFAULT)

oPopupMenu.removeMenuListener(oMenuListener)

 End Sub

   

 Sub PopupMenuListener_select ( oEv )

sCmd = oEv.Source.getCommand(oEv.MenuId)

msgbox sCmd

 End Sub

 Sub PopupMenuListener_highlight ( oEv )

 End Sub

 Sub PopupMenuListener_activate ( oEv )

 End Sub

 Sub PopupMenuListener_deactivate ( oEv )

 End Sub

 Sub PopupMenuListener_disposing( oEv )

 End Sub

   

   

   

   

   

   

 

 Ferrario Luigi s.r.l.
 Ing. Paolo Ferrario
 Viale Edison 629
 20099 Sesto S. Giovanni
 Tel: +39.02.22.47.48.49
 Fax: +39.02.24.40.418
 e-mail: paolo.ferra...@ferrarioimpianti.it
 mailto:paolo.ferra...@ferrarioimpianti.it

 
 The information transmitted is intended only for the person or entity 
 to which it is addressed and may contain confidential

[libreoffice-users] Managing PopUp Menus

2014-11-09 Thread Paolo Ferrario
Hello everybody

We are moving from OpenOffice to LibreOffice

We have some macros that uses popup menus that work perfectly in
OpenOffice but they don't work in LibreOffice.

We developed our code starting from examples (thanks Hania and Ermione)
that we found over the internet and that are attached.

Any suggestions to make the macro run fine?
Thanks to everybody 

 

REM  *  BASIC  *

 

Dim oDialog As Object

Dim oPopupMenu As Object

 

Sub Main

  sLibName = Standard

  sDialogName = Dialog1

  DialogLibraries.LoadLibrary(sLibName)

  ' create new dialog

  oDialog = CreateUnoDialog( _

DialogLibraries.getByName(sLibName).getByName(sDialogName))

  oDialog.execute()

End Sub

 

Sub PopupButton

  ' get the size of the button

  oButton = oDialog.getControl(CommandButton1)

  aPosSize = oButton.PosSize

  ' set the position of the popup menu

  Dim aRect As New com.sun.star.awt.Rectangle

  With aRect

.X = aPosSize.X

.Y = aPosSize.Y + aPosSize.Height

.Width = 0'100

.Height = 0'100

  End With

  ' menu listener

  oMenuListener = CreateUnoListener( _

PopupMenuListener_, com.sun.star.awt.XMenuListener)

  ' new popupmenu

  oPopupMenu = CreateUnoService(com.sun.star.awt.PopupMenu)

  ' set listener and insert menu items

  With oPopupMenu

.addMenuListener(oMenuListener)

.insertItem(1,Menu 1,0,0) 'id, label, type, position

.insertItem(2,Menu 2,0,2)

.insertSeparator(1)

.setCommand(1,item1)

.setCommand(2,item2)

  End With

  ' show popup menu

  oPopupMenu.execute(oDialog.Peer,aRect, _

com.sun.star.awt.PopupMenuDirection.EXECUTE_DEFAULT)

  oPopupMenu.removeMenuListener(oMenuListener)

End Sub

 

Sub PopupMenuListener_select ( oEv )

  sCmd = oEv.Source.getCommand(oEv.MenuId)

  msgbox sCmd

End Sub

Sub PopupMenuListener_highlight ( oEv )

End Sub

Sub PopupMenuListener_activate ( oEv )

End Sub

Sub PopupMenuListener_deactivate ( oEv )

End Sub

Sub PopupMenuListener_disposing( oEv )

End Sub

 

 

 

 

 

 



Ferrario Luigi s.r.l.
Ing. Paolo Ferrario
Viale Edison 629 
20099 Sesto S. Giovanni
Tel: +39.02.22.47.48.49
Fax: +39.02.24.40.418
e-mail: paolo.ferra...@ferrarioimpianti.it
mailto:paolo.ferra...@ferrarioimpianti.it  


The information transmitted is intended only for the person or entity to
which
it is addressed and may contain confidential and/or privileged material.
Any
review, retransmission, dissemination or other use of, or taking of any
action
in reliance upon, this information by persons or entities other than the
intended recipient is prohibited. If you received this in error, please
contact the sender and delete the material from any computer.

 


-- 
To unsubscribe e-mail to: users+unsubscr...@global.libreoffice.org
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