~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to userinteractor.py

  • Committer: Aaron Bentley
  • Date: 2007-07-24 17:10:08 UTC
  • Revision ID: abentley@panoramicfeedback.com-20070724171008-b3ygal61ec5dojub
Better error when shelving binary files

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
 
 
21
3
class UserOption:
22
4
    def __init__(self, char, action, help, default=False):
23
5
        self.char = char
129
111
                sys.stdout.write(opt.char)
130
112
            sys.stdout.write('?] (%s): ' % default.char)
131
113
 
132
 
            response = getchar()
 
114
            response = self.__getchar()
133
115
 
134
116
            # default, which we see as newline, is 'n'
135
117
            if response in ['\n', '\r', '\r\n']:
148
130
    def __show_help(self):
149
131
        for opt in self._options:
150
132
            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