>
slide: The file_handler class
class file_handler : public handler { public: file_handler( canvas* x ) : c(x) {} int operator()() { char* key = _event->arg(1); if (!strcmp("Open", key)) launch("OPEN"); else if (!strcmp("Save", key)) launch("SAVE"); else if (!strcmp("OPEN", key)) open(); else if (!strcmp("SAVE", key)) save(); return OK; } protected: canvas* c; file_chooser* f; void launch(char* args) { // launch new filechooser f = new file_chooser(); f->handler(this, args); } void open() { tk->source( f->get() ); f->destroy(); } void save() { c->postscript( f->get() ); f->destroy(); } };