|
@@ -2,6 +2,7 @@ using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
+using System.Reflection.PortableExecutable;
|
|
|
using Terminal.Gui;
|
|
|
using Terminal.Gui.Trees;
|
|
|
|
|
@@ -29,6 +30,8 @@ namespace UICatalog.Scenarios {
|
|
|
private MenuItem miCursor;
|
|
|
private MenuItem miMultiSelect;
|
|
|
|
|
|
+ private DetailsFrame detailsFrame;
|
|
|
+
|
|
|
public override void Setup ()
|
|
|
{
|
|
|
Win.Title = this.GetName ();
|
|
@@ -70,13 +73,22 @@ namespace UICatalog.Scenarios {
|
|
|
treeViewFiles = new TreeView<FileSystemInfo> () {
|
|
|
X = 0,
|
|
|
Y = 0,
|
|
|
+ Width = Dim.Percent (50),
|
|
|
+ Height = Dim.Fill (),
|
|
|
+ };
|
|
|
+
|
|
|
+ detailsFrame = new DetailsFrame () {
|
|
|
+ X = Pos.Right (treeViewFiles) + 1,
|
|
|
+ Y = 0,
|
|
|
Width = Dim.Fill (),
|
|
|
Height = Dim.Fill (),
|
|
|
};
|
|
|
|
|
|
+ Win.Add (detailsFrame);
|
|
|
treeViewFiles.ObjectActivated += TreeViewFiles_ObjectActivated;
|
|
|
treeViewFiles.MouseClick += TreeViewFiles_MouseClick;
|
|
|
treeViewFiles.KeyPress += TreeViewFiles_KeyPress;
|
|
|
+ treeViewFiles.SelectionChanged += TreeViewFiles_SelectionChanged;
|
|
|
|
|
|
SetupFileTree ();
|
|
|
|
|
@@ -85,6 +97,14 @@ namespace UICatalog.Scenarios {
|
|
|
treeViewFiles.Expand ();
|
|
|
|
|
|
SetupScrollBar ();
|
|
|
+
|
|
|
+ treeViewFiles.SetFocus ();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void TreeViewFiles_SelectionChanged (object sender, SelectionChangedEventArgs<FileSystemInfo> e)
|
|
|
+ {
|
|
|
+ ShowPropertiesOf (e.NewValue);
|
|
|
}
|
|
|
|
|
|
private void TreeViewFiles_KeyPress (View.KeyEventEventArgs obj)
|
|
@@ -138,29 +158,76 @@ namespace UICatalog.Scenarios {
|
|
|
Application.MainLoop.Invoke (menu.Show);
|
|
|
}
|
|
|
|
|
|
- private void ShowPropertiesOf (FileSystemInfo fileSystemInfo)
|
|
|
- {
|
|
|
- if (fileSystemInfo is FileInfo f) {
|
|
|
- System.Text.StringBuilder sb = new System.Text.StringBuilder ();
|
|
|
- sb.AppendLine ($"Path:{f.DirectoryName}");
|
|
|
- sb.AppendLine ($"Size:{f.Length:N0} bytes");
|
|
|
- sb.AppendLine ($"Modified:{f.LastWriteTime}");
|
|
|
- sb.AppendLine ($"Created:{f.CreationTime}");
|
|
|
-
|
|
|
- MessageBox.Query (f.Name, sb.ToString (), "Close");
|
|
|
- }
|
|
|
-
|
|
|
- if (fileSystemInfo is DirectoryInfo dir) {
|
|
|
+ class DetailsFrame : FrameView {
|
|
|
+ private FileSystemInfo fileInfo;
|
|
|
+ TextView details = new TextView () {
|
|
|
+ X = 1,
|
|
|
+ Y = 0,
|
|
|
+ Width = Dim.Fill (),
|
|
|
+ Height = Dim.Fill (),
|
|
|
+ ColorScheme = Colors.Base,
|
|
|
+ WordWrap = true,
|
|
|
+ ReadOnly = true
|
|
|
+ };
|
|
|
|
|
|
- System.Text.StringBuilder sb = new System.Text.StringBuilder ();
|
|
|
- sb.AppendLine ($"Path:{dir.Parent?.FullName}");
|
|
|
- sb.AppendLine ($"Modified:{dir.LastWriteTime}");
|
|
|
- sb.AppendLine ($"Created:{dir.CreationTime}");
|
|
|
+ public DetailsFrame ()
|
|
|
+ {
|
|
|
+ Title = "Details";
|
|
|
+ ColorScheme = Colors.Dialog;
|
|
|
+ Visible = true;
|
|
|
+ CanFocus = true;
|
|
|
+ Add (details);
|
|
|
+ }
|
|
|
|
|
|
- MessageBox.Query (dir.Name, sb.ToString (), "Close");
|
|
|
+ public FileSystemInfo FileInfo {
|
|
|
+ get => fileInfo; set {
|
|
|
+ fileInfo = value;
|
|
|
+ System.Text.StringBuilder sb = null;
|
|
|
+ if (fileInfo is FileInfo f) {
|
|
|
+ Title = $"File: {f.Name}";
|
|
|
+ sb = new System.Text.StringBuilder ();
|
|
|
+ sb.AppendLine ($"Path: {f.DirectoryName}");
|
|
|
+ sb.AppendLine ($"Size: {f.Length:N0} bytes");
|
|
|
+ sb.AppendLine ($"Modified: {f.LastWriteTime}");
|
|
|
+ sb.AppendLine ($"Created: {f.CreationTime}");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (fileInfo is DirectoryInfo dir) {
|
|
|
+ Title = $"Directory: {dir.Name}";
|
|
|
+ sb = new System.Text.StringBuilder ();
|
|
|
+ sb.AppendLine ($"Path: {dir?.FullName}");
|
|
|
+ sb.AppendLine ($"Modified: {dir.LastWriteTime}");
|
|
|
+ sb.AppendLine ($"Created: {dir.CreationTime}");
|
|
|
+ }
|
|
|
+ details.Text = sb.ToString ();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void ShowPropertiesOf (FileSystemInfo fileSystemInfo)
|
|
|
+ {
|
|
|
+ detailsFrame.FileInfo = fileSystemInfo;
|
|
|
+ //if (fileSystemInfo is FileInfo f) {
|
|
|
+ // System.Text.StringBuilder sb = new System.Text.StringBuilder ();
|
|
|
+ // sb.AppendLine ($"Path:{f.DirectoryName}");
|
|
|
+ // sb.AppendLine ($"Size:{f.Length:N0} bytes");
|
|
|
+ // sb.AppendLine ($"Modified:{f.LastWriteTime}");
|
|
|
+ // sb.AppendLine ($"Created:{f.CreationTime}");
|
|
|
+
|
|
|
+ // MessageBox.Query (f.Name, sb.ToString (), "Close");
|
|
|
+ //}
|
|
|
+
|
|
|
+ //if (fileSystemInfo is DirectoryInfo dir) {
|
|
|
+
|
|
|
+ // System.Text.StringBuilder sb = new System.Text.StringBuilder ();
|
|
|
+ // sb.AppendLine ($"Path:{dir.Parent?.FullName}");
|
|
|
+ // sb.AppendLine ($"Modified:{dir.LastWriteTime}");
|
|
|
+ // sb.AppendLine ($"Created:{dir.CreationTime}");
|
|
|
+
|
|
|
+ // MessageBox.Query (dir.Name, sb.ToString (), "Close");
|
|
|
+ //}
|
|
|
+ }
|
|
|
+
|
|
|
private void SetupScrollBar ()
|
|
|
{
|
|
|
// When using scroll bar leave the last row of the control free (for over-rendering with scroll bar)
|