~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ui/__init__.py

  • Committer: Martin Pool
  • Date: 2010-07-07 01:55:26 UTC
  • mto: This revision was merged to the branch mainline in revision 5337.
  • Revision ID: mbp@sourcefrog.net-20100707015526-es8mwmqd4wc8an2e
Document no_proxy

Show diffs side-by-side

added added

removed removed

Lines of Context:
100
100
    return val
101
101
 
102
102
 
103
 
class ConfirmationUserInterfacePolicy(object):
104
 
    """Wrapper for a UIFactory that allows or denies all confirmed actions."""
105
 
 
106
 
    def __init__(self, wrapped_ui, default_answer, specific_answers):
107
 
        """Generate a proxy UI that does no confirmations.
108
 
 
109
 
        :param wrapped_ui: Underlying UIFactory.
110
 
        :param default_answer: Bool for whether requests for
111
 
            confirmation from the user should be noninteractively accepted or
112
 
            denied.
113
 
        :param specific_answers: Map from confirmation_id to bool answer.
114
 
        """
115
 
        self.wrapped_ui = wrapped_ui
116
 
        self.default_answer = default_answer
117
 
        self.specific_answers = specific_answers
118
 
 
119
 
    def __getattr__(self, name):
120
 
        return getattr(self.wrapped_ui, name)
121
 
 
122
 
    def __repr__(self):
123
 
        return '%s(%r, %r, %r)' % (
124
 
            self.__class__.__name__,
125
 
            self.wrapped_ui,
126
 
            self.default_answer, 
127
 
            self.specific_answers)
128
 
 
129
 
    def confirm_action(self, prompt, confirmation_id, prompt_kwargs):
130
 
        if confirmation_id in self.specific_answers:
131
 
            return self.specific_answers[confirmation_id]
132
 
        elif self.default_answer is not None:
133
 
            return self.default_answer
134
 
        else:
135
 
            return self.wrapped_ui.confirm_action(
136
 
                prompt, confirmation_id, prompt_kwargs)
137
 
 
138
 
 
139
103
class UIFactory(object):
140
104
    """UI abstraction.
141
105
 
187
151
        """
188
152
        self._quiet = state
189
153
 
190
 
    def confirm_action(self, prompt, confirmation_id, prompt_kwargs):
191
 
        """Seek user confirmation for an action.
192
 
 
193
 
        If the UI is noninteractive, or the user does not want to be asked
194
 
        about this action, True is returned, indicating bzr should just
195
 
        proceed.
196
 
 
197
 
        The confirmation id allows the user to configure certain actions to
198
 
        always be confirmed or always denied, and for UIs to specialize the
199
 
        display of particular confirmations.
200
 
 
201
 
        :param prompt: Suggested text to display to the user.
202
 
        :param prompt_kwargs: A dictionary of arguments that can be
203
 
            string-interpolated into the prompt.
204
 
        :param confirmation_id: Unique string identifier for the confirmation.
205
 
        """
206
 
        return self.get_boolean(prompt % prompt_kwargs)
207
 
 
208
154
    def get_password(self, prompt='', **kwargs):
209
155
        """Prompt the user for a password.
210
156
 
431
377
                "without an upgrade path.\n" % (inter.target._format,))
432
378
 
433
379
 
434
 
class NoninteractiveUIFactory(UIFactory):
435
 
    """Base class for UIs with no user."""
436
 
 
437
 
    def confirm_action(self, prompt, confirmation_id, prompt_kwargs):
438
 
        return True
439
 
 
440
 
    def __repr__(self):
441
 
        return '%s()' % (self.__class__.__name__, )
442
 
 
443
 
 
444
 
class SilentUIFactory(NoninteractiveUIFactory):
 
380
class SilentUIFactory(UIFactory):
445
381
    """A UI Factory which never prints anything.
446
382
 
447
383
    This is the default UI, if another one is never registered by a program
482
418
    def __repr__(self):
483
419
        return "%s(%r)" % (self.__class__.__name__, self.responses)
484
420
 
485
 
    def confirm_action(self, prompt, confirmation_id, args):
486
 
        return self.get_boolean(prompt % args)
487
 
 
488
421
    def get_boolean(self, prompt):
489
422
        return self.responses.pop(0)
490
423