~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to userinteractor.py

  • Committer: Aaron Bentley
  • Date: 2006-12-04 14:32:43 UTC
  • Revision ID: abentley@panoramicfeedback.com-20061204143243-i28ph41mdgbsofev
Fixed handling of pipe errors when writing to patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
import sys
2
 
from bzrlib.osutils import getchar
3
 
 
4
2
 
5
3
class UserOption:
6
4
    def __init__(self, char, action, help, default=False):
113
111
                sys.stdout.write(opt.char)
114
112
            sys.stdout.write('?] (%s): ' % default.char)
115
113
 
116
 
            response = getchar()
 
114
            response = self.__getchar()
117
115
 
118
116
            # default, which we see as newline, is 'n'
119
117
            if response in ['\n', '\r', '\r\n']:
132
130
    def __show_help(self):
133
131
        for opt in self._options:
134
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