public static MenuItem ToMenuItem(this IMenuRegister menuRegister, IShell shell) { var menuItem = new MenuItem { Header = menuRegister.Name, FontWeight = menuRegister.FontWeight, Tag = new MenuTag(menuRegister.Name, menuRegister.Group), Command = menuRegister.Command, CommandParameter = menuRegister.CommandParameter, IsCheckable = menuRegister.Checkable, Icon = menuRegister.Icon, FlowDirection = menuRegister.FlowDirection }; if (menuRegister.Gesture != null) { menuItem.InputGestureText = menuRegister.Gesture.GetDisplayStringForCulture(CultureInfo.CurrentCulture); shell.AddKeyBinding(menuItem.Command, menuRegister.Gesture); } INotifyPropertyChanged viewModel = null; if (menuRegister.ViewModelFactory != null) { viewModel = menuRegister.ViewModelFactory(); } if (menuRegister.ViewFactory != null) { var view = menuRegister.ViewFactory(viewModel); view.DataContext = viewModel; menuItem.Header = view; } if (menuRegister.Style != null) menuItem.SetResourceReference(FrameworkElement.StyleProperty, menuRegister.Style); return menuItem; }
private static void TextBoxBaseContextMenuOpening(object sender, ContextMenuEventArgs e) { var tbBase = (TextBoxBase)sender; var textBox = tbBase as TextBox; var richTextBox = tbBase as RichTextBox; tbBase.ContextMenu = GetDefaultTextBoxBaseContextMenu(); var cmdIndex = 0; var spellingError = textBox != null ? textBox.GetSpellingError(textBox.CaretIndex) : (richTextBox != null ? richTextBox.GetSpellingError(richTextBox.CaretPosition) : null); if (spellingError != null) { var suggestions = spellingError.Suggestions; if (suggestions.Any()) { foreach (var suggestion in suggestions) { var mi = new MenuItem(); mi.Header = suggestion; mi.FontWeight = FontWeights.Bold; mi.Command = EditingCommands.CorrectSpellingError; mi.CommandParameter = suggestion; mi.CommandTarget = tbBase; mi.SetResourceReference(FrameworkElement.StyleProperty, "MetroMenuItem"); tbBase.ContextMenu.Items.Insert(cmdIndex, mi); cmdIndex++; } // add a separator tbBase.ContextMenu.Items.Insert(cmdIndex, new Separator()); cmdIndex++; } var ignoreAllMI = new MenuItem(); ignoreAllMI.Header = "Ignore All"; ignoreAllMI.Command = EditingCommands.IgnoreSpellingError; ignoreAllMI.CommandTarget = tbBase; ignoreAllMI.SetResourceReference(FrameworkElement.StyleProperty, "MetroMenuItem"); tbBase.ContextMenu.Items.Insert(cmdIndex, ignoreAllMI); cmdIndex++; // add another separator var separatorMenuItem2 = new Separator(); tbBase.ContextMenu.Items.Insert(cmdIndex, separatorMenuItem2); } }
// Gets a fresh context menu. private static ContextMenu GetDefaultTextBoxBaseContextMenu() { var defaultMenu = new ContextMenu(); var m1 = new MenuItem { Command = ApplicationCommands.Cut }; m1.SetResourceReference(FrameworkElement.StyleProperty, "MetroMenuItem"); var m2 = new MenuItem { Command = ApplicationCommands.Copy }; m2.SetResourceReference(FrameworkElement.StyleProperty, "MetroMenuItem"); var m3 = new MenuItem { Command = ApplicationCommands.Paste }; m3.SetResourceReference(FrameworkElement.StyleProperty, "MetroMenuItem"); defaultMenu.Items.Add(m1); defaultMenu.Items.Add(m2); defaultMenu.Items.Add(m3); return defaultMenu; }
private MenuItem CreateGroupHeader() { var header = new MenuItem {Header = group.Name}; header.SetResourceReference(StyleProperty, "MenuHeader"); header.Background = @group.Controller != null ? @group.Controller.TransparentBrush : new SolidColorBrush(Color.FromArgb(100, 100, 100, 100)); return header; }
protected virtual List<Control> CreateCardMenuItems(Card card, DataNew.Entities.Group def) { var items = new List<Control>(); if (!card.CanManipulate()) { var item = new MenuItem { Header = card.Name, Background = card.Controller.TransparentBrush }; item.SetResourceReference(StyleProperty, "MenuHeader"); items.Add(item); item = new MenuItem { Header = "Take control" }; item.Click += delegate { card.TakeControl(); }; items.Add(item); return items; } else { var selection = Selection.ExtendToSelection(card); //actionFilter showCard = async (IGroupAction a) => actionFilter showCard = (IGroupAction a) => { if (a.ShowIf != null) { //return await CallActionShowIf(a.ShowIf, selection); return CallActionShowIf(a.ShowIf, selection); } return true; }; var visibleActionsTasks = def.CardActions.Select(item => new { Item = item, PredTask = showCard.Invoke(item) }).ToList(); //await TaskEx.WhenAll(visibleActionsTasks.Select(x => x.PredTask)); //var visibleActions = visibleActionsTasks.Where(x => x.PredTask.Result).Select(x => x.Item).ToArray(); var visibleActions = visibleActionsTasks.Where(x => x.PredTask).Select(x => x.Item).ToArray(); var nCardActions = visibleActions.Length; if (nCardActions > 0 || group.Controller == null) { var cardHeader = new MenuItem(); cardHeader.SetResourceReference(StyleProperty, "MenuHeader"); cardHeader.Header = card.Name; cardHeader.Background = card.Controller.TransparentBrush; items.Add(cardHeader); } if (nCardActions > 0) { items.AddRange(visibleActions.Select(action => CreateActionMenuItem(action, CardActionClicked))); if (group.Controller == null) items.Add(new Separator()); } if (group.Controller == null) items.Add(CreateCardPassToItem()); } if (!card.FaceUp) { var peekItem = new MenuItem { Header = "Peek", InputGestureText = "Ctrl+P" }; peekItem.Click += delegate { ContextCard.Peek(); }; items.Add(peekItem); } return items; }
protected virtual List<Control> CreateCardMenuItems(DataNew.Entities.Group def) { var tempActions = def.CardActions.ToArray(); int nCardActions = def.CardActions == null ? 0 : tempActions.Length; var items = new List<Control>(); if (nCardActions > 0 || group.Controller == null) { _cardHeader = new MenuItem(); _cardHeader.SetResourceReference(StyleProperty, "MenuHeader"); items.Add(_cardHeader); } if (nCardActions > 0) { for (int i = 0; i < nCardActions; i++) items.Add(CreateCardMenuItem(tempActions[i])); if (group.Controller == null) items.Add(new Separator()); } if (group.Controller == null) items.Add(CreateCardPassToItem()); return items; }
internal virtual void ShowContextMenu(Card card, bool showGroupActions = true) { // Modify selection if (card == null || !card.Selected) Selection.Clear(); var menuItems = new CompositeCollection(); ContextGroup = group; ContextMenu = new ContextMenu {ItemsSource = menuItems, Tag = card}; // card has to captured somehow, otherwise it may be overwritten before released in the OnClosed handler, e.g. when rightclicking on a card, then directly right-clicking on another card. ContextMenu.Opened += (sender, args) => { ContextGroup.KeepControl(); var c = ((ContextMenu) sender).Tag as Card; if (c != null) c.KeepControl(); }; ContextMenu.Closed += (sender, args) => { ContextGroup.ReleaseControl(); var c = ((ContextMenu) sender).Tag as Card; if (c != null) c.ReleaseControl(); }; ContextCard = card; menuItems.Clear(); if (group.CanManipulate()) { if (card != null) { if (card.CanManipulate()) { if (_cardHeader != null) { _cardHeader.Header = card.Name; _cardHeader.Background = card.Controller.TransparentBrush; menuItems.Add(_cardMenu); } } else { var item = new MenuItem {Header = card.Name, Background = card.Controller.TransparentBrush}; item.SetResourceReference(StyleProperty, "MenuHeader"); menuItems.Add(item); item = new MenuItem {Header = "Take control"}; item.Click += delegate { card.TakeControl(); }; menuItems.Add(item); } if (!card.FaceUp) { var peekItem = new MenuItem {Header = "Peek", InputGestureText = "Ctrl+P"}; peekItem.Click += delegate { ContextCard.Peek(); }; if (menuItems.Count == 0) { var item = new MenuItem {Header = card.Name, Background = card.Owner.TransparentBrush}; item.SetResourceReference(StyleProperty, "MenuHeader"); menuItems.Add(item); } menuItems.Add(peekItem); } } if (showGroupActions) menuItems.Add(_groupMenu); } else// if (!group.WantToShuffle) { menuItems.Add(CreateGroupHeader()); var item = new MenuItem {Header = "Take control"}; item.Click += delegate { group.TakeControl(); }; menuItems.Add(item); menuItems.Add(new Separator()); item = CreateLookAtCardsMenuItem(); if (item != null) menuItems.Add(item); } //else // Group is being shuffled // return; ContextMenu.IsOpen = false; // Required to trigger the ReleaseControl calls if the ContextMenu was already open ContextMenu.UpdateLayout(); // Required if the ContextMenu was already open ContextMenu.IsOpen = true; ContextMenu.FontFamily = groupFont; ContextMenu.FontSize = fontsize; }
protected virtual List<Control> CreateCardMenuItems(Card card, DataNew.Entities.Group def) { var items = new List<Control>(); if (!card.CanManipulate()) { var item = new MenuItem { Header = card.Name, Background = card.Controller.TransparentBrush }; item.SetResourceReference(StyleProperty, "MenuHeader"); items.Add(item); item = new MenuItem { Header = "Take control" }; item.Click += delegate { card.TakeControl(); }; items.Add(item); return items; } else { var actions = def.CardActions.ToList(); var nCardActions = actions.ToArray().Length; if (nCardActions > 0 || group.Controller == null) { var cardHeader = new MenuItem(); cardHeader.SetResourceReference(StyleProperty, "MenuHeader"); cardHeader.Header = card.Name; cardHeader.Background = card.Controller.TransparentBrush; items.Add(cardHeader); } if (nCardActions > 0) { items.AddRange(actions.Select(action => CreateActionMenuItem(action, CardActionClicked, card)).Where(x => x.Visibility == Visibility.Visible)); if (group.Controller == null) items.Add(new Separator()); } if (group.Controller == null) items.Add(CreateCardPassToItem()); } if (def.Id == Program.GameEngine.Definition.Table.Id) { var ami = new MenuItem() { Header = card.Anchored ? "Unanchor" : "Anchor" }; ami.Click += (sender, args) => ContextCard.SetAnchored(false, card.Anchored == false); items.Add(ami); } if (!card.FaceUp) { var peekItem = new MenuItem { Header = "Peek", InputGestureText = "Ctrl+P" }; peekItem.Click += delegate { ContextCard.Peek(); }; items.Add(peekItem); } return items; }
private MenuItem CreateGroupHeader() { MenuItem header = new MenuItem() { Header = group.Name }; header.SetResourceReference(Control.StyleProperty, "MenuHeader"); if (group.Controller != null) header.Background = group.Controller.TransparentBrush; else header.Background = new SolidColorBrush(Color.FromArgb(100, 100, 100, 100)); return header; }
protected virtual List<Control> CreateCardMenuItems(GroupDef def) { int nCardActions = def.cardActions == null ? 0 : def.cardActions.Length; var items = new List<Control>(); if (nCardActions > 0 || group.Controller == null) { cardHeader = new MenuItem(); cardHeader.SetResourceReference(Control.StyleProperty, "MenuHeader"); items.Add(cardHeader); } if (nCardActions > 0) { for (int i = 0; i < nCardActions; i++) items.Add(CreateCardMenuItem(def.cardActions[i])); if (group.Controller == null) items.Add(new Separator()); } if (group.Controller == null) items.Add(CreateCardPassToItem()); return items; }
public void BindMenu() { List<NameValueInfo> listValues = new List<NameValueInfo>(); listValues.Clear(); List<NameValueInfo> listValues1 = new List<NameValueInfo>(); listValues1.Clear(); NameValueInfo valueinfo1 = new NameValueInfo(); valueinfo1.nValue = 1; valueinfo1.sName = "旋转(左)"; valueinfo1.sValue = "1"; listValues.Add(valueinfo1); NameValueInfo valueinfo2 = new NameValueInfo(); valueinfo2.nValue = 2; valueinfo2.sName = "旋转(右)"; valueinfo2.sValue = "2"; listValues.Add(valueinfo2); NameValueInfo valueinfo3 = new NameValueInfo(); valueinfo3.nValue = 3; valueinfo3.sName = "前屈"; valueinfo3.sValue = "3"; listValues.Add(valueinfo3); NameValueInfo valueinfo4 = new NameValueInfo(); valueinfo4.nValue = 4; valueinfo4.sName = "后伸"; valueinfo4.sValue = "4"; listValues.Add(valueinfo4); NameValueInfo valueinfo5 = new NameValueInfo(); valueinfo5.nValue = 5; valueinfo5.sName = "旋转(左)"; valueinfo5.sValue = "5"; listValues1.Add(valueinfo5); NameValueInfo valueinfo6 = new NameValueInfo(); valueinfo6.nValue = 6; valueinfo6.sName = "旋转(右)"; valueinfo6.sValue = "6"; listValues1.Add(valueinfo6); NameValueInfo valueinfo7 = new NameValueInfo(); valueinfo7.nValue = 7; valueinfo7.sName = "前屈"; valueinfo7.sValue = "7"; listValues1.Add(valueinfo7); NameValueInfo valueinfo8 = new NameValueInfo(); valueinfo8.nValue = 8; valueinfo8.sName = "后伸"; valueinfo8.sValue = "8"; listValues1.Add(valueinfo8); subMenu.Items.Clear(); foreach (var item in listValues) { MenuItem mi = new MenuItem(); if (item.sName.Length > 20) mi.Header = item.sName.Substring(0, 10) + "..."; else mi.Header = item.sName; mi.Tag = item.sValue; mi.Click += new System.Windows.RoutedEventHandler(MenuClick); mi.SetResourceReference(MenuItem.StyleProperty, "MainMenuItem"); subMenu.Items.Add(mi); } subMenu1.Items.Clear(); foreach (var item in listValues1) { MenuItem mi = new MenuItem(); if (item.sName.Length > 20) mi.Header = item.sName.Substring(0, 10) + "..."; else mi.Header = item.sName; mi.Tag = item.sValue; mi.Click += new System.Windows.RoutedEventHandler(MenuClick); mi.SetResourceReference(MenuItem.StyleProperty, "MainMenuItem"); subMenu1.Items.Add(mi); } }
protected virtual List<Control> CreateCardMenuItems(Card card, DataNew.Entities.Group def) { var items = new List<Control>(); var menuItem = new MenuItem { Header = card.Name, Background = card.Controller != null ? card.Controller.TransparentBrush : new SolidColorBrush(Color.FromArgb(100, 100, 100, 100)) }; menuItem.SetResourceReference(StyleProperty, "MenuHeader"); items.Add(menuItem); if (card.CanManipulate()) { var selection = Selection.ExtendToSelection(card); //actionFilter showCard = async (IGroupAction a) => actionFilter showCard = (IGroupAction a) => { if (a.ShowIf != null) { //return await CallActionShowIf(a.ShowIf, selection); return CallActionShowIf(a.ShowIf, selection); } return true; }; var visibleActionsTasks = def.CardActions.Select(item => new { Item = item, PredTask = showCard.Invoke(item) }).ToList(); //await TaskEx.WhenAll(visibleActionsTasks.Select(x => x.PredTask)); //var visibleActions = visibleActionsTasks.Where(x => x.PredTask.Result).Select(x => x.Item).ToArray(); var visibleActions = visibleActionsTasks.Where(x => x.PredTask).Select(x => x.Item).ToArray(); var nCardActions = visibleActions.Length; if (nCardActions > 0) { items.AddRange(visibleActions.Select(action => CreateActionMenuItem(action, CardActionClicked))); if (group.Controller == null) items.Add(new Separator()); } } if (card.Controller != Player.LocalPlayer) { var item = new MenuItem { Header = "Take control" }; item.Click += delegate { card.TakeControl(); }; items.Add(item); return items; } else { if (group.Controller == null) items.Add(CreateCardPassToItem()); } if (def.Id == Program.GameEngine.Definition.Table.Id) { var ami = new MenuItem() { Header = card.Anchored ? "Unanchor" : "Anchor" }; ami.Click += (sender, args) => ContextCard.SetAnchored(false, card.Anchored == false); items.Add(ami); } if (!card.FaceUp) { var peekItem = new MenuItem { Header = "Peek", InputGestureText = "Ctrl+P" }; peekItem.Click += delegate { ContextCard.Peek(); }; items.Add(peekItem); } return items; }