home *** CD-ROM | disk | FTP | other *** search
- #include "xsignal.h"
-
- /* Set up callback proc for canvas label so that the sigpane structure
- can be determined. How to get the event data back ? Lets try a
- global variable - this code is not re-enterable or recursive ! */
-
- void canvas_selected(canvas, event, params, nparams)
- Widget canvas;
- XButtonEvent *event;
- String *params;
- Cardinal *nparams;
- {
- register int x, y, t;
- int nsamp, value;
- char buf[1], labval[40];
- XButtonPressedEvent *be = (XButtonPressedEvent *)event;
- XKeyPressedEvent *ke = (XKeyPressedEvent *)event;
- Arg arg[10];
- sigbox *pane;
-
- pane = panefromcanvas(canvas);
- if( pane->s == NULL ) return;
- x = event->x;
- y = event->y;
- switch (event->type)
- {
- case MotionNotify:
- /* Canvas moved */
- /* fprintf(stderr,"Mouse moved, x=%d y=%d\n",x,y); */
- break;
- case ButtonPress:
- if (be->button == Button1) {
- MapSample(pane,x,y,&nsamp, &value);
- if( nsamp > pane->rmark ) return;
- UnMark(pane,pane->lmark);
- pane->lmark=nsamp;
- Mark(pane,pane->lmark);
- } else if (be->button == Button2) {
- MapSample(pane,x,y,&nsamp, &value);
- sprintf(&labval[0],"Sample %d Value %d",nsamp,value);
- XtSetArg( arg[0], XtNlabel, &labval[0]);
- XtSetValues(pane->picksamp, arg, ONE);
- } else if (be->button == Button3) {
- MapSample(pane,x,y,&nsamp, &value);
- if( nsamp < pane->lmark ) return;
- UnMark(pane,pane->rmark);
- pane->rmark=nsamp;
- Mark(pane,pane->rmark);
- }
- break;
- case KeyPress:
- if (XLookupString(ke, buf, sizeof(buf), NULL, NULL) > 0)
- fprintf(stderr,"Key '%c' pressed\n",buf[0]);
- break;
- }
- }
-