Esempio n. 1
0
 public MenuItemWithHandler(MenuWithHandler definition) : base()
 {
     OwnerDraw = true;
     Text      = definition.Text;
     Tag       = definition;
     if (!string.IsNullOrEmpty(definition.Shortcut))
     {
         Shortcut     = ShortcutFromString(definition.Shortcut);
         ShowShortcut = definition.ShowShortcut;
     }
     // no need for the following, if Update
     //CommandState commandState = new CommandState();
     //if (definition.Target.OnUpdateCommand(definition.ID, commandState))
     //{
     //    Enabled = commandState.Enabled;
     //    Checked = commandState.Checked;
     //    doubleChecked = commandState.Checked;
     //}
     if (definition.SubMenus != null)
     {
         MenuItem[] sub = new MenuItem[definition.SubMenus.Length];
         for (int i = 0; i < definition.SubMenus.Length; i++)
         {
             sub[i] = new MenuItemWithHandler(definition.SubMenus[i]);
         }
         MenuItems.AddRange(sub);
     }
 }
Esempio n. 2
0
 private bool ProcessShortCut(Keys keys, MenuItem mi)
 {
     if (mi.IsParent)
     {
         foreach (MenuItem mii in mi.MenuItems)
         {
             if (ProcessShortCut(keys, mii))
             {
                 return(true);
             }
         }
     }
     else if (mi.Shortcut == (Shortcut)(int)keys)
     {
         MenuItemWithHandler miid         = mi as MenuItemWithHandler;
         CommandState        commandState = new CommandState();
         commandHandler.OnUpdateCommand((miid.Tag as MenuWithHandler).ID, commandState);
         if (commandState.Enabled)
         {
             commandHandler.OnCommand((miid.Tag as MenuWithHandler).ID);
         }
         return(true);
     }
     return(false);
 }
Esempio n. 3
0
 public ContextMenuWithHandler(MenuWithHandler[] definition) : base()
 {
     this.menuID    = null;
     commandHandler = null;
     MenuItem[] sub = new MenuItem[definition.Length];
     for (int i = 0; i < sub.Length; i++)
     {
         sub[i] = new MenuItemWithHandler(definition[i]);
     }
     base.MenuItems.AddRange(sub);
 }
Esempio n. 4
0
        static internal MainMenu MakeMainMenu(MenuWithHandler[] definition)
        {
            MainMenu res = new MainMenu();

            MenuItem[] items = new MenuItem[definition.Length];
            for (int i = 0; i < definition.Length; i++)
            {
                items[i] = new MenuItemWithHandler(definition[i]);
            }
            res.MenuItems.AddRange(items);
            return(res);
        }
Esempio n. 5
0
 private void SetCommandHandler(MenuItemWithHandler miid, ICommandHandler hc)
 {
     foreach (MenuItem mi in miid.MenuItems)
     {
         MenuItemWithHandler submiid = mi as MenuItemWithHandler;
         if (submiid != null)
         {
             (submiid.Tag as MenuWithHandler).Target = hc;
             if (submiid.IsParent)
             {
                 SetCommandHandler(submiid, hc);
             }
         }
     }
 }
Esempio n. 6
0
 public void SetCommandHandler(ICommandHandler hc)
 {
     foreach (MenuItem mi in MenuItems)
     {
         MenuItemWithHandler submiid = mi as MenuItemWithHandler;
         if (submiid != null)
         {
             (submiid.Tag as MenuWithHandler).Target = hc;
             if (submiid.IsParent)
             {
                 SetCommandHandler(submiid, hc);
             }
         }
     }
     this.commandHandler = hc;
 }
Esempio n. 7
0
 public void UpdateCommand()
 {
     foreach (MenuItem mi in MenuItems)
     {
         MenuItemWithHandler miid = mi as MenuItemWithHandler;
         if (mi.Tag is MenuWithHandler menuWithHandler)
         {
             if (menuWithHandler.Target != null)
             {
                 CommandState commandState = new CommandState();
                 menuWithHandler.Target.OnUpdateCommand(menuWithHandler.ID, commandState);
                 miid.Enabled = commandState.Enabled;
                 miid.Checked = commandState.Checked;
                 if (miid.IsParent)
                 {
                     RecurseCommandState(miid);
                 }
             }
         }
     }
 }
Esempio n. 8
0
 private void RecurseCommandState(MenuItemWithHandler miid)
 {
     foreach (MenuItem mi in miid.MenuItems)
     {
         MenuItemWithHandler submiid = mi as MenuItemWithHandler;
         if (submiid != null)
         {
             if (commandHandler != null)
             {
                 CommandState commandState = new CommandState();
                 commandHandler.OnUpdateCommand((submiid.Tag as MenuWithHandler).ID, commandState);
                 submiid.Enabled = commandState.Enabled;
                 submiid.Checked = commandState.Checked;
             }
             if (submiid.IsParent)
             {
                 RecurseCommandState(submiid);
             }
         }
     }
 }
Esempio n. 9
0
 private void UpdateMRUMenu(MenuItem mi, string[] mruFiles)
 {
     if (mi.IsParent)
     {
         foreach (MenuItem mmi in mi.MenuItems)
         {
             UpdateMRUMenu(mmi, mruFiles);
         }
     }
     else
     {
         MenuItemWithHandler mid = mi as MenuItemWithHandler;
         if (mid != null)
         {
             MenuWithHandler mwh = mid.Tag as MenuWithHandler;
             if (mwh != null)
             {
                 string MenuId = mwh.ID;
                 if (MenuId.StartsWith("MenuId.File.Mru.File"))
                 {
                     string filenr = MenuId.Substring("MenuId.File.Mru.File".Length);
                     try
                     {
                         int n = int.Parse(filenr);
                         if (n <= mruFiles.Length && n > 0)
                         {
                             string[] parts = mruFiles[mruFiles.Length - n].Split(';');
                             if (parts.Length > 1)
                             {
                                 mid.Text = parts[0];
                             }
                         }
                     }
                     catch (FormatException) { }
                     catch (OverflowException) { }
                 }
             }
         }
     }
 }