Bonjour à tous.
Comme j'ai un peu galéré pour trouver comment ajouter/supprimer un menu de la barre du même nom, je mets à dispo ce que j'ai enfin pu faire, me disant que ça pourrait peut-être intéresser quelqu'un.
Modérateur: Vilains modOOs
'---------------------------------------------------------------------
sub menusRestaurer(nomModule as string)
dim sMenuBar as string
dim oConfMgr, oConfModule, oDefSet
sMenuBar = "private:resource/menubar/menubar"
oConfMgr = createUnoService(_
"com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
oConfModule = oConfMgr.getUIConfigurationManager(nomModule)
oDefSet = oConfModule.getDefaultSettings(sMenuBar)
oConfModule.replaceSettings(sMenuBar, oDefSet)
end sub
'---------------------------------------------------------------------
Sub DocumentsOuverts()
'pensez à sauvegarder vos documents
dim lesDocs, laCollection, leDoc
on error resume next
lesDocs = StarDesktop.Components
laCollection = lesDocs.createEnumeration
while laCollection.hasMoreElements
leDoc = laCollection.nextElement
' Reconnaître les types de documents ouverts
' -> restaurer les menus dans les applications de LO ou AOO
menusRestaurer (leDoc.Identifier)
wend
End Sub
oFrame.layoutManager.getElement(_
"private:resource/menubar/menubar").setSettings(oSettings)
' Création et implantation réel dans la barre de menu du fichier SEUL!!!
oModelUIManager = oFrame.getController().getModel().getUIConfigurationManager()
oModelUIManager.insertSettings("private:resource/menubar/menubar", oSettings)
sub main(event)
styles = com.sun.star.awt.MenuItemStyle
check = styles.CHECKABLE + styles.AUTOCHECK
radio = styles.RADIOCHECK + styles.AUTOCHECK
normal = 0
items = array("Un ~menu", array(_
array("item", "Item ~normal", normal, "clic1", array(4, 525)),_
array("item", "Item à cocher", check, "coche1"),_
array("menu", "Sous-menu un", array(_
array("item", "Item bouton radio 1", radio, "radio1"),_
array("item", "Item bouton radio 2", radio, "radio2"))),_
array("sep"),_
array("item", "I~tem normal", normal, "clic2", array(4, 531)),_
array("menu", "Sous-menu deux", array(_
array("item", "Item", normal, "clic3"),_
array("item", "Autre item", normal, "clic4"),_
array("sep"),_
array("menu", "Sous-sous-menu", array(_
array("item", "Item", normal, "clic5"),_
array("item", "Dernier item", normal, "clic6")))))
doc = thiscomponent
menuid = 999
res = creemenu(doc, items, meunid)
if res then
creeraccourcis(doc)
event.Source.setEnable(False)
event.Source.setVisible(False)
end if
end sub
function creemenu(doc, items, menuid)
titremenu = items(0)
maquetteur = doc.CurrentController.Frame.LayoutManager
barremenu = maquetteur.getElement("private:resource/menubar/menubar").XMenuBar
if barremenu.getItemPos(menuid) > -1 then
'msgbox "Le menu existe déjà !"
creemenu = 0
exit function
end if
barremenu.insertItem(menuid, titremenu, 0, barremenu.ItemCount)
menulistener = createUnoListener("xmenu_", "com.sun.star.awt.XMenuListener")
menupopup = creemenupopup(items(1), menuid+1, menulistener)
barremenu.setPopupMenu(menuid, menupopup)
creemenu = 1
end function
function creemenupopup(elements, byval id, listener)
popup = createUnoService("com.sun.star.awt.PopupMenu")
popup.addMenuListener(listener)
'popup = createUnoService("stardiv.Toolkit.VCLXPopupMenu")
for each element in elements
select case element(0)
case "item"
popup.insertItem(id, element(1), element(2), popup.ItemCount)
if ubound(element) > 2 then
popup.setCommand(id, element(3))
end if
if ubound(element) > 3 then
popup.setAcceleratorKeyEvent(id, cree_keyevent(element(4)))
end if
id = id+1
case "menu"
popup.insertItem(id, element(1), 0, popup.ItemCount)
souspopup = creemenupopup(element(2), id, listener)
popup.setPopupMenu(id, souspopup)
id = id+1
case "sep"
popup.insertSeparator(popup.ItemCount)
end select
next
creemenupopup = popup
end function
function cree_keyevent(keyinfos)
dim cle as new com.sun.star.awt.KeyEvent
cle.Modifiers = keyinfos(0)
cle.KeyCode = keyinfos(1)
cree_keyevent = cle
end function
sub creeraccourcis(doc)
keyhandler = createUnoListener("xkey_", "com.sun.star.awt.XKeyHandler")
doc.CurrentController.addKeyHandler(keyhandler)
end sub
REM XMenuListener
sub xmenu_itemSelected(menuevent)
menuid = menuevent.MenuId
source = menuevent.Source
etiquette = source.getItemText(menuid)
commande = source.getCommand(menuid)
if instr(commande, "coche") = 1 then
if source.isItemChecked(menuid) then
msgbox "L'élément <" & etiquette & "> a été coché."
else
msgbox "L'élément <" & etiquette & "> a été décoché."
end if
elseif instr(commande, "radio") = 1 then
msgbox "L'élément <" & etiquette & "> a été sélectionné."
else
msgbox "L'élément <" & etiquette & "> a été sélectionné." & string(2, chr(10)) & "Commande : """ & commande & """"
end if
end sub
sub xmenu_itemHighlighted(menuevent)
end sub
sub xmenu_itemActivated(menuevent)
end sub
sub xmenu_itemDeactivated(menuevent)
end sub
sub xmenu_disposing(source)
end sub
REM XKeyHandler
sub xkey_disposing(source)
end sub
function xkey_keyPressed(keyevent)
xkey_keyPressed = False
if keyevent.Modifiers = 4 then
select case keyevent.KeyCode
case 525, 531 'Alt+N, Alt+T
msgbox "Vous avez activé le raccourci <Alt+" & ucase(keyevent.KeyChar) & ">"
xkey_keyPressed = True
end select
end if
end function
function xkey_keyReleased(keyevent)
xkey_keyReleased = False
end function
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité