示例#1
0
        private void InitKeyControl()
        {
            var UpFolderAction = new Action <TreeIter>(iter =>
            {
                if (TreeIter.Zero.Equals(iter))
                {
                    return;
                }

                TreeIter parent;
                packStore.IterParent(out parent, iter);
                RefreshFolderView(parent);
                currentFolder = parent;

                Packer.Item item          = packStore.GetValue(iter, 0) as Packer.Item;
                TreeIter selectedInFolder = FindInCurrentFolder(item);
                packTreeView.SelectAndFocus(selectedInFolder);
            });

            var DownFolderAction = new Action <TreeIter>(iter =>
            {
                if (TreeIter.Zero.Equals(iter))
                {
                    return;
                }

                RefreshFolderView(iter);
                currentFolder = iter;

                TreeIter selectedInFolder;
                folderStore.GetIterFirst(out selectedInFolder);
                packTreeView.SelectAndFocus(selectedInFolder);
            });

            packTreeView.RowActivated += (o, args) =>
            {
                TreeIter selectedInFolder;
                folderStore.GetIter(out selectedInFolder, args.Path);
                Packer.Item item = folderStore.GetValue(selectedInFolder, 2) as Packer.Item;
                if (!item.IsFolder)
                {
                    return;
                }

                if (item.IsRoot)
                {
                    UpFolderAction(currentFolder);
                }
                else
                {
                    DownFolderAction(FindInPack(item));
                }
            };

            packTreeView.AddEvents((int)(Gdk.EventMask.KeyPressMask));

            packTreeView.KeyReleaseEvent += (o, args) =>
            {
                if (args.Event.Key == Gdk.Key.BackSpace)
                {
                    UpFolderAction(currentFolder);
                }

                if (args.Event.Key == Gdk.Key.Delete)
                {
                    RemoveAction.Activate();
                }
            };
        }