コード例 #1
0
ファイル: TreeController.cs プロジェクト: zzlvff/Eto
 protected virtual void OnCollapsing(TreeGridViewItemCancelEventArgs e)
 {
     if (Collapsing != null)
     {
         Collapsing(this, e);
     }
 }
コード例 #2
0
ファイル: TreeController.cs プロジェクト: zzlvff/Eto
 protected virtual void OnExpanding(TreeGridViewItemCancelEventArgs e)
 {
     if (Expanding != null)
     {
         Expanding(this, e);
     }
 }
コード例 #3
0
ファイル: TreeGridViewHandler.cs プロジェクト: zzlvff/Eto
            public override bool ShouldCollapseItem(NSOutlineView outlineView, NSObject item)
            {
                var h = Handler;

                if (h.suppressExpandCollapseEvents > 0)
                {
                    return(true);
                }
                var myitem = h.GetEtoItem(item);

                if (myitem != null)
                {
                    var args = new TreeGridViewItemCancelEventArgs(myitem);
                    h.Callback.OnCollapsing(h.Widget, args);
                    if (!args.Cancel && !h.AllowMultipleSelection)
                    {
                        collapsedItemIsSelected = h.ChildIsSelected(myitem);
                        if (collapsedItemIsSelected == true)
                        {
                            h.skipSelectionChanged = 1;
                        }
                    }
                    else
                    {
                        collapsedItemIsSelected = null;
                    }
                    return(!args.Cancel);
                }
                collapsedItemIsSelected = null;
                return(true);
            }
コード例 #4
0
            public void HandleTestExpandRow(object o, Gtk.TestExpandRowArgs args)
            {
                var h = Handler;
                var e = new TreeGridViewItemCancelEventArgs(h.GetItem(args.Path) as ITreeGridItem);

                h.Widget.OnExpanding(e);
                args.RetVal = e.Cancel;
            }
コード例 #5
0
            public override bool ShouldExpandItem(NSOutlineView outlineView, NSObject item)
            {
                var myitem = item as EtoTreeItem;

                if (myitem != null)
                {
                    var args = new TreeGridViewItemCancelEventArgs(myitem.Item);
                    Handler.Widget.OnExpanding(args);
                    return(!args.Cancel);
                }
                return(true);
            }
コード例 #6
0
ファイル: TreeGridViewHandler.cs プロジェクト: zzlvff/Eto
            public void HandleTestExpandRow(object o, Gtk.TestExpandRowArgs args)
            {
                var h = Handler;

                if (h.suppressExpandCollapseEvents > 0)
                {
                    return;
                }
                var e = new TreeGridViewItemCancelEventArgs(h.GetItem(args.Path) as ITreeGridItem);

                h.Callback.OnExpanding(h.Widget, e);
                args.RetVal = e.Cancel;
            }
コード例 #7
0
            public void HandleTestCollapseRow(object o, Gtk.TestCollapseRowArgs args)
            {
                var h = Handler;
                var e = new TreeGridViewItemCancelEventArgs(h.GetItem(args.Path) as ITreeGridItem);

                h.Widget.OnCollapsing(e);
                args.RetVal = e.Cancel;
                if (!e.Cancel)
                {
                    h.selectCollapsingItem = !h.AllowMultipleSelection && h.ChildIsSelected(e.Item);
                    h.SkipSelectedChange   = true;
                }
            }
コード例 #8
0
ファイル: TreeController.cs プロジェクト: zzlvff/Eto
        public bool ExpandRow(int row)
        {
            var args = new TreeGridViewItemCancelEventArgs(GetItemAtRow(row));

            OnExpanding(args);
            if (args.Cancel)
            {
                return(false);
            }
            args.Item.Expanded = true;
            ExpandRowInternal(row);
            OnExpanded(new TreeGridViewItemEventArgs(args.Item));
            return(true);
        }
コード例 #9
0
ファイル: TreeGridViewHandler.cs プロジェクト: zzlvff/Eto
            public override bool ShouldExpandItem(NSOutlineView outlineView, NSObject item)
            {
                var h = Handler;

                if (h.suppressExpandCollapseEvents > 0)
                {
                    return(true);
                }
                var myitem = h.GetEtoItem(item);

                if (myitem != null)
                {
                    var args = new TreeGridViewItemCancelEventArgs(myitem);
                    h.Callback.OnExpanding(h.Widget, args);
                    return(!args.Cancel);
                }
                return(true);
            }
コード例 #10
0
            public override bool ShouldCollapseItem(NSOutlineView outlineView, NSObject item)
            {
                var myitem = item as EtoTreeItem;

                if (myitem != null)
                {
                    var args = new TreeGridViewItemCancelEventArgs(myitem.Item);
                    Handler.Widget.OnCollapsing(args);
                    if (!args.Cancel && !Handler.AllowMultipleSelection)
                    {
                        collapsedItemIsSelected = Handler.ChildIsSelected(myitem.Item);
                        skipSelectionChanged    = collapsedItemIsSelected ?? false;
                    }
                    else
                    {
                        collapsedItemIsSelected = null;
                    }
                    return(!args.Cancel);
                }
                collapsedItemIsSelected = null;
                return(true);
            }
コード例 #11
0
ファイル: TreeController.cs プロジェクト: zzlvff/Eto
        public bool CollapseRow(int row)
        {
            var args = new TreeGridViewItemCancelEventArgs(GetItemAtRow(row));

            OnCollapsing(args);
            if (args.Cancel)
            {
                return(false);
            }
            var shouldSelect = !Handler.AllowMultipleSelection && ChildIsSelected(args.Item);

            args.Item.Expanded = false;
            OnCollapsed(new TreeGridViewItemEventArgs(args.Item));
            CollapseSection(row);

            ResetCollection();

            if (shouldSelect)
            {
                Handler.SelectRow(row);
            }

            return(true);
        }
コード例 #12
0
        public override void AttachEvent(string handler)
        {
            switch (handler)
            {
            case TreeGridView.ExpandingEvent:
                this.Tree.TestExpandRow += delegate(object o, Gtk.TestExpandRowArgs args) {
                    var e = new TreeGridViewItemCancelEventArgs(GetItem(args.Path) as ITreeGridItem);
                    Widget.OnExpanding(e);
                    args.RetVal = e.Cancel;
                };
                break;

            case TreeGridView.ExpandedEvent:
                this.Tree.RowExpanded += delegate(object o, Gtk.RowExpandedArgs args) {
                    var e = new TreeGridViewItemEventArgs(GetItem(args.Path) as ITreeGridItem);
                    e.Item.Expanded = true;
                    Widget.OnExpanded(e);
                };
                break;

            case TreeGridView.CollapsingEvent:
                this.Tree.TestCollapseRow += delegate(object o, Gtk.TestCollapseRowArgs args) {
                    var e = new TreeGridViewItemCancelEventArgs(GetItem(args.Path) as ITreeGridItem);
                    Widget.OnCollapsing(e);
                    args.RetVal = e.Cancel;
                    if (!e.Cancel)
                    {
                        selectCollapsingItem = AllowMultipleSelection ? false : ChildIsSelected(e.Item);
                        SkipSelectedChange   = true;
                    }
                };
                break;

            case TreeGridView.CollapsedEvent:
                this.Tree.RowCollapsed += delegate(object o, Gtk.RowCollapsedArgs args) {
                    var e = new TreeGridViewItemEventArgs(GetItem(args.Path) as ITreeGridItem);
                    e.Item.Expanded = false;
                    Widget.OnCollapsed(e);
                    SkipSelectedChange = false;
                    if (selectCollapsingItem == true)
                    {
                        Tree.Selection.UnselectAll();
                        Tree.Selection.SelectPath(args.Path);
                        selectCollapsingItem = null;
                    }
                };
                break;

            case TreeGridView.SelectedItemChangedEvent:
                this.Tree.Selection.Changed += (o, args) => {
                    var item = this.SelectedItem;
                    if (!SkipSelectedChange && !object.ReferenceEquals(item, lastSelected))
                    {
                        Widget.OnSelectedItemChanged(EventArgs.Empty);
                        lastSelected = item;
                    }
                };
                break;

            default:
                base.AttachEvent(handler);
                break;
            }
        }
コード例 #13
0
        protected void OnTreeImagesItemExpanding(object sender, TreeGridViewItemCancelEventArgs e)
        {
            // First expansion of a device
            if ((e.Item as TreeGridItem)?.Children?.Count == 1 &&
                ((TreeGridItem)e.Item).Children[0] == placeholderItem &&
                ((TreeGridItem)e.Item).Parent == devicesRoot)
            {
                TreeGridItem deviceItem = (TreeGridItem)e.Item;

                deviceItem.Children.Clear();
                Device dev;
                try
                {
                    dev = new Device((string)deviceItem.Values[1]);
                    if (dev.Error)
                    {
                        deviceItem.Values[2] = $"Error {dev.LastError} opening device";
                        e.Cancel             = true;
                        treeImages.ReloadData();
                        treeImages.SelectedItem = deviceItem;
                        return;
                    }
                }
                catch (SystemException ex)
                {
                    deviceItem.Values[2] = ex.Message;
                    e.Cancel             = true;
                    treeImages.ReloadData();
                    DicConsole.ErrorWriteLine(ex.Message);
                    treeImages.SelectedItem = deviceItem;
                    return;
                }

                if (!dev.IsRemovable)
                {
                    deviceItem.Children.Add(new TreeGridItem
                    {
                        Values = new object[]
                        {
                            "Non-removable device commands not yet implemented"
                        }
                    });
                }
                else
                {
                    // TODO: Removable non-SCSI?
                    ScsiInfo scsiInfo = new ScsiInfo(dev);

                    if (!scsiInfo.MediaInserted)
                    {
                        deviceItem.Children.Add(new TreeGridItem {
                            Values = new object[] { "No media inserted" }
                        });
                    }
                    else
                    {
                        deviceItem.Children.Add(new TreeGridItem
                        {
                            Values = new[]
                            {
                                scsiInfo.MediaType, deviceItem.Values[1],
                                new pnlScsiInfo(scsiInfo)
                            }
                        });
                    }
                }

                dev.Close();
            }
        }