public void ShowSubmenu(IDesignArea area, Gtk.Widget refWidget) { HideSubmenu(); Gdk.Rectangle rect = area.GetCoordinates(refWidget); ActionMenu menu = new ActionMenu(wrapper, parentMenu, node); menu.ShowAll(); area.AddWidget(menu, rect.Right, rect.Top); menu.TrackWidgetPosition(refWidget, parentMenu.IsTopMenu); parentMenu.OpenSubmenu = menu; }
void SelectLastItem() { if (menuItems.Count > 0) { ((ActionMenuItem)menuItems [menuItems.Count - 1]).Select(); } else if (parentMenu.Widget is ActionMenuBar) { ActionMenuBar bar = (ActionMenuBar)parentMenu.Widget; bar.Select(parentNode); } else if (parentMenu.Widget is ActionMenu) { ActionMenu parentAM = (ActionMenu)parentMenu.Widget; parentAM.Select(parentNode); } }
public void ShowSubmenu (IDesignArea area, Gtk.Widget refWidget) { HideSubmenu (); Gdk.Rectangle rect = area.GetCoordinates (refWidget); ActionMenu menu = new ActionMenu (wrapper, parentMenu, node); menu.ShowAll (); area.AddWidget (menu, rect.Right, rect.Top); menu.TrackWidgetPosition (refWidget, parentMenu.IsTopMenu); parentMenu.OpenSubmenu = menu; }
void ProcessKey (ActionMenuItem item, Gdk.Key key, Gdk.ModifierType modifier) { int pos = menuItems.IndexOf (item); switch (key) { case Gdk.Key.Up: if (pos > 0) ((ActionMenuItem)menuItems[pos - 1]).Select (); else if (parentMenu.Widget is ActionMenuBar) { ActionMenuBar bar = (ActionMenuBar) parentMenu.Widget; bar.Select (parentNode); } break; case Gdk.Key.Down: if (pos < menuItems.Count - 1) ((ActionMenuItem)menuItems[pos + 1]).Select (); else if (pos == menuItems.Count - 1) { InsertAction (menuItems.Count); } break; case Gdk.Key.Right: if ((modifier & Gdk.ModifierType.ControlMask) != 0 && item.Node.Type == Gtk.UIManagerItemType.Menuitem) { // Create a submenu using (item.Node.Action.UndoManager.AtomicChange) { item.Node.Type = Gtk.UIManagerItemType.Menu; } item.Node.Action.NotifyChanged (); } if (item.HasSubmenu) { item.ShowSubmenu (); if (openSubmenu != null) openSubmenu.Select (null); } else if (parentNode != null) { ActionMenuBar parentMB = parentMenu.Widget as ActionMenuBar; if (parentMB != null) { int i = parentNode.ParentNode.Children.IndexOf (parentNode); if (i < parentNode.ParentNode.Children.Count - 1) parentMB.DropMenu (parentNode.ParentNode.Children [i + 1]); } } break; case Gdk.Key.Left: if ((modifier & Gdk.ModifierType.ControlMask) != 0 && item.Node.Type == Gtk.UIManagerItemType.Menu) { // Remove the submenu OpenSubmenu = null; using (item.Node.Action.UndoManager.AtomicChange) { item.Node.Type = Gtk.UIManagerItemType.Menuitem; item.Node.Children.Clear (); } item.Node.Action.NotifyChanged (); break; } if (parentNode != null) { ActionMenu parentAM = parentMenu.Widget as ActionMenu; if (parentAM != null) { parentAM.Select (parentNode); } ActionMenuBar parentMB = parentMenu.Widget as ActionMenuBar; if (parentMB != null) { int i = parentNode.ParentNode.Children.IndexOf (parentNode); if (i > 0) parentMB.DropMenu (parentNode.ParentNode.Children [i - 1]); } } break; case Gdk.Key.Return: item.EditingDone += OnEditingDone; item.StartEditing (); break; case Gdk.Key.Insert: if ((modifier & Gdk.ModifierType.ControlMask) != 0) InsertActionAt (item, true, true); else InsertActionAt (item, false, false); break; case Gdk.Key.Delete: DeleteAction (item); break; } }
void ProcessKey(ActionMenuItem item, Gdk.Key key, Gdk.ModifierType modifier) { int pos = menuItems.IndexOf(item); switch (key) { case Gdk.Key.Up: if (pos > 0) { ((ActionMenuItem)menuItems[pos - 1]).Select(); } else if (parentMenu.Widget is ActionMenuBar) { ActionMenuBar bar = (ActionMenuBar)parentMenu.Widget; bar.Select(parentNode); } break; case Gdk.Key.Down: if (pos < menuItems.Count - 1) { ((ActionMenuItem)menuItems[pos + 1]).Select(); } else if (pos == menuItems.Count - 1) { InsertAction(menuItems.Count); } break; case Gdk.Key.Right: if ((modifier & Gdk.ModifierType.ControlMask) != 0 && item.Node.Type == Gtk.UIManagerItemType.Menuitem) { // Create a submenu using (item.Node.Action.UndoManager.AtomicChange) { item.Node.Type = Gtk.UIManagerItemType.Menu; } item.Node.Action.NotifyChanged(); } if (item.HasSubmenu) { item.ShowSubmenu(); if (openSubmenu != null) { openSubmenu.Select(null); } } else if (parentNode != null) { ActionMenuBar parentMB = parentMenu.Widget as ActionMenuBar; if (parentMB != null) { int i = parentNode.ParentNode.Children.IndexOf(parentNode); if (i < parentNode.ParentNode.Children.Count - 1) { parentMB.DropMenu(parentNode.ParentNode.Children [i + 1]); } } } break; case Gdk.Key.Left: if ((modifier & Gdk.ModifierType.ControlMask) != 0 && item.Node.Type == Gtk.UIManagerItemType.Menu) { // Remove the submenu OpenSubmenu = null; using (item.Node.Action.UndoManager.AtomicChange) { item.Node.Type = Gtk.UIManagerItemType.Menuitem; item.Node.Children.Clear(); } item.Node.Action.NotifyChanged(); break; } if (parentNode != null) { ActionMenu parentAM = parentMenu.Widget as ActionMenu; if (parentAM != null) { parentAM.Select(parentNode); } ActionMenuBar parentMB = parentMenu.Widget as ActionMenuBar; if (parentMB != null) { int i = parentNode.ParentNode.Children.IndexOf(parentNode); if (i > 0) { parentMB.DropMenu(parentNode.ParentNode.Children [i - 1]); } } } break; case Gdk.Key.Return: item.EditingDone += OnEditingDone; item.StartEditing(); break; case Gdk.Key.Insert: if ((modifier & Gdk.ModifierType.ControlMask) != 0) { InsertActionAt(item, true, true); } else { InsertActionAt(item, false, false); } break; case Gdk.Key.Delete: DeleteAction(item); break; } }