|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T a
Length: 2668 (0xa6c) Types: TextFile Names: »affirm.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/X/Xmille/control/affirm.c«
/* * affirm.c * * affirm an action (yes/no) */ # include <X11/Xlib.h> # include "control.h" # include "co_class.h" # include <sys/time.h> # include <assert.h> /* * affirm window on screen */ # define AFFIRM_Y 350 # define AFFIRM_X 200 # define AFFIRM_HP 50 /* padding */ # define MIN_AFFIRM_W (CANCEL_X + 80) # define LABEL_Y 25 # define OK_X (10) # define OK_Y (AFFIRM_HP) # define CANCEL_X (OK_X + 100) # define CANCEL_Y (OK_Y) # define TEXT_OFF 5 extern int co_inited; static char *label; static int affirm_h, affirm_w, label_x; static Window affirm, ok, cancel; extern GC co_fore_gc; static int OKstate, CANCELstate; int co_affirm(title, parent) char *title; Window parent; { XEvent rep; int state, affirm_x; int label_w; int co_OKstate (), co_CANCELstate (), co_affirmEvent (), CmanageButton (); int mask; if (!co_inited) co_init(); label = title; label_w = XTextWidth(co_font, label, strlen(label)); if (MIN_AFFIRM_W+10 >= label_w) affirm_w = MIN_AFFIRM_W+10; else affirm_w = label_w + 10; OKstate = 0; CANCELstate = 0; label_x = affirm_w / 2 - label_w / 2; affirm_h = CANCEL_Y + 60; affirm_x = AFFIRM_X - affirm_w/2; affirm = XCreateSimpleWindow (dpy, parent, affirm_x, AFFIRM_Y, affirm_w, affirm_h, 1, co_border, co_background); ok = CmapButton (affirm, OK_X, OK_Y, co_OK, co_OKstate); cancel = CmapButton (affirm, CANCEL_X, CANCEL_Y, co_CANCEL, co_CANCELstate); bindEvent (affirm, ExposureMask, co_affirmEvent); bindEvent (ok, ExposureMask|ButtonPressMask|ButtonReleaseMask| Button1MotionMask|Button2MotionMask|Button3MotionMask|LeaveWindowMask, CmanageButton); bindEvent (cancel, ExposureMask|ButtonPressMask|ButtonReleaseMask| Button1MotionMask|Button2MotionMask|Button3MotionMask|LeaveWindowMask, CmanageButton); XMapWindow (dpy, affirm); while (!OKstate && !CANCELstate) { dispatch (); } unbindEvent (affirm, ExposureMask); unbindEvent (ok, ExposureMask|ButtonPressMask|ButtonReleaseMask| Button1MotionMask|Button2MotionMask|Button3MotionMask|LeaveWindowMask); unbindEvent (cancel, ExposureMask|ButtonPressMask|ButtonReleaseMask| Button1MotionMask|Button2MotionMask|Button3MotionMask|LeaveWindowMask); XUnmapWindow (dpy, affirm); CunmapButton (cancel); CunmapButton (ok); XDestroyWindow (dpy, affirm); if (CANCELstate) return 0; if (OKstate) return 1; } co_affirmEvent (rep) XEvent *rep; { switch (rep->type) { case Expose: redisplayLabel (); } } co_OKstate (n) { OKstate = 1; } co_CANCELstate (n) { CANCELstate = 1; } static redisplayLabel () { XDrawImageString (dpy, affirm, co_fore_gc, label_x, LABEL_Y, label, strlen (label)); XFlush (dpy); }