OK... my knowledgeable comrades...
I need to have all of the default and extension installed menus and toolbars hidden from my spreadsheet upon opening it.
So I'd link the macro to one of the startup events... I understand that. I saw in Andrews online documentation how to list the standard toolbars (but what about the installed extensions).
I then need to create a custom menu (cascading) that then will be shown to the user instead of the default menus.
My menu layout I'd like to have. All non-bold are the dropdown menus under the bold headers
File Edit Import Report Archive Print Email Sheet Sync
Save Update New Listings MAP Backup Process Generate Process Company
Close Delete Archive Statistics Import Statistics Mail Merge Options Agent
Combine Local History History
MAP
Statistics
I'd rather have the process explained rather than just done for me. I've found bits and pieces of code but nothing that really has done much for my feeble mind.
The FILE menu would work just like the SAVE and CLOSE do in Open Office. So if there was a way to directly interface those bits of code so I don't have to rewrite that would be great. Or if the current menubar can have things selectively removed from it.
I did see some good info in Andrew's material on XML menu distribution, but think that using macros to build them would work better for this as I have several users using the project and I usually have tons of versions released to fix the plethora of bugs I like to build into my projects.
Complete custom menu system
Complete custom menu system
OOo 3.1 On Windows XP SP3 (Home)
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Re: Complete custom menu system
Found this nugget of goodness on the old forum....
I had to edit it... as getCurrentComponent seems to cause issues with the IDE
and this works for removing the toolbars but not the menubar. Looks tons better but my quest it for only a custom menubar to remain.
how do I remove the menubar and replace it with my own? Let alone make that custom menubar. I've seen a little on this but nothing that makes much sense to me. Hoping for some good tutelage from the community.
Code: Select all
Sub hideallBars_inOOo2( )
doc = Stardesktop.getCurrentComponent()
frame = doc.CurrentController.Frame
lmgr = frame.LayoutManager
lmgr.setVisible(False)
End Sub
Code: Select all
Sub hideallBars_inOOo2( )
doc = ThisComponent
frame = doc.CurrentController.Frame
lmgr = frame.LayoutManager
lmgr.setVisible(False)
End Sub
how do I remove the menubar and replace it with my own? Let alone make that custom menubar. I've seen a little on this but nothing that makes much sense to me. Hoping for some good tutelage from the community.
OOo 3.1 On Windows XP SP3 (Home)
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Re: Complete custom menu system
And of course that code there should be able to compress it down to one line, right?
ThisComponent.CurrentController.Frame.LayoutManager.setVisible(False)
Yes?
ThisComponent.CurrentController.Frame.LayoutManager.setVisible(False)
Yes?
OOo 3.1 On Windows XP SP3 (Home)
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Re: Complete custom menu system
That does seem to work just fine...
Now that doesn't seem to hide the menubar... just the toolbars
Now I did find some info that I have decoded from Andrew's online book...
oThisComponent.CurrentController.getFrame().LayoutManager.hideElement("private:resource/menubar/menubar")
Giving this a test on hiding the menu bar... but I need to create my own
Should I just name it "private:resource/menubar/custom_menubar" ? Would that be considered proper and would it work?
Now that doesn't seem to hide the menubar... just the toolbars
Now I did find some info that I have decoded from Andrew's online book...
oThisComponent.CurrentController.getFrame().LayoutManager.hideElement("private:resource/menubar/menubar")
Giving this a test on hiding the menu bar... but I need to create my own
Should I just name it "private:resource/menubar/custom_menubar" ? Would that be considered proper and would it work?
OOo 3.1 On Windows XP SP3 (Home)
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Re: Complete custom menu system
Just an example written in Python:
Code: Select all
import unohelper
from com.sun.star.awt import XMenuListener
from com.sun.star.lang import XEventListener
from com.sun.star.awt import Rectangle
# multiple task should be kept
global event
class EventListener(unohelper.Base, XEventListener):
""" to close window safely. """
def __init__(self, menubar, window, listener):
self.menubar = menubar
self.window = window
self.listener = listener
def disposing(self, ev):
self.window.setMenuBar(None) # have to be set to None
self.menubar = None
self.window = None
self.listener = None
global event
event = None
class MainClass(unohelper.Base, XEventListener, XMenuListener):
def __init__(self, ctx, doc):
self.ctx = ctx
self.doc = doc
# XMenuListener
def hightlight(self, ev):
pass
def select(self, ev):
self.message(ev.Source.getCommand(ev.MenuId))
def activate(self, ev):
pass
def deactivate(self, ev):
pass
def dispose(self, ev):
pass
def message(self, message, title=""):
win = self.doc.getCurrentController().getFrame().getContainerWindow()
toolkit = win.getToolkit()
dlg = toolkit.createMessageBox(win, Rectangle(), "messbox", 1, title, message)
return dlg.execute()
def set_menubar():
ctx = XSCRIPTCONTEXT.getComponentContext()
smgr = ctx.getServiceManager()
frame = XSCRIPTCONTEXT.getDocument().getCurrentController().getFrame()
# window to set custom menubar
window = frame.getContainerWindow()
# custom menubar
menubar = smgr.createInstanceWithContext(
"com.sun.star.awt.MenuBar", ctx)
menubar.insertItem(1, "~File", 0, 0)
menubar.insertItem(2, "~Edit", 0, 1)
# create submenus and set to the main menu
file_menu = create_popupmenu(smgr, ctx,
((1, "~New", 0, 0, "new"),))
edit_menu = create_popupmenu(smgr, ctx,
((2, "~Edit", 0, 0, "edit"),))
menubar.setPopupMenu(1, file_menu)
menubar.setPopupMenu(2, edit_menu)
# set listeners
menu_listener = MainClass(ctx, XSCRIPTCONTEXT.getDocument())
file_menu.addMenuListener(menu_listener)
edit_menu.addMenuListener(menu_listener)
# set custom one
window.setMenuBar(menubar)
global event
event = EventListener(menubar, window, menu_listener)
# items [id,text,type,pos,command], if separator [-1,pos]
def create_popupmenu(smgr,ctx,items):
menu = smgr.createInstanceWithContext('com.sun.star.awt.PopupMenu',ctx)
for item in items:
if -1 < item[0]:
menu.insertItem(item[0],item[1],item[2],item[3])
menu.setCommand(item[0],item[4])
else:
menu.insertSeparator(item[1])
#if len(item) >= 6 and item[5] is not None:
# menu.setAcceleratorKeyEvent(item[0], item[5])
return menu
Please, edit this thread's initial post and add "[Solved]" to the subject line if your problem has been solved.
Apache OpenOffice 4-dev on Xubuntu 14.04
Apache OpenOffice 4-dev on Xubuntu 14.04
Re: Complete custom menu system
Hanya... question is.. how do I convert that to OOoBASIC?
I'm thinking along the lines of creating objects from the com.sun.star items. And from there... well I'm pretty lost after that.
I'm thinking along the lines of creating objects from the com.sun.star items. And from there... well I'm pretty lost after that.
OOo 3.1 On Windows XP SP3 (Home)
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Re: Complete custom menu system
First I tried to write it in the basic but unfortunately it was not stable. In the case of my above code, the office is going to be crashed without "global event" declaration at the time to close the window. So, I can not help you to convert the code from python to basic.zabolyx wrote:Hanya... question is.. how do I convert that to OOoBASIC?
Please, edit this thread's initial post and add "[Solved]" to the subject line if your problem has been solved.
Apache OpenOffice 4-dev on Xubuntu 14.04
Apache OpenOffice 4-dev on Xubuntu 14.04
Re: Complete custom menu system
well that sucks... so this causes stability issues within OOoBASIC. Great. I've got to keep this code in BASIC only as I sometimes run this in the OOo Portable versions and do not have the Python support files installed for those. Kind of between a rock and a hard place at the moment.
Thanks for the help Hanya. Keeping my fingers crossed for some more enlightenment from the community.
Thanks for the help Hanya. Keeping my fingers crossed for some more enlightenment from the community.
OOo 3.1 On Windows XP SP3 (Home)
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/
Running portables of 2.4, 3.0, 3.1, and 3.2 on XP SP3 (Work)
OOo BASIC user
My contribution to the OOo Community code and more
https://sites.google.com/site/ooomacrolog/