示例#1
0
 /// <summary>
 ///   Inserts a menu at given position
 /// </summary>
 /// <param name = "newEntry">menu to be added</param>
 /// <param name = "idx">position where menu needs to be inserted</param>
 public void addMenu(MenuEntry newEntry, int idx)
 {
     _menuEntries.Insert(idx, newEntry);
 }
示例#2
0
        /// <summary>
        ///   This method destroys all menu objects of the previous menus definitions file, and
        ///   creates a list of all effected forms. When we finished cleaning the usage of the
        ///   previous menus file, we will use these list in order to assign the updated menus
        ///   to the effected objects (forms and controls).
        /// </summary>
        public List <MgFormBase> destroy()
        {
            List <MgFormBase> formsToRefresh = new List <MgFormBase>();
            MgFormBase        form           = null;

            if (instantiatedContext.Count > 0 || instantiatedPullDown.Count > 0)
            {
                for (int i = 0; i < _menuEntries.Count; i++)
                {
                    MenuEntry menuEntry = _menuEntries[i];
                    menuEntry.dispose();
                }

                MenuReference menuReference;
                // dispose all pulldown menu objects
                IEnumerator pulldownKeysEnumerator = instantiatedPullDown.Keys.GetEnumerator();

                while (pulldownKeysEnumerator.MoveNext())
                {
                    form = (MgFormBase)pulldownKeysEnumerator.Current;
                    form.toolbarGroupsCountClear();
                    if (!formsToRefresh.Contains(form))
                    {
                        formsToRefresh.Add(form);
                    }
                    menuReference = (MenuReference)instantiatedPullDown[form];
                    Commands.addAsync(CommandType.DISPOSE_OBJECT, menuReference);
                }

                // dispose all context menu objects
                ICollection contextKeys           = instantiatedContext.Keys;
                IEnumerator contextKeysEnumerator = contextKeys.GetEnumerator();

                while (contextKeysEnumerator.MoveNext())
                {
                    form = (MgFormBase)contextKeysEnumerator.Current;
                    form.toolbarGroupsCountClear();
                    if (!formsToRefresh.Contains(form))
                    {
                        formsToRefresh.Add(form);
                    }
                    menuReference = (MenuReference)instantiatedContext[form];
                    Commands.addAsync(CommandType.DISPOSE_OBJECT, menuReference);
                }

                // dispose all context menu objects
                ICollection ToolbarKeys           = _instantiatedToolbar.Keys;
                IEnumerator ToolbarKeysEnumerator = ToolbarKeys.GetEnumerator();

                while (ToolbarKeysEnumerator.MoveNext())
                {
                    form = (MgFormBase)ToolbarKeysEnumerator.Current;
                    form.toolbarGroupsCountClear();
                    if (!formsToRefresh.Contains(form))
                    {
                        formsToRefresh.Add(form);
                    }
                    menuReference = (MenuReference)_instantiatedToolbar[form];
                    if (menuReference != null)
                    {
                        Commands.addAsync(CommandType.DISPOSE_OBJECT, menuReference);
                    }
                }
                //TODO: MerlinRT. Which form are we using here ? 'form' changes in all the three while-loops above.
                //remove the tollbar
                deleteToolBar(form);

                // we do not dispose the Toolbar objects - they are created once when the form is created
                // and are visible\hiddne according to need.

                _internalEventsOnMenus.Clear();
                _internalEventsOnToolBar.Clear();
                _menuEntriesWithAccessKey.Clear();
            }
            return(formsToRefresh);
        }
示例#3
0
 public void addSubMenu(MenuEntry newEntry)
 {
     _menuEntries.Add(newEntry);
 }