📄 dna3.cc
字号:
//// disarmcallbacks (called when they unclick on it). //// If armcallbacks - it will read wrong button state before calling f1. //// If valuechanged - it will call f1 twice. //// If different - it will only call one of them. XtAddCallback(radiobutton[i][j], XmNdisarmCallback, (XtCBP)togglecb, (XtP)&a); XtAddCallback(radiobutton[i][j], XmNdisarmCallback, (XtCBP)armboxcb, (XtP)&a); XtManageChild(radiobutton[i][j]); //// Pushbutton needed too in radio button //// Put on form Widget so it doesn't mess up size and spacing //// of the radio buttons if(a.radiotype[i][j]==RADIOPUSHBUTTON) { n = 0; XtSetArg(args[n], XmNleftPosition, RADIOSTART+3); n++; XtSetArg(args[n], XmNtopPosition, y+0.85*rspacing); n++; XtSetArg(args[n], XmNbottomPosition, y+1.85*rspacing); n++; XtSetArg(args[n], XmNrightPosition, RADIOEND-5); n++; XtSetArg(args[n], XmNfractionBase, 100); n++; // Use percentages XtSetArg(args[n], XmNtopAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNresizable, False); n++; #ifdef MOTIF2 XtSetArg(args[n], XmNindicatorOn, XmINDICATOR_NONE); n++;#else XtSetArg(args[n], XmNindicatorOn, False); n++;#endif XtSetArg(args[n], XmNtraversalOn, True); n++; XtSetArg(args[n], XmNlabelString, xms = XmStringCreateSimple(a.radiopushbuttonlabel[i]));n++; //// Stop Motif from trying to grab another color if none are available. if(g.want_colormaps) { XtSetArg(args[n], XmNbackground, g.main_bcolor); n++; XtSetArg(args[n], XmNforeground, g.main_fcolor); n++; } radiopush[i] = w[wc++] = XmCreatePushButton(form,//radiobox[i], a.radiopushbuttonlabel[i], args,n); XtAddCallback(radiopush[i], XmNactivateCallback, (XtCBP)a.radiocb[i], (XtP)(a.radiopushbuttonptr[i])); XmStringFree(xms); } //// Text needed too in radio button if(a.radiotype[i][j]==RADIOTEXT) { n = 0; XtSetArg(args[n], XmNresizable, False); n++; XtSetArg(args[n], XmNspacing, 0); n++; XtSetArg(args[n], XmNtopPosition, y-rspacing); n++; XtSetArg(args[n], XmNbottomPosition, y+0*rspacing); n++; XtSetArg(args[n], XmNmarginWidth, 2); n++; XtSetArg(args[n], XmNleftPosition, RADIOEND); n++; XtSetArg(args[n], XmNrightPosition, BOXSTART); n++; XtSetArg(args[n], XmNfractionBase, 100); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNeditMode, XmSINGLE_LINE_EDIT); n++; XtSetArg(args[n], XmNcolumns, 2); n++; XtSetArg(args[n], XmNrows, 1); n++; XtSetArg(args[n], XmNwordWrap, False); n++; XtSetArg(args[n], XmNeditable, True); n++; //// Stop Motif from trying to grab another color if none are available. if(g.want_colormaps) { XtSetArg(args[n], XmNbackground, g.main_bcolor); n++; XtSetArg(args[n], XmNforeground, g.main_fcolor); n++; } radioslider[i][j] = w[wc++] = XmCreateText(form, "text", args, n); a.radioslider[i][j] = radioslider[i][j]; XtManageChild(radioslider[i][j]); XmTextSetString(radioslider[i][j], a.radioanswer[i][j]); } //// Slider needed too in radio button if(a.radiotype[i][j]==RADIOVALUE || a.radiotype[i][j]==RADIOVALUEWIDE) { value = atoi(a.radioanswer[i][j]); n = 0; XtSetArg(args[n], XmNresizable, False); n++; XtSetArg(args[n], XmNspacing, 0); n++; XtSetArg(args[n], XmNleftPosition, RADIOEND); n++; XtSetArg(args[n], XmNtopPosition, y-.2*rspacing); n++; XtSetArg(args[n], XmNrightPosition, BOXSTART); n++; XtSetArg(args[n], XmNfractionBase, 100); n++; XtSetArg(args[n], XmNtopAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNminimum, a.radiomin[i][j]); n++; XtSetArg(args[n], XmNmaximum, a.radiomax[i][j]); n++; XtSetArg(args[n], XmNprocessingDirection,XmMAX_ON_RIGHT); n++; XtSetArg(args[n], XmNhighlightOnEnter, True); n++; XtSetArg(args[n], XmNincrement, 1); n++; XtSetArg(args[n], XmNvalue, value); n++; XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++;#ifdef MOTIF2 XtSetArg(args[n], XmNshowValue, XmNEAR_BORDER); n++; XtSetArg(args[n], XmNshowArrows, XmEACH_SIDE); n++; #else XtSetArg(args[n], XmNshowArrows, True); n++; #endif XtSetArg(args[n], XmNdecimalPoints, 0); n++; //// Stop Motif from trying to grab another color if none are available. if(g.want_colormaps) { XtSetArg(args[n], XmNbackground, g.main_bcolor); n++; XtSetArg(args[n], XmNforeground, g.main_fcolor); n++; } //// This will create Motif warnings of "Cannot allocate //// colormap entry" if want_colormaps is 1, when Motif //// tries to grab colors for the descendants Scrollbar //// and Title. The warnings are suppressed by defining //// a warning handler. radioslider[i][j] = w[wc++] = XmCreateScale(form, "slider", args, n); a.radioslider[i][j] = radioslider[i][j]; XtManageChild(radioslider[i][j]); } y+=rspacing; } } //------Answer boxes (input boxes)-------------------------------// y=TOPMARGIN+spacing; bspacing = spacing; for(j=0;j<a.noofboxes;j++) { boxstring = a.boxes[j]; // boxstring is a temporary string boxstring[40] = 0; // Make sure it fits on button switch(a.boxtype[j]) { case TOGGLE: n = 0; XtSetArg(args[n], XmNmarginLeft, 15); n++; XtSetArg(args[n], XmNresizable, True); n++; XtSetArg(args[n], XmNspacing, 0); n++; XtSetArg(args[n], XmNleftPosition, BOXSTART); n++; // % of width from left XtSetArg(args[n], XmNtopPosition, y); n++; // % of height from top XtSetArg(args[n], XmNbottomPosition, y+bspacing); n++; // % of width from top XtSetArg(args[n], XmNrightPosition, BOXEND); n++; // % of height from left XtSetArg(args[n], XmNfractionBase, 100); n++; // Use percentages XtSetArg(args[n], XmNtopAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; #ifdef MOTIF2 XtSetArg(args[n], XmNindicatorOn, XmINDICATOR_CROSS_BOX); n++; #endif XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++; if(a.boxset[j]) XtSetArg(args[n], XmNset, True); else XtSetArg(args[n], XmNset, False); n++; //// Stop Motif from trying to grab another color if none are available. if(g.want_colormaps) { XtSetArg(args[n], XmNbackground, g.main_bcolor); n++; XtSetArg(args[n], XmNforeground, g.main_fcolor); n++; } boxbutton[j] = w[wc++] = XmCreateToggleButton(form,boxstring,args,n); a.boxwidget[j][0] = boxbutton[j]; a.boxwidget[j][1] = 0; a.boxwidget[j][2] = 0; a.boxwidget[j][3] = 0; XtManageChild(boxbutton[j]); //// Set up callbacks for each box button XtAddCallback(boxbutton[j], XmNvalueChangedCallback, (XtCBP)toggleboxcb, (XtP)&a); XtAddCallback(boxbutton[j], XmNvalueChangedCallback, (XtCBP)armboxcb, (XtP)&a); break; case STRING: n = 0; XtSetArg(args[n], XmNresizable, False); n++; XtSetArg(args[n], XmNspacing, 0); n++; XtSetArg(args[n], XmNleftPosition, BOXSTART); n++; // % of width from left XtSetArg(args[n], XmNtopPosition, y); n++; // % of height from top XtSetArg(args[n], XmNbottomPosition, y+bspacing); n++; // % of width XtSetArg(args[n], XmNrightPosition, BOXEND); n++; // % of height from left XtSetArg(args[n], XmNfractionBase, 100); n++; // Use percentages XtSetArg(args[n], XmNtopAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrows, 1); n++; XtSetArg(args[n], XmNmarginHeight, 1); n++; XtSetArg(args[n], XmNmarginWidth, 4); n++; XtSetArg(args[n], XmNmaxLength, 256); n++; XtSetArg(args[n], XmNvalue, a.answer[j]);n++; XtSetArg(args[n], XmNautoShowCursorPosition, True); n++; XtSetArg(args[n], XmNcursorPositionVisible, True); n++; //// Motif ignores this for some reason XtSetArg(args[n], XmNcursorPosition,(int)strlen(a.answer[j])); n++; //// Stop Motif from trying to grab another color if none are available. if(g.want_colormaps) { XtSetArg(args[n], XmNbackground, g.main_bcolor); n++; XtSetArg(args[n], XmNforeground, g.main_fcolor); n++; } boxbutton[j] = w[wc++] = XmCreateText(form, boxstring, args, n); a.boxwidget[j][0] = boxbutton[j]; a.boxwidget[j][1] = 0; a.boxwidget[j][2] = 0; a.boxwidget[j][3] = 0; w[wc++] = addlabel(form,boxstring,LEFT,LABELSTART,y,LABELEND,y+bspacing); XtManageChild(boxbutton[j]); XtAddCallback(boxbutton[j], XmNvalueChangedCallback, (XtCBP)dialogstringcb, (XtP)&a); XtAddCallback(boxbutton[j], XmNfocusCallback, (XtCBP)dialogcursorcb, (XtP)&a); break; case SCROLLEDSTRING: n = 0; XtSetArg(args[n], XmNresizable, False); n++; XtSetArg(args[n], XmNspacing, 0); n++; XtSetArg(args[n], XmNleftPosition, BOXSTART); n++; // % of width from left XtSetArg(args[n], XmNtopPosition, y); n++; // % of height from top XtSetArg(args[n], XmNbottomPosition, y+1.5*bspacing); n++; // % of width XtSetArg(args[n], XmNrightPosition, BOXEND); n++; // % of height from left XtSetArg(args[n], XmNfractionBase, 100); n++; // Use percentages XtSetArg(args[n], XmNtopAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNbottomAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++; XtSetArg(args[n], XmNrows, 1); n++; XtSetArg(args[n], XmNmarginHeight, 1); n++; XtSetArg(args[n], XmNmarginWidth, 4); n++; XtSetArg(args[n], XmNmaxLength, 256); n++; XtSetArg(args[n], XmNvalue, a.answer[j]);n++; XtSetArg(args[n], XmNautoShowCursorPosition, True); n++; XtSetArg(args[n], XmNcursorPositionVisible, True); n++; //// Motif ignores this for some reason XtSetArg(args[n], XmNcursorPosition,(int)strlen(a.answer[j])); n++; //// Stop Motif from trying to grab another color if none are available. if(g.want_colormaps) { XtSetArg(args[n], XmNbackground, g.main_bcolor); n++; XtSetArg(args[n], XmNforeground, g.main_fcolor); n++; } boxbutton[j] = w[wc++] = XmCreateScrolledText(form, boxstring, args, n); a.boxwidget[j][0] = boxbutton[j]; a.boxwidget[j][1] = 0; a.boxwidget[j][2] = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -