Hi *,
A question related to an old thread.
I first quote the useful piece of code form Carsten, so that is clear
where I talk about.
Carsten Driesner wrote (29-10-09 10:50)
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" )
Further on in this thread, Jan Hols Jensen posted a solution for his
case, using the following
> For J = 0 To UBound(ToolbarButtonProps())
> If ToolbarButtonProps(J).Name = "CommandURL" Then
> ToolbarButtonProps(J).Value = NewURL
> End If
> Next
to change an existing button.
This works, however I find no way to keep the tool tip. which I guess is
the HelpID.
Found this issue in IssueTracker, happening to offer a patch too:
http://qa.openoffice.org/issues/show_bug.cgi?id=91174
Could this indeed be a bug?
Regards,
Cor
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
--
- giving openoffice.org its foundation :: The Document Foundation -
- ideas/remarks for the community council? See
http://wiki.services.openoffice.org/wiki/Community_Council
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@api.openoffice.org
For additional commands, e-mail: dev-h...@api.openoffice.org