Hi Carsten,
thanks for your fast answer and the example.
Carsten Driesner schrieb:
...
2. Can be accessed via the window state configuration. You have to
create the service "com.sun.star.ui.WindowStateConfiguration" and
retrieve the window states for a specific module (via getByName(
ModuleIdentifier ). There you can access the window state information
for every window based ui element using the private-URL (f.e.
"private:toolbar/standardbar" ).
But how to get that work, if these settings are not made for modules,
but for a document?
Some month ago I did the same with GUI for a template and wondered, why
other users didn't get the property "icons & text" working with that
template.
I modified your example (thx to ms777 and Paolo) with a graphic and a
shortcut, so that it will work for the document the code belongs to
(except the last call).
Regards
Peter
Sub Main()
sGraphURL = "file:///c:/daten/lc20556.png"
REM *** would be nice to have a private URL here, see thread
"XGraphicProvider and service MediaProperties"
REM ***
http://api.openoffice.org/servlets/BrowseList?list=dev&by=thread&from=1609161
sCommandURL =
"vnd.sun.star.script:Standard.Module1.Test?language=Basic&location=document"
REM *** The name of our new custom toolbar. A custom toolbar name MUST
REM *** start with "custom_"!
sToolbar = "private:resource/toolbar/custom_toolbar1"
oDocCfgMgr = ThisComponent.getUIConfigurationManager
SetShortCut(oDocCfgMgr,sCommandURL)
SetToolbar(oDocCfgMgr,sCommandURL,sToolbar)
SetGraphic(oDocCfgMgr,sGraphURL,sCommandURL)
SetDockings(sToolbar)
SetVisualSettings(sToolbar)
End Sub
Sub SetShortCut(oDocCfgMgr,sCommandURL)
'shortCut for macro (by Paolo Mantovani)
oShortCutManager = oDocCfgMgr.GetShortCutManager
Dim aKeyEvent As New com.sun.star.awt.KeyEvent
With aKeyEvent
.Modifiers = com.sun.star.awt.KeyModifier.MOD1 +
com.sun.star.awt.KeyModifier.SHIFT
.KeyCode = com.sun.star.awt.Key.W
End With
oShortCutManager.setKeyEvent(aKeyEvent, sCommandURL)
oShortCutManager.store
End Sub
Sub SetGraphic(oDocCfgMgr,sGraphURL,sCommandURL)
'graphic for macro, by ms777
oIm = oDocCfgMgr.ImageManager
oProv = CreateUNOService("com.sun.star.graphic.GraphicProvider")
Dim mProps(0) as New com.sun.star.beans.PropertyValue
mProps(0).Name = "URL"
mProps(0).Value = sGraphURL
oGraph = oProv.queryGraphic(mProps())
if not oIm.hasImage(com.sun.star.ui.ImageType.SIZE_DEFAULT,
sCommandURL) then
oIm.insertImages( com.sun.star.ui.ImageType.SIZE_DEFAULT,
Array(sCommandURL), Array(oGraph))
oIm.store()
else
oIm.replaceImages( com.sun.star.ui.ImageType.SIZE_DEFAULT,
Array(sCommandURL), Array(oGraph))
oIm.store()
endif
End Sub
Sub SetToolbar(oDocCfgMgr,sCommandURL,sToolbar)
REM *** Creates a new custom toolbar persistently for the Document
REM *** Create a settings container which will define the structure of
our new
REM *** custom toolbar.
oToolbarSettings = oDocCfgMgr.createSettings()
REM *** Set a title for our new custom toolbar
oToolbarSettings.UIName = "My little custom toolbar"
REM *** Create a button for our new custom toolbar
oToolbarItem = CreateToolbarItem( sCommandURL, "press here now" )
oToolbarSettings.insertByIndex( 0, oToolbarItem )
REM *** Set the settings for our new custom toolbar. (replace/insert)
if ( oDocCfgMgr.hasSettings( sToolbar )) then
oDocCfgMgr.replaceSettings( sToolbar, oToolbarSettings )
else
oDocCfgMgr.insertSettings( sToolbar, oToolbarSettings )
endif
oDocCfgMgr.store
End Sub
Sub SetDockings(sToolbar)
oLayoutManager = ThisComponent.CurrentController.Frame.LayoutManager
CurDockArea = oLayoutManager.GetCurrentDockingArea
cDockArea = com.sun.star.ui.DockingArea.DOCKINGAREA_TOP
Dim aPos as New com.sun.star.awt.Point
aPos.X = 0
aPos.Y = CurDockArea.Y + 1
oLayoutManager.dockWindow(sToolbar,cDockArea,aPos)
' oElem = oLayoutManager.GetElement(sToolbar)
' oElem.NoClose = True
End Sub
Sub SetVisualSettings(sToolbar)
oWindowState =
createUnoService("com.sun.star.ui.WindowStateConfiguration")
oModuleCfgMgrSupplier =
createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
oModulManager = createUnoService("com.sun.star.frame.ModuleManager")
sModule = oModulManager.identify(ThisComponent.CurrentController.Frame)
oModuleCfgMgr =
oModuleCfgMgrSupplier.getUIConfigurationManager(sModule)
REM *** Retrieve the module configuration manager with the module
identifier
REM *** See com.sun.star.frame.ModuleManager for more information
REM *** Retrieve the window state configuration for the
CurrentComponent
oBasicWindowState = oWindowState.getByName( sModule )
REM *** Set visual settings of our new toolbar ***
Dim aWindowStateData(1) as new com.sun.star.beans.PropertyValue
REM *** Set new style for toolbar:
REM See org.openoffice.Office.UI.WindowState.xcs for all possible
properties
REM *** Style: 0 = symbol buttons, 1 = text buttons, 2 =
symbols+text buttons
aWindowStateData(0).Name = "Style"
aWindowStateData(0).Value = 2
if oBasicWindowState.hasByName( sToolbar ) then
oBasicWindowState.replaceByName( sToolbar, aWindowStateData )
else
oBasicWindowState.insertByName( sToolbar, aWindowStateData )
endif
End Sub
Function CreateToolbarItem( Command as String, Label as String ) as Variant
Dim aToolbarItem(4) 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 = "Style"
aToolbarItem(3).Value = 0
aToolbarItem(4).Name = "Visible"
aToolbarItem(4).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]