Home › Forums › General XMetaL Discussion › Help with Menu › Reply To: Help with Menu
Reply to: Help with Menu
April 30, 2009 at 9:45 amThanks, mag3737.
Derek Read and mag3737,
My goal is to create simple customisation with menu and toolbar.
here my logic (how i imagine it) step by step:
1) Create MyMacro.mcr in the StartUp folder
2) On Macro “On_Default_CommandBars_Complete” I call function “CreateLoadMenu” and this function recreates
menu in view 1
MyMenu
Load
2.1) I put macro “CreateFullMenu” on property OnAction for “Load” item.
3) User presses “Load” and calles macro “CreateFullMenu”.
4) This macro tries to delete previous menu item “Load”, if fails macro tries to delete “MyMenu” and recreates it.
4.1) Add menu items “Item 1″,”Item 2″,”Unload” and create toolbar
4.3) On “Unload” action macros “CreateLoadMenu” is called
5) User preses “Unload” and sees menu in View 1.
Steps 2 – 4.3 are application-level marco.
I use only one file “MyMacro.mcr” and I don't use any DTD or XSD customization.
This is What I get when no documents are opened: pict 1
This is What I get when a document is opened: pict 2
How can I get the needed items when the documents are opened?
Full code of “MyMacro.mcr”:
[code]
Application.alert(“Test!!!”)
]]>
Application.Run(“CreateLoadMenuMac”)
]]>
var cmdBars = Application.CommandBars;
var menuBar = cmdBars.item(“Menu bar”);
var menuBarCtrls = menuBar.Controls;
var fileMenu = menuBarCtrls.item(“MyMenu”);
if (fileMenu != null) fileMenu.Delete();
//clear memory
cmdBars = null;
menuBar = null;
menuBarCtrls = null;
fileMenu = null;
}//_DeleteMenu()
]]>
//Application.Run(“DeleteToolBar”);
function _CreateLoadMenu(){
var cmdBars = Application.CommandBars;
var menuBar = cmdBars.item(“Menu bar”);
var menuBarCtrls = menuBar.Controls;
var fileMenu = menuBarCtrls.item(“MyMenu”);
if (fileMenu == null)
{
var newHeaderItem = menuBarCtrls.Add(sqcbcTypePopup);
newHeaderItem.Caption = “MyMenu”;
if (newHeaderItem != null) // create ok!
{
var newHeaderItemControls = newHeaderItem.Controls;
var Item = newHeaderItemControls.Add(sqcbcTypePopup);
Item.Caption = “Load”;
Item.FaceId=0;
Item.OnAction = “CreateFullMenuMac”;
Item.Enabled = true;
Item = null;
//clear memory
newHeaderItemControls = null;
Item = null;
}
else
{
Application.Alert(“Can't create MyMenu menu”)
}
//clear memory
newHeaderItem = null;
}
else // if already exits
{
var MenuItems = null;
var tImem = null;
var trycreatemenu = null;
try{
MenuItems = fileMenu.Controls; // try kill menu item
try
{
while (MenuItems.Count >0)
{
tImem = MenuItems.item(1);
if (tImem != null) tImem.Delete();
}
}
catch (err)
{
fileMenu.Delete(); // fail! Kill MyMenu and ReCreate
trycreatemenu = menuBarCtrls.Add(sqcbcTypePopup);
trycreatemenu.caption = “MyMenu”;
}
}
catch(HighError)
{
Application.alert(HighError);
}
//clear memory
MenuItems = null;
tImem = null;
trycreatemenu = null;
var newHeaderItem = menuBarCtrls.item(“MyMenu”);
if (newHeaderItem != null) // ReCreate ok!
{
var newHeaderItemControls = newHeaderItem.Controls;
var Item = newHeaderItemControls.Add(sqcbcTypePopup);
Item.Caption = “Load”;
Item.FaceId=0;
Item.OnAction = “CreateFullMenuMac”;
Item.Enabled = true;
Item = null;
//clear memory
newHeaderItemControls = null;
Item = null;
}
else
{
Application.Alert(“Can't create MyMenu menu”)
}
//clear memory
newHeaderItem = null;
} // Menu If
//clear memory
cmdBars = null;
menuBar = null;
menuBarCtrls = null;
fileMenu = null;
} //_CreateLoadMenu()
]]>
var cmdBars = Application.CommandBars;
var menuBar = cmdBars.item(“Menu bar”);
var menuBarCtrls = menuBar.Controls;
var fileMenu = menuBarCtrls.item(“MyMenu”);
if (fileMenu == null)
{
var newHeaderItem = menuBarCtrls.Add(sqcbcTypePopup);
newHeaderItem.Caption = “MyMenu”;
if (newHeaderItem != null) // create ok!
{
var newHeaderItemControls = newHeaderItem.Controls;
var Item = newHeaderItemControls.Add(sqcbcTypePopup);
Item.Caption = “Item 1”;
Item.FaceId=0;
Item.OnAction = “TestMac”;
Item.Enabled = true;
Item = null;
Item = newHeaderItemControls.Add(sqcbcTypePopup);
Item.Caption = “Item 2”;
Item.FaceId=0;
Item.OnAction = “TestMac”;
Item.Enabled = true;
Item = null;
Item = newHeaderItemControls.Add(sqcbcTypePopup);
Item.Caption = “Unload”;
Item.FaceId=0;
Item.OnAction = “CreateLoadMenuMac”;
Item = null;
//clear memory
newHeaderItemControls = null;
Item = null;
}
else
{
Application.Alert(“Can't create MyMenu menu”)
}
//clear memory
newHeaderItem = null;
}
else //if already exist
{
var MenuItems = null;
var tImem = null;
var trycreatemenu = null;
try{
MenuItems = fileMenu.Controls; // try Kill menu item
try
{
while (MenuItems.Count >0)
{
tImem = MenuItems.item(1);
if (tImem != null) tImem.Delete();
}
}
catch (err)
{
fileMenu.Delete(); // Fail, Kill MyMenu and ReCreate.
trycreatemenu = menuBarCtrls.Add(sqcbcTypePopup);
trycreatemenu.caption = “MyMenu”;
}
}
catch(HighError)
{
Application.alert(HighError);
}
//clear memory
MenuItems = null;
tImem = null;
trycreatemenu = null;
var newHeaderItem = menuBarCtrls.item(“MyMenu”);
if (newHeaderItem != null) // ReCreate ok!
{
var newHeaderItemControls = newHeaderItem.Controls;
var Item = newHeaderItemControls.Add(sqcbcTypePopup);
Item.Caption = “Item 1”;
Item.FaceId=0;
Item.OnAction = “TestMac”;
Item.Enabled = true;
Item = null;
Item = newHeaderItemControls.Add(sqcbcTypePopup);
Item.Caption = “Item 2”;
Item.FaceId=0;
Item.OnAction = “TestMac”;
Item.Enabled = true;
Item = null;
Item = newHeaderItemControls.Add(sqcbcTypePopup);
Item.Caption = “Unload”;
Item.FaceId=0;
Item.OnAction = “CreateLoadMenuMac”;
Item = null;
//clear memory
newHeaderItemControls = null;
Item = null;
}
else
{
Application.Alert(“Can't create MyMenu menu”)
}
//clear memory
newHeaderItem = null;
} // Menu If
//clear memory
cmdBars = null;
menuBar = null;
menuBarCtrls = null;
fileMenu = null;
}//_CreateFullMenu()
]]>
[/code]