/* Written by Dan Heller and Paula Ferguson. * Copyright 1994, O'Reilly & Associates, Inc. * Permission to use, copy, and modify this program without * restriction is hereby granted, as long as this copyright * notice appears in each copy of the program source code. * This program is freely distributable without licensing fees and * is provided without guarantee or warrantee expressed or implied. * This program is -not- in the public domain. */ /* allcaps.c -- demonstrate the XmNmodifyVerifyCallback for * Text widgets by using one to convert all typed input to * capital letters. */ #include <Xm/Text.h> #include <Xm/LabelG.h> #include <Xm/RowColumn.h> #includevoid allcaps(); main(argc, argv) int argc; char *argv[]; { Widget toplevel, text_w, rowcol; XtAppContext app; XtSetLanguageProc (NULL, NULL, NULL); toplevel = XtVaAppInitialize (&app, "Demos", NULL, 0, &argc, argv, NULL, NULL); rowcol = XtVaCreateWidget ("rowcol", xmRowColumnWidgetClass, toplevel, XmNorientation, XmHORIZONTAL, NULL); XtVaCreateManagedWidget ("Enter Text:", xmLabelGadgetClass, rowcol, NULL); text_w = XtVaCreateManagedWidget ("text_w", xmTextWidgetClass, rowcol, NULL); XtAddCallback (text_w, XmNmodifyVerifyCallback, allcaps, NULL); XtManageChild (rowcol); XtRealizeWidget (toplevel); XtAppMainLoop (app); } /* allcaps() -- convert inserted text to capital letters. */ void allcaps(text_w, client_data, call_data) Widget text_w; XtPointer client_data; XtPointer call_data; { int len; XmTextVerifyCallbackStruct *cbs = (XmTextVerifyCallbackStruct *) call_data; if (cbs->text->ptr == NULL) return; /* convert all input to upper-case if necessary */ for (len = 0; len < cbs->text->length; len++) if (islower (cbs->text->ptr[len])) cbs->text->ptr[len] = toupper (cbs->text->ptr[len]); }