/// <summary>
        /// Allows insertion of a menu item
        /// </summary>
        /// <param name="mitem">The menu item to insert</param>
        /// <param name="menuItemNameToFind">Name of the main menuitem element to insert before or after - find in MainWindow.xaml or with Debug Tools</param>
        /// <param name="menuItemTextToFind">Text of the menuitem element to insert bfore or after (use if there's is no explicit Name for the item)</param>
        /// <param name="addMode">Determines where the item is to be inserted</param>
        public bool AddMenuItem(MenuItem mitem, string menuItemNameToFind = null,
                                string menuItemTextToFind = null,
                                AddMenuItemModes addMode  = AddMenuItemModes.AddAfter)
        {
            // find the menu item to in
            var menuItem = GetChildMenuItem(Model.Window.MainMenu, menuItemNameToFind, menuItemTextToFind);

            if (menuItem == null)
            {
                mmApp.Log("Couldn't add menu item: " + mitem.Header + " " + addMode + " " + menuItemNameToFind ?? menuItemTextToFind, logLevel: LogLevels.Warning);
                return(false);
            }

            ItemsControl parent = menuItem.Parent as ItemsControl;

            if (parent == null)
            {
                mmApp.Log("Couldn't add menu item: " + mitem.Header + " " + addMode + " " + menuItemNameToFind ?? menuItemTextToFind, logLevel: LogLevels.Warning);
                return(false);
            }

            int idx;

            if (addMode == AddMenuItemModes.AddBefore)
            {
                idx = parent.Items.IndexOf(menuItem);
            }
            else if (addMode == AddMenuItemModes.Replace)
            {
                idx = parent.Items.IndexOf(menuItem);
                parent.Items[idx] = mitem;
                return(true);
            }
            else
            {
                idx = parent.Items.IndexOf(menuItem);
                idx++;
            }
            parent.Items.Insert(idx, mitem);

            return(true);
        }
Exemple #2
0
        /// <summary>
        /// Allows insertion of a menu item
        /// </summary>
        /// <param name="mitem">The menu item to insert</param>
        /// <param name="menuItemNameForInsertionAfter">Name of the main menuitem element to insert before or after - find in MainWindow.xaml or with Debug Tools</param>
        /// <param name="menuItemTextForInsertionAfter">Text of the menuitem element to insert bfore or after (use if there's is no explicit Name for the item)</param>
        /// <param name="addMode">Determines where the item is to be inserted</param>
        public bool AddMenuItem(MenuItem mitem, string menuItemNameForInsertionAfter = null, string menuItemTextForInsertionAfter = null,
                                AddMenuItemModes addMode = AddMenuItemModes.AddAfter)
        {
            // find the menu item to in
            var menuItem = GetChildMenuItem(Model.Window.MainMenu, menuItemNameForInsertionAfter, menuItemTextForInsertionAfter);

            if (menuItem == null)
            {
                return(false);
            }

            ItemsControl parent = menuItem.Parent as ItemsControl;

            if (parent == null)
            {
                return(false);
            }

            int idx;

            if (addMode == AddMenuItemModes.AddBefore)
            {
                idx = parent.Items.IndexOf(menuItem);
            }
            else if (addMode == AddMenuItemModes.Replace)
            {
                idx = parent.Items.IndexOf(menuItem);
                parent.Items[idx] = mitem;
                return(true);
            }
            else
            {
                idx = parent.Items.IndexOf(menuItem);
                idx++;
            }
            parent.Items.Insert(idx, mitem);

            return(true);
        }