A widget based canvas library