'Create a black semi transparent canvas that covers the app.'

def __init__(self, parent, opacity, duration, easing_curve, color, tour=None):

    super(FadingCanvas, self).__init__(parent, opacity, duration, easing_curve)
    self.parent = parent
    self.tour = tour
    self.color = color
    self.color_decoration = Qt.red
    self.stroke_decoration = 2
    self.region_mask = None
    self.region_subtract = None
    self.region_decoration = None
    self.widgets = None
    self.decoration = None
    self.interaction_on = False
    self.path_current = None
    self.path_subtract = None
    self.path_full = None
    self.path_decoration = None
    self.setWindowFlags((Qt.Dialog | Qt.FramelessWindowHint))
    self.setAttribute(Qt.WA_TranslucentBackground)
    self.setAttribute(Qt.WA_TransparentForMouseEvents)
    self.setModal(False)
    self.setFocusPolicy(Qt.NoFocus)
    self.set_funcs_before_fade_in([self.update_canvas])
    self.set_funcs_after_fade_out([(lambda : self.update_widgets(None)), (lambda : self.update_decoration(None))])
