📄 test9.c
字号:
/* $Header: /cvsroot/lesstif/lesstif/test/Xm/filesb/test9.c,v 1.14 2002/05/01 15:39:21 amai Exp $ */#include <stdio.h>#include <stdlib.h>#include <Xm/Xm.h>#include <Xm/Label.h>#include <Xm/TextF.h>#include <Xm/Form.h>#include <Xm/RowColumn.h>#include <Xm/FileSBP.h>#include <Xm/FileSB.h>#include <Xm/PushB.h>#include <Xm/Frame.h>#include <Xm/Text.h>#include <Xm/MessageB.h>#include "../../common/Test.h"#include "mkdirtree.h"XmQualifyProc (*defaultQualifyProc)();Widget In;Widget Out;static char *FallBack[] = { "*.geometrySlop: 0", NULL};static voidStuffInt(Widget w, int value){char buf[1024]; sprintf(buf, "%i", value); XmTextFieldSetString(w, buf);}static voidStuffXmString(Widget w, XmString value){char *buf; if (XmStringGetLtoR(value, XmFONTLIST_DEFAULT_TAG, &buf)) { XmTextFieldSetString(w, buf); XmTextFieldSetInsertionPosition(w, XmTextFieldGetLastPosition(w)); printf(" >%s<\n", buf); XtFree(buf); } else { if (value) { XmTextFieldSetString(w, ""); printf(" ><\n"); } else { XmTextFieldSetString(w, "NULL"); printf(" NULL\n"); } }}static voidStuffValues(Widget w, Widget In, XmFileSelectionBoxCallbackStruct *in){ printf("reason %i\n", in->reason); StuffInt(XtNameToWidget(In, "*reason_Text"), in->reason); printf("event %i\n", (int)in->event); StuffInt(XtNameToWidget(In, "*event_Text"), (int)in->event); printf("value %i", in->length); StuffXmString(XtNameToWidget(In, "*value_Text"), in->value); StuffInt(XtNameToWidget(In, "*length_Text"), in->length); printf("mask %i", in->mask_length); StuffXmString(XtNameToWidget(In, "*mask_Text"), in->mask); StuffInt(XtNameToWidget(In, "*mask_length_Text"), in->mask_length); printf("dir %i", in->dir_length); StuffXmString(XtNameToWidget(In, "*dir_Text"), in->dir); StuffInt(XtNameToWidget(In, "*dir_length_Text"), in->dir_length); printf("pattern %i", in->pattern_length); StuffInt(XtNameToWidget(In, "*pattern_length_Text"), in->pattern_length); StuffXmString(XtNameToWidget(In, "*pattern_Text"), in->pattern);}static voidmyQualifyProc(Widget w, XmFileSelectionBoxCallbackStruct *in, XmFileSelectionBoxCallbackStruct *out){ printf("------ IN -----\n"); StuffValues(w, In, in); (*defaultQualifyProc)(w, in, out); printf("\n------ OUT -----\n"); StuffValues(w, Out, out); printf("\n");}static WidgetCreateField(Widget parent, String name, ArgList arglist, Cardinal argcount){Widget Form;Widget Label;Widget TextField;String tmpName; tmpName = XtMalloc(strlen(name) + 100); sprintf(tmpName, "%s_Form", name); Form = XmCreateForm(parent, tmpName, NULL, 0); Label = XmCreateLabel(Form, name, NULL, 0); sprintf(tmpName, "%s_Text", name); TextField = XmCreateTextField(Form, tmpName, arglist, argcount); XtVaSetValues(Label, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, TextField, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, TextField, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, TextField, NULL); XtVaSetValues(TextField, XmNrightAttachment, XmATTACH_FORM, NULL); XtManageChild(Label); XtManageChild(TextField); XtFree(tmpName); return(Form);}static WidgetCreateFSBcallbackStruct(Widget parent, String name, ArgList arglist, Cardinal argcount){String *tmp;String tmpName;Widget Frame;Widget Title;Widget RC;Widget Field;String fields[] = { "reason", "event", "value", "length", "mask", "mask_length", "dir", "dir_length", "pattern", "pattern_length", NULL}; tmpName = XtMalloc(strlen(name) + 37); Frame = XmCreateFrame(parent, name, arglist, argcount); XtVaSetValues(Frame, /*XmNshadowType, XmSHADOW_IN,*//* blows up */ /*XmNshadowType, XmSHADOW_OUT,*//* blows up */ XmNshadowType, XmSHADOW_ETCHED_IN, /*XmNshadowType, XmSHADOW_ETCHED_OUT,*//* blows up */ XmNshadowThickness, 5, NULL); sprintf(tmpName, "%sput CallbackStruct", name); Title = XmCreateLabel(Frame, tmpName, arglist, argcount); XtFree(tmpName); XtVaSetValues(Title, XmNchildType, XmFRAME_TITLE_CHILD, XmNchildHorizontalAlignment, XmALIGNMENT_CENTER, NULL); RC = XmCreateRowColumn(Frame, name, arglist, argcount); tmp = fields; while (*tmp) { Field = CreateField(RC, *tmp, arglist, argcount); XtManageChild(Field); tmp++; }; XtManageChild(Title); XtManageChild(RC); return(Frame);}static voidQualifyCallback(Widget w){XmFileSelectionBoxCallbackStruct In1;XmFileSelectionBoxCallbackStruct Out1;String Text; printf("qualify\n"); Text = XmTextFieldGetString(XtNameToWidget(In, "*reason_Text")); In1.reason = atoi(Text); XtFree(Text); Text = XmTextFieldGetString(XtNameToWidget(In, "*event_Text")); In1.event = (XEvent *)atoi(Text); XtFree(Text); Text = XmTextFieldGetString(XtNameToWidget(In, "*value_Text")); if (strcmp("NULL", Text) == 0) { In1.value = (XmString)NULL; } else { In1.value = XmStringCreateSimple(Text); XtFree(Text); } Text = XmTextFieldGetString(XtNameToWidget(In, "*length_Text")); In1.length = atoi(Text); XtFree(Text); Text = XmTextFieldGetString(XtNameToWidget(In, "*mask_Text")); if (strcmp("NULL", Text) == 0) { In1.mask = (XmString)NULL; } else { In1.mask = XmStringCreateSimple(Text); XtFree(Text); } Text = XmTextFieldGetString(XtNameToWidget(In, "*mask_length_Text")); In1.mask_length = atoi(Text); XtFree(Text); Text = XmTextFieldGetString(XtNameToWidget(In, "*dir_Text")); if (strcmp("NULL", Text) == 0) { In1.dir = (XmString)NULL; } else { In1.dir = XmStringCreateSimple(Text); XtFree(Text); } Text = XmTextFieldGetString(XtNameToWidget(In, "*dir_length_Text")); In1.dir_length = atoi(Text); XtFree(Text); Text = XmTextFieldGetString(XtNameToWidget(In, "*pattern_Text")); if (strcmp("NULL", Text) == 0) { In1.pattern = (XmString)NULL; } else { In1.pattern = XmStringCreateSimple(Text); XtFree(Text); } Text = XmTextFieldGetString(XtNameToWidget(In, "*pattern_length_Text")); In1.pattern_length = atoi(Text); XtFree(Text); myQualifyProc(w, &In1, &Out1); XmStringFree(In1.value); XmStringFree(In1.mask); XmStringFree(In1.dir); XmStringFree(In1.pattern); XmStringFree(Out1.value); XmStringFree(Out1.mask); XmStringFree(Out1.dir); XmStringFree(Out1.pattern);}intmain(int argc, char **argv){ XtAppContext app; Widget toplevel; Widget Form; Widget FSB; Widget Qualify;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -