コード例 #1
0
        public override void MouseMoving(MouseEventArgs e)
        {
            base.MouseMoving(e);
            if (!WidgetIM.Hovering)
            {
                return;
            }
            HoveringFEW?.SetHovering(false);
            HoveringFEW = GetHoveringFile(e);
            HoveringFEW?.SetHovering(true);

            HoveringLabel?.SetBackgroundColor(Color.ALPHA);
            int rx = e.X - PathContainer.Viewport.X + PathLabels[0].Position.X - PathLabels[0].ScrolledPosition.X;
            int ry = e.Y - PathContainer.Viewport.Y;

            if (ry < 0 || ry >= PathContainer.Size.Height)
            {
                return;
            }
            for (int i = 0; i < PathLabels.Count; i++)
            {
                if (rx >= PathLabels[i].Position.X && rx < PathLabels[i].Position.X + PathLabels[i].Size.Width)
                {
                    HoveringLabel = PathLabels[i];
                    HoveringLabel.SetBackgroundColor(40, 62, 84);
                }
            }
        }
コード例 #2
0
        public override void MouseDown(MouseEventArgs e)
        {
            base.MouseDown(e);
            if (WidgetIM.Hovering && e.LeftButton != e.OldLeftButton)
            {
                if (HoveringLabel != null)
                {
                    int    idx  = PathLabels.IndexOf(HoveringLabel);
                    string path = "";
                    for (int i = 1; i <= idx; i++)
                    {
                        path += PathLabels[i].Text;
                        if (i != idx)
                        {
                            path += "/";
                        }
                    }
                    HoveringLabel = null;
                    this.SetDirectory(path);
                }

                FileEntryWidget few = GetHoveringFile(e);
                if (few == null || few != SelectedFEW)
                {
                    SelectedFEW?.SetSelected(false);
                }
                SelectedFEW = few;
                SelectedFEW?.SetSelected(true);
            }
        }
コード例 #3
0
        public void DrawItem(string Filename, bool IsFolder)
        {
            int ItemColumn = -1;
            int ItemRow    = -1;

            for (int column = 0; column < DirGrid.Columns.Count; column++)
            {
                for (int row = 0; row < DirGrid.Rows.Count; row++)
                {
                    if (DirGrid.Widgets.Find(w => w.GridColumnStart == column && w.GridRowStart == row) == null)
                    {
                        // Free spot
                        ItemColumn = column;
                        ItemRow    = row;
                        break;
                    }
                }
                if (ItemColumn != -1 && ItemRow != -1)
                {
                    break;
                }
            }
            if (ItemColumn == -1 || ItemRow == -1)
            {
                // No free spot, so add row
                DirGrid.Rows.Add(new GridSize(102, Unit.Pixels));
                ItemColumn = 0;
                ItemRow    = DirGrid.Rows.Count - 1;
            }
            FileEntryWidget few = new FileEntryWidget(DirGrid);

            few.SetGrid(ItemRow, ItemColumn);
            few.SetMargin((int)Math.Floor(ColumnMargin), 4, 0, 0);
            if (!IsFolder)
            {
                few.SetFile(Filename);
            }
            else
            {
                few.SetFolder(Filename);
            }
            few.OnSelectionChanged += delegate(BaseEventArgs e)
            {
                if (few.Selected)
                {
                    OnFileSelected?.Invoke(new BaseEventArgs());
                }
            };
            few.OnDoubleClick += delegate(BaseEventArgs e)
            {
                if (few.IsFolder)
                {
                    this.SetDirectory(few.Filename.Replace(this.BaseDirectory + '/', ""));
                }
                else
                {
                    OnFileDoubleClicked?.Invoke(new BaseEventArgs());
                }
            };
        }