comparison mercurial/ui.py @ 19226:c58b6ab4c26f

ui: merge prompt text components into a singe string This will help avoid problems with partial or mismatched translation of the components.
author Matt Mackall <mpm@selenic.com>
date Wed, 22 May 2013 17:31:43 -0500
parents 9311cd5c09ed
children ab3cf67740d6 ba2be32d14f2
comparison
equal deleted inserted replaced
19225:6cf8e3b4e074 19226:c58b6ab4c26f
637 return default 637 return default
638 return r 638 return r
639 except EOFError: 639 except EOFError:
640 raise util.Abort(_('response expected')) 640 raise util.Abort(_('response expected'))
641 641
642 def promptchoice(self, msg, choices, default=0): 642 def promptchoice(self, prompt, default=0):
643 """Prompt user with msg, read response, and ensure it matches 643 """Prompt user with a message, read response, and ensure it matches
644 one of the provided choices. The index of the choice is returned. 644 one of the provided choices. The prompt is formatted as follows:
645 choices is a sequence of acceptable responses with the format: 645
646 ('&None', 'E&xec', 'Sym&link') Responses are case insensitive. 646 "would you like fries with that (Yn)? $$ &Yes $$ &No"
647 If ui is not interactive, the default is returned. 647
648 The index of the choice is returned. Responses are case
649 insensitive. If ui is not interactive, the default is
650 returned.
648 """ 651 """
652
653 parts = prompt.split('$$')
654 msg = parts[0].rstrip(' ')
655 choices = [p.strip(' ') for p in parts[1:]]
649 resps = [s[s.index('&') + 1].lower() for s in choices] 656 resps = [s[s.index('&') + 1].lower() for s in choices]
650 while True: 657 while True:
651 r = self.prompt(msg, resps[default]) 658 r = self.prompt(msg, resps[default])
652 if r.lower() in resps: 659 if r.lower() in resps:
653 return resps.index(r.lower()) 660 return resps.index(r.lower())