StartEditing() public méthode

public StartEditing ( ) : void
Résultat void
        internal void RestoreStatus(ArrayList status, int index)
        {
            int pos = (int)status [index];

            if (pos >= menuItems.Count)
            {
                return;
            }

            ActionMenuItem item = (ActionMenuItem)menuItems [pos];

            if (index == status.Count - 1)
            {
                // The last position in the status is the selected item
                item.Select();
                if (item.Node.Action != null && item.Node.Action.Name.Length == 0)
                {
                    // Then only case when there can have an action when an empty name
                    // is when the user clicked on the "add action" link. In this case,
                    // start editing the item again
                    item.EditingDone += OnEditingDone;
                    item.StartEditing();
                }
            }
            else
            {
                item.ShowSubmenu();
                if (OpenSubmenu != null)
                {
                    OpenSubmenu.RestoreStatus(status, index + 1);
                }
            }
        }
        void OnAddClicked(object s, Gtk.ButtonPressEventArgs args)
        {
            Wrapper.Action ac   = (Wrapper.Action)ObjectWrapper.Create(project, new Gtk.Action("", "", null, null));
            ActionMenuItem item = InsertAction(ac, actionGroup.Actions.Count);

            item.EditingDone += OnEditDone;
            item.Select();
            item.StartEditing();
            HideAddLabel();
            ShowAll();
        }
        void Fill()
        {
            menuItems.Clear();

            uint           n        = 0;
            ActionMenuItem editItem = null;

            if (nodes.Count > 0)
            {
                foreach (ActionTreeNode node in nodes)
                {
                    ActionMenuItem item = new ActionMenuItem(wrapper, this, node);
                    item.KeyPressEvent += OnItemKeyPress;
                    item.Attach(table, n++, 0);
                    menuItems.Add(item);
                    // If adding an action with an empty name, select and start editing it
//					if (node.Action != null && node.Action.Name.Length == 0)
//						editItem = item;
                }
            }

            emptyLabel = new Gtk.EventBox();
            emptyLabel.VisibleWindow = false;
            Gtk.Label label = new Gtk.Label();
            label.Xalign = 0;
            label.Markup = "<i><span foreground='darkgrey'>" + Catalog.GetString("Click to create action") + "</span></i>";
            emptyLabel.Add(label);
            emptyLabel.ButtonPressEvent += OnAddClicked;
            table.Attach(emptyLabel, 1, 2, n, n + 1);

            ShowAll();

            if (editItem != null)
            {
                // If there is an item with an empty action, it means that it was an item that was
                // being edited. Restart the editing now.
                GLib.Timeout.Add(200, delegate
                {
                    editItem.Select();
                    editItem.EditingDone += OnEditingDone;
                    editItem.StartEditing();
                    return(false);
                });
            }
        }
Exemple #4
0
        ActionTreeNode InsertAction(int pos)
        {
            using (wrapper.UndoManager.AtomicChange) {
                Wrapper.Action ac      = (Wrapper.Action)ObjectWrapper.Create(wrapper.Project, new Gtk.Action("", "", null, null));
                ActionTreeNode newNode = new ActionTreeNode(Gtk.UIManagerItemType.Menuitem, null, ac);
                nodes.Insert(pos, newNode);
                ActionMenuItem item = FindMenuItem(newNode);
                item.EditingDone += OnEditingDone;
                item.Select();
                item.StartEditing();
                emptyLabel.Hide();

                if (wrapper.LocalActionGroups.Count == 0)
                {
                    wrapper.LocalActionGroups.Add(new ActionGroup("Default"));
                }
                wrapper.LocalActionGroups [0].Actions.Add(ac);
                return(newNode);
            }
        }
Exemple #5
0
        void InsertAction(int pos)
        {
            Widget wrapper = Widget.Lookup(this);

            using (wrapper.UndoManager.AtomicChange) {
                Wrapper.Action ac   = (Wrapper.Action)ObjectWrapper.Create(wrapper.Project, new Gtk.Action("", "", null, null));
                ActionTreeNode node = new ActionTreeNode(Gtk.UIManagerItemType.Menu, "", ac);
                actionTree.Children.Insert(pos, node);

                ActionMenuItem aitem = FindMenuItem(node);
                aitem.EditingDone += OnEditingDone;
                aitem.Select();
                aitem.StartEditing();

                if (wrapper.LocalActionGroups.Count == 0)
                {
                    wrapper.LocalActionGroups.Add(new ActionGroup("Default"));
                }
                wrapper.LocalActionGroups[0].Actions.Add(ac);
            }
        }
		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;
            }
        }