>
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(); }
};