Hello Carsten,
Just for let you know that almost all your posts in d...@api are labeled
as "important" in my local archive :-)
Thanks for sharing.
Keep it up!!
ciao
Paolo M
Carsten Driesner ha scritto:
> Jan Holst Jensen wrote:
>> Hi all.
>>
>> I am trying to emulate a togglebutton/checkbox in a custom toolbar.
>> Right now I have settled for having two toolbar buttons with different
>> icons. Only one of them is visible and when it's pressed it toggles
>> the visibility of both buttons using the code below (which sets
>> visibility of a single button with a given label).
>>
>> It works OK but only as long as the user doesn't fiddle with button
>> visibility :-). Is there a way of changing a toolbar button's icon
>> directly from Basic code ? I could not figure out how to do it.
> Hi Jan,
>
> Your solution looks it a little bit strange. You can set the image of a
> toolbar button with the help of an image manager. Look at the following
> Basic code which uses the image manager to set an image for a button
> that references a Basic macro. I am sure you can adapt the code to your
> needs.
>
> Regards,
> Carsten
>
> REM ***** BASIC *****
>
> REM *** This example creates a new basic macro toolbar button on
> REM *** the Writer standard bar. It doesn't add the button twice.
> REM *** It uses the Writer image manager to set an external image
> REM *** for the macro toolbar button.
>
> Sub Main
> REM *** String to reference toolbar
> sToolbar = "private:resource/toolbar/standardbar"
> REM *** Macro command to add
> sMyToolbarCmdId = "macro:///Standard.Module1.Test()"
>
> REM *** Retrieve the module configuration manager from central
> module configuration manager supplier
> oModuleCfgMgrSupplier =
> createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
>
> REM *** Retrieve the module configuration manager with module
> identifier
> REM *** See com.sun.star.frame.ModuleManager for more information
> oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager(
> "com.sun.star.text.TextDocument" )
> oImageMgr = oModuleCfgMgr.getImageManager()
>
> oToolbarSettings = oModuleCfgMgr.getSettings( sToolbar, true )
>
> REM *** Look for our button. Can be identified by the CommandURL
> property.
> bHasAlreadyButton = false
> nCount = oToolbarSettings.getCount()
> for i = 0 to nCount-1
> oToolbarButton() = oToolbarSettings.getByIndex( i )
> nToolbarButtonCount = ubound(oToolbarButton())
> for j = 0 to nToolbarButtonCount
> if oToolbarButton(j).Name = "CommandURL" then
> if oToolbarButton(j).Value = sMyToolbarCmdId then
> bHasAlreadyButton = true
> end if
> endif
> next j
> next i
>
> Dim oImageCmds(0)
> Dim oImages(0)
> REM *** Check if image has already been added
> if not oImageMgr.hasImage( 0, sMyToolbarCmdId ) then
>
> REM *** Try to load the image from the file URL
> oImage = GetImageFromURL( "file:///c:/test.bmp" )
> if not isNull( oImage ) then
>
> REM *** Insert new image into the Writer image manager
> oImageCmds(0) = sMyToolbarCmdId
> oImages(0) = oImage
> oImageMgr.insertImages( 0, oImageCmds(), oImages() )
> end if
> end if
>
> if not bHasAlreadyButton then
> sString = "My Macro's"
> oToolbarItem = CreateToolbarItem( sMyToolbarCmdId,
> "Standard.Module1.Test" )
> oToolbarSettings.insertByIndex( nCount, oToolbarItem )
> oModuleCfgMgr.replaceSettings( sToolbar, oToolbarSettings )
> end if
> End Sub
>
> Function GetImageFromURL( URL as String ) as Variant
> Dim oMediaProperties(0) as new com.sun.star.beans.PropertyValue
>
> REM *** Create graphic provider instance to load images from
> external files
> oGraphicProvider = createUnoService(
> "com.sun.star.graphic.GraphicProvider" )
>
> REM *** Set URL property so graphic provider is able to load the image
> oMediaProperties(0).Name = "URL"
> oMediaProperties(0).Value = URL
>
> REM *** Retrieve the com.sun.star.graphic.XGraphic instance
> GetImageFromURL = oGraphicProvider.queryGraphic( oMediaProperties() )
> End Function
>
> Function CreateToolbarItem( Command as String, Label as String ) as Variant
> Dim aToolbarItem(3) as new com.sun.star.beans.PropertyValue
>
> aToolbarItem(0).Name = "CommandURL"
> aToolbarItem(0).Value = Command
> aToolbarItem(1).Name = "Label"
> aToolbarItem(1).Value = Label
> aToolbarItem(2).Name = "Type"
> aToolbarItem(2).Value = 0
> aToolbarItem(3).Name = "Visible"
> aToolbarItem(3).Value = true
>
> CreateToolbarItem = aToolbarItem()
> End Function
>
> Sub Test
> MsgBox "Test"
> End Sub
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
> .
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]