Ver Fonte

created module cursesex

Fabian Peter Hammerle há 9 anos atrás
pai
commit
561f693f76
4 ficheiros alterados com 25 adições e 24 exclusões
  1. 0 19
      ioex/__init__.py
  2. 21 0
      ioex/cursesex.py
  3. 2 3
      ioex/selector.py
  4. 2 2
      scripts/select-line

+ 0 - 19
ioex/__init__.py

@@ -1,24 +1,5 @@
 import os
 import sys
-import locale
-
-def curses_tty_wrapper(function, *args, **kwargs):
-    stdin_fd = os.dup(sys.stdin.fileno())
-    stdout_fd = os.dup(sys.stdout.fileno())
-    # set stdin to tty
-    tty_in = open('/dev/tty', 'r')
-    os.dup2(tty_in.fileno(), sys.stdin.fileno())
-    # set stdout to tty
-    tty_out = open('/dev/tty', 'w')
-    os.dup2(tty_out.fileno(), sys.stdout.fileno())
-    # os.system('ls -l /proc/self/fd/')
-    locale.setlocale(locale.LC_ALL, '')
-    import curses
-    result = curses.wrapper(function, *args, **kwargs)
-    # reset stdin and stdout
-    os.dup2(stdin_fd, sys.stdin.fileno())
-    os.dup2(stdout_fd, sys.stdout.fileno())
-    return result
 
 def raw_input_with_default(prompt, default):
     import readline

+ 21 - 0
ioex/cursesex.py

@@ -0,0 +1,21 @@
+import os
+import sys
+import locale
+
+def tty_wrapper(function, *args, **kwargs):
+    stdin_fd = os.dup(sys.stdin.fileno())
+    stdout_fd = os.dup(sys.stdout.fileno())
+    # set stdin to tty
+    tty_in = open('/dev/tty', 'r')
+    os.dup2(tty_in.fileno(), sys.stdin.fileno())
+    # set stdout to tty
+    tty_out = open('/dev/tty', 'w')
+    os.dup2(tty_out.fileno(), sys.stdout.fileno())
+    # os.system('ls -l /proc/self/fd/')
+    locale.setlocale(locale.LC_ALL, '')
+    import curses
+    result = curses.wrapper(function, *args, **kwargs)
+    # reset stdin and stdout
+    os.dup2(stdin_fd, sys.stdin.fileno())
+    os.dup2(stdout_fd, sys.stdout.fileno())
+    return result

+ 2 - 3
ioex/selector.py

@@ -2,7 +2,6 @@
 
 import os
 import curses
-import curses.textpad
 import curses.wrapper
 import locale
 import pprint
@@ -209,8 +208,8 @@ def select(stdscr, active_root, multiple = False):
             return active_root.find_root().find_selected()
         elif key in [ord('q'), KEY_ESC]:
             return None
-        else:
-            raise Exception(key)
+        # else:
+        #     raise Exception(key)
 
 def select_string(stdscr, strings, multiple = False):
     root = StaticNode('root')

+ 2 - 2
scripts/select-line

@@ -2,10 +2,10 @@
 # PYTHON_ARGCOMPLETE_OK
 
 import ioex.selector
+import ioex.cursesex
 
 import os
 import sys
-import curses
 import argparse
 import argcomplete
 
@@ -23,7 +23,7 @@ def main(argv):
 
     lines = [l.strip() for l in sys.stdin]
 
-    selected_lines = ioex.curses_tty_wrapper(ioex.selector.select_string, lines, args.multiple) 
+    selected_lines = ioex.cursesex.tty_wrapper(ioex.selector.select_string, lines, args.multiple)
 
     print('\n'.join(selected_lines))