class drawtool : public canvas { 
\fbox{drawtool}
public: drawtool() : canvas() { }
(I)

drawtool(char* p, char* opts="") : canvas(p,0) { init(opts); redirect(c); } int operator()(){
(II)

if ( !strcmp( "drawtool" ,*argv) ) create(--argc,++argv); else if (!strcmp("self",argv[1]) ) tk->result(self()->path()); else self()->eval( flatten(--argc,++argv) ); return OK; } protected: tablet* c; void init(char* options); void create(int argc, char* argv[]) {
(III)

char* name = *argv; char* args = flatten(--argc,++argv); handler* h = new drawtool(name, args ); tk->action(name,h); } };

slide: The {\em drawtool} widget command