~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ui/__init__.py

  • Committer: Alexander Belchenko
  • Date: 2012-03-29 08:34:13 UTC
  • mto: (6015.44.14 2.4)
  • mto: This revision was merged to the branch mainline in revision 6513.
  • Revision ID: bialix@ukr.net-20120329083413-d4bqqdtfn2yrxp4f
change st_dev, st_ino, st_uid, st_gid from int members to properties.

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
    back to working through the terminal.
42
42
"""
43
43
 
44
 
from __future__ import absolute_import
45
44
 
46
45
import warnings
47
46
 
48
47
from bzrlib.lazy_import import lazy_import
49
48
lazy_import(globals(), """
50
49
from bzrlib import (
51
 
    config,
52
50
    osutils,
53
51
    progress,
54
52
    trace,
147
145
            "This may take some time. Upgrade the repositories to the "
148
146
            "same format for better performance."
149
147
            ),
150
 
        experimental_format_fetch=("Fetching into experimental format "
151
 
            "%(to_format)s.\n"
152
 
            "This format may be unreliable or change in the future "
153
 
            "without an upgrade path.\n"),
154
148
        deprecated_command=(
155
149
            "The command 'bzr %(deprecated_name)s' "
156
150
            "has been deprecated in bzr %(deprecated_in_version)s. "
157
151
            "Please use 'bzr %(recommended_name)s' instead."),
158
 
        deprecated_command_option=(
159
 
            "The option '%(deprecated_name)s' to 'bzr %(command)s' "
160
 
            "has been deprecated in bzr %(deprecated_in_version)s. "
161
 
            "Please use '%(recommended_name)s' instead."),
162
152
        recommend_upgrade=("%(current_format_name)s is deprecated "
163
153
            "and a better format is available.\n"
164
154
            "It is recommended that you upgrade by "
166
156
            "  bzr upgrade %(basedir)s"),
167
157
        locks_steal_dead=(
168
158
            u"Stole dead lock %(lock_url)s %(other_holder_info)s."),
169
 
        not_checking_ssl_cert=(
170
 
            u"Not checking SSL certificate for %(host)s."),
171
159
        )
172
160
 
173
161
    def __init__(self):
255
243
        """
256
244
        # XXX: is the caller supposed to close the resulting object?
257
245
        if encoding is None:
258
 
            encoding = config.GlobalStack().get('output_encoding')
 
246
            from bzrlib import config
 
247
            encoding = config.GlobalConfig().get_user_option(
 
248
                'output_encoding')
259
249
        if encoding is None:
260
250
            encoding = osutils.get_terminal_encoding(trace=True)
261
251
        if encoding_type is None:
327
317
            warnings.warn(fail)   # so tests will fail etc
328
318
            return fail
329
319
 
330
 
    def choose(self, msg, choices, default=None):
331
 
        """Prompt the user for a list of alternatives.
332
 
 
333
 
        :param msg: message to be shown as part of the prompt.
334
 
 
335
 
        :param choices: list of choices, with the individual choices separated
336
 
            by '\n', e.g.: choose("Save changes?", "&Yes\n&No\n&Cancel"). The
337
 
            letter after the '&' is the shortcut key for that choice. Thus you
338
 
            can type 'c' to select "Cancel".  Shorcuts are case insensitive.
339
 
            The shortcut does not need to be the first letter. If a shorcut key
340
 
            is not provided, the first letter for the choice will be used.
341
 
 
342
 
        :param default: default choice (index), returned for example when enter
343
 
            is pressed for the console version.
344
 
 
345
 
        :return: the index fo the user choice (so '0', '1' or '2' for
346
 
            respectively yes/no/cancel in the previous example).
347
 
        """
348
 
        raise NotImplementedError(self.choose)
349
 
 
350
320
    def get_boolean(self, prompt):
351
321
        """Get a boolean question answered from the user.
352
322
 
354
324
            line without terminating \\n.
355
325
        :return: True or False for y/yes or n/no.
356
326
        """
357
 
        choice = self.choose(prompt + '?', '&yes\n&no', default=None)
358
 
        return 0 == choice
 
327
        raise NotImplementedError(self.get_boolean)
359
328
 
360
329
    def get_integer(self, prompt):
361
330
        """Get an integer from the user.
439
408
        """Show a warning to the user."""
440
409
        raise NotImplementedError(self.show_warning)
441
410
 
 
411
    def warn_cross_format_fetch(self, from_format, to_format):
 
412
        """Warn about a potentially slow cross-format transfer.
 
413
        
 
414
        This is deprecated in favor of show_user_warning, but retained for api
 
415
        compatibility in 2.0 and 2.1.
 
416
        """
 
417
        self.show_user_warning('cross_format_fetch', from_format=from_format,
 
418
            to_format=to_format)
 
419
 
 
420
    def warn_experimental_format_fetch(self, inter):
 
421
        """Warn about fetching into experimental repository formats."""
 
422
        if inter.target._format.experimental:
 
423
            trace.warning("Fetching into experimental format %s.\n"
 
424
                "This format may be unreliable or change in the future "
 
425
                "without an upgrade path.\n" % (inter.target._format,))
 
426
 
442
427
 
443
428
class NoninteractiveUIFactory(UIFactory):
444
429
    """Base class for UIs with no user."""