+# -*- coding: utf-8 -*-
+#
# Copyright 2012 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
+"""This package is intended to provide output classes for printing messages and
+progress bars. The user can change the output behaviour of the program by
+subclassing the Output class and assigning the derived one as the output class
+of the various parts of the image-creator package.
+"""
+
class Output(object):
+ """A class for printing program output"""
def error(self, msg, new_line=True):
+ """Print an error"""
pass
def warn(self, msg, new_line=True):
+ """Print a warning"""
pass
def success(self, msg, new_line=True):
+ """Print msg after an action is completed"""
pass
def output(self, msg='', new_line=True):
+ """Print normal program output"""
pass
def cleanup(self):
+ """Cleanup this output class"""
pass
def clear(self):
+ """Clear the screen"""
pass
def _get_progress(self):
+ """Returns a new Progress object"""
progress = self._Progress
progress.output = self
return progress
Progress = property(_get_progress)
class _Progress(object):
+ """Internal progress bar class"""
def __init__(self, size, title, bar_type='default'):
self.size = size
self.bar_type = bar_type
- self.output.output("%s..." % title, False)
+ self.output.output("%s ..." % title, False)
def goto(self, dest):
+ """Move progress to a specific position"""
pass
def next(self):
+ """Move progress a step forward"""
pass
def success(self, result):
+ """Print a msg after an action is completed successfully"""
self.output.success(result)
def progress_generator(self, message):
+ """A python generator for the progress bar class"""
def generator(n):
progressbar = self.Progress(n, message)
yield
return generator
-
-class CombinedOutput(Output):
-
- def __init__(self, outputs=[]):
- self._outputs = outputs
-
- def add(self, output):
- self._outputs.append(output)
-
- def remove(self, output):
- self._outputs.remove(output)
-
- def error(self, msg, new_line=True):
- for out in self._outputs:
- out.error(msg, new_line)
-
- def warn(self, msg, new_line=True):
- for out in self._outputs:
- out.warn(msg, new_line)
-
- def success(self, msg, new_line=True):
- for out in self._outputs:
- out.success(msg, new_line)
-
- def output(self, msg='', new_line=True):
- for out in self._outputs:
- out.output(msg, new_line)
-
- def cleanup(self):
- for out in self._outputs:
- out.cleanup()
-
- def clear(self):
- for out in self._outputs:
- out.clear()
-
- class _Progress(object):
-
- def __init__(self, size, title, bar_type='default'):
- self.progresses = []
- for out in self.output._outputs:
- self.progresses.append(out.Progress(size, title, bar_type))
-
- def goto(self, dest):
- for progress in self.progresses:
- progress.goto(dest)
-
- def next(self):
- for progress in self.progresses:
- progress.next()
-
- def success(self, result):
- for progress in self.progresses:
- progress.success(result)
-
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :