Sempre continuando ad esplorare le possibilità di libreoffice, ho inserito nella barra già tratta nell'argomento:
viewtopic.php?t=12613
(tra l'altro sono in attesa di avere suggerimenti sul fatto che al secondo giro la barra non viene generata)
il riferimento ad una icona;
ecco la sub completa:
Codice: Seleziona tutto
sub CreaBarra_Di_Questo_Attivo_conIcoma()                       
'scaricato da 'https://forum.openoffice.org/it/forum/viewtopic.php?f=28&p=13993#p13993
'      titolo       Toolbar da Macro, queste sconosciute 
'====================================================
'   usando thiscomponent.UIConfigurationManager o in alternativa
'         alternativa xyUNO = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
'         alternativa oConfManager = xyUNO.getUIConfigurationManager("com.sun.star.sheet.SpreadsheetDocument")
'   https://www.openoffice.org/api/docs/common/ref/com/sun/star/ui/XUIConfigurationManager.html
'====================================================
   dim sURLToolbar As string, sNameToolbar as string
   dim oToolbar as object                        '
   dim oConfManager as object               
   dim I as integer                              ' 
   Dim sMyToolbarCmdId As String
   Dim nomeimmagine As string, immaginenome As String	
   dim aToolbarItem(3) as new com.sun.star.beans.PropertyValue
   Dim oToolbarSettings
   Dim oImageMgr
 
   sMyToolbarCmdId = "///Standard.SubProva.Prima_sub()"
   sNameToolbar = "PPRROOVVAA_QuestoConIcona"                         ' NOME DA ASSOCIARE ALLA TOOLBAR
   sURLToolbar  = "private:resource/toolbar/custom_PPRROOVVAA_QuestoConIcona"  ' RESOURCE URL DELLA TOOLBAR
  ' nomeimmagine = environ("USERPROFILE") & "\Downloads\sc_save.png"
   nomeimmagine = "private:graphicrepository/cmd/sc_save.png"
   ImmagineNome = ConvertToURL(nomeimmagine) 
    
   	oImageMgr = AcquisisciGestoreImmagini()   
   ' Call fremoveCommandIcon(0, sMyToolbarCmdId)
    if not oImageMgr.hasImage( 0, sMyToolbarCmdId ) Then 'CommandURL	a command URL that should be checked for an associated image
		Dim oImage, oImageCmds(0),oImages(0) 
		oImage = fGetImageFromURL( immaginenome)
		if not isNull( oImage ) then
			REM *** Insert new image into the Calc image manager
			oImageCmds(0) = sMyToolbarCmdId
			oImages(0) = oImage
			oImageMgr.insertImages( 0, oImageCmds(), oImages() )
		end if
    End If
dopoimmagine:     
    'oConfManager = thiscomponent.UIConfigurationManager ' ACQ. User Interface CONFIGURATION MANAGER x questo documento
    dim xyUNO: xyUNO = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
    Set oConfManager = xyUNO.getUIConfigurationManager("com.sun.star.sheet.SpreadsheetDocument")
    If (oConfManager.hasSettings(sURLToolbar)) Then 
   		 oConfManager.removeSettings(sURLToolbar)
     End If
    oToolbarSettings = oConfManager.createSettings()   ' la struttura della barra
    oToolbarSettings.UIName = sNameToolbar  ' Set a title for our new custom toolbar
   '---------------------------------------------'
    aToolbarItem(0).Name = "CommandURL"           
    aToolbarItem(0).Value = sMyToolbarCmdId     ' "macro:///Standard.SubProva.Prima_sub()"            
    aToolbarItem(1).Name = "Label"               
    aToolbarItem(1).Value = "icona"   ' Esegui 1"             
    aToolbarItem(2).Name = "Type"                 '
    aToolbarItem(2).Value = 0                    ' Valore per Type (Con 0 si vede la scritta...)
    aToolbarItem(3).Name = "Visible"              ' ARGOMENTO PER BOTTONE VISIBILE O NASCOSTO 
    aToolbarItem(3).Value = true                  ' true per VISIBILE, false per NASCOSTO
    oToolbarSettings.insertByIndex(0, aToolbarItem()) 
    oConfManager.insertSettings(sURLToolbar , oToolbarSettings)    
    ThisComponent.CurrentController.Frame.LayoutManager.showElement( sURLToolbar) 
    oConfManager.store()  
End Sub
Function AcquisisciGestoreImmagini()
' ex getImageManager()
	Dim oModuleMgr, oModuleCfgMgrSupplier, oModuleIdentifier, oModuleCfgMgr
	oModuleMgr = createUnoService( "com.sun.star.frame.ModuleManager" )
	oModuleCfgMgrSupplier = createUnoService( "com.sun.star.ui.ModuleUIConfigurationManagerSupplier" )
	oModuleIdentifier = oModuleMgr.identify( ThisComponent )
	oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager( oModuleIdentifier )
	AcquisisciGestoreImmagini = oModuleCfgMgr.getImageManager
End Function
Function fGetImageFromURL( URL as String ) as Variant
Dim oMediaProperties(0) As New com.sun.star.beans.PropertyValue
Dim sProvider$ : sProvider = "com.sun.star.graphic.GraphicProvider"
Dim oGraphicProvider
REM Create graphic provider instance to load images from files.
oGraphicProvider = createUnoService( sProvider )
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
fGetImageFromURL = oGraphicProvider.queryGraphic( oMediaProperties() )
End Function
Le istruzioni allegate sono per una barra di Calc, ma ho provato anche con Write. Così come ho provato anche con una barra del documento . Sono tutte prove con esito negativo.
E ancora ho provato sia con immagine su disco che con immagine già incorporata in LibreOffice.
Codice: Seleziona tutto
nomeimmagine = environ("USERPROFILE") & "\Downloads\sc_save.png"           1° caso
   nomeimmagine = "private:graphicrepository/cmd/sc_save.png"                 2° casoImmagino che in LibreOffice debba fare qualcosa, ma non ho capito cosa.
Ringrazio in anticipo chi vorrà aiutarmi.