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); } } }
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); } }
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()); } }; }