new on_changed() api for widgets
move cmap_app logic to cmap_app.run()
TextBoxFloat is a class
spelling
looser coupling via better callback args