public static void RefreshMenuContents(ToolStripMenuItem menuitem, IPoderosaMenuFolder contents) { //若干手抜きだが、VolatileContentsと混合していると比較が面倒。なので一つでもVolatileならリビルドしてしまう bool contains_volatile = false; foreach (IPoderosaMenuGroup grp in contents.ChildGroups) { if (grp.IsVolatileContent) { contains_volatile = true; break; } } if (contains_volatile) { menuitem.DropDownItems.Clear(); BuildMenuContents(menuitem, contents); } else { foreach (ToolStripItem mi in menuitem.DropDownItems) { MenuItemTag tag = mi.Tag as MenuItemTag; if (tag != null) //BarではTagなしだ { ToolStripMenuItem mi2 = mi as ToolStripMenuItem; Debug.Assert(mi2 != null); mi2.Enabled = tag.Menu.IsEnabled(tag.CommandTarget); mi2.Checked = mi.Enabled ? tag.Menu.IsChecked(tag.CommandTarget) : false; } } } }
public static void RefreshMenuContents(ToolStripMenuItem menuitem, IPoderosaMenuFolder contents) { //若干手抜きだが、VolatileContentsと混合していると比較が面倒。なので一つでもVolatileならリビルドしてしまう bool contains_volatile = false; foreach (IPoderosaMenuGroup grp in contents.ChildGroups) { if (grp.IsVolatileContent) { contains_volatile = true; break; } } if (contains_volatile) { menuitem.DropDownItems.Clear(); BuildMenuContents(menuitem, contents); } else { foreach (ToolStripItem mi in menuitem.DropDownItems) { MenuItemTag tag = mi.Tag as MenuItemTag; if (tag != null) { //BarではTagなしだ ToolStripMenuItem mi2 = mi as ToolStripMenuItem; Debug.Assert(mi2 != null); mi2.Enabled = tag.Menu.IsEnabled(tag.CommandTarget); mi2.Checked = mi.Enabled ? tag.Menu.IsChecked(tag.CommandTarget) : false; } } } }
//既存メニューの中身を構築:MainMenuItemおよび子のfolder用 public static void BuildMenuContents(ToolStripMenuItem menuitem, IPoderosaMenuFolder contents) { ICommandTarget target = ((MenuItemTag)menuitem.Tag).CommandTarget; int count = 0; foreach (IPoderosaMenuGroup grp in contents.ChildGroups) { if (count > 0 && grp.ShowSeparator) menuitem.DropDownItems.Add(CreateBar()); //直前のグループに要素があるならデリミタを入れる count = BuildMenuContentsForGroup(menuitem.DropDownItems.Count, target, menuitem.DropDownItems, grp); } }
//既存メニューの中身を構築:MainMenuItemおよび子のfolder用 public static void BuildMenuContents(ToolStripMenuItem menuitem, IPoderosaMenuFolder contents) { ICommandTarget target = ((MenuItemTag)menuitem.Tag).CommandTarget; int count = 0; foreach (IPoderosaMenuGroup grp in contents.ChildGroups) { if (count > 0 && grp.ShowSeparator) { menuitem.DropDownItems.Add(CreateBar()); //直前のグループに要素があるならデリミタを入れる } count = BuildMenuContentsForGroup(menuitem.DropDownItems.Count, target, menuitem.DropDownItems, grp); } }
//EventHandler private static void OnPopupMenu(object sender, EventArgs args) { try { ToolStripMenuItem mi = sender as ToolStripMenuItem; if (mi.DropDownItems.Count == 0) { return; //子がなくてもイベントは発生してしまう模様 } IPoderosaMenuFolder folder = ((MenuItemTag)mi.Tag).Menu as IPoderosaMenuFolder; Debug.Assert(folder != null); RefreshMenuContents(mi, folder); } catch (Exception ex) { RuntimeUtil.ReportException(ex); } }
public static void RefreshMenuContents(ToolStripMenuItem menuitem, IPoderosaMenuFolder contents) { //��蔲�������AVolatileContents�ƍ������Ă���Ɣ�r���ʓ|�B�Ȃ̂ň�ł�Volatile�Ȃ烊�r���h���Ă��܂� bool contains_volatile = false; foreach (IPoderosaMenuGroup grp in contents.ChildGroups) { if (grp.IsVolatileContent) { contains_volatile = true; break; } } if (contains_volatile) { menuitem.DropDownItems.Clear(); BuildMenuContents(menuitem, contents); } else { foreach (ToolStripItem mi in menuitem.DropDownItems) { MenuItemTag tag = mi.Tag as MenuItemTag; if (tag != null) { //Bar�ł�Tag�Ȃ��� ToolStripMenuItem mi2 = mi as ToolStripMenuItem; Debug.Assert(mi2 != null); mi2.Enabled = tag.Menu.IsEnabled(tag.CommandTarget); mi2.Checked = mi.Enabled ? tag.Menu.IsChecked(tag.CommandTarget) : false; } } } }