rename paint() to frame()
add signals to canvas and abstractpainter