⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dna.cc

📁 unix或linux下的DNA分析软件源码 其功能如下 1. Edit up to 256 peptide or DNA sequences simultaneously. 2. Transla
💻 CC
📖 第 1 页 / 共 5 页
字号:
   XtSetArg(args[n], XmNresizable, False); n++;   XtSetArg(args[n], XmNautoUnmanage, False); n++;   XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;   XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;   XtSetArg(args[n], XmNtitle, title); n++;   form = w[wc++] = XmCreateFormDialog(g.main_widget, "ClickboxForm", args, n);   //--------Title for dialog box-------------------------------------//   w[wc++] = addlabel(form,title,CENTER,1,2,99,15);   //--------Slider---------------------------------------------------//   n = 0;   XtSetArg(args[n], XmNwidth, max(200,xsize-20)); n++;         XtSetArg(args[n], XmNleftPosition, 5); n++;     // % of width from left   XtSetArg(args[n], XmNtopPosition, 40); n++;     // % of height from top   XtSetArg(args[n], XmNbottomPosition, 75); n++;  // % of width from top   XtSetArg(args[n], XmNrightPosition, 95); 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], XmNminimum, minval); n++;    XtSetArg(args[n], XmNmaximum, maxval); 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, startval); n++;    XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++;         XtSetArg(args[n], XmNscaleHeight, 35); n++;      #ifdef MOTIF2   XtSetArg(args[n], XmNshowValue, XmNEAR_BORDER); n++;      #endif   XtSetArg(args[n], XmNdecimalPoints, decimalpoints); n++;         XtSetArg(args[n], XmNshowArrows, True); n++;         XtSetArg(args[n], XmNhighlightThickness, 1); n++;         slider = w[wc++] = XmCreateScale(form, "Value", args, n);   XtManageChild(slider);   //--------Text area------------------------------------------------//   n = 0;   XtSetArg(args[n], XmNcolumns, 40); n++;   XtSetArg(args[n], XmNrows, 1); n++;   XtSetArg(args[n], XmNvalue, textlabel); n++;   XtSetArg(args[n], XmNleftPosition, 5); n++;     // % of width from left   XtSetArg(args[n], XmNtopPosition, 20); n++;     // % of height from top   XtSetArg(args[n], XmNbottomPosition, 38); n++;  // % of width from top   XtSetArg(args[n], XmNrightPosition, 95); 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], XmNmarginHeight, 2); n++;   XtSetArg(args[n], XmNmarginWidth, 2); n++;   clickboxdata[0].title = textlabel;   clickboxdata[0].answer = startval;   clickboxdata[0].fanswer = startval;   clickboxdata[0].startval = startval;   clickboxdata[0].minval = minval;   clickboxdata[0].maxval = maxval;   clickboxdata[0].type = type;   clickboxdata[0].wantpreview = 0;   clickboxdata[0].decimalpoints = decimalpoints;   clickboxdata[0].form = form;   clickboxdata[0].widget[0] = slider;   clickboxdata[0].f1 = null;   clickboxdata[0].f2 = null;   clickboxdata[0].f3 = null;   if(type==INTEGER)      itoa(startval, textlabel, 10);   else      gcvt(startval/pow(10, g.signif), g.signif, textlabel);   text = w[wc++] = XmCreateText(form, textlabel, args, n);   XtAddCallback(text, XmNvalueChangedCallback,      (XtCallbackProc)clickboxcb, (XtPointer)&clickboxdata[0]);   XtManageChild(text);      //--------Now add a callback so slider can change text area--------//   clickboxdata[1].title = textlabel;   clickboxdata[1].answer = startval;   clickboxdata[1].fanswer = startval;   clickboxdata[1].startval = startval;   clickboxdata[1].minval = minval;   clickboxdata[1].maxval = maxval;   clickboxdata[1].type = type;   clickboxdata[1].wantpreview = 0;   clickboxdata[1].form = form;   clickboxdata[1].widget[0] = text;   clickboxdata[1].decimalpoints = max(0,decimalpoints);   clickboxdata[1].f1 = f1;   clickboxdata[1].f2 = f2;   clickboxdata[1].f3 = null;   XtAddCallback(slider, XmNdragCallback,      (XtCallbackProc)slidercb, (XtPointer)&clickboxdata[1]);   XtAddCallback(slider, XmNvalueChangedCallback,      (XtCallbackProc)slidercb, (XtPointer)&clickboxdata[1]);   ////  Add callbacks so hitting Return activates Ok button   for(k=0;k<wc;k++)      XtAddEventHandler(w[k], KeyPressMask, FALSE, (XtEH)entercb, (XtP)form);   //--------Ok, Cancel, Help buttons & their callbacks---------------//   addstandardbuttons(form, &w[wc], &helptopic);   wc += 3;    // addstandardbuttons adds 3 widgets   XtManageChild(form);   event_loop(form);   XmScaleGetValue(slider, &answer);   XtUnmanageChild(form);   for(k=0;k<wc;k++)   {   XtRemoveEventHandler(w[k], KeyPressMask, FALSE, (XtEH)entercb, (XtP)form);       XtDestroyWidget(w[k]);   }   delete[] w;   g.state = ostate;   return answer;}//--------------------------------------------------------------------//// multiclick- puts integers into clickboxinfo struct by click-and-   //// box         dragging with the mouse.                               ////            'getout' must be reset to 0 by the calling routine.     ////             Returns error code (0=OK)                              ////             Calls f(), which is a calling-routine-specific func-   ////             tion, whenever a value is changed or mouse is          ////             clicked. This allows passed function f() to add new    ////             buttons.                                               ////             'a.boxtype' is 0=counter, 1=slider, 2=valslider        ////             If 'a[0].wantpreview'==1, it adds "preview" button and ////             only calls f() when clicked; otherwise, it calls f()   ////             continuously.                                          ////--------------------------------------------------------------------//int multiclickbox(char* title, int noofboxes, clickboxinfo* a,      void f(int values[10]), int helptopic){   Widget form, slider[noofboxes], text[noofboxes], *w;   clickboxinfo clickboxdata[2][noofboxes];   int k, n, wc=0, x, xsize, y, ypct, ysize;   int boxsize;   Arg args[100];   w = new Widget[100];   char textlabel[FILENAMELENGTH];   xsize = 425;   ysize = 150+20*noofboxes;            // overall height in pixels   const int LABELSTART=64;   const int LABELEND=85;       ypct = 100/(noofboxes+2);             // % of y height for each box   boxsize = (int)(0.9*ypct);            // height of each box in %   //------- Create a form dialog shell widget -----------------------//   n=0;   XtSetArg(args[n], XmNwidth, xsize); n++;   XtSetArg(args[n], XmNheight, ysize); n++;   XtSetArg(args[n], XmNresizable, False); n++;   XtSetArg(args[n], XmNautoUnmanage, False); n++;   XtSetArg(args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;   XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;   XtSetArg(args[n], XmNtitle, title); n++;   form = w[wc++] = XmCreateFormDialog(g.main_widget, "MultiClickboxForm", args, n);   //--------Title for dialog box-------------------------------------//   x = 100;    w[wc++] = addlabel(form,title,CENTER,1,1,99,15);   //--------Slider---------------------------------------------------//   y = 15;   for(k=0;k<noofboxes;k++)   {         a[0].answers[k] = a[k].startval;       w[wc++] = addlabel(form,a[k].title,LEFT,LABELSTART,y+boxsize/4,                 LABELEND,y+boxsize+boxsize/4);       itoa(a[k].startval, textlabel, 10);       n = 0;       XtSetArg(args[n], XmNwidth, max(300,xsize-20)); n++;             XtSetArg(args[n], XmNleftPosition, 5); n++;         // % of width from left       XtSetArg(args[n], XmNtopPosition, y); n++;          // % of height from top       XtSetArg(args[n], XmNbottomPosition, y+boxsize); n++;    // % of width from top       XtSetArg(args[n], XmNrightPosition, LABELSTART-1); 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], XmNminimum, a[k].minval); n++;        XtSetArg(args[n], XmNmaximum, a[k].maxval); 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, a[k].startval); n++;        XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++;             XtSetArg(args[n], XmNshowValue, XmNONE); n++;             XtSetArg(args[n], XmNdecimalPoints, 0); n++;             XtSetArg(args[n], XmNshowArrows, True); n++;             XtSetArg(args[n], XmNhighlightThickness, 1); n++;             slider[k] = w[wc++] = XmCreateScale(form, "MultiClickBoxScale", args, n);       XtManageChild(slider[k]);        //--------Text area------------------------------------------------//        n = 0;       XtSetArg(args[n], XmNcolumns, 20); n++;       XtSetArg(args[n], XmNrows, 1); n++;       XtSetArg(args[n], XmNvalue, textlabel); n++;       XtSetArg(args[n], XmNleftPosition, LABELEND+1); n++;   // % of width from left       XtSetArg(args[n], XmNtopPosition, y+boxsize/4); n++;   // % of height from top       XtSetArg(args[n], XmNbottomPosition, y+boxsize); n++;  // % of width from top       XtSetArg(args[n], XmNrightPosition, 98); 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], XmNmarginHeight, 2); n++;       XtSetArg(args[n], XmNmarginWidth, 2); n++;       strcpy(clickboxdata[0][k].title, textlabel);       clickboxdata[0][k].answer = a[k].startval;           // An answers[] array has been allocated only for the first one.           // All the data are accessible to all the other sliders, and all           // are aliased to the same original array.       clickboxdata[0][k].answers = a[0].answers;        clickboxdata[0][k].k = k;       clickboxdata[0][k].startval = a[k].startval;       clickboxdata[0][k].minval = a[k].minval;       clickboxdata[0][k].maxval = a[k].maxval;       clickboxdata[0][k].type = INTEGER;       clickboxdata[0][k].wantpreview = 0;       clickboxdata[0][k].widget[0] = slider[k];       clickboxdata[0][k].f1 = null;       clickboxdata[0][k].f2 = null;       clickboxdata[0][k].f3 = f;       text[k] = w[wc++] = XmCreateText(form, textlabel, args, n);       XtAddCallback(text[k], XmNvalueChangedCallback,          (XtCallbackProc)clickboxcb, (XtPointer)&clickboxdata[0][k]);       XtManageChild(text[k]);        //--------Now add a callback so slider can change text area--------//        strcpy(clickboxdata[1][k].title, textlabel);       clickboxdata[1][k].answer = a[k].startval;       clickboxdata[1][k].answers = a[0].answers;       clickboxdata[1][k].k = k;       clickboxdata[1][k].startval = a[k].startval;       clickboxdata[1][k].minval = a[k].minval;       clickboxdata[1][k].maxval = a[k].maxval;       clickboxdata[1][k].type = INTARRAY;       clickboxdata[1][k].wantpreview = 0;       clickboxdata[1][k].widget[0] = text[k];       clickboxdata[1][k].decimalpoints = 0;       clickboxdata[1][k].f1 = null;       clickboxdata[1][k].f2 = null;       clickboxdata[1][k].f3 = f;       XtAddCallback(slider[k], XmNvalueChangedCallback,          (XtCallbackProc)slidercb, (XtPointer)&clickboxdata[1][k]);       if(a[k].wantdragcb)        XtAddCallback(slider[k], XmNdragCallback,          (XtCallbackProc)slidercb, (XtPointer)&clickboxdata[1][k]);       y+=ypct;   }   //--------Ok, Cancel, Help buttons & their callbacks---------------//   addstandardbuttons(form, &w[wc], &helptopic);   wc += 3;    // addstandardbuttons adds 3 widgets   XtManageChild(form);   event_loop(form);   for(k=0;k<noofboxes;k++)        XmScaleGetValue(slider[k], &a[k].answer);   XtUnmanageChild(form);   for(k=0;k<wc;k++) XtDestroyWidget(w[k]);   delete[] w;   return 0;}//--------------------------------------------------------------------//// save_ok - returns YES if everything saved & ok to quit.            ////           Returns NO if user clicks "no".                          ////           Returns ABORT if user clicks "cancel"                    ////--------------------------------------------------------------------//int save_ok(int ino){      char name[FILENAMELENGTH];    int answer=YES;    char tempstring[80];    g.getout=0;    if(ino<0) return(ERROR);                // should not happen    sprintf(tempstring,"Save image #%d? \n(%s)",ino,name);    switch(message(tempstring,YESNOQUESTION))    {  case YES: answer=YES;                  if(g.getout)answer=ABORT;  // Clicked Cancel                  break;       case NO:  answer=NO; break;          // No, dont save but ok to quit       case CANCEL: answer=ABORT; break;    // Clicked Cancel in message box    }    return(answer);}//--------------------------------------------------------------------//// print                                                              ////--------------------------------------------------------------------//void print(char *string, int x, int y, uint fcol, uint bcol,    Window win, int wantbkg, int vertical){     int ascent,descent,offset,pos,i,j,w,h,xx,yy;   char tempstring[256];   int bpp,c,s;   int len=strlen(string);   bpp = g.bitsperpixel;   for(pos=0; pos<len; pos++)   {  s = string[pos];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -