@@ -161,6 +161,31 @@ const COROUTINES =
161
161
'<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">\'__main__\'</span>:\n' +
162
162
' curses.wrapper(main)\n' ;
163
163
164
+ const CURSES =
165
+ '<span class="hljs-keyword">import</span> curses, curses.ascii, os\n' +
166
+ '<span class="hljs-keyword">from</span> curses <span class="hljs-keyword">import</span> A_REVERSE, KEY_DOWN, KEY_UP, KEY_LEFT, KEY_RIGHT, KEY_ENTER\n' +
167
+ '\n' +
168
+ '<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">(screen)</span>:</span>\n' +
169
+ ' ch, first, selected, paths = <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, os.listdir()\n' +
170
+ ' <span class="hljs-keyword">while</span> ch <span class="hljs-keyword">not</span> <span class="hljs-keyword">in</span> [ord(<span class="hljs-string">\'q\'</span>), curses.ascii.ESC]:\n' +
171
+ ' height, width = screen.getmaxyx()\n' +
172
+ ' screen.erase()\n' +
173
+ ' <span class="hljs-keyword">for</span> y, filename <span class="hljs-keyword">in</span> enumerate(paths[first : first+height]):\n' +
174
+ ' color = A_REVERSE <span class="hljs-keyword">if</span> filename == paths[selected] <span class="hljs-keyword">else</span> <span class="hljs-number">0</span>\n' +
175
+ ' screen.addstr(y, <span class="hljs-number">0</span>, filename[:width-<span class="hljs-number">1</span>], color)\n' +
176
+ ' ch = screen.getch()\n' +
177
+ ' selected += (ch == KEY_DOWN) - (ch == KEY_UP)\n' +
178
+ ' selected = max(<span class="hljs-number">0</span>, min(len(paths)-<span class="hljs-number">1</span>, selected))\n' +
179
+ ' first += (selected >= first + height) - (selected < first)\n' +
180
+ ' <span class="hljs-keyword">if</span> ch <span class="hljs-keyword">in</span> [KEY_LEFT, KEY_RIGHT, KEY_ENTER, <span class="hljs-number">10</span>, <span class="hljs-number">13</span>]:\n' +
181
+ ' new_dir = <span class="hljs-string">\'..\'</span> <span class="hljs-keyword">if</span> ch == KEY_LEFT <span class="hljs-keyword">else</span> paths[selected]\n' +
182
+ ' <span class="hljs-keyword">if</span> os.path.isdir(new_dir):\n' +
183
+ ' os.chdir(new_dir)\n' +
184
+ ' first, selected, paths = <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, os.listdir()\n' +
185
+ '\n' +
186
+ '<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">\'__main__\'</span>:\n' +
187
+ ' curses.wrapper(main)\n' ;
188
+
164
189
const PROGRESS_BAR =
165
190
'<span class="hljs-comment"># $ pip3 install tqdm</span>\n' +
166
191
'<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> tqdm <span class="hljs-keyword">import</span> tqdm\n' +
@@ -767,6 +792,7 @@ function fixHighlights() {
767
792
$ ( `code:contains(\'<class_name>\', <tuple_of_parents>, <dict_of_class_attributes>)` ) . html ( TYPE ) ;
768
793
$ ( `code:contains(ValueError: malformed node)` ) . html ( EVAL ) ;
769
794
$ ( `code:contains(import asyncio, collections, curses, curses.textpad, enum, random)` ) . html ( COROUTINES ) ;
795
+ $ ( `code:contains(import curses, curses.ascii, os)` ) . html ( CURSES ) ;
770
796
$ ( `code:contains(pip3 install tqdm)` ) . html ( PROGRESS_BAR ) ;
771
797
$ ( `code:contains(>>> logging.basicConfig(level=)` ) . html ( LOGGING_EXAMPLE ) ;
772
798
$ ( `code:contains(samples_f = (sin(i *)` ) . html ( AUDIO ) ;
0 commit comments