~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ui/__init__.py

  • Committer: Martin Pool
  • Date: 2009-10-29 05:54:49 UTC
  • mto: This revision was merged to the branch mainline in revision 4776.
  • Revision ID: mbp@sourcefrog.net-20091029055449-my1e8z0tzapf2yme
Remove several 'the the' typos

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007, 2008, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
109
109
 
110
110
    def __init__(self):
111
111
        self._task_stack = []
112
 
        self._quiet = False
113
 
 
114
 
    def be_quiet(self, state):
115
 
        """Tell the UI to be more quiet, or not.
116
 
 
117
 
        Typically this suppresses progress bars; the application may also look
118
 
        at ui_factory.is_quiet().
119
 
        """
120
 
        self._quiet = state
121
112
 
122
113
    def get_password(self, prompt='', **kwargs):
123
114
        """Prompt the user for a password.
134
125
        """
135
126
        raise NotImplementedError(self.get_password)
136
127
 
137
 
    def is_quiet(self):
138
 
        return self._quiet
139
 
 
140
 
    def make_output_stream(self, encoding=None, encoding_type=None):
141
 
        """Get a stream for sending out bulk text data.
142
 
 
143
 
        This is used for commands that produce bulk text, such as log or diff
144
 
        output, as opposed to user interaction.  This should work even for
145
 
        non-interactive user interfaces.  Typically this goes to a decorated
146
 
        version of stdout, but in a GUI it might be appropriate to send it to a 
147
 
        window displaying the text.
148
 
     
149
 
        :param encoding: Unicode encoding for output; default is the 
150
 
            terminal encoding, which may be different from the user encoding.
151
 
            (See get_terminal_encoding.)
152
 
 
153
 
        :param encoding_type: How to handle encoding errors:
154
 
            replace/strict/escape/exact.  Default is replace.
155
 
        """
156
 
        # XXX: is the caller supposed to close the resulting object?
157
 
        if encoding is None:
158
 
            encoding = osutils.get_terminal_encoding()
159
 
        if encoding_type is None:
160
 
            encoding_type = 'replace'
161
 
        out_stream = self._make_output_stream_explicit(encoding, encoding_type)
162
 
        return out_stream
163
 
 
164
 
    def _make_output_stream_explicit(self, encoding, encoding_type):
165
 
        raise NotImplementedError("%s doesn't support make_output_stream"
166
 
            % (self.__class__.__name__))
167
 
 
168
128
    def nested_progress_bar(self):
169
129
        """Return a nested progress bar.
170
130
 
219
179
        """
220
180
        raise NotImplementedError(self.get_boolean)
221
181
 
222
 
    def get_integer(self, prompt):
223
 
        """Get an integer from the user.
224
 
 
225
 
        :param prompt: a message to prompt the user with. Could be a multi-line
226
 
            prompt but without a terminating \n.
227
 
 
228
 
        :return: A signed integer.
229
 
        """
230
 
        raise NotImplementedError(self.get_integer)
231
 
 
232
182
    def make_progress_view(self):
233
183
        """Construct a new ProgressView object for this UI.
234
184
 
258
208
        """
259
209
        pass
260
210
 
261
 
    def log_transport_activity(self, display=False):
262
 
        """Write out whatever transport activity has been measured.
263
 
 
264
 
        Implementations are allowed to do nothing, but it is useful if they can
265
 
        write a line to the log file.
266
 
 
267
 
        :param display: If False, only log to disk, if True also try to display
268
 
            a message to the user.
269
 
        :return: None
270
 
        """
271
 
        # Default implementation just does nothing
272
 
        pass
273
 
 
274
211
    def show_error(self, msg):
275
212
        """Show an error message (not an exception) to the user.
276
213
        
277
214
        The message should not have an error prefix or trailing newline.  That
278
 
        will be added by the factory if appropriate.
 
215
        will be added by the factory if appropriate. 
279
216
        """
280
217
        raise NotImplementedError(self.show_error)
281
218
 
287
224
        """Show a warning to the user."""
288
225
        raise NotImplementedError(self.show_warning)
289
226
 
290
 
    def warn_cross_format_fetch(self, from_format, to_format):
291
 
        """Warn about a potentially slow cross-format transfer"""
292
 
        # See <https://launchpad.net/bugs/456077> asking for a warning here
293
 
        trace.warning("Doing on-the-fly conversion from %s to %s.\n"
294
 
            "This may take some time. Upgrade the repositories to the "
295
 
            "same format for better performance.\n" %
296
 
            (from_format, to_format))
297
227
 
298
228
 
299
229
class SilentUIFactory(UIFactory):
315
245
    def get_username(self, prompt, **kwargs):
316
246
        return None
317
247
 
318
 
    def _make_output_stream_explicit(self, encoding, encoding_type):
319
 
        return NullOutputStream(encoding)
320
 
 
321
248
    def show_error(self, msg):
322
249
        pass
323
250
 
340
267
    def get_boolean(self, prompt):
341
268
        return self.responses.pop(0)
342
269
 
343
 
    def get_integer(self, prompt):
344
 
        return self.responses.pop(0)
345
 
 
346
270
    def get_password(self, prompt='', **kwargs):
347
271
        return self.responses.pop(0)
348
272
 
349
273
    def get_username(self, prompt, **kwargs):
350
274
        return self.responses.pop(0)
351
 
 
 
275
    
352
276
    def assert_all_input_consumed(self):
353
277
        if self.responses:
354
278
            raise AssertionError("expected all input in %r to be consumed"
380
304
 
381
305
    def show_transport_activity(self, transport, direction, byte_count):
382
306
        pass
383
 
 
384
 
    def log_transport_activity(self, display=False):
385
 
        pass
386
 
 
387
 
 
388
 
class NullOutputStream(object):
389
 
    """Acts like a file, but discard all output."""
390
 
 
391
 
    def __init__(self, encoding):
392
 
        self.encoding = encoding
393
 
 
394
 
    def write(self, data):
395
 
        pass
396
 
 
397
 
    def writelines(self, data):
398
 
        pass
399
 
 
400
 
    def close(self):
401
 
        pass