示例#1
0
static bool BCallBack(struct t_x11 *x11,XEvent *event, Window w, void *data)
{
  t_sc  *sc;
  
  sc=(t_sc *)data;
  switch (event->type) {
  case Expose:
    XSetForeground(x11->disp,x11->gc,sc->col[sc->ncol-1].xc.pixel);
    TextInWin(x11,&sc->but,sc->but.text,eXCenter,eYCenter);
    break;
  case ConfigureNotify:
    sc->but.width=event->xconfigure.width;
    sc->but.height=event->xconfigure.height;
    break;
  case EnterNotify:
    LightBorder(x11->disp,sc->but.self,sc->col[sc->ncol-1].xc.pixel);
    break;
  case LeaveNotify:
    LightBorder(x11->disp,sc->but.self,sc->col[0].xc.pixel);
    break;
  case ButtonPress:
    x11->UnRegisterCallback(x11,sc->wd.self);
    x11->UnRegisterCallback(x11,sc->but.self);
    return TRUE;
  }
  return FALSE;
}
示例#2
0
/*****************************
 *
 * Exececute the dialog box procedure
 * Returns when a button is pushed.
 * return value is the ID of the button
 *
 ****************************/
void ShowDlg(t_dlg *dlg)
{
    int        i;
    t_dlgitem *dlgitem;

    XMapWindow(dlg->x11->disp, dlg->win.self);
    XMapSubwindows(dlg->x11->disp, dlg->win.self);
    for (i = 0; (i < dlg->nitem); i++)
    {
        LightBorder(dlg->x11->disp, dlg->dlgitem[i]->win.self, dlg->bg);
    }
    XSetForeground(dlg->x11->disp, dlg->x11->gc, dlg->x11->fg);
    for (i = 0; (i < dlg->nitem); i++)
    {
        dlgitem = dlg->dlgitem[i];
        if ((dlgitem->type == edlgBN) &&
            (dlgitem->u.button.bDefault))
        {
            PushMouse(dlg->x11->disp, dlgitem->win.self,
                      dlgitem->win.width/2, dlgitem->win.height/2);
            dlg->bPop = true;
            break;
        }
    }
    dlg->bGrab = false;
}
示例#3
0
文件: popup.c 项目: hasagar/gromacs
gmx_bool ChildCallBack(t_x11 *x11, XEvent *event, Window w, void *data)
{
    t_child   *child;
    t_mentry  *m;
    t_windata *wd;
    XEvent     letter;

    child = (t_child *)data;
    m     = child->m;
    wd    = &(child->wd);
    switch (event->type)
    {
        case Expose:
            XSetForeground(x11->disp, x11->gc, x11->fg);
            TextInRect(x11, w, m->str, 16, 0, wd->width-16-2, wd->height-2,
                       eXLeft, eYCenter);
            if (m->bChecked)
            {
                int y = x11->font->ascent;
                XDrawLine(x11->disp, w, x11->gc, 2, (y*2)/3, 6, y);
                XDrawLine(x11->disp, w, x11->gc, 3, (y*2)/3, 7, y);
                XDrawLine(x11->disp, w, x11->gc, 7, y, 12, 2);
            }
            break;
        case EnterNotify:
            LightBorder(x11->disp, w, x11->fg);
            break;
        case LeaveNotify:
            LightBorder(x11->disp, w, x11->bg);
            break;
        case ButtonRelease:
            letter.type                 = ClientMessage;
            letter.xclient.display      = x11->disp;
            letter.xclient.window       = m->send_to ? m->send_to : child->Parent;
            letter.xclient.message_type = 0;
            letter.xclient.format       = 32;
            letter.xclient.data.l[0]    = m->nreturn;
            XSendEvent(x11->disp, letter.xclient.window, True, 0, &letter);
            break;
        default:
            break;
    }
    return FALSE;
}