#include #include #include #include #include #include void upper(Widget w, XtPointer client, XtPointer call) { XmTextVerifyCallbackStruct *cbs = (XmTextVerifyCallbackStruct *)call; int len; if (cbs->text->ptr) { for (len=0; lentext->length; len++) { printf("upper: pos=%d before=%c ",len,cbs->text->ptr[len]); if (islower(cbs->text->ptr[len])) cbs->text->ptr[len]=toupper(cbs->text->ptr[len]); printf("after=%c\n",cbs->text->ptr[len]); } } } void focus(Widget w, XtPointer client, XtPointer call) { XmAnyCallbackStruct *cbs = (XmAnyCallbackStruct *)call; int len; char *text,*c; c=text=XmTextFieldGetString(w); len=strlen(text); if (cbs->reason==XmCR_FOCUS) { while (*c) { if (islower(*c)) *c=toupper(*c); c++; } } else { while (*c) { if (isupper(*c)) *c=tolower(*c); c++; } } #ifdef DOESNT_WORK XmTextFieldSetString(w,text); /* calls modifyVerify in real Motif */ #else XtVaSetValues(w, XtNvalue,text, NULL); #endif XtFree(text); } void cursor(Widget w, XtPointer client, XtPointer call) { XmTextVerifyCallbackStruct *cbs = (XmTextVerifyCallbackStruct *)call; printf("cursor: cur=%d new=%d\n",(int)cbs->currInsert,(int)cbs->newInsert); if (cbs->currInsertnewInsert) cbs->doit=False; } void activate(Widget w, XtPointer client, XtPointer call) { char *name,*value; name=(char *)client; value=XmTextFieldGetString(w); printf("activate %s: value=%s\n",name,value); XtFree(value); } char *labels[]={ "Normal", "ModifyVerify", "MotionVerify", "Fixed Length", "wchar_t", }; int main(int argc, char **argv) { Widget toplevel, rc, tf, w; XtAppContext app; int i; XtSetLanguageProc(NULL, NULL, NULL); toplevel = XtVaAppInitialize(&app,"Label",NULL,0,&argc,argv,NULL,NULL); rc=XtVaCreateManagedWidget("rowcol",xmRowColumnWidgetClass,toplevel, XmNpacking,XmPACK_COLUMN, XmNnumColumns,XtNumber(labels), XmNorientation,XmHORIZONTAL, XmNisAligned,True, XmNentryAlignment,XmALIGNMENT_END, NULL); for (i=0; i