Statistics
| Branch: | Tag: | Revision:

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 :