📄 printutils.c
字号:
argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, (st0=XmStringCreateLtoR( "Number of copies (1)", XmSTRING_DEFAULT_CHARSET))); argcnt++; XtSetArg(args[argcnt], XmNmnemonic, 'N'); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, LABEL_TEXT_DIFF+5); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNleftOffset, 8); argcnt++; label1 = XmCreateLabelGadget(form, "label1", args, argcnt); XmStringFree( st0 ); bwidgetarray[bwidgetcnt] = label1; bwidgetcnt++; argcnt = 0; XtSetArg(args[argcnt], XmNshadowThickness, (short)2); argcnt++; XtSetArg(args[argcnt], XmNcolumns, 3); argcnt++; XtSetArg(args[argcnt], XmNrows, 1); argcnt++; XtSetArg(args[argcnt], XmNvalue , Copies); argcnt++; XtSetArg(args[argcnt], XmNmaxLength, 3); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 5); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNleftWidget, label1); argcnt++; Text1 = XmCreateText(form, "text1", args, argcnt); bwidgetarray[bwidgetcnt] = Text1; bwidgetcnt++; XtAddCallback(Text1, XmNmodifyVerifyCallback, (XtCallbackProc)allowOnlyNumInput, NULL); XtAddCallback(Text1, XmNvalueChangedCallback, (XtCallbackProc)updatePrintCmd, NULL); RemapDeleteKey(Text1); topWidget = Text1; XtVaSetValues(label1, XmNuserData, Text1, NULL); /* mnemonic procesing */ } /************************ LABEL 2 and TEXT 2 ************************/ if (QueueOption[0] != '\0') { argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, (st0=XmStringCreateLtoR( " ", XmSTRING_DEFAULT_CHARSET))); argcnt++; XtSetArg(args[argcnt], XmNmnemonic, 'Q'); argcnt++; XtSetArg(args[argcnt], XmNrecomputeSize, True); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, topWidget==NULL?XmATTACH_FORM:XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNtopWidget, topWidget); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, LABEL_TEXT_DIFF+4); argcnt++; XtSetArg(args[argcnt], XmNleftOffset, 8); argcnt++; Label2 = XmCreateLabelGadget(form, "label2", args, argcnt); XmStringFree(st0); bwidgetarray[bwidgetcnt] = Label2; bwidgetcnt++; setQueueLabelText(); argcnt = 0; XtSetArg(args[argcnt], XmNshadowThickness, (short)2); argcnt++; XtSetArg(args[argcnt], XmNcolumns, (short)17); argcnt++; XtSetArg(args[argcnt], XmNmaxLength, MAX_QUEUE_STR); argcnt++; XtSetArg(args[argcnt], XmNvalue, Queue); argcnt++; XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNleftWidget, Label2 ); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, topWidget==NULL?XmATTACH_FORM:XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNtopWidget, topWidget ); argcnt++; XtSetArg(args[argcnt], XmNrightOffset, 8); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 4); argcnt++; Text2 = XmCreateText(form, "text2", args, argcnt); XtAddCallback(Text2, XmNmodifyVerifyCallback, (XtCallbackProc)noSpaceOrPunct, NULL); XtAddCallback(Text2, XmNvalueChangedCallback, (XtCallbackProc)updatePrintCmd, NULL); bwidgetarray[bwidgetcnt] = Text2; bwidgetcnt++; RemapDeleteKey(Text2); XtVaSetValues(Label2, XmNuserData, Text2, NULL); /* mnemonic procesing */ topWidget = Text2; } /****************** LABEL 3 and TEXT 3 *********************/ if (HostOption[0] != '\0') { argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, (st0=XmStringCreateLtoR( " ", XmSTRING_DEFAULT_CHARSET))); argcnt++; XtSetArg(args[argcnt], XmNmnemonic, 'H'); argcnt++; XtSetArg(args[argcnt], XmNrecomputeSize, True); argcnt++; XtSetArg(args[argcnt], XmNvalue , ""); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, topWidget==NULL?XmATTACH_FORM:XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNtopWidget, topWidget ); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNleftOffset, 8); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, LABEL_TEXT_DIFF+4); argcnt++; Label3 = XmCreateLabelGadget(form, "label3", args, argcnt); XmStringFree(st0); bwidgetarray[bwidgetcnt] = Label3; bwidgetcnt++; setHostLabelText(); argcnt = 0; XtSetArg(args[argcnt], XmNcolumns, 17); argcnt++; XtSetArg(args[argcnt], XmNrows, 1); argcnt++; XtSetArg(args[argcnt], XmNvalue, Host); argcnt++; XtSetArg(args[argcnt], XmNmaxLength, MAX_HOST_STR); argcnt++; XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNleftWidget, Label3 ); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, topWidget==NULL?XmATTACH_FORM:XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNtopWidget, topWidget ); argcnt++; XtSetArg(args[argcnt], XmNrightOffset, 8); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 4); argcnt++; Text3 = XmCreateText(form, "Text3", args, argcnt); XtAddCallback(Text3, XmNmodifyVerifyCallback, (XtCallbackProc)noSpaceOrPunct, NULL); XtAddCallback(Text3, XmNvalueChangedCallback, (XtCallbackProc)updatePrintCmd, NULL); bwidgetarray[bwidgetcnt] = Text3; bwidgetcnt++; RemapDeleteKey(Text3); XtVaSetValues(Label3, XmNuserData, Text3, NULL); /* mnemonic procesing */ topWidget = Text3; } /************************** TEXT 4 ***************************/ argcnt = 0; XtSetArg(args[argcnt], XmNvalue, CmdText); argcnt++; XtSetArg(args[argcnt], XmNcolumns, 50); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNleftOffset, 8); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 8); argcnt++; XtSetArg(args[argcnt], XmNtopWidget, topWidget ); argcnt++; XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNrightOffset, 8); argcnt++; Text4 = XmCreateText(form, "Text4", args, argcnt); XtAddCallback(Text4, XmNmodifyVerifyCallback, (XtCallbackProc)printCmdModified, NULL); bwidgetarray[bwidgetcnt] = Text4; bwidgetcnt++; RemapDeleteKey(Text4); topWidget = Text4; if (!CmdFieldModified) updatePrintCmd(NULL, NULL, NULL); /*********************** SEPARATOR **************************/ argcnt = 0; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 8); argcnt++; XtSetArg(args[argcnt], XmNtopWidget, topWidget ); argcnt++; separator = XmCreateSeparatorGadget(form, "separator", args, argcnt); bwidgetarray[bwidgetcnt] = separator; bwidgetcnt++; topWidget = separator; /********************** CANCEL BUTTON *************************/ argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, (st0=XmStringCreateLtoR( "Cancel", XmSTRING_DEFAULT_CHARSET))); argcnt++; XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++; XtSetArg(args[argcnt], XmNleftPosition, 60); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNtopWidget, topWidget ); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 7); argcnt++; printCancel = XmCreatePushButton(form, "printCancel", args, argcnt); XmStringFree( st0 ); bwidgetarray[bwidgetcnt] = printCancel; bwidgetcnt++; XtAddCallback (printCancel, XmNactivateCallback, (XtCallbackProc)cancelButtonCB, NULL); /*********************** PRINT BUTTON **************************/ argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, (st0=XmStringCreateLtoR( "Print", XmSTRING_DEFAULT_CHARSET))); argcnt++; XtSetArg(args[argcnt], XmNshowAsDefault, True); argcnt++; XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++; XtSetArg(args[argcnt], XmNrightPosition, 40); argcnt++; XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++; XtSetArg(args[argcnt], XmNtopWidget, topWidget ); argcnt++; XtSetArg(args[argcnt], XmNtopOffset, 7); argcnt++; printOk = XmCreatePushButton(form, "printOk", args, argcnt); XmStringFree( st0 ); bwidgetarray[bwidgetcnt] = printOk; bwidgetcnt++; XtAddCallback (printOk, XmNactivateCallback, (XtCallbackProc)printButtonCB, NULL); argcnt = 0; XtSetArg(args[argcnt], XmNcancelButton, printCancel); argcnt++; XtSetArg(args[argcnt], XmNdefaultButton, printOk); argcnt++; XtSetValues(form, args, argcnt); XtManageChildren(bwidgetarray, bwidgetcnt); AddDialogMnemonicHandler(form, FALSE); return form;}static void setQueueLabelText(void){ Arg args[15]; int argcnt; XmString st0; char tmp_buf[MAX_QUEUE_STR+8]; if (DefaultQueue[0] != '\0') sprintf(tmp_buf, "Queue (%s)", DefaultQueue); else sprintf(tmp_buf, "Queue"); argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, (st0=XmStringCreateLtoR( tmp_buf, XmSTRING_DEFAULT_CHARSET))); argcnt++; XtSetValues (Label2, args, argcnt); XmStringFree( st0 );}static void setHostLabelText(void){ Arg args[15]; int argcnt; XmString st0; char tmp_buf[MAX_HOST_STR+7]; if (strcmp(DefaultHost, "")) sprintf(tmp_buf, "Host (%s)", DefaultHost); else sprintf(tmp_buf, "Host"); argcnt = 0; XtSetArg(args[argcnt], XmNlabelString, (st0=XmStringCreateLtoR( tmp_buf, XmSTRING_DEFAULT_CHARSET))); argcnt++; XtSetValues (Label3, args, argcnt); XmStringFree( st0 );}static void allowOnlyNumInput(Widget widget, caddr_t client_data, XmTextVerifyCallbackStruct *call_data){ int i, textInserted, nInserted; nInserted = call_data->text->length; textInserted = (nInserted > 0); if ((call_data->reason == XmCR_MODIFYING_TEXT_VALUE) && textInserted) { for (i=0; i<nInserted; i++) { if (!isdigit((unsigned char)call_data->text->ptr[i])) { call_data->doit = False; return; } } } call_data->doit = True;}/*** Prohibit a relatively random sampling of characters that will cause** problems on command lines*/static void noSpaceOrPunct(Widget widget, caddr_t client_data, XmTextVerifyCallbackStruct *call_data){ int i, j, textInserted, nInserted;#ifndef VMS static char prohibited[] = " \t,;|<>()[]{}!@?";#else static char prohibited[] = " \t,;|@+";#endif nInserted = call_data->text->length; textInserted = (nInserted > 0); if ((call_data->reason == XmCR_MODIFYING_TEXT_VALUE) && textInserted) { for (i=0; i<nInserted; i++) { for (j=0; j<(int)XtNumber(prohibited); j++) { if (call_data->text->ptr[i] == prohibited[j]) { call_data->doit = False; return; } } } } call_data->doit = True;}static void updatePrintCmd(Widget w, caddr_t client_data, caddr_t call_data){ char command[MAX_CMD_STR], copiesArg[MAX_OPT_STR+MAX_INT_STR]; char jobArg[MAX_NAME_STR], hostArg[MAX_OPT_STR+MAX_HOST_STR]; char queueArg[MAX_OPT_STR+MAX_QUEUE_STR]; char *str; int nCopies;#ifdef VMS char printJobName[VMS_MAX_JOB_NAME_STR+1];#endif /*VMS*/ /* read each text field in the dialog and generate the corresponding command argument */ if (CopiesOption[0] == '\0') { copiesArg[0] = '\0'; } else { str = XmTextGetString(Text1); if (str[0] == '\0') { copiesArg[0] = '\0'; } else { if (sscanf(str, "%d", &nCopies) != 1) { copiesArg[0] = '\0'; } else { sprintf(copiesArg, " %s%s", CopiesOption, str); } } XtFree(str); } if (QueueOption[0] == '\0') { queueArg[0] = '\0'; } else { str = XmTextGetString(Text2); if (str[0] == '\0') queueArg[0] = '\0'; else sprintf(queueArg, " %s%s", QueueOption, str); XtFree(str); } if (HostOption[0] == '\0') { hostArg[0] = '\0'; } else { str = XmTextGetString(Text3); if (str[0] == '\0') hostArg[0] = '\0'; else sprintf(hostArg, " %s%s", HostOption, str); XtFree(str); } if (NameOption[0] == '\0') jobArg[0] = '\0'; else {#ifdef VMS /* truncate job name on VMS systems or it will cause problems */ strncpy(printJobName,PrintJobName,VMS_MAX_JOB_NAME_STR); printJobName[VMS_MAX_JOB_NAME_STR] = '\0'; sprintf(jobArg, " %s\"%s\"", NameOption, printJobName);#else sprintf(jobArg, " %s\"%s\"", NameOption, PrintJobName);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -