~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ui/__init__.py

(gz) Never raise KnownFailure in tests,
 use knownFailure method instead (Martin [gz])

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
from bzrlib.lazy_import import lazy_import
48
48
lazy_import(globals(), """
49
49
from bzrlib import (
50
 
    config,
51
50
    osutils,
52
51
    progress,
53
52
    trace,
154
153
            "The command 'bzr %(deprecated_name)s' "
155
154
            "has been deprecated in bzr %(deprecated_in_version)s. "
156
155
            "Please use 'bzr %(recommended_name)s' instead."),
157
 
        deprecated_command_option=(
158
 
            "The option '%(deprecated_name)s' to 'bzr %(command)s' "
159
 
            "has been deprecated in bzr %(deprecated_in_version)s. "
160
 
            "Please use '%(recommended_name)s' instead."),
161
156
        recommend_upgrade=("%(current_format_name)s is deprecated "
162
157
            "and a better format is available.\n"
163
158
            "It is recommended that you upgrade by "
252
247
        """
253
248
        # XXX: is the caller supposed to close the resulting object?
254
249
        if encoding is None:
255
 
            encoding = config.GlobalStack().get('output_encoding')
 
250
            from bzrlib import config
 
251
            encoding = config.GlobalConfig().get_user_option(
 
252
                'output_encoding')
256
253
        if encoding is None:
257
254
            encoding = osutils.get_terminal_encoding(trace=True)
258
255
        if encoding_type is None:
324
321
            warnings.warn(fail)   # so tests will fail etc
325
322
            return fail
326
323
 
327
 
    def choose(self, msg, choices, default=None):
328
 
        """Prompt the user for a list of alternatives.
329
 
 
330
 
        :param msg: message to be shown as part of the prompt.
331
 
 
332
 
        :param choices: list of choices, with the individual choices separated
333
 
            by '\n', e.g.: choose("Save changes?", "&Yes\n&No\n&Cancel"). The
334
 
            letter after the '&' is the shortcut key for that choice. Thus you
335
 
            can type 'c' to select "Cancel".  Shorcuts are case insensitive.
336
 
            The shortcut does not need to be the first letter. If a shorcut key
337
 
            is not provided, the first letter for the choice will be used.
338
 
 
339
 
        :param default: default choice (index), returned for example when enter
340
 
            is pressed for the console version.
341
 
 
342
 
        :return: the index fo the user choice (so '0', '1' or '2' for
343
 
            respectively yes/no/cancel in the previous example).
344
 
        """
345
 
        raise NotImplementedError(self.choose)
346
 
 
347
324
    def get_boolean(self, prompt):
348
325
        """Get a boolean question answered from the user.
349
326
 
351
328
            line without terminating \\n.
352
329
        :return: True or False for y/yes or n/no.
353
330
        """
354
 
        choice = self.choose(prompt + '?', '&yes\n&no', default=None)
355
 
        return 0 == choice
 
331
        raise NotImplementedError(self.get_boolean)
356
332
 
357
333
    def get_integer(self, prompt):
358
334
        """Get an integer from the user.