~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to userinteractor.py

  • Committer: Aaron Bentley
  • Date: 2008-10-22 10:23:48 UTC
  • Revision ID: aaron@aaronbentley.com-20081022102348-1oy1usn4bci84u65
Doc tweakage

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
import sys
2
2
 
 
3
if sys.platform == "win32":
 
4
    import msvcrt
 
5
    def getchar():
 
6
        return msvcrt.getch()
 
7
else:
 
8
    import tty
 
9
    import termios
 
10
    def getchar():
 
11
        fd = sys.stdin.fileno()
 
12
        settings = termios.tcgetattr(fd)
 
13
        try:
 
14
            tty.setraw(fd)
 
15
            ch = sys.stdin.read(1)
 
16
        finally:
 
17
            termios.tcsetattr(fd, termios.TCSADRAIN, settings)
 
18
        return ch
 
19
 
 
20
 
3
21
class UserOption:
4
22
    def __init__(self, char, action, help, default=False):
5
23
        self.char = char
111
129
                sys.stdout.write(opt.char)
112
130
            sys.stdout.write('?] (%s): ' % default.char)
113
131
 
114
 
            response = self.__getchar()
 
132
            response = getchar()
115
133
 
116
134
            # default, which we see as newline, is 'n'
117
135
            if response in ['\n', '\r', '\r\n']:
130
148
    def __show_help(self):
131
149
        for opt in self._options:
132
150
            print '  %s - %s' % (opt.char, opt.help)
133
 
 
134
 
    if sys.platform == "win32":
135
 
        def __getchar(self):
136
 
            import msvcrt
137
 
            return msvcrt.getch()
138
 
    else:
139
 
        def __getchar(self):
140
 
            import tty
141
 
            import termios
142
 
            fd = sys.stdin.fileno()
143
 
            settings = termios.tcgetattr(fd)
144
 
            try:
145
 
                tty.setraw(fd)
146
 
                ch = sys.stdin.read(1)
147
 
            finally:
148
 
                termios.tcsetattr(fd, termios.TCSADRAIN, settings)
149
 
            return ch