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

📄 browser.c

📁 speech signal process tools
💻 C
📖 第 1 页 / 共 2 页
字号:
      show_notice(1,"Can't generate listing display in select_from_alternatives");      free(p->path_prefix);      if(!p->next)	input_pending = NULL;      else {	input_pending = p->next;	input_pending->prev = NULL;      }      free(p);    }  }  return;}/*********************************************************************/void menu_redoit(canvas, pwi, repaint_area)     Canvas canvas;     Pixwin *pwi;     Rectlist *repaint_area;{  Pixwin *pw;  Menu_list *l;  Rect *rect;  static int fhi;  register int y, xloc;  Pending_input *p;  extern Frame daddy;    p = (Pending_input*)xv_get(canvas, WIN_CLIENT_DATA);  if (!p)      return;  l = (Menu_list*)p->list;  pw = (Pixwin *)canvas_pixwin(canvas);  rect = (Rect*)xv_get(canvas, WIN_RECT);  fhi = def_font_height + 2;  while(l && (! l->active)) l = l->next; /* find top of displayed section */  if(l) {    pw_write((Xv_opaque)pw,0,0,rect->r_width,rect->r_height,	     PIX_COLOR(0)|PIX_SRC,NULL,0,0);    y = fhi;    while(l && (y < rect->r_height)) {      if(l->tapped)	pw_text((Xv_opaque)pw, 0, y, PIX_COLOR(1)|PIX_SRC, def_font, "*");      pw_text((Xv_opaque)pw, 10, y, PIX_COLOR(1)|PIX_SRC, def_font, l->str);      y += fhi;      l = l->next;    }  }  if(p->item) {		/* print label of panel item awaiting input */    xloc = (int)xv_get(canvas, WIN_X);    pw = (Pixwin*)xv_get(daddy, WIN_PIXWIN);    if(!p->banner)      pw_text((Xv_opaque)pw, xloc, 11, PIX_COLOR(FOREGROUND_COLOR)|PIX_SRC, def_font,	      (char *) xv_get(p->item, PANEL_LABEL_STRING));    else      pw_text((Xv_opaque)pw, xloc, 11, PIX_COLOR(FOREGROUND_COLOR)|PIX_SRC, def_font,	      p->banner);  }}/*********************************************************************/static void menu_doit(pw, event, arg)    Pixwin  *pw;    Event   *event;    caddr_t arg;{  Canvas  canvas = xv_get((Xv_opaque)pw, CANVAS_PAINT_CANVAS_WINDOW);  Menu_list *l, *l2;  Rect *rect;  static int fhi;  register int y, x, height, locy, entry, ndis;  Pending_input *p;  Panel_item item;  void (*proc)();  char *result;  Menu me;  extern char *cleaned_for_input();  switch (event_id(event))  {  case MS_LEFT:  case MS_RIGHT:  case LOC_DRAG:  case LOC_MOVE:      break;  default:      return;  }    p = (Pending_input*)xv_get(canvas, WIN_CLIENT_DATA);  if (!p)      return;  l2 = l = (Menu_list*)p->list;  rect = (Rect*)xv_get(canvas, WIN_RECT);  x = event_x(event);  y = event_y(event);  fhi = def_font_height + 2;  entry = (y - (fhi >> 2))/fhi;  while(l && (! l->active)) l = l->next; /* find top of displayed section */  if (l){    switch(event_id(event)) {    case MS_LEFT:      if (event_is_up(event))      {	while(entry-- && l) l = l->next;	if(l && p->results_to) {	  result = p->results_to;	  item = p->item;	  proc = p->proc;	  if(p->path_prefix)	    strcpy(result,remove_reg_exp(p->path_prefix));	  else	    *result = 0;	  strcat(result,cleaned_for_input(l->str));	  if (item) xv_set(item, PANEL_VALUE, result, 0);	  if(p->destroy_on_select)	  {	      xv_set(canvas,	WIN_CLIENT_DATA,	(caddr_t) NULL,				0);	      destroy_pending_input(p);	  }	  proc(item, NULL); /* assumes it's a PANEL_NOTIFY_PROC */	  return;	}      }      break;    case MS_RIGHT:      if (debug_level)	fprintf(stderr, "event_y %d.  entry %d.\n", y, entry);      while(entry-- && l) l = l->next;      if(l && p->results_to) {	result = p->results_to;	if(p->path_prefix)	  strcpy(result,remove_reg_exp(p->path_prefix));	else	  *result = 0;	strcat(result,cleaned_for_input(l->str));	if(event_is_down(event)) {	  me = (Menu)xv_get(canvas, WIN_MENU);	  xv_set(canvas,		    XV_KEY_DATA, file_name_key, result,		    0);	  xv_set(canvas,		    XV_KEY_DATA, list_elem_key, l,		    0);	  menu_show(me, canvas, event, 0);	  return;	}      }      break;    case LOC_DRAG:    case LOC_MOVE:      ndis = rect->r_height/(fhi << 1);      if(y < fhi) {	/* if it`s near the top */	if(l->prev) {	  l->active = FALSE;	  while(ndis-- && l->prev) l = l->prev;	  l->active = TRUE;	  xv_set(canvas, WIN_MOUSE_XY, x, y+fhi, 0);	  menu_redoit(canvas,NULL,NULL);	  return;	}      } else {	if((rect->r_height - y) < fhi) { /* if it's near the bottom */	  l2 = l;	  while(entry-- && l) l = l->next;	  if(l && l->next) {	    l2->active = FALSE;	    while(ndis-- && l2->next) l2 = l2->next;	    l2->active = TRUE;	    xv_set(canvas, WIN_MOUSE_XY, x, y - fhi, 0);	    menu_redoit(canvas,NULL,NULL);	    return;	  }	}      }    default:      return;    }  }}/*********************************************************************/void m_play_file(canvas, name, le)     Canvas canvas;     char *name;     Menu_list *le;{  char play_command[125];  name = (char *) xv_get(canvas, XV_KEY_DATA, file_name_key);  (void) sprintf(play_command, "%s -r1:", play_program);  (void) call_external_play_prog(play_command, name, "", 0, 0, NULL);  return;}/*********************************************************************/void m_print_file(canvas, name, le)     Canvas canvas;     char *name;     Menu_list *le;{  Frame fr;  Textsw  help;  char head[200];  register int n;  char command[500];  char label[500];  Textsw espsout;  int ret;  name = (char *) xv_get(canvas, XV_KEY_DATA, file_name_key);  if(name && *name) {    if(*name == '@') name++;    n = strlen(name);        if(name[n-1] == '/') m_pass_in_name(canvas, name, NULL);    else {      if (is_esps_file(name)) { /* is an ESPS file (or NIST) */		run_esps_prog("xtext epsps -l",name,"",0,0,NULL);	return;      }      else { /* not an ESPS file, just pop up in text window*/	sprintf(head,"File: %s",name);	fr = xv_create(XV_NULL,FRAME,			   XV_LABEL, head,			   0);	if(!window_check_return(fr)) return;		help = xv_create(fr, TEXTSW,			     TEXTSW_FILE, name,			     0);	if(!window_check_return(help)) {	  dt_xv_destroy_safe(2,fr);	  return;	}		xv_set(fr,WIN_SHOW, TRUE,		   FRAME_NO_CONFIRM, TRUE,		   0);      }    }    return;  }}/*********************************************************************/void m_kill_display(canvas, name, le)     Canvas canvas;     char *name;     Menu_list *le;{  Pending_input *p;    if((p = (Pending_input*)xv_get(canvas,WIN_CLIENT_DATA))) {    p->canvas = (Canvas)0;    reshuffle_and_kill(canvas);  }  return;}/*********************************************************************/void m_pass_in_name(canvas, name, le)     Canvas canvas;     char *name;     Menu_list *le;{  Pending_input *p;    name = (char *) xv_get(canvas, XV_KEY_DATA, file_name_key);  p = (Pending_input*)xv_get(canvas,WIN_CLIENT_DATA);  if(p && p->item && p->proc && p->results_to) {    strcpy(p->results_to,name);    xv_set(p->item, PANEL_VALUE, name, 0);    p->proc(p->item,name);  }}/*********************************************************************/void m_remove_list_element(canvas, name, le)     Canvas canvas;     char *name;     Menu_list *le;{  char *cp;  Menu_list *l;  Pending_input *p;    if ((l = (Menu_list *) xv_get(canvas, XV_KEY_DATA, list_elem_key))      && (p = (Pending_input*)xv_get(canvas,WIN_CLIENT_DATA))) {    if(l->active) {      if(l->prev) l->prev->active = TRUE;      else	if(l->next) l->next->active = TRUE;    }    if(l == (Menu_list*)p->list) {      if(! l->next) {	if(p->destroy_on_select)	{	    xv_set(canvas,	WIN_CLIENT_DATA,	(caddr_t) NULL,				0);	    destroy_pending_input(p);	}	return;      }      p->list = (caddr_t)l->next;      l->next->prev = NULL;    } else {      if(l->next) l->next->prev = l->prev;      if(l->prev) l->prev->next = l->next;    }    if(l->str) free(l->str);    if(l->data) free(l->data);    free(l);    menu_redoit(canvas, NULL, NULL);    return;  }/*!*//* What's the point? */  l = l->next;}/*********************************************************************/void m_designate_source(canvas, name, le)     Canvas canvas;     char *name;     Menu_list *le;{  char *cp;  Menu_list *l;  Pending_input *p, *get_designated_source();  le = (Menu_list *) xv_get(canvas, XV_KEY_DATA, list_elem_key);  /* First, see if another designee should be turned off. */  if((p = get_designated_source(&l,NULL))) {    l->tapped = FALSE;    if(p->canvas)      menu_redoit(p->canvas,NULL,NULL);  }    if ((l = le)      && (p = (Pending_input*)xv_get(canvas,WIN_CLIENT_DATA))) {    l->tapped = TRUE;    menu_redoit(canvas, NULL, NULL);    return;  }}/*********************************************************************/void show_output_proc(item, event)     Panel_item item;     Event *event;{  extern Panel_item outputFile_item, newFile_item;  extern Pending_input new_files;  extern void newText_proc();    if(new_files.list && (item == outputFile_item)) {    switch(event_id(event)) {    case MS_RIGHT:      if(event_is_down(event)) {	if(!new_files.canvas) {	  if((new_files.canvas = file_selection_window(&new_files))) {	    new_files.item = newFile_item;	    new_files.proc = newText_proc;	  } else	    show_notice(1,"Problems creating output file browser window");	}      }      return;    default:      panel_default_handle_event(item,event);      return;    }  } else    panel_default_handle_event(item,event);  return;}/*********************************************************************/free_menu_list(l)     Menu_list *l;{  Menu_list *l2;    while((l2 = l)) {    if(l->str) free(l->str);    if(l->data) free(l->data);    l = l->next;    free(l2);  }}

⌨️ 快捷键说明

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