/// <summary>
        /// gets the menu items from the addin
        /// </summary>
        /// <param name="location">the location in EA</param>
        /// <param name="addinMenu">the menu where to add the items</param>
        /// <param name="menuName">the name of the menu</param>
        internal static void SetMenu(string location, ToolStripMenuItem addinMenu,string menuName,EAAddinFramework.EAAddinBase addin)
        {
   
            object menuItemsObject = addin.EA_GetMenuItems(eaRepository, location, menuName);
            string[] menuItems = null;
            // check if menuItemsObject is an array of strings
            if (menuItemsObject is string[])
            {
                menuItems = (string[])menuItemsObject;
            }
            else
            //must be a string then
            {
                menuItems = new string[1];
                menuItems[0] = (string)menuItemsObject;
            }

            foreach (string menuItem in menuItems)
            {
            	if (menuItem != null)
            	{
	                // if the menuItem starts with a "-" then it has submenu items
	                if (menuItem.StartsWith("-"))
	                {
	                    // remove the "-";
	                    string menuItemName = menuItem;
	                    menuItemName = menuItem.Substring(1);
	                    // add the menu item
	                    addinMenu.DropDownItems.Add(menuItemName);
	                    //get the newly added item
	                    ToolStripMenuItem newMenuItem = (ToolStripMenuItem)addinMenu.DropDownItems[addinMenu.DropDownItems.Count - 1];
	                    //add the eventhandler for its subItems
	                    newMenuItem.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(form.addInsToolStripMenuItem_DropDownItemClicked);
	                    // add its submenu items
	                    SetMenu(location, newMenuItem, menuItem,addin);
	                }
	                // else it is a leaf menu item
	                else
	                {
	                    // add the menu item
	                    addinMenu.DropDownItems.Add(menuItem);
	                    // get the newly added item
	                    ToolStripMenuItem newMenuItem = (ToolStripMenuItem)addinMenu.DropDownItems[addinMenu.DropDownItems.Count - 1];
	                    //set its state, only leaf items get their state set.
	                    bool enabledValue = true;
	                    bool checkedValue = false;
	                    addin.EA_GetMenuState(eaRepository, location, newMenuItem.OwnerItem.Text, newMenuItem.Text, ref enabledValue, ref checkedValue);
	                    newMenuItem.Enabled = enabledValue;
	                    newMenuItem.Checked = checkedValue;
	                }
            	}
            }
      
        }
	    /// <summary>
	    /// Constructor ScriptFunction with description
	    /// </summary>
	    /// <param name="owner">Script</param>
	    /// <param name="procedure">Function</param>
	    /// <param name="description">Description</param>
	    public ScriptFunction(EAAddinFramework.Utils.Script owner, Procedure procedure, string description)
        {
            Owner = owner;
            Procedure = procedure;
            Description = description;
        }
        /// <summary>
        /// Constructor ScriptFunction
        /// </summary>
        /// <param name="owner">Script</param>
        /// <param name="procedure">Function</param>
        public ScriptFunction(EAAddinFramework.Utils.Script owner, Procedure procedure)
		{
			Owner = owner;
			Procedure = procedure;
		}