📄 xutils.c
字号:
*
* Return values:
* none
*/
void error( char *msg,...)
{
va_list ap;
char istr[MESSLENGTH*MESSLINES] = "ERROR: ";
char vstr[1000];
va_start(ap,msg);
vsprintf(vstr,msg,ap);
va_end(ap);
strncat(istr,vstr,MESSLENGTH*MESSLINES-10);
if (!interactive)
fprintf(stdout,"%s",istr);
else
Message(MSG_ERROR,istr);
}
/*
* warning()
*
* Prints warning msg.
* Variadic parameter list can be passed.
*
* Return values:
* none
*/
void warning( char *msg,...)
{
va_list ap;
char istr[MESSLENGTH*MESSLINES] = "WARNING: ";
char vstr[1000];
va_start(ap,msg);
vsprintf(vstr,msg,ap);
va_end(ap);
strncat(istr,vstr,MESSLENGTH*MESSLINES-10);
if (!interactive)
fprintf(stdout,"%s",istr);
else
Message(MSG_ERROR,istr);
}
/*
* info()
*
* Prints info msg.
* Variadic parameter list can be passed.
*
* Return values:
* none
*/
void info( char *msg,...)
{
va_list ap;
char istr[MESSLENGTH+10] = "";
char vstr[1000];
if (!mess_output) return;
va_start(ap,msg);
vsprintf(vstr,msg,ap);
va_end(ap);
strncat(istr,vstr,MESSLENGTH);
if (!interactive)
fprintf(stdout,"%s\n",istr);
else
{
UseWindow(mainw);
SelectFont(systemFont);
SetTitle(message,istr);
if(save_log && save_log_fd!=NULL)
fprintf(save_log_fd,"%s\n",istr);
Update();
}
}
void set_helix_gp(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 9)
return;
helix_penalty = temp;
}
void set_strand_gp(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 9)
return;
strand_penalty = temp;
}
void set_loop_gp(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 9)
return;
loop_penalty = temp;
}
void set_terminal_gp(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 9)
return;
helix_end_penalty = temp;
}
void set_helix_minus(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 9)
return;
helix_end_minus = temp;
}
void set_helix_plus(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 9)
return;
helix_end_plus = temp;
}
void set_strand_plus(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 9)
return;
strand_end_plus = temp;
}
void set_strand_minus(TexT t)
{
char str[10];
int temp;
GetTitle(t,str,10);
temp = atoi(str);
if (temp < 0 || temp > 9)
return;
strand_end_minus = temp;
}
void set_inverted(IteM i)
{
inverted=GetStatus(i);
if (inverted==FALSE)
{
strcpy(color_lut[0].name,"BLACK");
color_lut[0].r=0.4;
color_lut[0].g=0.4;
color_lut[0].b=0.4;
SelectColor(color_lut[0].r*255, color_lut[0].g*255, color_lut[0].b*255);
color_lut[0].val=GetColor();
}
else
{
strcpy(color_lut[0].name,"WHITE");
color_lut[0].r=1.0;
color_lut[0].g=1.0;
color_lut[0].b=1.0;
SelectColor(color_lut[0].r*255, color_lut[0].g*255, color_lut[0].b*255);
color_lut[0].val=GetColor();
}
if(aln_mode==MULTIPLEM)
DrawPanel(seq_panel.seqs);
else
{
DrawPanel(prf_panel[0].seqs);
DrawPanel(prf_panel[1].seqs);
}
}
void set_ss_output(ButtoN b)
{
int tmp;
tmp = GetStatus(b);
if (tmp) output_ss = TRUE;
else output_ss = FALSE;
if (output_ss && output_gp)
output_struct_penalties=2;
else if (output_ss)
output_struct_penalties=0;
else if (output_gp)
output_struct_penalties=1;
else
output_struct_penalties=3;
}
void set_gp_output(ButtoN b)
{
int tmp;
tmp = GetStatus(b);
if (tmp) output_gp = TRUE;
else output_gp = FALSE;
if (output_ss && output_gp)
output_struct_penalties=2;
else if (output_ss)
output_struct_penalties=0;
else if (output_gp)
output_struct_penalties=1;
else
output_struct_penalties=3;
}
void set_user_matrix(ButtoN but)
{
if(get_series_matrixname(usermtrxname,usermat,aa_xref,5,&matnum,mattext))
strcpy(mtrxname,usermtrxname);
SetValue(matrix_list,matnum);
}
void set_pw_user_matrix(ButtoN but)
{
if(get_user_matrixname(pw_usermtrxname,pw_usermat,pw_aa_xref,5,&pw_matnum,pwmattext))
strcpy(pw_mtrxname,pw_usermtrxname);
SetValue(pw_matrix_list,pw_matnum);
}
void set_pw_matrix(GrouP g)
{
int tmp;
tmp = GetValue(g);
if (tmp>0 && tmp<pw_matrix_menu.noptions)
{
pw_matnum = tmp;
strcpy(pw_mtrxname,pw_matrix_menu.opt[tmp-1].string);
}
else if(pw_usermtrxname[0]=='\0')
{
if(get_user_matrixname(pw_usermtrxname,pw_usermat,pw_aa_xref,pw_matrix_menu.noptions,&pw_matnum,pwmattext))
strcpy(pw_mtrxname,pw_usermtrxname);
}
else
pw_matnum=pw_matrix_menu.noptions;
SetValue(pw_matrix_list,pw_matnum);
}
void set_matrix(GrouP g)
{
int tmp;
int status;
tmp = GetValue(g);
if (tmp>0 && tmp<matrix_menu.noptions)
{
matnum = tmp;
strcpy(mtrxname,matrix_menu.opt[tmp-1].string);
}
else if(usermtrxname[0]=='\0')
{
if(get_series_matrixname(usermtrxname,usermat,aa_xref,matrix_menu.noptions,&matnum,mattext))
strcpy(mtrxname,usermtrxname);
}
else matnum=matrix_menu.noptions;
SetValue(matrix_list,matnum);
}
static int get_series_matrixname(char *usermtrxname, short *usermat,short *aa_xref,int usermatnum,int *matnum,PrompT mattext)
{
int ret=0;
static Char filename[FILENAMELEN];
if (GetInputFileName(filename,FILENAMELEN,"",""))
{
if(user_mat_series(filename, usermat, aa_xref))
{
strcpy(usermtrxname,filename);
*matnum=usermatnum;
SetTitle(mattext,usermtrxname);
ret=1;
}
}
return ret;
}
int get_user_matrixname(char *usermtrxname, short *usermat,short *aa_xref,int usermatnum,int *matnum,PrompT mattext)
{
int ret=0;
static Char filename[FILENAMELEN];
if (GetInputFileName(filename,FILENAMELEN,"",""))
{
if(user_mat(filename, usermat, aa_xref))
{
strcpy(usermtrxname,filename);
*matnum=usermatnum;
SetTitle(mattext,usermtrxname);
ret=1;
}
}
return ret;
}
void set_user_dnamatrix(ButtoN but)
{
if(get_user_matrixname(dnausermtrxname,userdnamat,dna_xref,3,&dnamatnum,dnamattext))
strcpy(dnamtrxname,dnausermtrxname);
SetValue(dnamatrix_list,dnamatnum);
}
void set_pw_user_dnamatrix(ButtoN but)
{
if(get_user_matrixname(pw_dnausermtrxname,pw_userdnamat,pw_dna_xref,3,&pw_dnamatnum,pwdnamattext))
strcpy(pw_dnamtrxname,pw_dnausermtrxname);
SetValue(pw_dnamatrix_list,pw_dnamatnum);
}
void set_pw_dnamatrix(GrouP g)
{
int tmp;
tmp = GetValue(g);
if (tmp>0 && tmp<dnamatrix_menu.noptions)
{
pw_dnamatnum = tmp;
strcpy(pw_dnamtrxname,dnamatrix_menu.opt[tmp-1].string);
}
else if(pw_dnausermtrxname[0]=='\0')
{
if(get_user_matrixname(pw_dnausermtrxname,pw_userdnamat,pw_dna_xref,dnamatrix_menu.noptions,&pw_dnamatnum,pwdnamattext))
strcpy(pw_dnamtrxname,pw_dnausermtrxname);
}
else pw_dnamatnum=dnamatrix_menu.noptions;
SetValue(pw_dnamatrix_list,pw_dnamatnum);
}
void set_dnamatrix(GrouP g)
{
int tmp;
tmp = GetValue(g);
if (tmp>0 && tmp<dnamatrix_menu.noptions)
{
dnamatnum = tmp;
strcpy(dnamtrxname,dnamatrix_menu.opt[tmp-1].string);
}
else if(dnausermtrxname[0]=='\0')
{
if(get_user_matrixname(dnausermtrxname,userdnamat,dna_xref,dnamatrix_menu.noptions,&dnamatnum,dnamattext))
strcpy(dnamtrxname,dnausermtrxname);
}
else dnamatnum=dnamatrix_menu.noptions;
SetValue(dnamatrix_list,dnamatnum);
}
FILE * open_input_file(char *file_name)
{
FILE * file_handle;
if (*file_name == EOS) {
error("Bad input file [%s]",file_name);
return NULL;
}
#ifdef VMS
if((file_handle=fopen(file_name,"r","rat=cr","rfm=var"))==NULL) {
#else
if((file_handle=fopen(file_name,"r"))==NULL) {
#endif
error("Cannot open input file [%s]",file_name);
return NULL;
}
return file_handle;
}
void set_use_ss1(PopuP l)
{
set_toggle(l,&use_ss1);
load_aln(prf_panel[0],0,profile1_nseqs-1,FALSE);
load_aln(prf_panel[1],profile1_nseqs,nseqs-1,FALSE);
}
void set_use_ss2(PopuP l)
{
set_toggle(l,&use_ss2);
load_aln(prf_panel[0],0,profile1_nseqs-1,FALSE);
load_aln(prf_panel[1],profile1_nseqs,nseqs-1,FALSE);
}
void set_output_clustal(ButtoN l)
{
set_button(l,&output_clustal);
}
void set_output_gde(ButtoN l)
{
set_button(l,&output_gde);
}
void set_output_nexus(ButtoN l)
{
set_button(l,&output_nexus);
}
void set_format(GrouP g)
{
int i;
char path[FILENAMELEN];
get_path(seqname,path);
GetTitle(savealntext, path,FILENAMELEN);
/* remove the current extension */
for(i=strlen(path)-1;i>=0;i--)
if(path[i]=='.')
{
path[i]='\0';
break;
}
i = GetValue(g);
if (i==1)
{
save_format=CLUSTAL;
strcat(path,".aln");
}
else if (i==2)
{
save_format=PIR;
strcat(path,".pir");
}
else if (i==3)
{
save_format=MSF;
strcat(path,".msf");
}
else if (i==4)
{
save_format=PHYLIP;
strcat(path,".phy");
}
else if (i==5)
{
save_format=GDE;
strcat(path,".gde");
}
else if (i==6)
{
save_format=NEXUS;
strcat(path,".nxs");
}
SetTitle(savealntext, path);
}
void set_residue_exceptions(IteM i)
{
if (residue_exceptions==FALSE)
residue_exceptions=TRUE;
else
residue_exceptions=FALSE;
if (aln_mode==MULTIPLEM)
DrawPanel(seq_panel.seqs);
else
{
DrawPanel(prf_panel[0].seqs);
DrawPanel(prf_panel[1].seqs);
}
}
void set_fs_toggle(PopuP l)
{
set_toggle(l,&quick_pairalign);
if (quick_pairalign)
{
Hide(slow_para);
Show(fast_para);
}
else
{
Hide(fast_para);
Show(slow_para);
}
}
void set_font_size(PopuP g)
{
int tmp;
char font[30];
tmp = GetValue(g);
font_size=tmp-1;
sprintf(font, "%s,%d,%c", "courier", av_font[font_size], 'm');
datafont=ParseFont(font);
if (aln_mode==MULTIPLEM)
{
DrawPanel(seq_panel.names);
DrawPanel(seq_panel.seqs);
}
else
{
DrawPanel(prf_panel[0].names);
DrawPanel(prf_panel[0].seqs);
DrawPanel(prf_panel[1].names);
DrawPanel(prf_panel[1].seqs);
}
correct_name_bars(FALSE);
correct_seq_bars(FALSE);
}
void set_pscroll_mode(ButtoN l)
{
panel_data data;
set_button(l,&fixed_prf_scroll);
GetPanelExtra(prf_panel[0].seqs,&data);
if(fixed_prf_scroll)
data.lockoffset=data.firstvcol;
else
data.lockoffset=0;
SetPanelExtra(prf_panel[0].seqs,&data);
GetPanelExtra(prf_panel[1].seqs,&data);
if(fixed_prf_scroll)
data.lockoffset=data.firstvcol;
else
data.lockoffset=0;
SetPanelExtra(prf_panel[1].seqs,&data);
correct_seq_bars(FALSE);
}
void set_aln_mode(PopuP g)
{
int tmp;
tmp = GetValue(g);
if (tmp == 1)
aln_mode = MULTIPLEM;
else
aln_mode = PROFILEM;
switch_mode();
}
void set_show_segments(IteM l)
{
if (segment_exceptions==FALSE)
segment_exceptions=TRUE;
else
segment_exceptions=FALSE;
calc_seg_exceptions();
SetStatus(segment_item,segment_exceptions);
show_segment_exceptions();
}
void shift(Handle a, int dx, int dy)
{
PoinT pt;
GetNextPosition (a, &pt);
pt.x+=dx;
pt.y+=dy;
SetNextPosition(a, pt);
}
void stripspace(char *str)
{
register int i,j,p;
char *tstr;
#ifndef UNIX
return;
#endif
p = strlen(str) - 1;
while ( isspace(str[p]) )
p--;
str[p + 1] = EOS;
tstr=(char *)ckalloc((p+2)*sizeof(char));
for(i=0,j=0;i<=p;i++)
if(!isspace(str[i]))
tstr[j++]=str[i];
tstr[j] = EOS;
strcpy(str,tstr);
ckfree(tstr);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -