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

📄 dna.cc

📁 unix或linux下的DNA分析软件源码 其功能如下 1. Edit up to 256 peptide or DNA sequences simultaneously. 2. Transla
💻 CC
📖 第 1 页 / 共 5 页
字号:
  {   XLookupColor(g.display, g.colormap, "MediumBlue", &exactcolor, &hdwrcolor);      XSetForeground(g.display, g.gc, hdwrcolor.pixel);      helix = createpixmap(126,377,win);      pmap = createpixmap(126,377,win);      XReadBitmapFile(g.display, helix, "/usr/X11R6/include/X11/bitmaps/dna.xbm",          &width, &height, &pmap, &xhot, &yhot);  }  XLookupColor(g.display, g.colormap, "MediumBlue", &exactcolor, &hdwrcolor);  XSetForeground(g.display, g.gc, hdwrcolor.pixel);  XCopyPlane(g.display, pmap, win, g.gc, 0, 5, width-2, height-18, 1, 1, 0x01);  hit = 1;}//--------------------------------------------------------------------////  add_mainbutton                                                    ////  add a button on left side                                         ////--------------------------------------------------------------------//Widget add_mainbutton(char *name, void *cb){  static int y=0;  static int buttonno=0;  Widget w;  Arg args[100];  int n,x;  if(buttonno/2*2==buttonno) x=0; else x=71;  n=0;  XtSetArg(args[n], XmNx, x); n++;  XtSetArg(args[n], XmNy, y); n++;  if(buttonno<2)  {   XtSetArg(args[n], XmNheight, 19.5); n++; }  else  {   XtSetArg(args[n], XmNheight, 20); n++; }  XtSetArg(args[n], XmNwidth, 69); n++;  XtSetArg(args[n], XmNmarginWidth, 0); n++;  XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;  XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;  XtSetArg(args[n], XmNrightAttachment, XmATTACH_NONE); n++;  XtSetArg(args[n], XmNrecomputeSize, False); n++;  XtSetArg(args[n], XmNtraversalOn, True); n++;  XtSetArg(args[n], XmNhighlightThickness, 0); n++;#ifdef MOTIF2  XtSetArg(args[n], XmNindicatorOn, XmINDICATOR_NONE); n++;#else  XtSetArg(args[n], XmNindicatorOn, False); n++;#endif  w = XmCreateToggleButton(g.button_drawing_area, name, args, n);  g.button[buttonno]->button = buttonno;  g.button[buttonno]->widget = w;  g.button[buttonno]->state  = OFF;   XtAddCallback(w, XmNvalueChangedCallback, (XtCBP)cb, (XtP)buttonno);  XtAddEventHandler(w, FocusChangeMask, False, (XtEH)focuscb, (XtP)0);  XtManageChild(w);  if(buttonno/2*2!=buttonno) y += 20;  buttonno++;  return w;}//--------------------------------------------------------------------////  reset_user_buttons                                                ////  Buttons at left whose state is read from tnimage.ini.             ////--------------------------------------------------------------------//void reset_user_buttons(void){  int k;  for(k=0;k<g.nbuttons;k++)   {  if(strcmp(g.button[k]->activate_cmd,"dna")==SAME)     {   XmToggleButtonSetState(g.button[k]->widget, g.sequence_mode, False);         g.button[k]->state = g.sequence_mode;     }  }}//--------------------------------------------------------------------////  unpush_null_buttons                                               ////--------------------------------------------------------------------//void unpush_null_buttons(void){  int k;  for(k=0;k<g.nbuttons;k++)      if(g.button[k]->state==ON &&        strcmp(g.button[k]->deactivate_cmd,"null")==SAME)        unpush_main_button(k);        g.getout=1;}//--------------------------------------------------------------------//// unpush_main_button                                                 ////--------------------------------------------------------------------//void unpush_main_button(int k){   XmToggleButtonSetState(g.button[k]->widget, False, False);   g.button[k]->state = OFF;}//--------------------------------------------------------------------//// push_main_button                                                   ////--------------------------------------------------------------------//void push_main_button(int k){   XmToggleButtonSetState(g.button[k]->widget, True, False);   g.button[k]->state = ON;}//--------------------------------------------------------------------//// addstandardbuttons                                                 ////--------------------------------------------------------------------//void addstandardbuttons(Widget form, Widget buttons[3], int *data) {  addOkCancelHelpButtons(form, buttons,         "Ok", 15,          "Cancel", 125,          "Help", 230, data);}//--------------------------------------------------------------------//// addOkCancelHelpButtons                                             //// Must use a ptr to put data in callback - a variable would go out   //// of scope when this function returns.                               ////--------------------------------------------------------------------//void addOkCancelHelpButtons(Widget form, Widget button[3], char *s1, int x1,    char *s2, int x2, char *s3, int x3, int *data){     Arg args[100];   int n;   n=0;   XtSetArg(args[n],XmNtopAttachment,   XmATTACH_NONE); n++;   XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM); n++;   XtSetArg(args[n],XmNleftAttachment,  XmATTACH_FORM); n++;   XtSetArg(args[n],XmNrightAttachment, XmATTACH_NONE); n++;   XtSetArg(args[n],XmNwidth,           100); n++;   XtSetArg(args[n],XmNleftOffset,      x1); n++;   XtSetArg(args[n],XmNbottomOffset,    2); n++;   XtSetArg(args[n],XmNdefaultButton,   True); n++;   XtSetArg(args[n],XmNsensitive,       True); n++;   XtSetArg(args[n],XmNnavigationType,  XmNONE); n++;   XtSetArg(args[n],XmNinitialFocus,    True); n++;   XtSetArg(args[n],XmNaccelerator,     10); n++;   button[0] = XmCreatePushButton(form,s1,args,n);  // OK button   XtManageChild(button[0]);   n=0;   XtSetArg(args[n],XmNtopAttachment,   XmATTACH_NONE); n++;   XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM); n++;   XtSetArg(args[n],XmNleftAttachment,  XmATTACH_FORM); n++;   XtSetArg(args[n],XmNrightAttachment, XmATTACH_NONE); n++;   XtSetArg(args[n],XmNwidth,           100); n++;   XtSetArg(args[n],XmNleftOffset,      x2); n++;   XtSetArg(args[n],XmNbottomOffset,    2); n++;   XtSetArg(args[n],XmNsensitive,       True); n++;   XtSetArg(args[n],XmNdefaultButton,   False); n++;   XtSetArg(args[n],XmNshowAsDefault,   False); n++;   XtSetArg(args[n],XmNnavigationType,  XmNONE); n++;   button[1] = XmCreatePushButton(form,s2,args,n);  // Cancel button   XtManageChild(button[1]);   n=0;   XtSetArg(args[n],XmNtopAttachment,   XmATTACH_NONE); n++;   XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM); n++;   XtSetArg(args[n],XmNleftAttachment,  XmATTACH_FORM); n++;   XtSetArg(args[n],XmNrightAttachment, XmATTACH_NONE); n++;   XtSetArg(args[n],XmNwidth,           100); n++;   XtSetArg(args[n],XmNleftOffset,      x3); n++;   XtSetArg(args[n],XmNbottomOffset,    2); n++;   XtSetArg(args[n],XmNsensitive,       True); n++;   XtSetArg(args[n],XmNdefaultButton,   False); n++;   XtSetArg(args[n],XmNshowAsDefault,   False); n++;   XtSetArg(args[n],XmNnavigationType,  XmNONE); n++;   button[2] = XmCreatePushButton(form,s3,args,n);  // Help button   XtManageChild(button[2]);   XtAddCallback(button[0], XmNactivateCallback, (XtCallbackProc)okcb,         (XtPointer)form);   XtAddCallback(button[1], XmNactivateCallback, (XtCallbackProc)cancelcb,         (XtPointer)form);   XtAddCallback(button[2], XmNactivateCallback, (XtCallbackProc)helpcb,         (XtPointer)data);   ////  Make Enter & Escape Keys the same as Mouse Click On The Buttons.      XtAddEventHandler(button[0], KeyPressMask, FALSE,                (XtEventHandler)entercb, (XtPointer)form);   XtAddEventHandler(button[1], KeyPressMask, FALSE,                (XtEventHandler)entercb, (XtPointer)form);   XtAddEventHandler(button[2], KeyPressMask, FALSE,                (XtEventHandler)entercb, (XtPointer)form);}//--------------------------------------------------------------------//// init_xlib                                                          //// Initialize miscellaneous Xlib functions.                           //// Call after read_settings so want_colormaps & colors are known.     ////--------------------------------------------------------------------//void init_xlib(void){  int depth;                       // Bits/pixel of server  uint uw,uh,ubw;                  // width, height, bdr.width, & depth of root window  Window rwin;                     // Window ID of root  int xroot,yroot;  if(setlocale(LC_ALL,"")==NULL)       fprintf(stderr,"Cant set locale\n");  if(XSetLocaleModifiers("")==NULL)       fprintf(stderr, "Cant set locale modifiers\n");  g.display = XtDisplay(g.main_widget);  if((g.fontstruct=XLoadQueryFont(g.display, g.font)) == NULL)   {   fprintf(stderr, "%s: display %s cannot load font %s\ntrying fixed font",              g.appname, DisplayString(g.display), g.font);      strcpy(g.font, "fixed");      if((g.fontstruct=XLoadQueryFont(g.display, g.font)) == NULL)       {   fprintf(stderr, "%s: display %s cannot load fixed font\n",              g.appname, DisplayString(g.display));          exit(1);      }   }   g.screen = DefaultScreen(g.display);   g.root_window = RootWindow(g.display,g.screen);  depth = DefaultDepth(g.display, g.screen);  g.visual = DefaultVisual(g.display, g.screen);  g.screen = DefaultScreen(g.display);  g.bitsperpixel = bits_per_pixel();  if(g.bitsperpixel>=32 && depth==24) g.sparse_packing=1;  if(g.bitsperpixel == 8 &&     (g.visual->c_class == TrueColor || g.visual->c_class == DirectColor))    {  g.bitsperpixel = 7;        g.want_colormaps = 0;       printf("8-bit TrueColor mode\n");    }  g.colormap = DefaultColormap(g.display, g.screen);  g.ximage_byte_order = ImageByteOrder(g.display);  XGetGeometry(g.display, g.root_window, &rwin, &xroot, &yroot, &uw,       &uh, &ubw, &g.udepth);  g.xres = (int) uw;               // xres of root screen  g.yres = (int) uh;               // yres of root screen  g.off[7]=1;  g.off[8]=1;  g.off[15]=2;  g.off[16]=2;  g.off[24]=3;  g.off[32]=4;   }//--------------------------------------------------------------------//// bits_per_pixel                                                     ////--------------------------------------------------------------------//int bits_per_pixel(void){  int bitmap_pad = 8;   // Data is byte-organized  int bytesperline=0;   // 0 means: scan lines are contiguous - X server                        // calculates it for you   int xsize=10;  int ysize=10;  int bpp = DefaultDepth(g.display, g.screen);  char *buf;  if(bpp==15) return 15;  buf = (char*)malloc(1200);  // Must use malloc because XDestroyImage deallocates it "for" you.  int offset = 0;  XImage *ximage;  ximage = XCreateImage(g.display, g.visual, (uint)bpp, ZPixmap, offset,      buf, xsize, ysize, bitmap_pad, bytesperline);  if(ximage==NULL){ fprintf(stderr, "Cant create test image\n"); exit(1); }  bpp = ximage->bits_per_pixel;  XDestroyImage(ximage);  return bpp;}//--------------------------------------------------------------------//// xminitializemisc                                                   //// Initialize miscellaneous Xm functions.                             //// Must be called after create_drawing_area() so g.mainwindow &       ////   g.display are defined.                                           //// Must be called after init_xlib so g.fontstruct is defined.         ////--------------------------------------------------------------------//void xminitializemisc(Widget parent){  ////  Get rid of those pesky messages that spew out on the screen  ////  all the time.  XtAppSetWarningHandler(XtWidgetToApplicationContext(parent), warningmessagecb);  g.spixmap = XCreatePixmap(g.display,g.main_window,200,200,g.udepth);}//--------------------------------------------------------------------//// addlabel                                                           //// Print text on a Widget (used in dialog boxes)                      //// Creates a Widget, don't forget to destroy it.                      //// 'string' is the labelString resource specified in fallbacks        //// 'position' can be LEFT, CENTER, or RIGHT.                          //// Make boundaries as big as possible in case user changes string to  ////  something wide. If x2-x1 is too small for the string, Motif will  ////  enlarge the dialog box to gigantic size.                          ////--------------------------------------------------------------------//Widget addlabel(Widget parent, char *string, int position, double x1, double y1,    double x2, double y2) {   Widget label;   Arg args[100];   int n=0;   XtSetArg(args[n], XmNleftPosition, x1); n++;     // % of width from left   XtSetArg(args[n], XmNtopPosition, y1); n++;      // % of height from top   XtSetArg(args[n], XmNresizable, False); n++;   XtSetArg(args[n], XmNtopAttachment, XmATTACH_POSITION); n++;   XtSetArg(args[n], XmNleftAttachment, XmATTACH_POSITION); n++;   XtSetArg(args[n], XmNrightPosition, x2); n++;     XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++;   XtSetArg(args[n], XmNbottomPosition, y2); n++;     XtSetArg(args[n], XmNrightAttachment, XmATTACH_POSITION); n++;   XtSetArg(args[n], XmNbottomAttachment, XmATTACH_POSITION); n++;   switch(position)   {  case LEFT: XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++; break;      case CENTER: XtSetArg(args[n], XmNalignment, XmALIGNMENT_CENTER); n++; break;      case RIGHT: XtSetArg(args[n], XmNalignment, XmALIGNMENT_END); n++; break;   }

⌨️ 快捷键说明

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