1388 |
1388 |
1389 def prompt(self, msg, default="y"): |
1389 def prompt(self, msg, default="y"): |
1390 """Prompt user with msg, read response. |
1390 """Prompt user with msg, read response. |
1391 If ui is not interactive, the default is returned. |
1391 If ui is not interactive, the default is returned. |
1392 """ |
1392 """ |
|
1393 return self._prompt(msg, default=default) |
|
1394 |
|
1395 def _prompt(self, msg, **opts): |
|
1396 default = opts[r'default'] |
1393 if not self.interactive(): |
1397 if not self.interactive(): |
1394 self._writemsg(self._fmsgout, msg, ' ', type='prompt') |
1398 self._writemsg(self._fmsgout, msg, ' ', type='prompt', **opts) |
1395 self._writemsg(self._fmsgout, default or '', "\n", |
1399 self._writemsg(self._fmsgout, default or '', "\n", |
1396 type='promptecho') |
1400 type='promptecho') |
1397 return default |
1401 return default |
1398 self._writemsgnobuf(self._fmsgout, msg, type='prompt') |
1402 self._writemsgnobuf(self._fmsgout, msg, type='prompt', **opts) |
1399 self.flush() |
1403 self.flush() |
1400 try: |
1404 try: |
1401 r = self._readline() |
1405 r = self._readline() |
1402 if not r: |
1406 if not r: |
1403 r = default |
1407 r = default |
1447 """ |
1451 """ |
1448 |
1452 |
1449 msg, choices = self.extractchoices(prompt) |
1453 msg, choices = self.extractchoices(prompt) |
1450 resps = [r for r, t in choices] |
1454 resps = [r for r, t in choices] |
1451 while True: |
1455 while True: |
1452 r = self.prompt(msg, resps[default]) |
1456 r = self._prompt(msg, default=resps[default], choices=choices) |
1453 if r.lower() in resps: |
1457 if r.lower() in resps: |
1454 return resps.index(r.lower()) |
1458 return resps.index(r.lower()) |
1455 # TODO: shouldn't it be a warning? |
1459 # TODO: shouldn't it be a warning? |
1456 self._writemsg(self._fmsgout, _("unrecognized response\n")) |
1460 self._writemsg(self._fmsgout, _("unrecognized response\n")) |
1457 |
1461 |