1 # Copyright 2012 GRNET S.A. All rights reserved.
3 # Redistribution and use in source and binary forms, with or
4 # without modification, are permitted provided that the following
7 # 1. Redistributions of source code must retain the above
8 # copyright notice, this list of conditions and the following
11 # 2. Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following
13 # disclaimer in the documentation and/or other materials
14 # provided with the distribution.
16 # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 # POSSIBILITY OF SUCH DAMAGE.
29 # The views and conclusions contained in the software and
30 # documentation are those of the authors and should not be
31 # interpreted as representing official policies, either expressed
32 # or implied, of GRNET S.A.
36 def error(self, msg, new_line=True):
39 def warn(self, msg, new_line=True):
42 def success(self, msg, new_line=True):
45 def output(self, msg='', new_line=True):
54 def _get_progress(self):
55 progress = self._Progress
56 progress.output = self
59 Progress = property(_get_progress)
61 class _Progress(object):
62 def __init__(self, size, title, bar_type='default'):
64 self.bar_type = bar_type
65 self.output.output("%s..." % title, False)
73 def success(self, result):
74 self.output.success(result)
76 def progress_generator(self, message):
78 progressbar = self.Progress(n, message)
84 progressbar.success('done')
89 class CombinedOutput(Output):
91 def __init__(self, outputs=[]):
92 self._outputs = outputs
94 def add(self, output):
95 self._outputs.append(output)
97 def remove(self, output):
98 self._outputs.remove(output)
100 def error(self, msg, new_line=True):
101 for out in self._outputs:
102 out.error(msg, new_line)
104 def warn(self, msg, new_line=True):
105 for out in self._outputs:
106 out.warn(msg, new_line)
108 def success(self, msg, new_line=True):
109 for out in self._outputs:
110 out.success(msg, new_line)
112 def output(self, msg='', new_line=True):
113 for out in self._outputs:
114 out.output(msg, new_line)
117 for out in self._outputs:
121 for out in self._outputs:
124 class _Progress(object):
126 def __init__(self, size, title, bar_type='default'):
128 for out in self.output._outputs:
129 self.progresses.append(out.Progress(size, title, bar_type))
131 def goto(self, dest):
132 for progress in self.progresses:
136 for progress in self.progresses:
139 def success(self, result):
140 for progress in self.progresses:
141 progress.success(result)
143 # vim: set sta sts=4 shiftwidth=4 sw=4 et ai :