Thanks for this cool peace of code, very usefull !

But :-)

My button installs fine but the macro behind the button (located in a document) is not working, i supose there is something wrong with the commandUIRL

The test() macro is located in a document in a "Toolbarlib" Library, in a "ToolbarButtonsMod" module

is use sMyToolbarCmdId = "macro:///Toolbarlib.ToolbarButtonsMod.Test()"
any idea ?



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

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


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 =

    REM *** Retrieve the module configuration manager with module
    REM *** See for more information
    oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager(
"" )
    oImageMgr     = oModuleCfgMgr.getImageManager()
oToolbarSettings = oModuleCfgMgr.getSettings( sToolbar, true ) REM *** Look for our button. Can be identified by the CommandURL
    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
        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

    REM *** Create graphic provider instance to load images from
external files
    oGraphicProvider = createUnoService(
"" )

    REM *** Set URL property so graphic provider is able to load the image
    oMediaProperties(0).Name  = "URL"
    oMediaProperties(0).Value = URL

    REM *** Retrieve the instance
    GetImageFromURL = oGraphicProvider.queryGraphic( oMediaProperties() )
End Function

Function CreateToolbarItem( Command as String, Label as String ) as Variant
    Dim aToolbarItem(3) as new

    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:
For additional commands, e-mail:


To unsubscribe, e-mail:
For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

Reply via email to