Pagina 1 di 1
menu persnalizzati
Inviato: mercoledì 4 maggio 2011, 11:45
da elianaOO
Salve a tutti,
vorrei modificare il menu con una macro.
ho seguito la guida
http://wiki.services.openoffice.org/wik ... ing_the_UI
ma il mio file menubar.xml non cambia.
Mi spiego meglio:
da strumenti->personalizza aggiungo un nuovo menù, manualmente è facile. ma lo vorrei far fare a una sub.
qualcuno mi aiuta?
grazie!
eliana
Re: menu persnalizzati
Inviato: venerdì 13 maggio 2011, 11:03
da elianaOO
Ho trovato qualcosa che fa al caso mio quindi mi rispondo da sola...
Codice: Seleziona tutto
'''REM ====== To remove menu: delete macro, then delete menu in Tools > Customize... ======'''
'''REM ====== YOUR ROOT BELOW ======'''
const aDataRootFolder="file:///home/Malte/Documents/"
'''REM ====== YOUR ROOT ABOVE ======'''
sub main
InsertFavoritesMenu(pippo)
end sub
Sub InsertFavoritesMenu
' ImplInsertFavoritesMenu( "com.sun.star.frame.StartModule" )
' ImplInsertFavoritesMenu( "com.sun.star.text.TextDocument" )
ImplInsertFavoritesMenu( "com.sun.star.sheet.SpreadsheetDocument" )
' ImplInsertFavoritesMenu( "com.sun.star.drawing.DrawingDocument" )
' ImplInsertFavoritesMenu( "com.sun.star.presentation.PresentationDocument" )
End Sub
Sub ImplInsertFavoritesMenu( ModuleName as string )
sMenuBar = "private:resource/menubar/menubar"
sMyPopupMenuCmdId = "vnd.openoffice.org:FavoritesMenu"
oModuleCfgMgrSupplier = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager( ModuleName )
oMenuBarSettings = oModuleCfgMgr.getSettings( sMenuBar, true )
bHasAlreadyPopupMenu = false
nCount = oMenuBarSettings.getCount()
for i = 0 to nCount-1
oPopupMenu() = oMenuBarSettings.getByIndex( i )
nPopupMenuCount = ubound(oPopupMenu())
for j = 0 to nPopupMenuCount
if oPopupMenu(j).Name = "CommandURL" then
if oPopupMenu(j).Value = sMyPopupMenuCmdId then
bHasAlreadyPopupMenu = true
end if
endif
next j
next i
if not bHasAlreadyPopupMenu then
sString = "Favorites"
oPopupMenu = ImplCreatePopupMenu( sMyPopupMenuCmdId, sString, oMenuBarSettings )
oPopupMenuContainer = oPopupMenu(3).Value
'''REM ====== YOUR CUSTOMIZATIONS BELOW ======'''
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"ToDo.ods", "ToDo's" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"ODF-Plugin ToDo's.ods", "ToDo's ODF Plugin" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"cws-tools-doc-short.odt", "CWS Tools" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuSeparator()
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"Addresses.ods", "Addresses" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"Data.ods", "Data" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
'''REM ====== YOUR CUSTOMIZATIONS ABOVE ======'''
oMenuBarSettings.insertByIndex( nCount, oPopupMenu )
oModuleCfgMgr.replaceSettings( sMenuBar, oMenuBarSettings )
end if
End Sub
Function ImplCreatePopupMenu( CommandId, Label, Factory ) as Variant
Dim aPopupMenu(3) as new com.sun.star.beans.PropertyValue
aPopupMenu(0).Name = "CommandURL"
aPopupMenu(0).Value = CommandId
aPopupMenu(1).Name = "Label"
aPopupMenu(1).Value = Label
aPopupMenu(2).Name = "Type"
aPopupMenu(2).Value = 0
aPopupMenu(3).Name = "ItemDescriptorContainer"
aPopupMenu(3).Value = Factory.createInstanceWithContext( GetDefaultContext() )
ImplCreatePopupMenu = aPopupMenu()
End Function
Function ImplCreateMenuItem( Command as String, Label as String ) as Variant
Dim aMenuItem(2) as new com.sun.star.beans.PropertyValue
aMenuItem(0).Name = "CommandURL"
aMenuItem(0).Value = ".uno:Open?URL:string=" + Command + "&FrameName:string=_default"
aMenuItem(1).Name = "Label"
aMenuItem(1).Value = Label
aMenuItem(2).Name = "Type"
aMenuItem(2).Value = 0
ImplCreateMenuItem = aMenuItem()
End Function
Function ImplCreateMenuSeparator() as Variant
Dim aMenuItem(0) as new com.sun.star.beans.PropertyValue
aMenuItem(0).Name = "Type"
aMenuItem(0).Value = 1
ImplCreateMenuSeparator = aMenuItem()
End Function
questo codice non fa esattamente quello che mi serve, perché io vorrei lanciare delle macro che ho creato nel modulo corrente,
invece di aprire dei documenti, ma scommetto che presto capirò come farlo.
...o qualcuno mi darà qualche piccolo suggerimento
Eliana
Re: menu persnalizzati
Inviato: sabato 14 maggio 2011, 8:51
da vladko
puoi spiegare meglio chi come cosa quando di tua domanda?
hai guardato nelle faq di OOO?
Re: menu personalizzati
Inviato: lunedì 16 maggio 2011, 14:51
da elianaOO
cia Vladko
vorrei personalizzare il menù backside,
cioè fare quello che si fa da strumenti->personalizza->menu "manualmente" in modo automatico,
che è poi quel codice che ho incollato, solo che il codice che ho incollato è un menù favoriti, quindi l'unica cosa che fa è richiamare delle pagine,
mente quello che vorrei io è di aggiungere dei nuovi menù in grado di richiamare delle sub.
Re: menu persnalizzati
Inviato: martedì 17 maggio 2011, 8:29
da vladko
ci sono alcune extension che creano menu personali.
potresti guardare a quelle
1 che mi viene in mente MRI
2 tools di sergiocorato che ogni tanto passa su questa strada
Re: menu persnalizzati
Inviato: martedì 31 maggio 2011, 18:38
da elianaOO
cerco di spiegarmi meglio.
Dovrei modificare una vecchia extension che girava in excel.
Quindi dovrei creare dei menù che richiamano delle funzioni (se non ho capito male con call)
Queste funzioni a loro volta richiamano codice scritto in fortran e in c.
Ho qualche problema abbastanza serio, tipo che non riesco nemmeno a compilare il codice in c, ed ho anche qualche difficoltà con il fortran, tipo che nel passaggio da windows a ubuntu, le funzioni non sono compatibili al massimo.. avrei bisogno di qualche suggerimento
Grazie
Re: menu persnalizzati
Inviato: venerdì 3 giugno 2011, 0:29
da giorgiofoga
bellloooo .... sei la prima fortrannista che mi capita a tiro ..... domanda stupidona .... perchè non fai fare tutto a c++??
Re: menu persnalizzati
Inviato: martedì 7 giugno 2011, 12:31
da elianaOO
Ciao giorgiofoga, non faccio fare tutto a c++ perché ho del codice molto antico che mi è stato regalato, che appunto è in fortran, che fa degli strani calcoli di "roba chimica" tipo calcolo dei parametri degli spettri, che sto cercando di interpretare (cioè di capire) non so bene dove andare a mettere le mani.
La mia extension di excel aveva la funzione di interfacciare graficamente in un modo un po' umano questi programmi di simulazione scritti in Fortran e C, mutuati da un'università americana che ora ha tolto anche i sorgenti dal sito, quindi renditi conto della situazione un po' preistorica del sorgente su cui debbo mettere mani.
Tu mi suggerisci di tramutare tutto in c++?
Non è un'impresa folle, considerando la presenza dei goto?!?
Scusa se ci ho messo tanto a rispondere ma ho preso qualche giorno di vacanza e non avevo il pc.
Eliana
Re: menu persnalizzati
Inviato: giovedì 9 giugno 2011, 0:14
da xergio
Da macro non li ho mai creati, però sull'extension il codice è questo:
Codice: Seleziona tutto
vnd.sun.star.script:IcsTools.Mod.OpenIcsToolsProjects?language=Basic&location=application
n.b.: la parte IcsTools.Mod.OpenIcsToolsProjects è la posizione e il nome della macro.