Difference between revisions of "API/Samples/StarBasic/Office/Favorites-Menu"
From Apache OpenOffice Wiki
SergeMoutou (Talk | contribs) m |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
PROGRAM: FAVORITES.BAS | PROGRAM: FAVORITES.BAS | ||
− | Description: Create a | + | Description: Create a favorites menu in AOO, based on a blog entry from Malte Timmermann, for easy accessing often used documents. |
See comments for the location where to make your customizations. | See comments for the location where to make your customizations. | ||
Programming Language: StarBasic | Programming Language: StarBasic | ||
Author: Malte Timmermann, 2006 | Author: Malte Timmermann, 2006 | ||
License: None - Treat this as sample code, feel free to reuse | License: None - Treat this as sample code, feel free to reuse | ||
− | < | + | |
− | '''REM ====== To remove menu: delete macro, then delete menu in Tools > | + | BookmarksMenu is an extension to add a menu like a favorits menu on the OpenOffice menubar. This extension is based on the idea of [https://extensions.openoffice.org/en/project/bookmarks-menu Malte Timmermann's Favorites Menu]. It was developed after the blog entry from Malte. |
+ | |||
+ | <syntaxhighlight lang="oobas"> | ||
+ | '''REM ====== To remove menu: delete macro, then delete menu in Tools > Customize… ======''' | ||
'''REM ====== YOUR ROOT BELOW ======''' | '''REM ====== YOUR ROOT BELOW ======''' | ||
Line 103: | Line 106: | ||
ImplCreateMenuSeparator = aMenuItem() | ImplCreateMenuSeparator = aMenuItem() | ||
End Function | End Function | ||
− | </ | + | </syntaxhighlight> |
− | + | ||
− | + | ||
[[Category:API]] | [[Category:API]] |
Latest revision as of 16:28, 24 August 2022
PROGRAM: FAVORITES.BAS Description: Create a favorites menu in AOO, based on a blog entry from Malte Timmermann, for easy accessing often used documents. See comments for the location where to make your customizations. Programming Language: StarBasic Author: Malte Timmermann, 2006 License: None - Treat this as sample code, feel free to reuse
BookmarksMenu is an extension to add a menu like a favorits menu on the OpenOffice menubar. This extension is based on the idea of Malte Timmermann's Favorites Menu. It was developed after the blog entry from Malte.
'''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 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