rename class TUI to App, change StdOutWrapper to a context manager and add idea of a main_loop() for the App class

This commit is contained in:
2020-01-14 08:59:13 +01:00
parent 033cb92dc4
commit d0eabd3252
7 changed files with 186 additions and 145 deletions

View File

@@ -37,7 +37,7 @@
<span class="c1"># -*- coding: utf-8 -*-</span>
<span class="sd">&quot;&quot;&quot;TUI module.</span>
<span class="sd">:Date: 2020-01-10</span>
<span class="sd">:Date: 2020-01-13</span>
<span class="sd">.. module:: tui</span>
<span class="sd"> :platform: *nix, Windows</span>
@@ -62,43 +62,58 @@
<div class="viewcode-block" id="StdOutWrapper"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.StdOutWrapper">[docs]</a><span class="k">class</span> <span class="nc">StdOutWrapper</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Send print to stdout (print to the standard console).</span>
<span class="sd"> usage:</span>
<span class="sd"> :Example:</span>
<span class="sd"> ::</span>
<span class="sd"> # catch all prints into StdOutWrapper</span>
<span class="sd"> mystdout = StdOutWrapper()</span>
<span class="sd"> sys.stdout = mystdout</span>
<span class="sd"> sys.stderr = mystdout</span>
<span class="sd"> with StdOutWrapper() as mystdout:</span>
<span class="sd"> # begin curses (curses.initscr())</span>
<span class="sd"> # begin curses (curses.initscr(), ...)</span>
<span class="sd"> # do your stuff here</span>
<span class="sd"> # print(&quot;foo&quot;)</span>
<span class="sd"> # you can also output mystdout.get_text() in a ncurses widget in</span>
<span class="sd"> # runtime</span>
<span class="sd"> # do your stuff here</span>
<span class="sd"> # print(&quot;foo&quot;)</span>
<span class="sd"> # you can also output mystdout.get_text() in a ncurses widget in</span>
<span class="sd"> # runtime</span>
<span class="sd"> # end curses (curses.endwin())</span>
<span class="sd"> # end curses (curses.endwin())</span>
<span class="sd"> # go back to normal state and print all catched prints to stdout</span>
<span class="sd"> sys.stdout = sys.__stdout__</span>
<span class="sd"> sys.stderr = sys.__stderr__</span>
<span class="sd"> sys.stdout.write(mystdout.get_text())</span>
<span class="sd"> source:</span>
<span class="sd"> https://stackoverflow.com/a/14010948</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">text</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="c1"># https://stackoverflow.com/a/14010948</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;catch all prints into StdOutWrapper</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1">#self.stdout = StdOutWrapper()</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="bp">self</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="bp">self</span>
<span class="k">return</span> <span class="bp">self</span> <span class="c1"># to use as: with StdOutWrapper() as mystdout:</span>
<span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">etype</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;go back to normal state and print all catched prints to</span>
<span class="sd"> stdout</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">__stdout__</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">__stderr__</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_text</span><span class="p">())</span>
<div class="viewcode-block" id="StdOutWrapper.write"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.StdOutWrapper.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">txt</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;print uses write()</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">+=</span> <span class="n">txt</span>
<span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)[</span><span class="o">-</span><span class="mi">30</span><span class="p">:])</span></div>
<div class="viewcode-block" id="StdOutWrapper.get_text"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.StdOutWrapper.get_text">[docs]</a> <span class="k">def</span> <span class="nf">get_text</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">))</span></div></div>
<span class="c1">#def get_text(self,beg,end):</span>
<span class="c1"># return &#39;\n&#39;.join(self.text.split(&#39;\n&#39;)[beg:end])</span>
<div class="viewcode-block" id="TUI"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.TUI">[docs]</a><span class="k">class</span> <span class="nc">TUI</span><span class="p">:</span>
<div class="viewcode-block" id="App"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.App">[docs]</a><span class="k">class</span> <span class="nc">App</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;TUI text-based user interface</span>
<span class="sd"> initscr is the encapsulation window object of the stdscr</span>
@@ -114,14 +129,9 @@
<span class="k">try</span><span class="p">:</span>
<span class="n">delay</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">delay</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;TUI(delay)&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;App(delay)&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Could not convert the argument to an integer.&quot;</span><span class="p">)</span>
<span class="c1"># catch all prints into StdOutWrapper</span>
<span class="bp">self</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="n">StdOutWrapper</span><span class="p">()</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stdout</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stdout</span>
<span class="c1"># Define the appearance of some interface elements</span>
<span class="n">hotkey_attr</span> <span class="o">=</span> <span class="n">curses</span><span class="o">.</span><span class="n">A_BOLD</span> <span class="o">|</span> <span class="n">curses</span><span class="o">.</span><span class="n">A_UNDERLINE</span>
<span class="n">menu_attr</span> <span class="o">=</span> <span class="n">curses</span><span class="o">.</span><span class="n">A_NORMAL</span>
@@ -153,10 +163,28 @@
<span class="bp">self</span><span class="o">.</span><span class="n">last_pressed_ch</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># getch() Note that the integer returned does not have to be in ASCII range: function keys, keypad keys and so on return numbers higher than 256.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">last_pressed_mouse_ch</span> <span class="o">=</span> <span class="mi">0</span>
<div class="viewcode-block" id="TUI.refresh"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.TUI.refresh">[docs]</a> <span class="k">def</span> <span class="nf">refresh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<div class="viewcode-block" id="App.main_loop"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.App.main_loop">[docs]</a> <span class="k">def</span> <span class="nf">main_loop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">with</span> <span class="n">StdOutWrapper</span><span class="p">():</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;kkkk&#39;</span><span class="p">)</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;kkkk&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_pressed_ch</span> <span class="o">==</span> <span class="nb">ord</span><span class="p">(</span><span class="s1">&#39;q&#39;</span><span class="p">):</span>
<span class="k">break</span>
<span class="bp">self</span><span class="o">.</span><span class="n">refresh</span><span class="p">()</span> <span class="c1"># update the screen</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;kkkk&#39;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">getch</span><span class="p">()</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">end</span><span class="p">()</span></div>
<div class="viewcode-block" id="App.refresh"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.App.refresh">[docs]</a> <span class="k">def</span> <span class="nf">refresh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">initscr</span><span class="o">.</span><span class="n">refresh</span><span class="p">()</span> <span class="c1"># update the screen</span></div>
<div class="viewcode-block" id="TUI.getch"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.TUI.getch">[docs]</a> <span class="k">def</span> <span class="nf">getch</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<div class="viewcode-block" id="App.getch"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.App.getch">[docs]</a> <span class="k">def</span> <span class="nf">getch</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># keep last key value</span>
<span class="n">last_pressed_ch_current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">initscr</span><span class="o">.</span><span class="n">getch</span><span class="p">()</span>
<span class="k">if</span> <span class="n">last_pressed_ch_current</span> <span class="o">!=</span> <span class="n">curses</span><span class="o">.</span><span class="n">ERR</span><span class="p">:</span>
@@ -168,7 +196,7 @@
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">last_pressed_ch</span> <span class="o">=</span> <span class="n">last_pressed_ch_current</span></div>
<div class="viewcode-block" id="TUI.color_table"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.TUI.color_table">[docs]</a> <span class="k">def</span> <span class="nf">color_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">window</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="App.color_table"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.App.color_table">[docs]</a> <span class="k">def</span> <span class="nf">color_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">window</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Print all available colors with default background.</span>
<span class="sd"> Check if curses.has_colors() is True.</span>
<span class="sd"> &quot;&quot;&quot;</span>
@@ -198,7 +226,7 @@
<span class="c1"># End of screen reached</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="TUI.color_def"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.TUI.color_def">[docs]</a> <span class="k">def</span> <span class="nf">color_def</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<div class="viewcode-block" id="App.color_def"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.App.color_def">[docs]</a> <span class="k">def</span> <span class="nf">color_def</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="n">curses</span><span class="o">.</span><span class="n">can_change_color</span><span class="p">():</span> <span class="c1"># if True curses.init_color(color_number, r, g, b) can be used</span>
<span class="k">pass</span></div>
<span class="c1"># changes colors for the terminal also after closing the program.</span>
@@ -211,21 +239,16 @@
<span class="c1">#curses.init_color(1, *tmp)</span>
<span class="c1">#print(curses.color_content(1))</span>
<div class="viewcode-block" id="TUI.clear"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.TUI.clear">[docs]</a> <span class="k">def</span> <span class="nf">clear</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<div class="viewcode-block" id="App.clear"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.App.clear">[docs]</a> <span class="k">def</span> <span class="nf">clear</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">stdscr</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span></div>
<div class="viewcode-block" id="TUI.end"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.TUI.end">[docs]</a> <span class="k">def</span> <span class="nf">end</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<div class="viewcode-block" id="App.end"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.App.end">[docs]</a> <span class="k">def</span> <span class="nf">end</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;clean up&quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">stdscr</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<span class="n">curses</span><span class="o">.</span><span class="n">nocbreak</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">stdscr</span><span class="o">.</span><span class="n">keypad</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">curses</span><span class="o">.</span><span class="n">echo</span><span class="p">()</span>
<span class="n">curses</span><span class="o">.</span><span class="n">endwin</span><span class="p">()</span>
<span class="c1"># go back to normal state and print all catched prints to stdout</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">__stdout__</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">__stderr__</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">get_text</span><span class="p">())</span></div></div>
<span class="n">curses</span><span class="o">.</span><span class="n">endwin</span><span class="p">()</span></div></div>
<div class="viewcode-block" id="Window"><a class="viewcode-back" href="../../pylib.tui.html#pylib.tui.Window">[docs]</a><span class="k">class</span> <span class="nc">Window</span><span class="p">:</span>

View File

@@ -152,12 +152,14 @@
</li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.angle">angle() (in module pylib.geometry2d)</a>
</li>
<li><a href="pylib.data_step.html#pylib.data_step.arc_circle_geometry">arc_circle_geometry() (in module pylib.data_step)</a>
<li><a href="pylib.tui.html#pylib.tui.App">App (class in pylib.tui)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.ArcBSplineCurveWithKnots">ArcBSplineCurveWithKnots (class in pylib.geometry)</a>
<li><a href="pylib.data_step.html#pylib.data_step.arc_circle_geometry">arc_circle_geometry() (in module pylib.data_step)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.geometry.html#pylib.geometry.ArcBSplineCurveWithKnots">ArcBSplineCurveWithKnots (class in pylib.geometry)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.ArcCircle">ArcCircle (class in pylib.geometry)</a>
</li>
<li><a href="pylib.geometry.html#pylib.geometry.ArcEllipse">ArcEllipse (class in pylib.geometry)</a>
@@ -234,7 +236,7 @@
</li>
<li><a href="pylib.geometry.html#pylib.geometry.Properties.circle_sectors">circle_sectors (Properties attribute)</a>
</li>
<li><a href="pylib.tui.html#pylib.tui.TUI.clear">clear() (TUI method)</a>
<li><a href="pylib.tui.html#pylib.tui.App.clear">clear() (App method)</a>
<ul>
<li><a href="pylib.tui.html#pylib.tui.Window.clear">(Window method)</a>
@@ -242,9 +244,9 @@
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.tui.html#pylib.tui.TUI.color_def">color_def() (TUI method)</a>
<li><a href="pylib.tui.html#pylib.tui.App.color_def">color_def() (App method)</a>
</li>
<li><a href="pylib.tui.html#pylib.tui.TUI.color_table">color_table() (TUI method)</a>
<li><a href="pylib.tui.html#pylib.tui.App.color_table">color_table() (App method)</a>
</li>
<li><a href="pylib.data_step_std.html#pylib.data_step_std.CONIC">CONIC (class in pylib.data_step_std)</a>
</li>
@@ -346,7 +348,7 @@
</li>
<li><a href="pylib.function.html#pylib.function.ellipse">ellipse() (in module pylib.function)</a>
</li>
<li><a href="pylib.tui.html#pylib.tui.TUI.end">end() (TUI method)</a>
<li><a href="pylib.tui.html#pylib.tui.App.end">end() (App method)</a>
</li>
<li><a href="pylib.function.html#pylib.function.epitrochoid">epitrochoid() (in module pylib.function)</a>
</li>
@@ -402,7 +404,7 @@
</li>
<li><a href="pylib.tui.html#pylib.tui.StdOutWrapper.get_text">get_text() (StdOutWrapper method)</a>
</li>
<li><a href="pylib.tui.html#pylib.tui.TUI.getch">getch() (TUI method)</a>
<li><a href="pylib.tui.html#pylib.tui.App.getch">getch() (App method)</a>
<ul>
<li><a href="pylib.tui.html#pylib.tui.Window.getch">(Window method)</a>
@@ -494,12 +496,14 @@
<h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.mathematics.html#module-mathematics">mathematics (module)</a>
<li><a href="pylib.tui.html#pylib.tui.App.main_loop">main_loop() (App method)</a>
</li>
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix">matrix (class in pylib.mathematics)</a>
<li><a href="pylib.mathematics.html#module-mathematics">mathematics (module)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix">matrix (class in pylib.mathematics)</a>
</li>
<li><a href="pylib.time_of_day.html#pylib.time_of_day.minutes">minutes() (in module pylib.time_of_day)</a>
</li>
<li><a href="pylib.time_of_day.html#pylib.time_of_day.minutes_norm">minutes_norm() (in module pylib.time_of_day)</a>
@@ -638,7 +642,7 @@
</li>
<li><a href="pylib.geometry2d.html#pylib.geometry2d.rectangle">rectangle() (in module pylib.geometry2d)</a>
</li>
<li><a href="pylib.tui.html#pylib.tui.TUI.refresh">refresh() (TUI method)</a>
<li><a href="pylib.tui.html#pylib.tui.App.refresh">refresh() (App method)</a>
<ul>
<li><a href="pylib.tui.html#pylib.tui.Window.refresh">(Window method)</a>
@@ -761,8 +765,6 @@
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.t">t() (matrix static method)</a>
</li>
<li><a href="pylib.tui.html#pylib.tui.StdOutWrapper.text">text (StdOutWrapper attribute)</a>
</li>
<li><a href="pylib.tui.html#pylib.tui.Window.text">text() (Window method)</a>
</li>
@@ -803,8 +805,6 @@
<li><a href="pylib.mathematics.html#pylib.mathematics.matrix.transposed">transposed() (matrix static method)</a>
</li>
<li><a href="pylib.numerical.integration.html#pylib.numerical.integration.trapez">trapez() (in module pylib.numerical.integration)</a>
</li>
<li><a href="pylib.tui.html#pylib.tui.TUI">TUI (class in pylib.tui)</a>
</li>
<li><a href="pylib.tui.html#module-tui">tui (module)</a>
</li>

Binary file not shown.

View File

@@ -38,96 +38,91 @@
<p>TUI module.</p>
<dl class="field-list simple">
<dt class="field-odd">Date</dt>
<dd class="field-odd"><p>2020-01-10</p>
<dd class="field-odd"><p>2020-01-13</p>
</dd>
</dl>
<span class="target" id="module-tui"></span><dl class="class">
<dt id="pylib.tui.StdOutWrapper">
<em class="property">class </em><code class="sig-name descname">StdOutWrapper</code><a class="reference internal" href="_modules/pylib/tui.html#StdOutWrapper"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.StdOutWrapper" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Send print to stdout (print to the standard console).</p>
<p>usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># catch all prints into StdOutWrapper</span>
<span class="n">mystdout</span> <span class="o">=</span> <span class="n">StdOutWrapper</span><span class="p">()</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="n">mystdout</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="n">mystdout</span>
<span class="c1"># begin curses (curses.initscr())</span>
<span class="c1"># do your stuff here</span>
<span class="c1"># print(&quot;foo&quot;)</span>
<span class="c1"># you can also output mystdout.get_text() in a ncurses widget in</span>
<span class="c1"># runtime</span>
<span class="c1"># end curses (curses.endwin())</span>
<span class="c1"># go back to normal state and print all catched prints to stdout</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">__stdout__</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">__stderr__</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">mystdout</span><span class="o">.</span><span class="n">get_text</span><span class="p">())</span>
</pre></div>
</div>
<dl class="simple">
<dt>source:</dt><dd><p><a class="reference external" href="https://stackoverflow.com/a/14010948">https://stackoverflow.com/a/14010948</a></p>
</dd>
</dl>
<dl class="method">
<dt id="pylib.tui.StdOutWrapper.get_text">
<code class="sig-name descname">get_text</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#StdOutWrapper.get_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.StdOutWrapper.get_text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="pylib.tui.StdOutWrapper.text">
<code class="sig-name descname">text</code><em class="property"> = ''</em><a class="headerlink" href="#pylib.tui.StdOutWrapper.text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.tui.StdOutWrapper.write">
<code class="sig-name descname">write</code><span class="sig-paren">(</span><em class="sig-param">txt</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#StdOutWrapper.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.StdOutWrapper.write" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="pylib.tui.TUI">
<em class="property">class </em><code class="sig-name descname">TUI</code><span class="sig-paren">(</span><em class="sig-param">delay=5</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#TUI"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.TUI" title="Permalink to this definition"></a></dt>
<dt id="pylib.tui.App">
<em class="property">class </em><code class="sig-name descname">App</code><span class="sig-paren">(</span><em class="sig-param">delay=5</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#App"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.App" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>TUI text-based user interface</p>
<p>initscr is the encapsulation window object of the stdscr
stdsc is the curses.initscr</p>
<dl class="method">
<dt id="pylib.tui.TUI.clear">
<code class="sig-name descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#TUI.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.TUI.clear" title="Permalink to this definition"></a></dt>
<dt id="pylib.tui.App.clear">
<code class="sig-name descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#App.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.App.clear" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.tui.TUI.color_def">
<code class="sig-name descname">color_def</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#TUI.color_def"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.TUI.color_def" title="Permalink to this definition"></a></dt>
<dt id="pylib.tui.App.color_def">
<code class="sig-name descname">color_def</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#App.color_def"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.App.color_def" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.tui.TUI.color_table">
<code class="sig-name descname">color_table</code><span class="sig-paren">(</span><em class="sig-param">window=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#TUI.color_table"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.TUI.color_table" title="Permalink to this definition"></a></dt>
<dt id="pylib.tui.App.color_table">
<code class="sig-name descname">color_table</code><span class="sig-paren">(</span><em class="sig-param">window=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#App.color_table"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.App.color_table" title="Permalink to this definition"></a></dt>
<dd><p>Print all available colors with default background.
Check if curses.has_colors() is True.</p>
</dd></dl>
<dl class="method">
<dt id="pylib.tui.TUI.end">
<code class="sig-name descname">end</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#TUI.end"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.TUI.end" title="Permalink to this definition"></a></dt>
<dt id="pylib.tui.App.end">
<code class="sig-name descname">end</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#App.end"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.App.end" title="Permalink to this definition"></a></dt>
<dd><p>clean up</p>
</dd></dl>
<dl class="method">
<dt id="pylib.tui.TUI.getch">
<code class="sig-name descname">getch</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#TUI.getch"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.TUI.getch" title="Permalink to this definition"></a></dt>
<dt id="pylib.tui.App.getch">
<code class="sig-name descname">getch</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#App.getch"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.App.getch" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.tui.TUI.refresh">
<code class="sig-name descname">refresh</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#TUI.refresh"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.TUI.refresh" title="Permalink to this definition"></a></dt>
<dt id="pylib.tui.App.main_loop">
<code class="sig-name descname">main_loop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#App.main_loop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.App.main_loop" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.tui.App.refresh">
<code class="sig-name descname">refresh</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#App.refresh"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.App.refresh" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="pylib.tui.StdOutWrapper">
<em class="property">class </em><code class="sig-name descname">StdOutWrapper</code><a class="reference internal" href="_modules/pylib/tui.html#StdOutWrapper"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.StdOutWrapper" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Send print to stdout (print to the standard console).</p>
<dl class="field-list simple">
<dt class="field-odd">Example</dt>
<dd class="field-odd"><p></p></dd>
</dl>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># catch all prints into StdOutWrapper</span>
<span class="k">with</span> <span class="n">StdOutWrapper</span><span class="p">()</span> <span class="k">as</span> <span class="n">mystdout</span><span class="p">:</span>
<span class="c1"># begin curses (curses.initscr(), ...)</span>
<span class="c1"># do your stuff here</span>
<span class="c1"># print(&quot;foo&quot;)</span>
<span class="c1"># you can also output mystdout.get_text() in a ncurses widget in</span>
<span class="c1"># runtime</span>
<span class="c1"># end curses (curses.endwin())</span>
<span class="c1"># go back to normal state and print all catched prints to stdout</span>
</pre></div>
</div>
<dl class="method">
<dt id="pylib.tui.StdOutWrapper.get_text">
<code class="sig-name descname">get_text</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#StdOutWrapper.get_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.StdOutWrapper.get_text" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="pylib.tui.StdOutWrapper.write">
<code class="sig-name descname">write</code><span class="sig-paren">(</span><em class="sig-param">txt</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylib/tui.html#StdOutWrapper.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylib.tui.StdOutWrapper.write" title="Permalink to this definition"></a></dt>
<dd><p>print uses write()</p>
</dd></dl>
</dd></dl>
<dl class="class">

File diff suppressed because one or more lines are too long