📄 test4.c
字号:
/* $Header: /cvsroot/lesstif/lesstif/test/Xm/form/test4.c,v 1.9 2002/05/01 15:39:21 amai Exp $ */#include <stdio.h>#include <stdlib.h>#include <Xm/Xm.h>#include <Xm/List.h>#include <Xm/ScrolledW.h>#include <Xm/Form.h>#include <Xm/Label.h>#include <Xm/MenuShell.h>#include <Xm/PushB.h>#include <Xm/Separator.h>#include <Xm/Text.h>#include <Xm/TextF.h>#include <Xm/RowColumn.h>#include "../../common/Test.h"Widget form, toplevel, deleteButton, dbDescFileTf, dbFileTf, DBOptionMenu, dbNameTf, dbList;char *fallback[] = { "*form.background: red", "*test.background: blue", "*label.background: yellow", "*quit.background: green", NULL};#define LARGE_WIDTH 400#define LARGE_HEIGHT 500#define SMALL_WIDTH 200#define SMALL_HEIGHT 250void Quit(Widget w, XtPointer client, XtPointer call){ exit(0);}/* * Function: * CONVERT(w, from_string, to_type, to_size, success); * Description: * A converter wrapper for convenience from BuilderXcessory. * Input: * w - Widget : the widget to use for conversion * from_string - char * : the string to convert from * to_type - char * : the type to convert to * to_size - int : the size of the conversion result * success - Boolean* : Set to the result value of the conversion * Output: * None */XtPointer CONVERT(Widget w, char *from_string, char * to_type, int to_size, Boolean * success){ XrmValue fromVal, toVal; /* resource holders */ Boolean convResult; /* return value */ unsigned char oByte; /* one byte result */ unsigned short tByte; /* two byte result */ XtPointer fByte; /* four byte result */ XtPointer aByte; /* allocated result */ /* * Zero it. */ fByte = aByte = NULL; *success = False; /* * Sometimes we do not know this at code output. */ if (to_size == 0) { if (!strcmp(to_type, XmRXmString) || !strcmp(to_type, XmRXmStringTable)) { to_size = sizeof(XtPointer); } else { to_size = strlen(from_string); } } /* * Set up the list. */ fromVal.size = strlen(from_string) + 1; fromVal.addr = from_string; switch( to_size ) { case 1: toVal.size = sizeof(unsigned char); toVal.addr = (XtPointer)&oByte; break; case 2: toVal.size = sizeof(unsigned short); toVal.addr = (XtPointer)&tByte; break; default: toVal.size = sizeof(XtPointer); toVal.addr = (XtPointer)&fByte; break; } convResult = XtConvertAndStore(w, XmRString, &fromVal, to_type, &toVal); if( convResult ) { switch( to_size ) { case 1: fByte = (XtPointer)((int)oByte); break; case 2: fByte = (XtPointer)((int)tByte); break; default: break; } } /* * Conversion will fail if we need more than 4 bytes. * For strings it will fail always the first time. */ if( !convResult && toVal.size != to_size ) { /* * Need to allocate more space for this one. */ toVal.addr = (XtPointer)XtMalloc(toVal.size); fByte = aByte = toVal.addr; convResult = XtConvertAndStore(w, XmRString, &fromVal, to_type, &toVal); } /* * Free any thing useless we may have allocated. */ if( !convResult ) { XtFree((char*)aByte); aByte = NULL; } /* * Return the result. */ *success = convResult; /*SUPPRESS 80*/ return(fByte);}/* * Function: CreateConfigureWindow() * Create configureWindow hierarchy of widgets. */WidgetCreateConfigureWindow(Widget parent){ Arg args[512]; Cardinal argcnt; Boolean argok; Widget retval; Widget configureWindow; Widget applyButton; Widget cancelButton; Widget label1; Widget scrolledWindow1; Widget label2; Widget menuShell; Widget pulldownMenu5; Widget pushButton5; Widget label3; Widget label4; Widget label5; Widget separator1; Widget separator2; Widget addDBButton; Widget moveUpButton; Widget moveDownButton; argok = False; argcnt = 0; XtSetArg(args[argcnt], XmNautoUnmanage, False); argcnt++; XtSetArg(args[argcnt], XmNresizePolicy, XmRESIZE_GROW); argcnt++; XtSetArg(args[argcnt], XmNx, 0); argcnt++; XtSetArg(args[argcnt], XmNy, 0); argcnt++; XtSetArg(args[argcnt], XmNwidth, 500); argcnt++; XtSetArg(args[argcnt], XmNheight, 504); argcnt++; configureWindow = XtCreateWidget("configureWindow", xmFormWidgetClass, parent, args, argcnt); retval = configureWindow; argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, CONVERT(parent,"Move Down", "XmString", 0, &argok)); if (argok) argcnt++; XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++; XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++; XtSetArg(args[argcnt], XmNleftOffset, 25); argcnt++; XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++; XtSetArg(args[argcnt], XmNwidth, 99); argcnt++; XtSetArg(args[argcnt], XmNheight, 30); argcnt++; moveDownButton = XtCreateWidget("moveDownButton", xmPushButtonWidgetClass, configureWindow, args, argcnt); XtManageChild(moveDownButton); argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, CONVERT(parent,"Move Up", "XmString", 0, &argok)); if (argok) argcnt++; XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_NONE); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++; XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++; XtSetArg(args[argcnt], XmNleftOffset, 25); argcnt++; XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++; XtSetArg(args[argcnt], XmNwidth, 99); argcnt++; XtSetArg(args[argcnt], XmNheight, 30); argcnt++; moveUpButton = XtCreateWidget("moveUpButton", xmPushButtonWidgetClass, configureWindow, args, argcnt); XtManageChild(moveUpButton); argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, CONVERT(parent,"New", "XmString", 0, &argok)); if (argok) argcnt++; XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 10); argcnt++; XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++; XtSetArg(args[argcnt], XmNx, 10); argcnt++; XtSetArg(args[argcnt], XmNwidth, 99); argcnt++; XtSetArg(args[argcnt], XmNheight, 30); argcnt++; addDBButton = XtCreateWidget("addDBButton", xmPushButtonWidgetClass, configureWindow, args, argcnt);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -