~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ui/__init__.py

Merge from integration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
displays no output.
29
29
"""
30
30
 
31
 
 
32
 
 
33
 
 
34
 
 
35
31
import bzrlib.progress
36
32
 
37
33
 
38
 
class TextUIFactory(object):
 
34
class UIFactory(object):
 
35
    """UI abstraction.
 
36
 
 
37
    This tells the library how to display things to the user.  Through this
 
38
    layer different applications can choose the style of UI.
 
39
    """
39
40
    def progress_bar(self):
40
 
 
41
 
        # this in turn is abstract, and creates either a tty or dots
42
 
        # bar depending on what we think of the terminal
43
 
        return bzrlib.progress.ProgressBar()
44
 
 
45
 
 
46
 
class SilentUIFactory(object):
 
41
        """Return a progress bar object"""
 
42
        raise NotImplementedError
 
43
 
 
44
    def get_password(self, prompt='', **kwargs):
 
45
        """Prompt the user for a password.
 
46
 
 
47
        :param prompt: The prompt to present the user
 
48
        :param kwargs: Arguments which will be expanded into the prompt.
 
49
                       This lets front ends display different things if
 
50
                       they so choose.
 
51
        :return: The password string, return None if the user 
 
52
                 canceled the request.
 
53
        """
 
54
        raise NotImplementedError
 
55
        
 
56
 
 
57
class SilentUIFactory(UIFactory):
 
58
    """A UI Factory which never prints anything.
 
59
 
 
60
    This is the default UI, if another one is never registered.
 
61
    """
47
62
    def progress_bar(self):
48
63
        return bzrlib.progress.DummyProgress()
49
64
 
 
65
    def get_password(self, prompt='', **kwargs):
 
66
        return None
 
67
 
50
68
 
51
69
ui_factory = SilentUIFactory()