📄 xmenu.c
字号:
SelectFont(programFont);
Break(savealnw);
savealntext=DialogText(savealnw, "", 35, NULL);
Break(savealnw);
savegr=HiddenGroup(savealnw, 2, 0, NULL);
shift(savegr, 60, 20);
save_ok=PushButton(savegr, " OK ", save_proc);
shift(savegr, 20,0);
save_can=PushButton(savegr, "CANCEL", CancelWin);
SetTitle(savealntext, path);
Show(savealnw);
}
static void read_file_window(char *title,char *prompt,char *filename,void read_proc(ButtoN but))
{
GrouP readgr;
ButtoN read_ok, read_can;
GrouP maing;
SelectFont(systemFont);
stdCharWidth=CharWidth('A');
stdLineHeight=LineHeight();
readfilew=FixedWindow(-50, -33, -10, -10, title,RemoveWin);
maing=HiddenGroup(readfilew,2,0,NULL);
SetGroupSpacing(maing,0,10);
shift(readfilew, 0, 20);
make_prompt(readfilew, prompt);
stdLineHeight=18;
SelectFont(programFont);
Break(readfilew);
readfiletext=DialogText(readfilew, "", 35, NULL);
if (filename != NULL) SetTitle(readfiletext, filename);
Break(readfilew);
readgr=HiddenGroup(readfilew, 2, 0, NULL);
shift(readgr, 60, 20);
read_ok=PushButton(readgr, " OK ", read_proc);
shift(readgr, 20,0);
read_can=PushButton(readgr, "CANCEL", CancelWin);
Show(readfilew);
}
static void CancelWin (ButtoN but)
{
Remove(ParentWindow(but));
}
static void SearchStr(ButtoN but)
{
/* reset the current position */
find_pos.seq=0;
find_pos.res=-1;
/* find the next occurrence of the string */
SearchStringAgain(but);
}
static void SearchStringAgain(ButtoN but)
{
int i,j,ix,length;
int seq,res,start_res;
Boolean in_string,found;
panel_data ndata,sdata;
GetTitle(findtext, filename, FILENAMELEN);
stripspace(filename);
strncpy(find_string,filename,MAXFINDSTR);
length=strlen(find_string);
if(length==0) return;
for(i=0;i<length;i++)
find_string[i]=toupper(find_string[i]);
GetPanelExtra(active_panel.names,&ndata);
GetPanelExtra(active_panel.seqs,&sdata);
in_string=FALSE;
found=FALSE;
start_res=0;
ix=0;
seq=find_pos.seq;
res=find_pos.res+1;
while (seq<ndata.nseqs)
{
if(ndata.selected[seq]==TRUE)
{
while (res<sdata.ncols)
{
if(sdata.lines[seq][res]==find_string[ix])
{
if(in_string==FALSE)
start_res=res;
ix++;
in_string=TRUE;
}
else if(in_string==TRUE)
{
res=start_res;
ix=0;
in_string=FALSE;
}
if(ix==length)
{
find_pos.seq=seq;
find_pos.res=start_res;
found=TRUE;
break;
}
res++;
while(res<sdata.ncols && sdata.lines[seq][res]=='-')
res++;
}
}
if(found) break;
seq++;
res=0;
}
if(found==FALSE)
info("String %s not found",find_string);
else
{
info("String %s in sequence %s, column %d",find_string,names[find_pos.seq+1],find_pos.res+1);
}
}
static void SavePSSeqFile(ButtoN but)
{
char *ps_file;
GetTitle(savepstext, filename, FILENAMELEN);
stripspace(filename);
ps_file=(char *)ckalloc(FILENAMELEN*sizeof(char));
strcpy(ps_file,filename);
GetTitle(pspartext, filename, FILENAMELEN);
stripspace(filename);
strcpy(ps_par_file,filename);
write_ps_file(seq_panel,ps_file,ps_par_file,pagesize,orientation,
ps_header,ps_ruler,ps_resno,
resize,first_printres,last_printres,blocklen,ps_curve);
info("Postscript file %s written",ps_file);
ckfree(ps_file);
}
static void SavePSPrf1File(ButtoN but)
{
char *ps_file;
char *ps_par_file;
GetTitle(savepstext, filename, FILENAMELEN);
stripspace(filename);
ps_file=(char *)ckalloc(FILENAMELEN*sizeof(char));
strcpy(ps_file,filename);
GetTitle(pspartext, filename, FILENAMELEN);
stripspace(filename);
ps_par_file=(char *)ckalloc(FILENAMELEN*sizeof(char));
strcpy(ps_par_file,filename);
write_ps_file(prf_panel[0],ps_file,ps_par_file,pagesize,orientation,
ps_header,ps_ruler,ps_resno,
resize,first_printres,last_printres,blocklen,ps_curve);
info("Postscript file %s written",ps_file);
ckfree(ps_file);
}
static void SavePSPrf2File(ButtoN but)
{
char *ps_file;
char *ps_par_file;
GetTitle(savepstext, filename, FILENAMELEN);
stripspace(filename);
ps_file=(char *)ckalloc(FILENAMELEN*sizeof(char));
strcpy(ps_file,filename);
GetTitle(pspartext, filename, FILENAMELEN);
stripspace(filename);
ps_par_file=(char *)ckalloc(FILENAMELEN*sizeof(char));
strcpy(ps_par_file,filename);
write_ps_file(prf_panel[1],ps_file,ps_par_file,pagesize,orientation,
ps_header,ps_ruler,ps_resno,
resize,first_printres,last_printres,blocklen,ps_curve);
info("Postscript file %s written",ps_file);
ckfree(ps_file);
}
static void SaveSeqFile(ButtoN but)
{
write_file(1,nseqs,firstres,lastres);
seq_panel.modified=FALSE;
info("File %s saved",filename);
}
static void SavePrf1File(ButtoN but)
{
write_file(1,profile1_nseqs,firstres,lastres);
prf_panel[0].modified=FALSE;
info("File %s saved",filename);
}
static void SavePrf2File(ButtoN but)
{
write_file(profile1_nseqs+1,nseqs,firstres,lastres);
prf_panel[1].modified=FALSE;
info("File %s saved",filename);
}
/* this is equivalent to open_alignment_output(), but uses the window
interface to input file names */
static Boolean open_aln_files(void)
{
char path[FILENAMELEN];
if(!output_clustal && !output_nbrf && !output_gcg &&
!output_phylip && !output_gde && !output_nexus) {
error("You must select an alignment output format");
return FALSE;
}
if(output_clustal) {
GetTitle(cl_outtext,filename,FILENAMELEN);
stripspace(filename);
if((clustal_outfile = open_explicit_file(
filename))==NULL) return FALSE;
}
if(output_nbrf) {
GetTitle(pir_outtext,filename,FILENAMELEN);
stripspace(filename);
if((nbrf_outfile = open_explicit_file(
filename))==NULL) return FALSE;
}
if(output_gcg) {
GetTitle(msf_outtext,filename,FILENAMELEN);
stripspace(filename);
if((gcg_outfile = open_explicit_file(
filename))==NULL) return FALSE;
}
if(output_phylip) {
GetTitle(phylip_outtext,filename,FILENAMELEN);
stripspace(filename);
if((phylip_outfile = open_explicit_file(
filename))==NULL) return FALSE;
}
if(output_gde) {
GetTitle(gde_outtext,filename,FILENAMELEN);
stripspace(filename);
if((gde_outfile = open_explicit_file(
filename))==NULL) return FALSE;
}
if(output_nexus) {
GetTitle(nexus_outtext,filename,FILENAMELEN);
stripspace(filename);
if((nexus_outfile = open_explicit_file(
filename))==NULL) return FALSE;
}
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);
}
return TRUE;
}
static void write_file(int fseq, int lseq, int fres, int lres)
{
int i,length=0;
FILE *outfile;
GetTitle(savealntext, filename, FILENAMELEN);
stripspace(filename);
outfile=open_explicit_file(filename);
for (i=fseq;i<=lseq;i++)
if (length < seqlen_array[i]) length = seqlen_array[i];
if(fres<1) fres=1;
if(lres<1) lres=length;
length=lres-fres+1;
if(save_format==CLUSTAL) {
clustal_out(outfile, fres, length, fseq, lseq);
fclose(outfile);
info("CLUSTAL format file created [%s]",filename);
}
else if(save_format==PIR) {
nbrf_out(outfile, fres, length, fseq, lseq);
fclose(outfile);
info("NBRF/PIR format file created [%s]",filename);
}
else if(save_format==MSF) {
gcg_out(outfile, fres, length, fseq, lseq);
fclose(outfile);
info("GCG/MSF format file created [%s]",filename);
}
else if(save_format==PHYLIP) {
phylip_out(outfile, fres, length, fseq, lseq);
fclose(outfile);
info("PHYLIP format file created [%s]",filename);
}
else if(save_format==GDE) {
gde_out(outfile, fres, length, fseq, lseq);
fclose(outfile);
info("GDE format file created [%s]",filename);
}
else if(save_format==NEXUS) {
nexus_out(outfile, fres, length, fseq, lseq);
fclose(outfile);
info("NEXUS format file created [%s]",filename);
}
if (Visible(savealnw))
{
Remove(savealnw);
savealnw=NULL;
}
}
static void SaveTreeWin (IteM item)
{
GrouP savegr;
ButtoN save_ok, save_can;
char path[FILENAMELEN];
if (empty)
{
error("No file loaded");
return;
}
if (nseqs < 2)
{
error("Alignment has only %d sequences",nseqs);
return;
}
SelectFont(systemFont);
stdCharWidth=CharWidth('A');
stdLineHeight=LineHeight();
savetreew=FixedWindow(-50, -33, -10, -10, "CREATE TREE",RemoveWin);
shift(savetreew, 0, 20);
make_prompt(savetreew, "SAVE TREE AS :");
Advance(savetreew);
shift(savetreew, 0, -10);
stdLineHeight=18;
SelectFont(programFont);
savetreetext=DialogText(savetreew, "", 35, NULL);
SelectFont(systemFont);
stdLineHeight=15;
Break(savetreew);
savegr=HiddenGroup(savetreew, 2, 0, NULL);
shift(savegr, 140, 20);
save_ok=PushButton(savegr, " OK ", CreateAlignTree);
shift(savegr, 20, 0);
save_can=PushButton(savegr, "CANCEL", CancelWin);
get_path(seqname,path);
strcat(path,"dnd");
SetTitle(savetreetext, path);
Show(savetreew);
}
static void DrawTreeWin (IteM item)
{
GrouP drawgr;
GrouP output_list;
ButtoN draw_ok, draw_can;
char path[FILENAMELEN];
char name[FILENAMELEN];
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();
drawtreew=FixedWindow(-50, -33, -10, -10, "DRAW TREE",RemoveWin);
output_list=HiddenGroup(drawtreew, 2, 0, NULL);
if (output_tree_clustal)
{
make_prompt(output_list, "SAVE CLUSTAL TREE AS :");
drawnjtreetext=DialogText(output_list, "", 35, NULL);
strcpy(name,path);
strcat(name,"nj");
SetTitle(drawnjtreetext, name);
Break(output_list);
}
if (output_tree_phylip)
{
make_prompt(output_list, "SAVE PHYLIP TREE AS :");
drawphtreetext=DialogText(output_list, "", 35, NULL);
strcpy(name,path);
strcat(name,"ph");
SetTitle(drawphtreetext, name);
Break(output_list);
}
if (output_tree_distances)
{
make_prompt(output_list, "SAVE DISTANCE MATRIX AS :");
drawdsttreetext=DialogText(output_list, "", 35, NULL);
strcpy(name,path);
strcat(name,"dst");
SetTitle(drawdsttreetext, name);
Break(output_list);
}
if (output_tree_nexus)
{
make_prompt(output_list, "SAVE NEXUS TREE AS :");
drawnxstreetext=DialogText(output_list, "", 35, NULL);
strcpy(name,path);
strcat(name,"tre");
SetTitle(drawnxstreetext, 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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -