Esempio n. 1
0
        private void OnButtonPressed(object o, ButtonPressEventArgs args)
        {
            if (args.Event.Type != EventType.ButtonPress || args.Event.Button != 3)
            {
                // Not a right-click, early return
                return;
            }

            this.Tree.GetPathAtPos((int)args.Event.X, (int)args.Event.Y, out var sorterPath);
            var filterPath = _treeSorter.ConvertPathToChildPath(sorterPath);
            var modelPath  = _treeFilter.ConvertPathToChildPath(filterPath);

            if (modelPath == null)
            {
                _saveItem.Sensitive           = false;
                _exportItem.Sensitive         = false;
                _openItem.Sensitive           = false;
                _queueForExportItem.Sensitive = false;
                _copyPathItem.Sensitive       = false;
                return;
            }

            var currentFileReference = _treeModel.GetReferenceByPath(this.GameContext, modelPath);

            if (currentFileReference.IsFile || currentFileReference.IsDirectory)
            {
                _saveItem.Sensitive           = true;
                _exportItem.Sensitive         = true;
                _openItem.Sensitive           = true;
                _queueForExportItem.Sensitive = true;
                _copyPathItem.Sensitive       = true;
            }
            else
            {
                _saveItem.Sensitive           = false;
                _exportItem.Sensitive         = false;
                _openItem.Sensitive           = true;
                _queueForExportItem.Sensitive = false;
                _copyPathItem.Sensitive       = false;
            }

            _treeContextMenu.ShowAll();

            //this.TreeContextMenu.Popup(); // only available in GTK >= 3.22
            _treeContextMenu.PopupForDevice(args.Event.Device, null, null, null, null, args.Event.Button, args.Event.Time);
        }