~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ui/__init__.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-06-21 05:45:05 UTC
  • mfrom: (5222.2.10 fix-terminal-spew)
  • Revision ID: pqm@pqm.ubuntu.com-20100621054505-7b6lnkos9fcy3d4r
(lifeless) Aaron's output fix for bzr from the UDS sprint,
 tweaked to use a context manager for the whole library. (Aaron Bentley)
 (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
106
106
    This tells the library how to display things to the user.  Through this
107
107
    layer different applications can choose the style of UI.
108
108
 
 
109
    UI Factories are also context managers, for some syntactic sugar some users
 
110
    need.
 
111
 
109
112
    :ivar suppressed_warnings: Identifiers for user warnings that should 
110
113
        no be emitted.
111
114
    """
123
126
        self.suppressed_warnings = set()
124
127
        self._quiet = False
125
128
 
 
129
    def __enter__(self):
 
130
        """Context manager entry support.
 
131
 
 
132
        Override in a concrete factory class if initialisation before use is
 
133
        needed.
 
134
        """
 
135
 
 
136
    def __exit__(self, exc_type, exc_val, exc_tb):
 
137
        """Context manager exit support.
 
138
 
 
139
        Override in a concrete factory class if more cleanup than a simple
 
140
        self.clear_term() is needed when the UIFactory is finished with.
 
141
        """
 
142
        self.clear_term()
 
143
        return False # propogate exceptions.
 
144
 
126
145
    def be_quiet(self, state):
127
146
        """Tell the UI to be more quiet, or not.
128
147
 
352
371
                "without an upgrade path.\n" % (inter.target._format,))
353
372
 
354
373
 
355
 
 
356
374
class SilentUIFactory(UIFactory):
357
375
    """A UI Factory which never prints anything.
358
376