mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-01 00:46:39 +01:00
added ShowLines and TreeNode support
This commit is contained in:
@@ -27,6 +27,9 @@ namespace UICatalog.Scenarios {
|
||||
new MenuBarItem ("_File", new MenuItem [] {
|
||||
new MenuItem ("_Quit", "", () => Quit()),
|
||||
}),
|
||||
new MenuBarItem ("_View", new MenuItem [] {
|
||||
new MenuItem ("_ShowLines", "", () => ShowLines()),
|
||||
}),
|
||||
});
|
||||
Top.Add (menu);
|
||||
|
||||
@@ -34,6 +37,7 @@ namespace UICatalog.Scenarios {
|
||||
new StatusItem(Key.F2, "~F2~ Add Root Drives", () => AddRootDrives()),
|
||||
new StatusItem(Key.F3, "~F3~ Remove Root Object", () => RemoveRoot()),
|
||||
new StatusItem(Key.F4, "~F4~ Clear Objects", () => ClearObjects()),
|
||||
new StatusItem(Key.F5, "~F5~ Simple Tree", () => AddSimpleTree()),
|
||||
new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Quit", () => Quit()),
|
||||
});
|
||||
Top.Add (statusBar);
|
||||
@@ -54,6 +58,22 @@ namespace UICatalog.Scenarios {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Win.Add (_treeView);
|
||||
}
|
||||
|
||||
private void ShowLines ()
|
||||
{
|
||||
_treeView.ShowBranchLines = !_treeView.ShowBranchLines;
|
||||
_treeView.SetNeedsDisplay();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets up children getter delegates that return subfolders/files from directories
|
||||
/// </summary>
|
||||
private void SetupFileSystemDelegates ()
|
||||
{
|
||||
|
||||
// As a shortcut to enumerating half the file system, tell tree that all directories are expandable (even if they turn out to be empty later on)
|
||||
_treeView.CanExpandGetter = (o)=>o is DirectoryInfo;
|
||||
|
||||
@@ -62,8 +82,80 @@ namespace UICatalog.Scenarios {
|
||||
|
||||
// Determines how to represent objects as strings on the screen
|
||||
_treeView.AspectGetter = AspectGetter;
|
||||
}
|
||||
|
||||
Win.Add (_treeView);
|
||||
private void AddSimpleTree ()
|
||||
{
|
||||
ClearObjects();
|
||||
|
||||
// Clear any previous delegates
|
||||
_treeView.CanExpandGetter = null;
|
||||
_treeView.ChildrenGetter = null;
|
||||
|
||||
// Add 2 root nodes with simple set of subfolders
|
||||
_treeView.AddObject(CreateSimpleRoot());
|
||||
_treeView.AddObject(CreateSimpleRoot());
|
||||
}
|
||||
|
||||
private ITreeNode CreateSimpleRoot ()
|
||||
{
|
||||
|
||||
return new TreeNode("Root"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("Folder_1"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("Folder_1.1"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("File_1.1.1"),
|
||||
new TreeNode("File_1.1.2")
|
||||
}},
|
||||
new TreeNode("Folder_1.2"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("File_1.2.1"),
|
||||
new TreeNode("File_1.2.2")
|
||||
}},
|
||||
new TreeNode("File_1.1")
|
||||
}},
|
||||
new TreeNode("Folder_2"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("Folder_2.1"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("File_2.1.1"),
|
||||
new TreeNode("File_2.1.2")
|
||||
}},
|
||||
new TreeNode("Folder_2.2"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("File_2.2.1"),
|
||||
new TreeNode("File_2.2.2")
|
||||
}},
|
||||
new TreeNode("File_2.1")
|
||||
}},
|
||||
new TreeNode("Folder_3"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("Folder_3.1"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("File_3.1.1"),
|
||||
new TreeNode("File_3.1.2")
|
||||
}},
|
||||
new TreeNode("Folder_3.2"){
|
||||
Children = new List<ITreeNode>()
|
||||
{
|
||||
new TreeNode("File_3.2.1"),
|
||||
new TreeNode("File_3.2.2")
|
||||
}},
|
||||
new TreeNode("File_3.1")
|
||||
}}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void ClearObjects()
|
||||
@@ -72,6 +164,8 @@ namespace UICatalog.Scenarios {
|
||||
}
|
||||
private void AddRootDrives()
|
||||
{
|
||||
SetupFileSystemDelegates();
|
||||
|
||||
_treeView.AddObjects(DriveInfo.GetDrives().Select(d=>d.RootDirectory));
|
||||
}
|
||||
private void RemoveRoot()
|
||||
|
||||
Reference in New Issue
Block a user