📄 xmenu.c
字号:
drawpimtext=DialogText(output_list, "", 35, NULL); strcpy(name,path); strcat(name,"pim"); SetTitle(drawpimtext, name); Break(output_list); } SelectFont(systemFont); stdLineHeight=15; Break(drawtreew); drawgr=HiddenGroup(drawtreew, 2, 0, NULL); shift(drawgr, 140, 20); draw_ok=PushButton(drawgr, " OK ", DrawTree); shift(drawgr, 20, 0); draw_can=PushButton(drawgr, "CANCEL", CancelWin); Show(drawtreew);}static void BootstrapTreeWin (IteM item){ GrouP bootgr; ButtoN boot_ok, boot_can; TexT seed,ntrials; char name[FILENAMELEN]; char path[FILENAMELEN]; char str[FILENAMELEN]; GrouP output_list; if (empty) { error("No file loaded"); return; } if (nseqs < 2) { error("Alignment has only %d sequences",nseqs); return; } get_path(seqname,path); SelectFont(systemFont); stdCharWidth=CharWidth('A'); stdLineHeight=LineHeight(); boottreew=FixedWindow(-50, -33, -10, -10, "BOOTSTRAP TREE",RemoveWin); make_prompt(boottreew, "Random number generator seed [1-1000] :"); Advance(boottreew); sprintf(str,"%4d",boot_ran_seed); seed=DialogText(boottreew, str, 4,set_ran_seed); Break(boottreew); make_prompt(boottreew, "Number of bootstrap trials [1-10000] :"); Advance(boottreew); sprintf(str,"%5d",boot_ntrials); ntrials=DialogText(boottreew, str, 5,set_ntrials); Break(boottreew); output_list=HiddenGroup(boottreew, 2, 0, NULL); if (output_tree_clustal) { make_prompt(output_list, "SAVE CLUSTAL TREE AS :"); bootnjtreetext=DialogText(output_list, "", 35, NULL); strcpy(name,path); strcat(name,"njb"); SetTitle(bootnjtreetext, name); Break(output_list); } if (output_tree_phylip) { make_prompt(output_list, "SAVE PHYLIP TREE AS :"); bootphtreetext=DialogText(output_list, "", 35, NULL); strcpy(name,path); strcat(name,"phb"); SetTitle(bootphtreetext, name); Break(output_list); } if (output_tree_nexus) { make_prompt(output_list, "SAVE NEXUS TREE AS :"); bootnxstreetext=DialogText(output_list, "", 35, NULL); strcpy(name,path); strcat(name,"treb"); SetTitle(bootnxstreetext, name); Break(output_list); } SelectFont(systemFont); stdLineHeight=15; Break(boottreew); bootgr=HiddenGroup(boottreew, 2, 0, NULL); shift(bootgr, 140, 20); boot_ok=PushButton(bootgr, " OK ", BootstrapTree); shift(bootgr, 20, 0); boot_can=PushButton(bootgr, "CANCEL", CancelWin); Show(boottreew);}static void CreateAlignTree(ButtoN but){ char path[FILENAMELEN]; char phylip_name[FILENAMELEN]; GetTitle(savetreetext, filename, FILENAMELEN); strcpy(phylip_name,filename); stripspace(filename); info("Doing pairwise alignments..."); if(save_log) { get_path(seqname,path); strcpy(save_log_filename,path); strcat(save_log_filename,"log"); if ((save_log_fd=fopen(save_log_filename,"a"))==NULL) error("Cannot open log file %s",save_log_filename); } WatchCursor(); if (Visible(savetreew)) { Remove(savetreew); savetreew=NULL; } make_tree(phylip_name); if(save_log && save_log_fd!=NULL) { fclose(save_log_fd); save_log_fd=NULL; } ArrowCursor(); info("Tree %s created",filename);}static void DrawTree(ButtoN but){ char path[FILENAMELEN]; char phylip_name[FILENAMELEN]; char clustal_name[FILENAMELEN]; char dist_name[FILENAMELEN]; char nexus_name[FILENAMELEN]; char pim_name[FILENAMELEN]; if(output_tree_clustal) { GetTitle(drawnjtreetext, filename, FILENAMELEN); stripspace(filename); strcpy(clustal_name,filename); } if(output_tree_phylip) { GetTitle(drawphtreetext, filename, FILENAMELEN); stripspace(filename); strcpy(phylip_name,filename); } if(output_tree_distances) { GetTitle(drawdsttreetext, filename, FILENAMELEN); stripspace(filename); strcpy(dist_name,filename); } if(output_tree_nexus) { GetTitle(drawnxstreetext, filename, FILENAMELEN); stripspace(filename); strcpy(nexus_name,filename); } if(output_pim) /* if this is absent, no file gets created ??? */ { GetTitle(drawpimtext, filename, FILENAMELEN); stripspace(filename); strcpy(pim_name,filename); } info("Calculating tree..."); WatchCursor(); if(save_log) { get_path(seqname,path); strcpy(save_log_filename,path); strcat(save_log_filename,"log"); if ((save_log_fd=fopen(save_log_filename,"a"))==NULL) error("Cannot open log file %s",save_log_filename); } if (Visible(drawtreew)) { Remove(drawtreew); drawtreew=NULL; } phylogenetic_tree(phylip_name,clustal_name,dist_name,nexus_name,pim_name); if(save_log && save_log_fd!=NULL) { fclose(save_log_fd); save_log_fd=NULL; } ArrowCursor(); info("Tree %s created",filename);}static void BootstrapTree(ButtoN but){ char phylip_name[FILENAMELEN]; char clustal_name[FILENAMELEN]; char nexus_name[FILENAMELEN]; char path[FILENAMELEN]; if(output_tree_clustal) { GetTitle(bootnjtreetext, filename, FILENAMELEN); stripspace(filename); strcpy(clustal_name,filename); } if(output_tree_phylip) { GetTitle(bootphtreetext, filename, FILENAMELEN); stripspace(filename); strcpy(phylip_name,filename); } if(output_tree_nexus) { GetTitle(bootnxstreetext, filename, FILENAMELEN); stripspace(filename); strcpy(nexus_name,filename); } info("Bootstrapping tree..."); WatchCursor(); if(save_log) { get_path(seqname,path); strcpy(save_log_filename,path); strcat(save_log_filename,"log"); if ((save_log_fd=fopen(save_log_filename,"a"))==NULL) warning("Cannot open log file %s",save_log_filename); } if (Visible(boottreew)) { Remove(boottreew); boottreew=NULL; } bootstrap_tree(phylip_name,clustal_name,nexus_name); if(save_log && save_log_fd!=NULL) { fclose(save_log_fd); save_log_fd=NULL; } info("Bootstrap tree %s created",filename); ArrowCursor();}static void OpenSeqFile (IteM item){ int n; panel_data data; if (nseqs>0) { if (Message(MSG_YN,"Replace existing sequences ?")==ANS_NO) return; } if (!GetInputFileName (filename,FILENAMELEN,"","")) return; strcpy(seqname,filename); GetPanelExtra(seq_panel.names,&data); data.nseqs=0; data.vseqs=0; SetPanelExtra(seq_panel.names,&data); GetPanelExtra(seq_panel.seqs,&data); data.nseqs=0; data.vseqs=0; SetPanelExtra(seq_panel.seqs,&data); n=seq_input(FALSE); if (n<=0) { info("File %s not loaded.",seqname); return; } load_aln(seq_panel,0,nseqs-1,TRUE); ncutseqs=0; info("File %s loaded.",seqname);}static void AppendSeqFile (IteM item){ int n; panel_data data; if (!GetInputFileName (filename,FILENAMELEN,"","")) return; strcpy(seqname,filename); GetPanelExtra(seq_panel.names,&data); data.nseqs=0; SetPanelExtra(seq_panel.names,&data); n=seq_input(TRUE); if (n<=0) { info("File %s not loaded.",seqname); return; } load_aln(seq_panel,0,nseqs-1,FALSE); info("File %s appended.",seqname);}static void OpenPrf1File (IteM item){ int i,j,n,tmpn=0,tmpfs; sint *tmplen_array; sint *tmpindex; char **tmp_array; char **tmpnames; char **tmptitles; panel_data data; if (profile1_nseqs>0) { if (Message(MSG_YN,"Replace existing sequences ?")==ANS_NO) return; } if (!GetInputFileName (filename,FILENAMELEN,"","")) return; if(!profile2_empty) { tmpn=nseqs-profile1_nseqs; tmpfs=profile1_nseqs; tmpnames=(char **)ckalloc((tmpn+1)*sizeof(char *)); tmptitles=(char **)ckalloc((tmpn+1)*sizeof(char *)); tmplen_array=(sint *)ckalloc((tmpn+1)*sizeof(sint)); tmpindex=(sint *)ckalloc((tmpn+1)*sizeof(sint)); tmp_array=(char **)ckalloc((tmpn+1)*sizeof(char *)); for(i=profile1_nseqs+1;i<=nseqs;i++) { tmpnames[i-profile1_nseqs-1]=(char *)ckalloc((MAXNAMES+2)*sizeof(char)); tmptitles[i-profile1_nseqs-1]=(char *)ckalloc((MAXTITLES+2)*sizeof(char)); strcpy(tmpnames[i-profile1_nseqs-1],names[i]); strcpy(tmptitles[i-profile1_nseqs-1],titles[i]); tmplen_array[i-profile1_nseqs-1]=seqlen_array[i]; tmpindex[i-profile1_nseqs-1]=output_index[i]-tmpfs+profile1_nseqs; tmp_array[i-profile1_nseqs-1]=(char *)ckalloc((seqlen_array[i]+2)*sizeof(char)); for(j=1;j<=seqlen_array[i];j++) tmp_array[i-profile1_nseqs-1][j]=seq_array[i][j]; } } strcpy(seqname,filename); GetPanelExtra(prf_panel[0].names,&data); data.nseqs=0; data.vseqs=0; SetPanelExtra(prf_panel[0].names,&data); GetPanelExtra(prf_panel[0].seqs,&data); data.nseqs=0; data.vseqs=0; SetPanelExtra(prf_panel[0].seqs,&data); profile_no = 1; n=profile_input(); if (n<=0) { info("File %s not loaded.",seqname); return; } strcpy(profile1_name,seqname); load_aln(prf_panel[0],0,profile1_nseqs-1,TRUE); if(tmpn!=0) { nseqs=tmpn+profile1_nseqs; realloc_aln(profile1_nseqs+1,nseqs); for(i=profile1_nseqs+1;i<=nseqs;i++) { names[i]=(char *)ckalloc((MAXNAMES+2)*sizeof(char)); titles[i]=(char *)ckalloc((MAXTITLES+2)*sizeof(char)); strcpy(names[i],tmpnames[i-profile1_nseqs-1]); ckfree(tmpnames[i-profile1_nseqs-1]); strcpy(titles[i],tmptitles[i-profile1_nseqs-1]); ckfree(tmptitles[i-profile1_nseqs-1]); seqlen_array[i]=tmplen_array[i-profile1_nseqs-1]; output_index[i]=tmpindex[i-profile1_nseqs-1]-tmpfs+profile1_nseqs; seq_array[i]=(char *)ckalloc((seqlen_array[i]+2)*sizeof(char)); for(j=1;j<=seqlen_array[i];j++) seq_array[i][j]=tmp_array[i-profile1_nseqs-1][j]; ckfree(tmp_array[i-profile1_nseqs-1]); } ckfree(tmpnames); ckfree(tmptitles); ckfree(tmplen_array); ckfree(tmpindex); ckfree(tmp_array); profile2_empty=FALSE; } load_aln(prf_panel[1],profile1_nseqs,nseqs-1,TRUE); ncutseqs=0; info("File %s loaded.",profile1_name);}static void OpenPrf2File (IteM item){ int n; panel_data data; if(profile1_empty) { error("You must load profile 1 first."); return; } if (nseqs>profile1_nseqs) { if (Message(MSG_YN,"Replace existing sequences ?")==ANS_NO) return; } if (!GetInputFileName (filename,FILENAMELEN,"","")) return; strcpy(seqname,filename); GetPanelExtra(prf_panel[1].names,&data); data.nseqs=0; data.vseqs=0; SetPanelExtra(prf_panel[1].names,&data); GetPanelExtra(prf_panel[1].seqs,&data); data.nseqs=0; data.vseqs=0; SetPanelExtra(prf_panel[1].seqs,&data); profile_no = 2; n=profile_input(); if (n<=0) { info("File %s not loaded.",seqname); return; } strcpy(profile2_name,seqname); ncutseqs=0; load_aln(prf_panel[1],profile1_nseqs,nseqs-1,TRUE); info("File %s loaded.",profile2_name);}static void BlackandWhite(IteM item){ ncolors=1; if (aln_mode == MULTIPLEM) color_seqs(); else { color_prf1(); color_prf2(); } usebw=TRUE; usedefcolors=FALSE; useusercolors=FALSE; SetStatus(bw_item,usebw); SetStatus(defcol_item,usedefcolors); SetStatus(usercol_item,useusercolors); info("Done.");}static void DefColorPar(IteM item){ if (explicit_par_file != NULL) ckfree(explicit_par_file); explicit_par_file=NULL; if(dnaflag) par_file=find_file(def_dnapar_file); else par_file=find_file(def_protpar_file); init_color_parameters(par_file); if (aln_mode == MULTIPLEM) color_seqs(); else { color_prf1(); color_prf2(); } usebw=FALSE; usedefcolors=TRUE; useusercolors=FALSE; SetStatus(bw_item,usebw); SetStatus(defcol_item,usedefcolors); SetStatus(usercol_item,useusercolors); info("Done.");}void set_reset_new_gaps(IteM i){ reset_alignments_new=GetStatus(i); if(reset_alignments_new==TRUE) { reset_alignments_all=FALSE; SetStatus(all_gaps_item,reset_alignments_all); }}void set_reset_all_gaps(IteM i){ reset_alignments_all=GetStatus(i); if(reset_alignments_all==TRUE) { reset_alignments_new=FALSE; SetStatus(new_gaps_item,reset_alignments_new); }} static void OpenColorParWin(IteM item){ read_file_window("Input Color File","COLOR PARAMETER FILE NAME:",explicit_par_file,OpenColorPar);}static void OpenColorPar(ButtoN but){ /*<ramu> this might do to open a file selection window */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -