root / image_creator / output / __init__.py @ 12c97404
History | View | Annotate | Download (3.6 kB)
1 | 121f3bc0 | Nikos Skalkotos | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | 121f3bc0 | Nikos Skalkotos | #
|
3 | 4e58b51b | Nikos Skalkotos | # Copyright 2012 GRNET S.A. All rights reserved.
|
4 | 4e58b51b | Nikos Skalkotos | #
|
5 | 4e58b51b | Nikos Skalkotos | # Redistribution and use in source and binary forms, with or
|
6 | 4e58b51b | Nikos Skalkotos | # without modification, are permitted provided that the following
|
7 | 4e58b51b | Nikos Skalkotos | # conditions are met:
|
8 | 4e58b51b | Nikos Skalkotos | #
|
9 | 4e58b51b | Nikos Skalkotos | # 1. Redistributions of source code must retain the above
|
10 | 4e58b51b | Nikos Skalkotos | # copyright notice, this list of conditions and the following
|
11 | 4e58b51b | Nikos Skalkotos | # disclaimer.
|
12 | 4e58b51b | Nikos Skalkotos | #
|
13 | 4e58b51b | Nikos Skalkotos | # 2. Redistributions in binary form must reproduce the above
|
14 | 4e58b51b | Nikos Skalkotos | # copyright notice, this list of conditions and the following
|
15 | 4e58b51b | Nikos Skalkotos | # disclaimer in the documentation and/or other materials
|
16 | 4e58b51b | Nikos Skalkotos | # provided with the distribution.
|
17 | 4e58b51b | Nikos Skalkotos | #
|
18 | 4e58b51b | Nikos Skalkotos | # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
19 | 4e58b51b | Nikos Skalkotos | # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20 | 4e58b51b | Nikos Skalkotos | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
21 | 4e58b51b | Nikos Skalkotos | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
22 | 4e58b51b | Nikos Skalkotos | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
23 | 4e58b51b | Nikos Skalkotos | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
24 | 4e58b51b | Nikos Skalkotos | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
25 | 4e58b51b | Nikos Skalkotos | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
26 | 4e58b51b | Nikos Skalkotos | # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
27 | 4e58b51b | Nikos Skalkotos | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
28 | 4e58b51b | Nikos Skalkotos | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29 | 4e58b51b | Nikos Skalkotos | # POSSIBILITY OF SUCH DAMAGE.
|
30 | 4e58b51b | Nikos Skalkotos | #
|
31 | 4e58b51b | Nikos Skalkotos | # The views and conclusions contained in the software and
|
32 | 4e58b51b | Nikos Skalkotos | # documentation are those of the authors and should not be
|
33 | 4e58b51b | Nikos Skalkotos | # interpreted as representing official policies, either expressed
|
34 | 4e58b51b | Nikos Skalkotos | # or implied, of GRNET S.A.
|
35 | 4e58b51b | Nikos Skalkotos | |
36 | 121f3bc0 | Nikos Skalkotos | """This package is intended to provide output classes for printing messages and
|
37 | 121f3bc0 | Nikos Skalkotos | progress bars. The user can change the output behaviour of the program by
|
38 | 121f3bc0 | Nikos Skalkotos | subclassing the Output class and assigning the derived one as the output class
|
39 | 121f3bc0 | Nikos Skalkotos | of the various parts of the image-creator package.
|
40 | 121f3bc0 | Nikos Skalkotos | """
|
41 | 121f3bc0 | Nikos Skalkotos | |
42 | 4e58b51b | Nikos Skalkotos | |
43 | 4e58b51b | Nikos Skalkotos | class Output(object): |
44 | 88f83027 | Nikos Skalkotos | """A class for printing program output"""
|
45 | 4e58b51b | Nikos Skalkotos | def error(self, msg, new_line=True): |
46 | 88f83027 | Nikos Skalkotos | """Print an error"""
|
47 | 4e58b51b | Nikos Skalkotos | pass
|
48 | 4e58b51b | Nikos Skalkotos | |
49 | 4e58b51b | Nikos Skalkotos | def warn(self, msg, new_line=True): |
50 | 88f83027 | Nikos Skalkotos | """Print a warning"""
|
51 | 4e58b51b | Nikos Skalkotos | pass
|
52 | 4e58b51b | Nikos Skalkotos | |
53 | 4e58b51b | Nikos Skalkotos | def success(self, msg, new_line=True): |
54 | 88f83027 | Nikos Skalkotos | """Print msg after an action is completed"""
|
55 | 4e58b51b | Nikos Skalkotos | pass
|
56 | 4e58b51b | Nikos Skalkotos | |
57 | 4e58b51b | Nikos Skalkotos | def output(self, msg='', new_line=True): |
58 | 88f83027 | Nikos Skalkotos | """Print normal program output"""
|
59 | 4e58b51b | Nikos Skalkotos | pass
|
60 | 4e58b51b | Nikos Skalkotos | |
61 | ae10ac63 | Nikos Skalkotos | def cleanup(self): |
62 | 88f83027 | Nikos Skalkotos | """Cleanup this output class"""
|
63 | ae10ac63 | Nikos Skalkotos | pass
|
64 | ae10ac63 | Nikos Skalkotos | |
65 | 4a847a98 | Nikos Skalkotos | def clear(self): |
66 | 88f83027 | Nikos Skalkotos | """Clear the screen"""
|
67 | 4a847a98 | Nikos Skalkotos | pass
|
68 | 4a847a98 | Nikos Skalkotos | |
69 | 4e58b51b | Nikos Skalkotos | def _get_progress(self): |
70 | 88f83027 | Nikos Skalkotos | """Returns a new Progress object"""
|
71 | 4e58b51b | Nikos Skalkotos | progress = self._Progress
|
72 | 4e58b51b | Nikos Skalkotos | progress.output = self
|
73 | 4e58b51b | Nikos Skalkotos | return progress
|
74 | 4e58b51b | Nikos Skalkotos | |
75 | 4e58b51b | Nikos Skalkotos | Progress = property(_get_progress)
|
76 | 4e58b51b | Nikos Skalkotos | |
77 | 4e58b51b | Nikos Skalkotos | class _Progress(object): |
78 | 88f83027 | Nikos Skalkotos | """Internal progress bar class"""
|
79 | 4e58b51b | Nikos Skalkotos | def __init__(self, size, title, bar_type='default'): |
80 | 4e58b51b | Nikos Skalkotos | self.size = size
|
81 | 0931fbd6 | Nikos Skalkotos | self.bar_type = bar_type
|
82 | 3afe6b44 | Nikos Skalkotos | self.output.output("%s ..." % title, False) |
83 | 4e58b51b | Nikos Skalkotos | |
84 | 4e58b51b | Nikos Skalkotos | def goto(self, dest): |
85 | 88f83027 | Nikos Skalkotos | """Move progress to a specific position"""
|
86 | 4e58b51b | Nikos Skalkotos | pass
|
87 | 4e58b51b | Nikos Skalkotos | |
88 | 4e58b51b | Nikos Skalkotos | def next(self): |
89 | 88f83027 | Nikos Skalkotos | """Move progress a step forward"""
|
90 | 4e58b51b | Nikos Skalkotos | pass
|
91 | 4e58b51b | Nikos Skalkotos | |
92 | 4e58b51b | Nikos Skalkotos | def success(self, result): |
93 | 88f83027 | Nikos Skalkotos | """Print a msg after an action is completed successfully"""
|
94 | 4e58b51b | Nikos Skalkotos | self.output.success(result)
|
95 | 4e58b51b | Nikos Skalkotos | |
96 | 4e58b51b | Nikos Skalkotos | def progress_generator(self, message): |
97 | 88f83027 | Nikos Skalkotos | """A python generator for the progress bar class"""
|
98 | 4e58b51b | Nikos Skalkotos | def generator(n): |
99 | 4e58b51b | Nikos Skalkotos | progressbar = self.Progress(n, message)
|
100 | 4e58b51b | Nikos Skalkotos | |
101 | 4e58b51b | Nikos Skalkotos | for _ in range(n): |
102 | 4e58b51b | Nikos Skalkotos | yield
|
103 | 4e58b51b | Nikos Skalkotos | progressbar.next() |
104 | 4e58b51b | Nikos Skalkotos | |
105 | 4e58b51b | Nikos Skalkotos | progressbar.success('done')
|
106 | 4e58b51b | Nikos Skalkotos | yield
|
107 | 4e58b51b | Nikos Skalkotos | return generator
|
108 | 4e58b51b | Nikos Skalkotos | |
109 | 4e58b51b | Nikos Skalkotos | # vim: set sta sts=4 shiftwidth=4 sw=4 et ai : |