mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-02 01:03:29 +01:00
Attempt to Publish v2 API docs
This commit is contained in:
225
v2_docs/articles/config.html
Normal file
225
v2_docs/articles/config.html
Normal file
@@ -0,0 +1,225 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Configuration Management </title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content="Configuration Management ">
|
||||
<meta name="generator" content="docfx ">
|
||||
|
||||
<link rel="shortcut icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="../styles/docfx.css">
|
||||
<link rel="stylesheet" href="../styles/main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Sans Pro" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Code Pro" rel="stylesheet">
|
||||
<meta property="docfx:navrel" content="../toc.html">
|
||||
<meta property="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta property="docfx:rel" content="../">
|
||||
|
||||
</head> <body data-spy="scroll" data-target="#affix" data-offset="120">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
|
||||
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/logo48.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<form class="navbar-form navbar-right" role="search" id="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="subnav navbar navbar-default">
|
||||
<div class="container hide-when-search" id="breadcrumb">
|
||||
<ul class="breadcrumb">
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container body-content">
|
||||
|
||||
<div id="search-results">
|
||||
<div class="search-list">Search Results for <span></span></div>
|
||||
<div class="sr-items">
|
||||
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
|
||||
</div>
|
||||
<ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div role="main" class="container body-content hide-when-search">
|
||||
<div class="article row grid">
|
||||
<div class="col-md-10">
|
||||
<article class="content wrap" id="_content" data-uid="">
|
||||
<h1 id="configuration-management">Configuration Management</h1>
|
||||
|
||||
<p>Terminal.Gui provides configuration and theme management for Terminal.Gui applications via the [<code>ConfigurationManager</code>](~/api/Terminal.Gui/Terminal.Gui.</p>
|
||||
<ol>
|
||||
<li><strong>Settings</strong>. Settings are applied to the <a href="../api/Terminal.Gui/Terminal.Gui.Application.html"><code>Application</code></a> class. Settings are accessed via the <code>Settings</code> property of the <a href="../api/Terminal.Gui/Terminal.Gui.ConfigurationManager.html"><code>ConfigurationManager</code></a> class.</li>
|
||||
<li><strong>Themes</strong>. Themes are a named collection of settings impacting how applications look. The default theme is named "Default". The built-in configuration stored within the Terminal.Gui library defines two additional themes: "Dark", and "Light". Additional themes can be defined in the configuration files.</li>
|
||||
<li><strong>AppSettings</strong>. AppSettings allow applicaitons to use the <a href="../api/Terminal.Gui/Terminal.Gui.ConfigurationManager.html"><code>ConfigurationManager</code></a> to store and retrieve application-specific settings.</li>
|
||||
</ol>
|
||||
<p>The The <a href="../api/Terminal.Gui/Terminal.Gui.ConfigurationManager.html"><code>ConfigurationManager</code></a> will look for configuration files in the <code>.tui</code> folder in the user's home directory (e.g. <code>C:/Users/username/.tui</code> or <code>/usr/username/.tui</code>), the folder where the Terminal.Gui application was launched from (e.g. <code>./.tui</code>), or as a resource within the Terminal.Gui application's main assembly.</p>
|
||||
<p>Settings that will apply to all applications (global settings) reside in files named config.json. Settings that will apply to a specific Terminal.Gui application reside in files named appname.config.json, where appname is the assembly name of the application (e.g. <code>UICatalog.config.json</code>).</p>
|
||||
<p>Settings are applied using the following precedence (higher precedence settings overwrite lower precedence settings):</p>
|
||||
<ol>
|
||||
<li><p>App specific settings found in the users's home directory (<code>~/.tui/appname.config.json</code>). -- Highest precedence.</p>
|
||||
</li>
|
||||
<li><p>App specific settings found in the directory the app was launched from (<code>./.tui/appname.config.json</code>).</p>
|
||||
</li>
|
||||
<li><p>App settings in app resources (<code>Resources/config.json</code>).</p>
|
||||
</li>
|
||||
<li><p>Global settings found in the the user's home directory (<code>~/.tui/config.json</code>).</p>
|
||||
</li>
|
||||
<li><p>Global settings found in the directory the app was launched from (<code>./.tui/config.json</code>).</p>
|
||||
</li>
|
||||
<li><p>Default settings defined in the Terminal.Gui assembly -- Lowest precedence.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<p>The <code>UI Catalog</code> application provides an example of how to use the <a href="../api/Terminal.Gui/Terminal.Gui.ConfigurationManager.html"><code>ConfigurationManager</code></a> class to load and save configuration files. The <code>Configuration Editor</code> scenario provides an editor that allows users to edit the configuration files. UI Catalog also uses a file system watcher to detect changes to the configuration files to tell <a href="../api/Terminal.Gui/Terminal.Gui.ConfigurationManager.html"><code>ConfigurationManager</code></a> to reaload them; allowing users to change settings without having to restart the application.</p>
|
||||
<h1 id="what-can-be-configured">What Can Be Configured</h1>
|
||||
<h2 id="settings">Settings</h2>
|
||||
<p>(Note, this list may not be complete; search the source code for <code>SerializableConfigurationProperty</code> to find all settings that can be configured.)</p>
|
||||
<pre><code>* [Application.QuitKey](~/api/Terminal.Gui/Terminal.Gui.Application.yml#Terminal_Gui_Application_QuitKey)
|
||||
* [Application.AlternateForwardKey](~/api/Terminal.Gui/Terminal.Gui.Application.yml#Terminal_Gui_Application_AlternateForwardKey)
|
||||
* [Application.AlternateBackwardKey](~/api/Terminal.Gui/Terminal.Gui.Application.yml#Terminal_Gui_Application_AlternateBackwardKey)
|
||||
* [Application.UseSystemConsole](~/api/Terminal.Gui/Terminal.Gui.Application.yml#Terminal_Gui_Application_UseSystemConsole)
|
||||
* [Application.IsMouseDisabled](~/api/Terminal.Gui/Terminal.Gui.Application.yml#Terminal_Gui_Application_IsMouseDisabled)
|
||||
* [Application.EnableConsoleScrolling](~/api/Terminal.Gui/Terminal.Gui.Application.yml#Terminal_Gui_Application_EnableConsoleScrolling)
|
||||
</code></pre>
|
||||
<h2 id="glyphs">Glyphs</h2>
|
||||
<p>Defines the standard set of glyphs used for standard views (e.g. the default indicator for <a href="../api/Terminal.Gui/Terminal.Gui.Button.html">Button</a>) and line drawing (e.g. <a href="../api/Terminal.Gui/Terminal.Gui.LineCanvas.html">LineCanvas</a>).</p>
|
||||
<p>The value can be either a decimal number or a string. The string may be:</p>
|
||||
<ul>
|
||||
<li>A unicode char (e.g. "☑")</li>
|
||||
<li>A hex value in U+ format (e.g. "U+2611")</li>
|
||||
<li>A hex value in UTF-16 format (e.g. "\u2611")</li>
|
||||
</ul>
|
||||
<pre><code class="lang-json"> "Glyphs": {
|
||||
"RightArrow": "►",
|
||||
"LeftArrow": "U+25C4",
|
||||
"DownArrow": "\\u25BC",
|
||||
"UpArrow": 965010
|
||||
}
|
||||
</code></pre>
|
||||
<h2 id="themes">Themes</h2>
|
||||
<p>A Theme is a named collection of settings that impact the visual style of Terminal.Gui applications. The default theme is named "Default". The built-in configuration stored within the Terminal.Gui library defines two more themes: "Dark", and "Light". Additional themes can be defined in the configuration files.</p>
|
||||
<p>The Json property <code>Theme</code> defines the name of the theme that will be used. If the theme is not found, the default theme will be used.</p>
|
||||
<p>Themes support defining ColorSchemes as well as various default settings for Views. Both the default color schemes and user defined color schemes can be configured. See <a href="../api/Terminal.Gui/Terminal.Gui.Colors.html">ColorSchemes</a> for more information.</p>
|
||||
<h1 id="example-configuration-file">Example Configuration File</h1>
|
||||
<pre><code class="lang-json">{
|
||||
"$schema": "https://gui-cs.github.io/Terminal.Gui/schemas/tui-config-schema.json",
|
||||
"Application.QuitKey": {
|
||||
"Key": "Esc"
|
||||
},
|
||||
"AppSettings": {
|
||||
"UICatalog.StatusBar": false
|
||||
},
|
||||
"Theme": "UI Catalog Theme",
|
||||
"Themes": [
|
||||
{
|
||||
"UI Catalog Theme": {
|
||||
"ColorSchemes": [
|
||||
{
|
||||
"UI Catalog Scheme": {
|
||||
"Normal": {
|
||||
"Foreground": "White",
|
||||
"Background": "Green"
|
||||
},
|
||||
"Focus": {
|
||||
"Foreground": "Green",
|
||||
"Background": "White"
|
||||
},
|
||||
"HotNormal": {
|
||||
"Foreground": "Blue",
|
||||
"Background": "Green"
|
||||
},
|
||||
"HotFocus": {
|
||||
"Foreground": "BrightRed",
|
||||
"Background": "White"
|
||||
},
|
||||
"Disabled": {
|
||||
"Foreground": "BrightGreen",
|
||||
"Background": "Gray"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"TopLevel": {
|
||||
"Normal": {
|
||||
"Foreground": "DarkGray",
|
||||
"Background": "White"
|
||||
...
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"Dialog.DefaultEffect3D": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</code></pre>
|
||||
<h1 id="configuration-file-schema">Configuration File Schema</h1>
|
||||
<p>Settings are defined in JSON format, according to the schema found here:</p>
|
||||
<p><a href="https://gui-cs.github.io/Terminal.Gui/schemas/tui-config-schema.json">https://gui-cs.github.io/Terminal.Gui/schemas/tui-config-schema.json</a></p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="hidden-sm col-md-2" role="complementary">
|
||||
<div class="sideaffix">
|
||||
<div class="contribution">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="https://github.com/gui-cs/Terminal.Gui/blob/v2_develop/docfx/articles/config.md/#L1" class="contribution-link">Improve this Doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
|
||||
<h5>In This Article</h5>
|
||||
<div></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="grad-bottom"></div>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<span class="pull-right">
|
||||
<a href="#top">Back to top</a>
|
||||
</span>
|
||||
|
||||
<span>Generated by <strong>DocFX</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="../styles/docfx.vendor.min.js"></script>
|
||||
<script type="text/javascript" src="../styles/docfx.js"></script>
|
||||
<script type="text/javascript" src="../styles/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
118
v2_docs/articles/drivers.html
Normal file
118
v2_docs/articles/drivers.html
Normal file
@@ -0,0 +1,118 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Cross-Platform Driver Model </title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content="Cross-Platform Driver Model ">
|
||||
<meta name="generator" content="docfx ">
|
||||
|
||||
<link rel="shortcut icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="../styles/docfx.css">
|
||||
<link rel="stylesheet" href="../styles/main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Sans Pro" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Code Pro" rel="stylesheet">
|
||||
<meta property="docfx:navrel" content="../toc.html">
|
||||
<meta property="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta property="docfx:rel" content="../">
|
||||
|
||||
</head> <body data-spy="scroll" data-target="#affix" data-offset="120">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
|
||||
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/logo48.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<form class="navbar-form navbar-right" role="search" id="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="subnav navbar navbar-default">
|
||||
<div class="container hide-when-search" id="breadcrumb">
|
||||
<ul class="breadcrumb">
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container body-content">
|
||||
|
||||
<div id="search-results">
|
||||
<div class="search-list">Search Results for <span></span></div>
|
||||
<div class="sr-items">
|
||||
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
|
||||
</div>
|
||||
<ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div role="main" class="container body-content hide-when-search">
|
||||
<div class="article row grid">
|
||||
<div class="col-md-10">
|
||||
<article class="content wrap" id="_content" data-uid="">
|
||||
<h1 id="cross-platform-driver-model">Cross-Platform Driver Model</h1>
|
||||
|
||||
<p><strong>Terminal.Gui</strong> has support for <a href="https://github.com/gui-cs/Terminal.Gui/blob/master/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs">ncurses</a>, <a href="https://github.com/gui-cs/Terminal.Gui/blob/master/Terminal.Gui/ConsoleDrivers/NetDriver.cs"><code>System.Console</code></a>, and a full <a href="https://github.com/gui-cs/Terminal.Gui/blob/master/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs">Win32 Console</a> front-end.</p>
|
||||
<p><code>ncurses</code> is used on Mac/Linux/Unix with color support based on what your library is compiled with; the Windows driver supports full color and mouse, and an easy-to-debug <code>System.Console</code> can be used on Windows and Unix, but lacks mouse support.</p>
|
||||
<p>You can force the use of <code>System.Console</code> on Unix as well; see <code>Core.cs</code>.</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="hidden-sm col-md-2" role="complementary">
|
||||
<div class="sideaffix">
|
||||
<div class="contribution">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="https://github.com/gui-cs/Terminal.Gui/blob/v2_develop/docfx/articles/drivers.md/#L1" class="contribution-link">Improve this Doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
|
||||
<h5>In This Article</h5>
|
||||
<div></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="grad-bottom"></div>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<span class="pull-right">
|
||||
<a href="#top">Back to top</a>
|
||||
</span>
|
||||
|
||||
<span>Generated by <strong>DocFX</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="../styles/docfx.vendor.min.js"></script>
|
||||
<script type="text/javascript" src="../styles/docfx.js"></script>
|
||||
<script type="text/javascript" src="../styles/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
125
v2_docs/articles/index.html
Normal file
125
v2_docs/articles/index.html
Normal file
@@ -0,0 +1,125 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Conceptual Documentation </title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content="Conceptual Documentation ">
|
||||
<meta name="generator" content="docfx ">
|
||||
|
||||
<link rel="shortcut icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="../styles/docfx.css">
|
||||
<link rel="stylesheet" href="../styles/main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Sans Pro" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Code Pro" rel="stylesheet">
|
||||
<meta property="docfx:navrel" content="../toc.html">
|
||||
<meta property="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta property="docfx:rel" content="../">
|
||||
|
||||
</head> <body data-spy="scroll" data-target="#affix" data-offset="120">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
|
||||
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/logo48.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<form class="navbar-form navbar-right" role="search" id="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="subnav navbar navbar-default">
|
||||
<div class="container hide-when-search" id="breadcrumb">
|
||||
<ul class="breadcrumb">
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container body-content">
|
||||
|
||||
<div id="search-results">
|
||||
<div class="search-list">Search Results for <span></span></div>
|
||||
<div class="sr-items">
|
||||
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
|
||||
</div>
|
||||
<ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div role="main" class="container body-content hide-when-search">
|
||||
<div class="article row grid">
|
||||
<div class="col-md-10">
|
||||
<article class="content wrap" id="_content" data-uid="">
|
||||
<h1 id="conceptual-documentation">Conceptual Documentation</h1>
|
||||
|
||||
<ul>
|
||||
<li><a href="overview.html">Terminal.Gui Overview</a></li>
|
||||
<li><a href="views.html">List of Views</a></li>
|
||||
<li><a href="keyboard.html">Keyboard Event Processing</a></li>
|
||||
<li><a href="mainloop.html">Event Processing and the Application Main Loop</a></li>
|
||||
<li><a href="drivers.html">Cross-platform Driver Model</a></li>
|
||||
<li><a href="config.html">Configuration and Theme Manager</a></li>
|
||||
<li><a href="tableview.html">TableView Deep Dive</a></li>
|
||||
<li><a href="treeview.html">TreeView Deep Dive</a></li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="hidden-sm col-md-2" role="complementary">
|
||||
<div class="sideaffix">
|
||||
<div class="contribution">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="https://github.com/gui-cs/Terminal.Gui/blob/v2_develop/docfx/articles/index.md/#L1" class="contribution-link">Improve this Doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
|
||||
<h5>In This Article</h5>
|
||||
<div></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="grad-bottom"></div>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<span class="pull-right">
|
||||
<a href="#top">Back to top</a>
|
||||
</span>
|
||||
|
||||
<span>Generated by <strong>DocFX</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="../styles/docfx.vendor.min.js"></script>
|
||||
<script type="text/javascript" src="../styles/docfx.js"></script>
|
||||
<script type="text/javascript" src="../styles/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
169
v2_docs/articles/keyboard.html
Normal file
169
v2_docs/articles/keyboard.html
Normal file
@@ -0,0 +1,169 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Keyboard Event Processing </title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content="Keyboard Event Processing ">
|
||||
<meta name="generator" content="docfx ">
|
||||
|
||||
<link rel="shortcut icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="../styles/docfx.css">
|
||||
<link rel="stylesheet" href="../styles/main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Sans Pro" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Code Pro" rel="stylesheet">
|
||||
<meta property="docfx:navrel" content="../toc.html">
|
||||
<meta property="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta property="docfx:rel" content="../">
|
||||
|
||||
</head> <body data-spy="scroll" data-target="#affix" data-offset="120">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
|
||||
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/logo48.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<form class="navbar-form navbar-right" role="search" id="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="subnav navbar navbar-default">
|
||||
<div class="container hide-when-search" id="breadcrumb">
|
||||
<ul class="breadcrumb">
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container body-content">
|
||||
|
||||
<div id="search-results">
|
||||
<div class="search-list">Search Results for <span></span></div>
|
||||
<div class="sr-items">
|
||||
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
|
||||
</div>
|
||||
<ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div role="main" class="container body-content hide-when-search">
|
||||
<div class="article row grid">
|
||||
<div class="col-md-10">
|
||||
<article class="content wrap" id="_content" data-uid="">
|
||||
<h1 id="keyboard-event-processing">Keyboard Event Processing</h1>
|
||||
|
||||
<p><strong>Terminal.Gui</strong> respects common Linux, Mac, and Windows keyboard idioms. For example, clipboard operations use the familiar <code>Control/Command-C, X, V</code> model. <code>CTRL-Q</code> is used for exiting views (and apps).</p>
|
||||
<p>The input handling of <strong>Terminal.Gui</strong> is similar in some ways to Emacs and the Midnight Commander, so you can expect some of the special key combinations to be active.</p>
|
||||
<p>The key <code>ESC</code> can act as an Alt modifier (or Meta in Emacs parlance), to allow input on terminals that do not have an alt key. So to produce the sequence <code>Alt-F</code>, you can press either <code>Alt-F</code>, or <code>ESC</code> followed by the key <code>F</code>.</p>
|
||||
<p>To enter the key <code>ESC</code>, you can either press <code>ESC</code> and wait 100 milliseconds, or you can press <code>ESC</code> twice.</p>
|
||||
<p><code>ESC-0</code>, and <code>ESC-1</code> through <code>ESC-9</code> have a special meaning, they map to <code>F10</code>, and <code>F1</code> to <code>F9</code> respectively.</p>
|
||||
<p>Apps can change key bindings using the <code>AddKeyBinding</code> API.</p>
|
||||
<p>Keyboard events are sent by the <a href="mainloop.html">Main Loop</a> to the
|
||||
Application class for processing. The keyboard events are sent
|
||||
exclusively to the current <code>Toplevel</code>, this being either the default
|
||||
that is created when you call <code>Application.Init</code>, or one that you
|
||||
created an passed to <code>Application.Run(Toplevel)</code>.</p>
|
||||
<h2 id="flow">Flow</h2>
|
||||
<p>Keystrokes are first processes as hotkeys, then as regular keys, and
|
||||
there is a final cold post-processing event that is invoked if no view
|
||||
processed the key.</p>
|
||||
<h2 id="hotkey-processing">HotKey Processing</h2>
|
||||
<p>Events are first send to all views as a "HotKey", this means that the
|
||||
<code>View.ProcessHotKey</code> method is invoked on the current toplevel, which
|
||||
in turns propagates this to all the views in the hierarchy. If any
|
||||
view decides to process the event, no further processing takes place.</p>
|
||||
<p>This is how hotkeys for buttons are implemented. For example, the
|
||||
keystroke "Alt-A" is handled by Buttons that have a hot-letter "A" to
|
||||
activate the button.</p>
|
||||
<h2 id="regular-processing">Regular Processing</h2>
|
||||
<p>Unlike the hotkey processing, the regular processing is only sent to
|
||||
the currently focused view in the focus chain.</p>
|
||||
<p>The regular key processing is only invoked if no hotkey was caught.</p>
|
||||
<h2 id="cold-key-processing">Cold-key Processing</h2>
|
||||
<p>This stage only is executed if the focused view did not process the
|
||||
event, and is broadcast to all the views in the Toplevel.</p>
|
||||
<p>This method can be overwritten by views that want to provide
|
||||
accelerator functionality (Alt-key for example), but without
|
||||
interfering with normal ProcessKey behavior.</p>
|
||||
<h2 id="key-bindings">Key Bindings</h2>
|
||||
<p><strong>Terminal.Gui</strong> supports rebinding keys. For example the default key
|
||||
for activating a button is Enter. You can change this using the
|
||||
<code>ClearKeybinding</code> and <code>AddKeybinding</code> methods:</p>
|
||||
<pre><code class="lang-csharp">var btn = new Button ("Press Me");
|
||||
btn.ClearKeybinding (Command.Accept);
|
||||
btn.AddKeyBinding (Key.b, Command.Accept);
|
||||
</code></pre>
|
||||
<p>The <code>Command</code> enum lists generic operations that are implemented by views.
|
||||
For example <code>Command.Accept</code> in a Button results in the <code>Clicked</code> event
|
||||
firing while in <code>TableView</code> it is bound to <code>CellActivated</code>. Not all commands
|
||||
are implemented by all views (e.g. you cannot scroll in a Button). To see
|
||||
which commands are implemented by a View you can use the <code>GetSupportedCommands()</code>
|
||||
method.</p>
|
||||
<p>Not all controls have the same key bound for a given command, for example
|
||||
<code>Command.Accept</code> defaults to <code>Key.Enter</code> in a <code>Button</code> but defaults to <code>Key.Space</code>
|
||||
in <code>RadioGroup</code>.</p>
|
||||
<h2 id="global-key-handler">Global Key Handler</h2>
|
||||
<p>Sometimes you may want to define global key handling logic for your entire
|
||||
application that is invoked regardless of what Window/View has focus. This can
|
||||
be achieved by using the <code>Application.RootKeyEvent</code> event.</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="hidden-sm col-md-2" role="complementary">
|
||||
<div class="sideaffix">
|
||||
<div class="contribution">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="https://github.com/gui-cs/Terminal.Gui/blob/v2_develop/docfx/articles/keyboard.md/#L1" class="contribution-link">Improve this Doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
|
||||
<h5>In This Article</h5>
|
||||
<div></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="grad-bottom"></div>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<span class="pull-right">
|
||||
<a href="#top">Back to top</a>
|
||||
</span>
|
||||
|
||||
<span>Generated by <strong>DocFX</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="../styles/docfx.vendor.min.js"></script>
|
||||
<script type="text/javascript" src="../styles/docfx.js"></script>
|
||||
<script type="text/javascript" src="../styles/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
230
v2_docs/articles/mainloop.html
Normal file
230
v2_docs/articles/mainloop.html
Normal file
@@ -0,0 +1,230 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Event Processing and the Application Main Loop </title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content="Event Processing and the Application Main Loop ">
|
||||
<meta name="generator" content="docfx ">
|
||||
|
||||
<link rel="shortcut icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="../styles/docfx.css">
|
||||
<link rel="stylesheet" href="../styles/main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Sans Pro" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Code Pro" rel="stylesheet">
|
||||
<meta property="docfx:navrel" content="../toc.html">
|
||||
<meta property="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta property="docfx:rel" content="../">
|
||||
|
||||
</head> <body data-spy="scroll" data-target="#affix" data-offset="120">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
|
||||
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/logo48.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<form class="navbar-form navbar-right" role="search" id="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="subnav navbar navbar-default">
|
||||
<div class="container hide-when-search" id="breadcrumb">
|
||||
<ul class="breadcrumb">
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container body-content">
|
||||
|
||||
<div id="search-results">
|
||||
<div class="search-list">Search Results for <span></span></div>
|
||||
<div class="sr-items">
|
||||
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
|
||||
</div>
|
||||
<ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div role="main" class="container body-content hide-when-search">
|
||||
<div class="article row grid">
|
||||
<div class="col-md-10">
|
||||
<article class="content wrap" id="_content" data-uid="">
|
||||
<h1 id="event-processing-and-the-application-main-loop">Event Processing and the Application Main Loop</h1>
|
||||
|
||||
<p><em>See also <a href="drivers.html">Cross-platform Driver Model</a></em></p>
|
||||
<p>The method <code>Application.Run</code> that we covered before will wait for
|
||||
events from either the keyboard or mouse and route those events to the
|
||||
proper view.</p>
|
||||
<p>The job of waiting for events and dispatching them in the
|
||||
<code>Application</code> is implemented by an instance of the
|
||||
<a href=""><code>MainLoop</code></a>
|
||||
class.</p>
|
||||
<p>Mainloops are a common idiom in many user interface toolkits so many
|
||||
of the concepts will be familiar to you if you have used other
|
||||
toolkits before.</p>
|
||||
<p>This class provides the following capabilities:</p>
|
||||
<ul>
|
||||
<li>Keyboard and mouse processing</li>
|
||||
<li>.NET Async support</li>
|
||||
<li>Timers processing</li>
|
||||
<li>Invoking of UI code from a background thread</li>
|
||||
<li>Idle processing handlers</li>
|
||||
<li>Possibility of integration with other mainloops.</li>
|
||||
<li>On Unix systems, it can monitor file descriptors for readability or writability.</li>
|
||||
</ul>
|
||||
<p>The <code>MainLoop</code> property in the the
|
||||
<a href="../api/Terminal.Gui/Terminal.Gui.Application.html"><code>Application</code></a>
|
||||
provides access to these functions.</p>
|
||||
<p>When your code invokes <code>Application.Run (Toplevel)</code>, the application
|
||||
will prepare the current
|
||||
<a href="../api/Terminal.Gui/Terminal.Gui.Toplevel.html"><code>Toplevel</code></a> instance by
|
||||
redrawing the screen appropriately and then calling the mainloop to
|
||||
run.</p>
|
||||
<p>You can configure the Mainloop before calling Application.Run, or you
|
||||
can configure the MainLoop in response to events during the execution.</p>
|
||||
<p>The keyboard inputs is dispatched by the application class to the
|
||||
current TopLevel window this is covered in more detail in the
|
||||
<a href="keyboard.html">Keyboard Event Processing</a> document.</p>
|
||||
<h2 id="async-execution">Async Execution</h2>
|
||||
<p>On startup, the <code>Application</code> class configured the .NET Asynchronous
|
||||
machinery to allow you to use the <code>await</code> keyword to run tasks in the
|
||||
background and have the execution of those tasks resume on the context
|
||||
of the main thread running the main loop.</p>
|
||||
<p>Once you invoke <code>Application.Main</code> the async machinery will be ready
|
||||
to use, and you can merely call methods using <code>await</code> from your main
|
||||
thread, and the awaited code will resume execution on the main
|
||||
thread.</p>
|
||||
<h2 id="timers-processing">Timers Processing</h2>
|
||||
<p>You can register timers to be executed at specified intervals by
|
||||
calling the <a href=""><code>AddTimeout</code></a> method, like this:</p>
|
||||
<pre><code class="lang-csharp">void UpdateTimer ()
|
||||
{
|
||||
time.Text = DateTime.Now.ToString ();
|
||||
}
|
||||
|
||||
var token = Application.MainLoop.AddTimeout (TimeSpan.FromSeconds (20), UpdateTimer);
|
||||
</code></pre>
|
||||
<p>The return value from AddTimeout is a token value that you can use if
|
||||
you desire to cancel the timer before it runs:</p>
|
||||
<pre><code class="lang-csharup">Application.MainLoop.RemoveTimeout (token);
|
||||
</code></pre>
|
||||
<h2 id="idle-handlers">Idle Handlers</h2>
|
||||
<p>You can register code to be executed when the application is idling
|
||||
and there are no events to process by calling the
|
||||
<a href=""><code>AddIdle</code></a>
|
||||
method. This method takes as a parameter a function that will be
|
||||
invoked when the application is idling.</p>
|
||||
<p>Idle functions should return <code>true</code> if they should be invoked again,
|
||||
and <code>false</code> if the idle invocations should stop.</p>
|
||||
<p>Like the timer APIs, the return value is a token that can be used to
|
||||
cancel the scheduled idle function from being executed.</p>
|
||||
<h2 id="threading">Threading</h2>
|
||||
<p>Like other UI toolkits, Terminal.Gui is generally not thread safe.
|
||||
You should avoid calling methods in the UI classes from a background
|
||||
thread as there is no guarantee that they will not corrupt the state
|
||||
of the UI application.</p>
|
||||
<p>Generally, as there is not much state, you will get lucky, but the
|
||||
application will not behave properly.</p>
|
||||
<p>You will be served better off by using C# async machinery and the
|
||||
various APIs in the <code>System.Threading.Tasks.Task</code> APIs. But if you
|
||||
absolutely must work with threads on your own you should only invoke
|
||||
APIs in Terminal.Gui from the main thread.</p>
|
||||
<p>To make this simple, you can use the <code>Application.MainLoop.Invoke</code>
|
||||
method and pass an <code>Action</code>. This action will be queued for execution
|
||||
on the main thread at an appropriate time and will run your code
|
||||
there.</p>
|
||||
<p>For example, the following shows how to properly update a label from a
|
||||
background thread:</p>
|
||||
<pre><code>void BackgroundThreadUpdateProgress ()
|
||||
{
|
||||
Application.MainLoop.Invoke (() => {
|
||||
progress.Text = $"Progress: {bytesDownloaded/totalBytes}";
|
||||
});
|
||||
}
|
||||
</code></pre>
|
||||
<h2 id="integration-with-other-main-loop-drivers">Integration With Other Main Loop Drivers</h2>
|
||||
<p>It is possible to run the main loop in a way that it does not take
|
||||
over control of your application, but rather in a cooperative way.</p>
|
||||
<p>To do this, you must use the lower-level APIs in <code>Application</code>: the
|
||||
<code>Begin</code> method to prepare a toplevel for execution, followed by calls
|
||||
to <code>MainLoop.EventsPending</code> to determine whether the events must be
|
||||
processed, and in that case, calling <code>RunLoop</code> method and finally
|
||||
completing the process by calling <code>End</code>.</p>
|
||||
<p>The method <code>Run</code> is implemented like this:</p>
|
||||
<pre><code>void Run (Toplevel top)
|
||||
{
|
||||
var runToken = Begin (view);
|
||||
RunLoop (runToken);
|
||||
End (runToken);
|
||||
}
|
||||
</code></pre>
|
||||
<h2 id="unix-file-descriptor-monitoring">Unix File Descriptor Monitoring</h2>
|
||||
<p>On Unix, it is possible to monitor file descriptors for input being
|
||||
available, or for the file descriptor being available for data to be
|
||||
written without blocking the application.</p>
|
||||
<p>To do this, you on Unix, you can cast the <code>MainLoop</code> instance to a
|
||||
<a href=""><code>UnixMainLoop</code></a>
|
||||
and use the <code>AddWatch</code> method to register an interest on a particular
|
||||
condition.</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="hidden-sm col-md-2" role="complementary">
|
||||
<div class="sideaffix">
|
||||
<div class="contribution">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="https://github.com/gui-cs/Terminal.Gui/blob/v2_develop/docfx/articles/mainloop.md/#L1" class="contribution-link">Improve this Doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
|
||||
<h5>In This Article</h5>
|
||||
<div></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="grad-bottom"></div>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<span class="pull-right">
|
||||
<a href="#top">Back to top</a>
|
||||
</span>
|
||||
|
||||
<span>Generated by <strong>DocFX</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="../styles/docfx.vendor.min.js"></script>
|
||||
<script type="text/javascript" src="../styles/docfx.js"></script>
|
||||
<script type="text/javascript" src="../styles/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
458
v2_docs/articles/overview.html
Normal file
458
v2_docs/articles/overview.html
Normal file
@@ -0,0 +1,458 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Terminal.Gui API Overview </title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content="Terminal.Gui API Overview ">
|
||||
<meta name="generator" content="docfx ">
|
||||
|
||||
<link rel="shortcut icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="../styles/docfx.css">
|
||||
<link rel="stylesheet" href="../styles/main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Sans Pro" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Code Pro" rel="stylesheet">
|
||||
<meta property="docfx:navrel" content="../toc.html">
|
||||
<meta property="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta property="docfx:rel" content="../">
|
||||
|
||||
</head> <body data-spy="scroll" data-target="#affix" data-offset="120">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
|
||||
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/logo48.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<form class="navbar-form navbar-right" role="search" id="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="subnav navbar navbar-default">
|
||||
<div class="container hide-when-search" id="breadcrumb">
|
||||
<ul class="breadcrumb">
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container body-content">
|
||||
|
||||
<div id="search-results">
|
||||
<div class="search-list">Search Results for <span></span></div>
|
||||
<div class="sr-items">
|
||||
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
|
||||
</div>
|
||||
<ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div role="main" class="container body-content hide-when-search">
|
||||
<div class="article row grid">
|
||||
<div class="col-md-10">
|
||||
<article class="content wrap" id="_content" data-uid="">
|
||||
<h1 id="terminalgui-api-overview">Terminal.Gui API Overview</h1>
|
||||
|
||||
<p><code>Terminal.Gui</code> is a library intended to create console-based
|
||||
applications using C#. The framework has been designed to make it
|
||||
easy to write applications that will work on monochrome terminals, as
|
||||
well as modern color terminals with mouse support.</p>
|
||||
<p>This library works across Windows, Linux and MacOS.</p>
|
||||
<p>This library provides a text-based toolkit as works in a way similar
|
||||
to graphic toolkits. There are many controls that can be used to
|
||||
create your applications and it is event based, meaning that you
|
||||
create the user interface, hook up various events and then let the
|
||||
a processing loop run your application, and your code is invoked via
|
||||
one or more callbacks.</p>
|
||||
<p>The simplest application looks like this:</p>
|
||||
<pre><code class="lang-csharp">using Terminal.Gui;
|
||||
|
||||
class Demo {
|
||||
static int Main ()
|
||||
{
|
||||
Application.Init ();
|
||||
|
||||
var n = MessageBox.Query (50, 7,
|
||||
"Question", "Do you like console apps?", "Yes", "No");
|
||||
|
||||
Application.Shutdown ();
|
||||
return n;
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
<p>This example shows a prompt and returns an integer value depending on
|
||||
which value was selected by the user (Yes, No, or if they use chose
|
||||
not to make a decision and instead pressed the ESC key).</p>
|
||||
<p>More interesting user interfaces can be created by composing some of
|
||||
the various views that are included. In the following sections, you
|
||||
will see how applications are put together.</p>
|
||||
<p>In the example above, you can see that we have initialized the runtime by calling the
|
||||
<a href="../api/Terminal.Gui/Terminal.Gui.Application.html#Terminal_Gui_Application_Init_Terminal_Gui_ConsoleDriver_Terminal_Gui_IMainLoopDriver_"><code>Init</code></a> method in the Application class - this sets up the environment, initializes the color
|
||||
schemes available for your application and clears the screen to start your application.</p>
|
||||
<p>The <a href="../api/Terminal.Gui/Terminal.Gui.Application.html"><code>Application</code></a> class, additionally creates an instance of the <a href="../api/Terminal.Gui/Terminal.Gui.Toplevel.html"><code>Toplevel</code></a> class that is ready to be consumed,
|
||||
this instance is available in the <code>Application.Top</code> property, and can be used like this:</p>
|
||||
<pre><code class="lang-csharp">using Terminal.Gui;
|
||||
|
||||
class Demo {
|
||||
static int Main ()
|
||||
{
|
||||
Application.Init ();
|
||||
|
||||
var label = new Label ("Hello World") {
|
||||
X = Pos.Center (),
|
||||
Y = Pos.Center (),
|
||||
Height = 1,
|
||||
};
|
||||
Application.Top.Add (label);
|
||||
Application.Run ();
|
||||
Application.Shutdown ();
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
<p>Typically, you will want your application to have more than a label, you might
|
||||
want a menu, and a region for your application to live in, the following code
|
||||
does this:</p>
|
||||
<pre><code class="lang-csharp">using Terminal.Gui;
|
||||
|
||||
class Demo {
|
||||
static int Main ()
|
||||
{
|
||||
Application.Init ();
|
||||
var menu = new MenuBar (new MenuBarItem [] {
|
||||
new MenuBarItem ("_File", new MenuItem [] {
|
||||
new MenuItem ("_Quit", "", () => {
|
||||
Application.RequestStop ();
|
||||
})
|
||||
}),
|
||||
});
|
||||
|
||||
var win = new Window ("Hello") {
|
||||
X = 0,
|
||||
Y = 1,
|
||||
Width = Dim.Fill (),
|
||||
Height = Dim.Fill () - 1
|
||||
};
|
||||
|
||||
// Add both menu and win in a single call
|
||||
Application.Top.Add (menu, win);
|
||||
Application.Run ();
|
||||
Application.Shutdown ();
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
<h2 id="views">Views</h2>
|
||||
<p>All visible elements on a Terminal.Gui application are implemented as
|
||||
<a href="../api/Terminal.Gui/Terminal.Gui.View.html">Views</a>. Views are self-contained objects that take care of displaying themselves, can receive keyboard and mouse input and participate in the focus mechanism.</p>
|
||||
<p>See the full list of <a href="views.html">Views provided by the Terminal.Gui library here</a>.</p>
|
||||
<p>Every view can contain an arbitrary number of children views. These are called
|
||||
the Subviews. You can add a view to an existing view, by calling the
|
||||
<a href="../api/Terminal.Gui/Terminal.Gui.View.html#Terminal_Gui_View_Add_Terminal_Gui_View_"><code>Add</code></a> method, for example, to add a couple of buttons to a UI, you can do this:</p>
|
||||
<pre><code class="lang-csharp">void SetupMyView (View myView)
|
||||
{
|
||||
var label = new Label ("Username: ") {
|
||||
X = 1,
|
||||
Y = 1,
|
||||
Width = 20,
|
||||
Height = 1
|
||||
};
|
||||
myView.Add (label);
|
||||
|
||||
var username = new TextField ("") {
|
||||
X = 1,
|
||||
Y = 2,
|
||||
Width = 30,
|
||||
Height = 1
|
||||
};
|
||||
myView.Add (username);
|
||||
}
|
||||
</code></pre>
|
||||
<p>The container of a given view is called the <code>SuperView</code> and it is a property of every
|
||||
View.</p>
|
||||
<h2 id="layout">Layout</h2>
|
||||
<p><code>Terminal.Gui</code> supports two different layout systems, absolute and computed <br>
|
||||
(controlled by the <a href="../api/Terminal.Gui/Terminal.Gui.LayoutStyle.html"><code>LayoutStyle</code></a>
|
||||
property on the view.</p>
|
||||
<p>The absolute system is used when you want the view to be positioned exactly in
|
||||
one location and want to manually control where the view is. This is done
|
||||
by invoking your View constructor with an argument of type <a href="../api/Terminal.Gui/Terminal.Gui.Rect.html"><code>Rect</code></a>. When you do this, to change the
|
||||
position of the View, you can change the <code>Frame</code> property on the View.</p>
|
||||
<p>The computed layout system offers a few additional capabilities, like automatic
|
||||
centering, expanding of dimensions and a handful of other features. To use
|
||||
this you construct your object without an initial <code>Frame</code>, but set the
|
||||
<code>X</code>, <code>Y</code>, <code>Width</code> and <code>Height</code> properties after the object has been created.</p>
|
||||
<p>Examples:</p>
|
||||
<pre><code class="lang-csharp">
|
||||
// Dynamically computed
|
||||
var label = new Label ("Hello") {
|
||||
X = 1,
|
||||
Y = Pos.Center (),
|
||||
Width = Dim.Fill (),
|
||||
Height = 1
|
||||
};
|
||||
|
||||
// Absolute position using the provided rectangle
|
||||
var label2 = new Label (new Rect (1, 2, 20, 1), "World")
|
||||
</code></pre>
|
||||
<p>The computed layout system does not take integers, instead the <code>X</code> and <code>Y</code> properties are of type <a href="../api/Terminal.Gui/Terminal.Gui.Pos.html"><code>Pos</code></a> and the <code>Width</code> and <code>Height</code> properties are of type <a href="../api/Terminal.Gui/Terminal.Gui.Dim.html"><code>Dim</code></a> both which can be created implicitly from integer values.</p>
|
||||
<h3 id="the-pos-type">The <code>Pos</code> Type</h3>
|
||||
<p>The <code>Pos</code> type on <code>X</code> and <code>Y</code> offers a few options:</p>
|
||||
<ul>
|
||||
<li>Absolute position, by passing an integer</li>
|
||||
<li>Percentage of the parent's view size - <code>Pos.Percent(n)</code></li>
|
||||
<li>Anchored from the end of the dimension - <code>AnchorEnd(int margin=0)</code></li>
|
||||
<li>Centered, using <code>Center()</code></li>
|
||||
<li>Reference the Left (X), Top (Y), Bottom, Right positions of another view</li>
|
||||
</ul>
|
||||
<p>The <code>Pos</code> values can be added or subtracted, like this:</p>
|
||||
<pre><code class="lang-csharp">// Set the X coordinate to 10 characters left from the center
|
||||
view.X = Pos.Center () - 10;
|
||||
|
||||
view.Y = Pos.Percent (20);
|
||||
|
||||
anotherView.X = AnchorEnd (10);
|
||||
anotherView.Width = 9;
|
||||
|
||||
myView.X = Pos.X (view);
|
||||
myView.Y = Pos.Bottom (anotherView);
|
||||
</code></pre>
|
||||
<h3 id="the-dim-type">The <code>Dim</code> Type</h3>
|
||||
<p>The <code>Dim</code> type is used for the <code>Width</code> and <code>Height</code> properties on the View and offers
|
||||
the following options:</p>
|
||||
<ul>
|
||||
<li>Absolute size, by passing an integer</li>
|
||||
<li>Percentage of the parent's view size - <code>Dim.Percent(n)</code></li>
|
||||
<li>Fill to the end - <code>Dim.Fill ()</code></li>
|
||||
<li>Reference the Width or Height of another view</li>
|
||||
</ul>
|
||||
<p>Like, <code>Pos</code>, objects of type <code>Dim</code> can be added an subtracted, like this:</p>
|
||||
<pre><code class="lang-csharp">// Set the Width to be 10 characters less than filling
|
||||
// the remaining portion of the screen
|
||||
view.Width = Dim.Fill () - 10;
|
||||
|
||||
view.Height = Dim.Percent(20) - 1;
|
||||
|
||||
anotherView.Height = Dim.Height (view)+1
|
||||
</code></pre>
|
||||
<h2 id="toplevels-windows-and-dialogs">TopLevels, Windows and Dialogs.</h2>
|
||||
<p>Among the many kinds of views, you typically will create a <a href="../api/Terminal.Gui/Terminal.Gui.Toplevel.html">Toplevel</a> view (or any of its subclasses,
|
||||
like <a href="../api/Terminal.Gui/Terminal.Gui.Window.html">Window</a> or <a href="../api/Terminal.Gui/Terminal.Gui.Dialog.html">Dialog</a> which is special kind of views
|
||||
that can be executed modally - that is, the view can take over all input and returns
|
||||
only when the user chooses to complete their work there.</p>
|
||||
<p>The following sections cover the differences.</p>
|
||||
<h3 id="toplevel-views">TopLevel Views</h3>
|
||||
<p><a href="../api/Terminal.Gui/Terminal.Gui.Toplevel.html">Toplevel</a> views have no visible user interface elements and occupy an arbitrary portion of the screen.</p>
|
||||
<p>You would use a toplevel Modal view for example to launch an entire new experience in your application, one where you would have a new top-level menu for example. You
|
||||
typically would add a Menu and a Window to your Toplevel, it would look like this:</p>
|
||||
<pre><code class="lang-csharp">using Terminal.Gui;
|
||||
|
||||
class Demo {
|
||||
static void Edit (string filename)
|
||||
{
|
||||
var top = new Toplevel () {
|
||||
X = 0,
|
||||
Y = 0,
|
||||
Width = Dim.Fill (),
|
||||
Height = Dim.Fill ()
|
||||
};
|
||||
var menu = new MenuBar (new MenuBarItem [] {
|
||||
new MenuBarItem ("_File", new MenuItem [] {
|
||||
new MenuItem ("_Close", "", () => {
|
||||
Application.RequestStop ();
|
||||
})
|
||||
}),
|
||||
});
|
||||
|
||||
// nest a window for the editor
|
||||
var win = new Window (filename) {
|
||||
X = 0,
|
||||
Y = 1,
|
||||
Width = Dim.Fill (),
|
||||
Height = Dim.Fill () - 1
|
||||
};
|
||||
|
||||
var editor = new TextView () {
|
||||
X = 0,
|
||||
Y = 0,
|
||||
Width = Dim.Fill (),
|
||||
Height = Dim.Fill ()
|
||||
};
|
||||
editor.Text = System.IO.File.ReadAllText (filename);
|
||||
win.Add (editor);
|
||||
|
||||
// Add both menu and win in a single call
|
||||
top.Add (win, menu);
|
||||
Application.Run (top);
|
||||
Application.Shutdown ();
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
<h3 id="window-views">Window Views</h3>
|
||||
<p><a href="../api/Terminal.Gui/Terminal.Gui.Window.html">Window</a> views extend the Toplevel view by providing a frame and a title around the toplevel - and can be moved on the screen with the mouse (caveat: code is currently disabled)</p>
|
||||
<p>From a user interface perspective, you might have more than one Window on the screen at a given time.</p>
|
||||
<h3 id="dialogs">Dialogs</h3>
|
||||
<p><a href="../api/Terminal.Gui/Terminal.Gui.Dialog.html">Dialog</a> are <a href="../api/Terminal.Gui/Terminal.Gui.Window.html">Window</a> objects that happen to be centered in the middle of the screen.</p>
|
||||
<p>Dialogs are instances of a Window that are centered in the screen, and are intended
|
||||
to be used modally - that is, they run, and they are expected to return a result
|
||||
before resuming execution of your application.</p>
|
||||
<p>Dialogs are a subclass of <code>Window</code> and additionally expose the
|
||||
<a href="https://migueldeicaza.github.io/gui.cs/api/Terminal.Gui/Terminal.Gui.Dialog.yml#Terminal_Gui_Dialog_AddButton_Terminal_Gui_Button_"><code>AddButton</code></a> API which manages the layout
|
||||
of any button passed to it, ensuring that the buttons are at the bottom of the dialog.</p>
|
||||
<p>Example:</p>
|
||||
<pre><code class="lang-csharp">bool okpressed = false;
|
||||
var ok = new Button("Ok");
|
||||
var cancel = new Button("Cancel");
|
||||
var dialog = new Dialog ("Quit", 60, 7, ok, cancel);
|
||||
</code></pre>
|
||||
<p>Which will show something like this:</p>
|
||||
<pre><code>+- Quit -----------------------------------------------+
|
||||
| |
|
||||
| |
|
||||
| [ Ok ] [ Cancel ] |
|
||||
+------------------------------------------------------+
|
||||
</code></pre>
|
||||
<h3 id="running-modally">Running Modally</h3>
|
||||
<p>To run your Dialog, Window or Toplevel modally, you will invoke the <code>Application.Run</code>
|
||||
method on the toplevel. It is up to your code and event handlers to invoke the <code>Application.RequestStop()</code> method to terminate the modal execution.</p>
|
||||
<pre><code class="lang-csharp">bool okpressed = false;
|
||||
var ok = new Button(3, 14, "Ok") {
|
||||
Clicked = () => { Application.RequestStop (); okpressed = true; }
|
||||
};
|
||||
var cancel = new Button(10, 14, "Cancel") {
|
||||
Clicked = () => Application.RequestStop ()
|
||||
};
|
||||
var dialog = new Dialog ("Login", 60, 18, ok, cancel);
|
||||
|
||||
var entry = new TextField () {
|
||||
X = 1,
|
||||
Y = 1,
|
||||
Width = Dim.Fill (),
|
||||
Height = 1
|
||||
};
|
||||
dialog.Add (entry);
|
||||
Application.Run (dialog);
|
||||
if (okpressed)
|
||||
Console.WriteLine ("The user entered: " + entry.Text);
|
||||
</code></pre>
|
||||
<p>There is no return value from running modally, so your code will need to have a mechanism
|
||||
of indicating the reason that the execution of the modal dialog was completed, in the
|
||||
case above, the <code>okpressed</code> value is set to true if the user pressed or selected the Ok button.</p>
|
||||
<h2 id="input-handling">Input Handling</h2>
|
||||
<p>Every view has a focused view, and if that view has nested views, one of those is
|
||||
the focused view. This is called the focus chain, and at any given time, only one
|
||||
View has the focus.</p>
|
||||
<p>The library binds the key Tab to focus the next logical view,
|
||||
and the Shift-Tab combination to focus the previous logical view.</p>
|
||||
<p>Keyboard processing is divided in three stages: HotKey processing, regular processing and
|
||||
cold key processing.</p>
|
||||
<ul>
|
||||
<li><p>Hot key processing happens first, and it gives all the views in the current
|
||||
toplevel a chance to monitor whether the key needs to be treated specially. This
|
||||
for example handles the scenarios where the user pressed Alt-o, and a view with a
|
||||
highlighted "o" is being displayed.</p>
|
||||
</li>
|
||||
<li><p>If no view processed the hotkey, then the key is sent to the currently focused
|
||||
view.</p>
|
||||
</li>
|
||||
<li><p>If the key was not processed by the normal processing, all views are given
|
||||
a chance to process the keystroke in their cold processing stage. Examples
|
||||
include the processing of the "return" key in a dialog when a button in the
|
||||
dialog has been flagged as the "default" action.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>The most common case is the normal processing, which sends the keystrokes to the
|
||||
currently focused view.</p>
|
||||
<p>Mouse events are processed in visual order, and the event will be sent to the
|
||||
view on the screen. The only exception is that no mouse events are delivered
|
||||
to background views when a modal view is running.</p>
|
||||
<p>More details are available on the <a href="keyboard.html"><code>Keyboard Event Processing</code></a> document.</p>
|
||||
<h2 id="colors-and-color-schemes">Colors and Color Schemes</h2>
|
||||
<p>All views have been configured with a color scheme that will work both in color
|
||||
terminals as well as the more limited black and white terminals.</p>
|
||||
<p>The various styles are captured in the <a href="../api/Terminal.Gui/Terminal.Gui.Colors.html"><code>Colors</code></a> class which defined color schemes for
|
||||
the toplevel, the normal views, the menu bar, popup dialog boxes and error dialog boxes, that you can use like this:</p>
|
||||
<ul>
|
||||
<li><code>Colors.Toplevel</code></li>
|
||||
<li><code>Colors.Base</code></li>
|
||||
<li><code>Colors.Menu</code></li>
|
||||
<li><code>Colors.Dialog</code></li>
|
||||
<li><code>Colors.Error</code></li>
|
||||
</ul>
|
||||
<p>You can use them for example like this to set the colors for a new Window:</p>
|
||||
<pre><code>var w = new Window ("Hello");
|
||||
w.ColorScheme = Colors.Error
|
||||
</code></pre>
|
||||
<p>The <a href="../api/Terminal.Gui/Terminal.Gui.ColorScheme.html"><code>ColorScheme</code></a> represents
|
||||
four values, the color used for Normal text, the color used for normal text when
|
||||
a view is focused an the colors for the hot-keys both in focused and unfocused modes.</p>
|
||||
<p>By using <code>ColorSchemes</code> you ensure that your application will work correctbly both
|
||||
in color and black and white terminals.</p>
|
||||
<p>Some views support setting individual color attributes, you create an
|
||||
attribute for a particular pair of Foreground/Background like this:</p>
|
||||
<pre><code>var myColor = Application.Driver.MakeAttribute (Color.Blue, Color.Red);
|
||||
var label = new Label (...);
|
||||
label.TextColor = myColor
|
||||
</code></pre>
|
||||
<h2 id="mainloop-threads-and-input-handling">MainLoop, Threads and Input Handling</h2>
|
||||
<p>Detailed description of the mainloop is described on the <a href="mainloop.html">Event Processing and the Application Main Loop</a> document.</p>
|
||||
<h2 id="cross-platform-drivers">Cross-Platform Drivers</h2>
|
||||
<p>See <a href="drivers.html">Cross-platform Driver Model</a>.</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="hidden-sm col-md-2" role="complementary">
|
||||
<div class="sideaffix">
|
||||
<div class="contribution">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="https://github.com/gui-cs/Terminal.Gui/blob/v2_develop/docfx/articles/overview.md/#L1" class="contribution-link">Improve this Doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
|
||||
<h5>In This Article</h5>
|
||||
<div></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="grad-bottom"></div>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<span class="pull-right">
|
||||
<a href="#top">Back to top</a>
|
||||
</span>
|
||||
|
||||
<span>Generated by <strong>DocFX</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="../styles/docfx.vendor.min.js"></script>
|
||||
<script type="text/javascript" src="../styles/docfx.js"></script>
|
||||
<script type="text/javascript" src="../styles/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
177
v2_docs/articles/tableview.html
Normal file
177
v2_docs/articles/tableview.html
Normal file
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Table View </title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content="Table View ">
|
||||
<meta name="generator" content="docfx ">
|
||||
|
||||
<link rel="shortcut icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="../styles/docfx.css">
|
||||
<link rel="stylesheet" href="../styles/main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Sans Pro" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Code Pro" rel="stylesheet">
|
||||
<meta property="docfx:navrel" content="../toc.html">
|
||||
<meta property="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta property="docfx:rel" content="../">
|
||||
|
||||
</head> <body data-spy="scroll" data-target="#affix" data-offset="120">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
|
||||
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/logo48.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<form class="navbar-form navbar-right" role="search" id="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="subnav navbar navbar-default">
|
||||
<div class="container hide-when-search" id="breadcrumb">
|
||||
<ul class="breadcrumb">
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container body-content">
|
||||
|
||||
<div id="search-results">
|
||||
<div class="search-list">Search Results for <span></span></div>
|
||||
<div class="sr-items">
|
||||
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
|
||||
</div>
|
||||
<ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div role="main" class="container body-content hide-when-search">
|
||||
<div class="article row grid">
|
||||
<div class="col-md-10">
|
||||
<article class="content wrap" id="_content" data-uid="">
|
||||
<h1 id="table-view">Table View</h1>
|
||||
|
||||
<p>This control supports viewing and editing tabular data. It provides a view of a <a href="https://docs.microsoft.com/en-us/dotnet/api/system.data.datatable?view=net-5.0">System.DataTable</a>.</p>
|
||||
<p>System.DataTable is a core class of .net standard and can be created very easily</p>
|
||||
<p><a href="../api/Terminal.Gui/Terminal.Gui.TableView.html">TableView API Reference</a></p>
|
||||
<h2 id="csv-example">Csv Example</h2>
|
||||
<p>You can create a DataTable from a CSV file by creating a new instance and adding columns and rows as you read them. For a robust solution however you might want to look into a CSV parser library that deals with escaping, multi line rows etc.</p>
|
||||
<pre><code class="lang-csharp">var dt = new DataTable();
|
||||
var lines = File.ReadAllLines(filename);
|
||||
|
||||
foreach(var h in lines[0].Split(',')){
|
||||
dt.Columns.Add(h);
|
||||
}
|
||||
|
||||
foreach(var line in lines.Skip(1)) {
|
||||
dt.Rows.Add(line.Split(','));
|
||||
}
|
||||
</code></pre>
|
||||
<h2 id="database-example">Database Example</h2>
|
||||
<p>All Ado.net database providers (Oracle, MySql, SqlServer etc) support reading data as DataTables for example:</p>
|
||||
<pre><code class="lang-csharp">var dt = new DataTable();
|
||||
|
||||
using(var con = new SqlConnection("Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;"))
|
||||
{
|
||||
con.Open();
|
||||
var cmd = new SqlCommand("select * from myTable;",con);
|
||||
var adapter = new SqlDataAdapter(cmd);
|
||||
|
||||
adapter.Fill(dt);
|
||||
}
|
||||
</code></pre>
|
||||
<h2 id="displaying-the-table">Displaying the table</h2>
|
||||
<p>Once you have set up your data table set it in the view:</p>
|
||||
<pre><code class="lang-csharp">tableView = new TableView () {
|
||||
X = 0,
|
||||
Y = 0,
|
||||
Width = 50,
|
||||
Height = 10,
|
||||
};
|
||||
|
||||
tableView.Table = new DataTableSource(yourDataTable);
|
||||
</code></pre>
|
||||
<h2 id="object-data">Object data</h2>
|
||||
<p>If your data objects are not stored in a <code>System.Data.DataTable</code> then you can instead
|
||||
create a table using <code>EnumerableTableSource<T></code> or implementing your own <code>ITableSource</code>
|
||||
class.</p>
|
||||
<p>For example to render data for the currently running processes:</p>
|
||||
<pre><code class="lang-csharp">tableView.Table = new EnumerableTableDataSource<Process> (Process.GetProcesses (),
|
||||
new Dictionary<string, Func<Process, object>>() {
|
||||
{ "ID",(p)=>p.Id},
|
||||
{ "Name",(p)=>p.ProcessName},
|
||||
{ "Threads",(p)=>p.Threads.Count},
|
||||
{ "Virtual Memory",(p)=>p.VirtualMemorySize64},
|
||||
{ "Working Memory",(p)=>p.WorkingSet64},
|
||||
});
|
||||
</code></pre>
|
||||
<h2 id="table-rendering">Table Rendering</h2>
|
||||
<p>TableView supports any size of table. You can have thousands of columns and/or millions of rows if you want.
|
||||
Horizontal and vertical scrolling can be done using the mouse or keyboard.</p>
|
||||
<p>TableView uses <code>ColumnOffset</code> and <code>RowOffset</code> to determine the first visible cell of the <code>System.DataTable</code>.
|
||||
Rendering then continues until the avaialble console space is exhausted. Updating the <code>ColumnOffset</code> and
|
||||
<code>RowOffset</code> changes which part of the table is rendered (scrolls the viewport).</p>
|
||||
<p>This approach ensures that no matter how big the table, only a small number of columns/rows need to be
|
||||
evaluated for rendering.</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="hidden-sm col-md-2" role="complementary">
|
||||
<div class="sideaffix">
|
||||
<div class="contribution">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="https://github.com/gui-cs/Terminal.Gui/blob/v2_develop/docfx/articles/tableview.md/#L1" class="contribution-link">Improve this Doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
|
||||
<h5>In This Article</h5>
|
||||
<div></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="grad-bottom"></div>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<span class="pull-right">
|
||||
<a href="#top">Back to top</a>
|
||||
</span>
|
||||
|
||||
<span>Generated by <strong>DocFX</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="../styles/docfx.vendor.min.js"></script>
|
||||
<script type="text/javascript" src="../styles/docfx.js"></script>
|
||||
<script type="text/javascript" src="../styles/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
269
v2_docs/articles/treeview.html
Normal file
269
v2_docs/articles/treeview.html
Normal file
@@ -0,0 +1,269 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Tree View </title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content="Tree View ">
|
||||
<meta name="generator" content="docfx ">
|
||||
|
||||
<link rel="shortcut icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="../styles/docfx.css">
|
||||
<link rel="stylesheet" href="../styles/main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Sans Pro" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Code Pro" rel="stylesheet">
|
||||
<meta property="docfx:navrel" content="../toc.html">
|
||||
<meta property="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta property="docfx:rel" content="../">
|
||||
|
||||
</head> <body data-spy="scroll" data-target="#affix" data-offset="120">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
|
||||
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/logo48.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<form class="navbar-form navbar-right" role="search" id="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="subnav navbar navbar-default">
|
||||
<div class="container hide-when-search" id="breadcrumb">
|
||||
<ul class="breadcrumb">
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container body-content">
|
||||
|
||||
<div id="search-results">
|
||||
<div class="search-list">Search Results for <span></span></div>
|
||||
<div class="sr-items">
|
||||
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
|
||||
</div>
|
||||
<ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div role="main" class="container body-content hide-when-search">
|
||||
<div class="article row grid">
|
||||
<div class="col-md-10">
|
||||
<article class="content wrap" id="_content" data-uid="">
|
||||
<h1 id="tree-view">Tree View</h1>
|
||||
|
||||
<p>TreeView is a control for navigating hierarchical objects. It comes in two forms <code>TreeView</code> and <code>TreeView<T></code>.</p>
|
||||
<p><a href="../api/Terminal.Gui/Terminal.Gui.TreeView.html">TreeView API Reference</a></p>
|
||||
<h2 id="using-treeview">Using TreeView</h2>
|
||||
<p>The basic non generic TreeView class is populated by <code>ITreeNode</code> objects. The simplest tree you can make would look something like:</p>
|
||||
<pre><code class="lang-csharp">var tree = new TreeView()
|
||||
{
|
||||
X = 0,
|
||||
Y = 0,
|
||||
Width = 40,
|
||||
Height = 20
|
||||
};
|
||||
|
||||
var root1 = new TreeNode("Root1");
|
||||
root1.Children.Add(new TreeNode("Child1.1"));
|
||||
root1.Children.Add(new TreeNode("Child1.2"));
|
||||
|
||||
var root2 = new TreeNode("Root2");
|
||||
root2.Children.Add(new TreeNode("Child2.1"));
|
||||
root2.Children.Add(new TreeNode("Child2.2"));
|
||||
|
||||
tree.AddObject(root1);
|
||||
tree.AddObject(root2);
|
||||
|
||||
</code></pre>
|
||||
<p>Having to create a bunch of TreeNode objects can be a pain especially if you already have your own objects e.g. <code>House</code>, <code>Room</code> etc. There are two ways to use your own classes without having to create nodes manually. Firstly you can implement the <code>ITreeNode</code> interface:</p>
|
||||
<pre><code class="lang-csharp">// Your data class
|
||||
private class House : TreeNode {
|
||||
|
||||
// Your properties
|
||||
public string Address {get;set;}
|
||||
public List<Room> Rooms {get;set;}
|
||||
|
||||
// ITreeNode member:
|
||||
public override IList<ITreeNode> Children => Rooms.Cast<ITreeNode>().ToList();
|
||||
|
||||
public override string Text { get => Address; set => Address = value; }
|
||||
}
|
||||
|
||||
|
||||
// Your other data class
|
||||
private class Room : TreeNode{
|
||||
|
||||
public string Name {get;set;}
|
||||
|
||||
public override string Text{get=>Name;set{Name=value;}}
|
||||
}
|
||||
</code></pre>
|
||||
<p>After implementing the interface you can add your objects directly to the tree</p>
|
||||
<pre><code class="lang-csharp">
|
||||
var myHouse = new House()
|
||||
{
|
||||
Address = "23 Nowhere Street",
|
||||
Rooms = new List<Room>{
|
||||
new Room(){Name = "Ballroom"},
|
||||
new Room(){Name = "Bedroom 1"},
|
||||
new Room(){Name = "Bedroom 2"}
|
||||
}
|
||||
};
|
||||
|
||||
var tree = new TreeView()
|
||||
{
|
||||
X = 0,
|
||||
Y = 0,
|
||||
Width = 40,
|
||||
Height = 20
|
||||
};
|
||||
|
||||
tree.AddObject(myHouse);
|
||||
|
||||
</code></pre>
|
||||
<p>Alternatively you can simply tell the tree how the objects relate to one another by implementing <code>ITreeBuilder<T></code>. This is a good option if you don't have control of the data objects you are working with.</p>
|
||||
<h2 id="treeviewt"><code>TreeView<T></code></h2>
|
||||
<p>The generic <code>Treeview<T></code> allows you to store any object hierarchy where nodes implement Type T. For example if you are working with <code>DirectoryInfo</code> and <code>FileInfo</code> objects then you could create a <code>TreeView<FileSystemInfo></code>. If you don't have a shared interface/base class for all nodes you can still declare a <code>TreeView<object></code>.</p>
|
||||
<p>In order to use <code>TreeView<T></code> you need to tell the tree how objects relate to one another (who are children of who). To do this you must provide an <code>ITreeBuilder<T></code>.</p>
|
||||
<h3 id="implementing-itreebuildert"><code>Implementing ITreeBuilder<T></code></h3>
|
||||
<p>Consider a simple data model that already exists in your program:</p>
|
||||
<pre><code class="lang-csharp">private abstract class GameObject
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private class Army : GameObject
|
||||
{
|
||||
public string Designation {get;set;}
|
||||
public List<Unit> Units {get;set;}
|
||||
|
||||
|
||||
public override string ToString ()
|
||||
{
|
||||
return Designation;
|
||||
}
|
||||
}
|
||||
|
||||
private class Unit : GameObject
|
||||
{
|
||||
public string Name {get;set;}
|
||||
public override string ToString ()
|
||||
{
|
||||
return Name;
|
||||
}
|
||||
}
|
||||
|
||||
</code></pre>
|
||||
<p>An <code>ITreeBuilder<T></code> for these classes might look like:</p>
|
||||
<pre><code class="lang-csharp">
|
||||
private class GameObjectTreeBuilder : ITreeBuilder<GameObject> {
|
||||
public bool SupportsCanExpand => true;
|
||||
|
||||
public bool CanExpand (GameObject model)
|
||||
{
|
||||
return model is Army;
|
||||
}
|
||||
|
||||
public IEnumerable<GameObject> GetChildren (GameObject model)
|
||||
{
|
||||
if(model is Army a)
|
||||
return a.Units;
|
||||
|
||||
return Enumerable.Empty<GameObject>();
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
<p>To use the builder in a tree you would use:</p>
|
||||
<pre><code class="lang-csharp">var army1 = new Army()
|
||||
{
|
||||
Designation = "3rd Infantry",
|
||||
Units = new List<Unit>{
|
||||
new Unit(){Name = "Orc"},
|
||||
new Unit(){Name = "Troll"},
|
||||
new Unit(){Name = "Goblin"},
|
||||
}
|
||||
};
|
||||
|
||||
var tree = new TreeView<GameObject>()
|
||||
{
|
||||
X = 0,
|
||||
Y = 0,
|
||||
Width = 40,
|
||||
Height = 20,
|
||||
TreeBuilder = new GameObjectTreeBuilder()
|
||||
};
|
||||
|
||||
|
||||
tree.AddObject(army1);
|
||||
</code></pre>
|
||||
<p>Alternatively you can use <code>DelegateTreeBuilder<T></code> instead of implementing your own <code>ITreeBuilder<T></code>. For example:</p>
|
||||
<pre><code class="lang-csharp">tree.TreeBuilder = new DelegateTreeBuilder<GameObject>(
|
||||
(o)=>o is Army a ? a.Units
|
||||
: Enumerable.Empty<GameObject>());
|
||||
</code></pre>
|
||||
<h2 id="node-text-and-tostring">Node Text and ToString</h2>
|
||||
<p>The default behavior of TreeView is to use the <code>ToString</code> method on the objects for rendering. You can customise this by changing the <code>AspectGetter</code>. For example:</p>
|
||||
<pre><code class="lang-csharp">treeViewFiles.AspectGetter = (f)=>f.FullName;
|
||||
</code></pre>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="hidden-sm col-md-2" role="complementary">
|
||||
<div class="sideaffix">
|
||||
<div class="contribution">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="https://github.com/gui-cs/Terminal.Gui/blob/v2_develop/docfx/articles/treeview.md/#L1" class="contribution-link">Improve this Doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
|
||||
<h5>In This Article</h5>
|
||||
<div></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="grad-bottom"></div>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<span class="pull-right">
|
||||
<a href="#top">Back to top</a>
|
||||
</span>
|
||||
|
||||
<span>Generated by <strong>DocFX</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="../styles/docfx.vendor.min.js"></script>
|
||||
<script type="text/javascript" src="../styles/docfx.js"></script>
|
||||
<script type="text/javascript" src="../styles/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
149
v2_docs/articles/views.html
Normal file
149
v2_docs/articles/views.html
Normal file
@@ -0,0 +1,149 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title> </title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content=" ">
|
||||
<meta name="generator" content="docfx ">
|
||||
|
||||
<link rel="shortcut icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="../styles/docfx.css">
|
||||
<link rel="stylesheet" href="../styles/main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Sans Pro" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Source Code Pro" rel="stylesheet">
|
||||
<meta property="docfx:navrel" content="../toc.html">
|
||||
<meta property="docfx:tocrel" content="../toc.html">
|
||||
|
||||
<meta property="docfx:rel" content="../">
|
||||
|
||||
</head> <body data-spy="scroll" data-target="#affix" data-offset="120">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
|
||||
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
|
||||
<a class="navbar-brand" href="../index.html">
|
||||
<img id="logo" class="svg" src="../images/logo48.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
<form class="navbar-form navbar-right" role="search" id="search">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="subnav navbar navbar-default">
|
||||
<div class="container hide-when-search" id="breadcrumb">
|
||||
<ul class="breadcrumb">
|
||||
<li></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="container body-content">
|
||||
|
||||
<div id="search-results">
|
||||
<div class="search-list">Search Results for <span></span></div>
|
||||
<div class="sr-items">
|
||||
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
|
||||
</div>
|
||||
<ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div role="main" class="container body-content hide-when-search">
|
||||
<div class="article row grid">
|
||||
<div class="col-md-10">
|
||||
<article class="content wrap" id="_content" data-uid="">
|
||||
|
||||
<p><em>Terminal.Gui</em> provides a rich set of views and controls for building terminal user interfaces:</p>
|
||||
<ul>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.Button.html">Button</a> - A View that provides an item that invokes an System.Action when activated by the user.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.CheckBox.html">CheckBox</a> - Shows an on/off toggle that the user can set.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.ColorPicker.html">ColorPicker</a> - Enables to user to pick a color.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.ComboBox.html">ComboBox</a> - Provides a drop-down list of items the user can select from.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.Dialog.html">Dialog</a> - A pop-up Window that contains one or more Buttons.
|
||||
<ul>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.OpenDialog.html">OpenDialog</a> - A Dialog providing an interactive pop-up Window for users to select files or directories.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.SaveDialog.html">SaveDialog</a> - A Dialog providing an interactive pop-up Window for users to save files.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.FrameView.html">FrameView</a> - A container View that draws a frame around its contents. Similar to a GroupBox in Windows.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.GraphView.html">GraphView</a> - A View for rendering graphs (bar, scatter etc).</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.HexView.html">Hex viewer/editor</a> - A hex viewer and editor that operates over a file stream.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.Label.html">Label</a> - Displays a string at a given position and supports multiple lines.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.ListView.html">ListView</a> - Displays a scrollable list of data where each item can be activated to perform an action.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.MenuBar.html">MenuBar</a> - Provides a menu bar with drop-down and cascading menus.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.MessageBox.html">MessageBox</a> - Displays a modal (pup-up) message to the user, with a title, a message and a series of options that the user can choose from.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.ProgressBar.html">ProgressBar</a> - Displays a progress Bar indicating progress of an activity.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.RadioGroup.html">RadioGroup</a> - Displays a group of labels each with a selected indicator. Only one of those can be selected at a given time</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.ScrollView.html">ScrollView</a> - Present a window into a virtual space where subviews are added. Similar to the iOS UIScrollView.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.ScrollBarView.html">ScrollBarView</a> - display a 1-character scrollbar, either horizontal or vertical.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.StatusBar.html">StatusBar</a> - A View that snaps to the bottom of a Toplevel displaying set of status items. Includes support for global app keyboard shortcuts.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.TableView.html">TableView</a> - A View for tabular data based on a System.Data.DataTable.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.TimeField.html">TimeField</a> & <a href="../api/Terminal.Gui/Terminal.Gui.TimeField.html">DateField</a> - Enables structured editing of dates and times.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.TextField.html">TextField</a> - Provides a single-line text entry.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.TextValidateField.html">TextValidateField</a> - Text field that validates input through a ITextValidateProvider.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.TextView.html">TextView</a>- A multi-line text editing View supporting word-wrap, auto-complete, context menus, undo/redo, and clipboard operations,</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.Toplevel.html">TopLevel</a> - The base class for modal/pop-up Windows.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.TreeView.html">TreeView</a> - A hierarchical tree view with expandable branches. Branch objects are dynamically determined when expanded using a user defined ITreeBuilder.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.View.html">View</a> - The base class for all views on the screen and represents a visible element that can render itself and contains zero or more nested views.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.Window.html">Window</a> - A Toplevel view that draws a border around its Frame with a title at the top.</li>
|
||||
<li><a href="../api/Terminal.Gui/Terminal.Gui.Wizard.html">Wizard</a> - Provides navigation and a user interface to collect related data across multiple steps.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="hidden-sm col-md-2" role="complementary">
|
||||
<div class="sideaffix">
|
||||
<div class="contribution">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="https://github.com/gui-cs/Terminal.Gui/blob/v2_develop/docfx/articles/views.md/#L1" class="contribution-link">Improve this Doc</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
|
||||
<h5>In This Article</h5>
|
||||
<div></div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="grad-bottom"></div>
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<span class="pull-right">
|
||||
<a href="#top">Back to top</a>
|
||||
</span>
|
||||
|
||||
<span>Generated by <strong>DocFX</strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="../styles/docfx.vendor.min.js"></script>
|
||||
<script type="text/javascript" src="../styles/docfx.js"></script>
|
||||
<script type="text/javascript" src="../styles/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user