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 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
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
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