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

📄 gld.c

📁 Path MPICH-V for MPICH the MPI Implementation
💻 C
📖 第 1 页 / 共 2 页
字号:
      uid_dw = NULL;    }  gtk_object_set_user_data(GTK_OBJECT(b), uid_dw);}static gboolean gld_lvl_dw_delete(GtkObject *o, GdkEvent *e, GtkToggleButton *b){  gtk_object_set_user_data(GTK_OBJECT(b), NULL);  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), FALSE);  return FALSE;}static void gld_lvl_dw_in(GtkButton *b, Gld *gld){  GtkCList *llist, *rlist;  GList *l, *l2;  char *elt;  int r;  int redo = 0;  llist = GTK_CLIST(gtk_object_get_user_data(GTK_OBJECT(b)));  rlist = GTK_CLIST(gtk_object_get_user_data(GTK_OBJECT(llist)));  gtk_clist_freeze(llist);   gtk_clist_freeze(rlist);  /* hack : we eat selection as well as we run in it, so we take the head every time */  for(l = g_list_first(llist->selection); l; l = g_list_first(llist->selection))    {      gtk_clist_get_text( llist, (int)l->data, 0, &elt );      r = gtk_clist_append( rlist, &elt );      gtk_clist_remove( llist, (int)l->data );      gtk_clist_get_text( rlist, r, 0, &elt );      for(l2 = g_list_first( GLOGGER(gld)->logd->lvls ); l2; l2 = g_list_next(l2) )	if( !strcmp( NC(l2)->name, elt ) )	  {	    gld->lvls = g_list_append(gld->lvls, NC(l2));	    redo = 1;	    break;	  }    }  gtk_clist_thaw(llist);  gtk_clist_thaw(rlist);  if(redo)    gld_compute_again(gld);}static void gld_lvl_dw_out(GtkButton *b, Gld *gld){  GtkCList *llist, *rlist;  GList *l, *l2;  char *elt;  int r;  int redo = 0;  rlist = GTK_CLIST(gtk_object_get_user_data(GTK_OBJECT(b)));  llist = GTK_CLIST(gtk_object_get_user_data(GTK_OBJECT(rlist)));  gtk_clist_freeze(rlist);   gtk_clist_freeze(llist);  /* hack : we eat selection as well as we run in it, so we take the head every time */  for(l = g_list_first(rlist->selection); l; l =  g_list_first(rlist->selection))    {      gtk_clist_get_text( rlist, (int)l->data, 0, &elt );      r = gtk_clist_append( llist, &elt );      gtk_clist_remove( rlist, (int)l->data );      gtk_clist_get_text( llist, r, 0, &elt);      for(l2 = g_list_first( GLOGGER(gld)->logd->lvls ); l2; l2 = g_list_next(l2) )	if( !strcmp( NC(l2)->name, elt ) )	  {	    gld->lvls = g_list_remove(gld->lvls, NC(l2));	    redo = 1;	    break;	  }    }  gtk_clist_thaw(rlist);   gtk_clist_thaw(llist);    if(redo)    gld_compute_again(gld);}static void gld_select_lvls(GtkToggleButton *b, Gld *gld){  GtkWidget *lvl_dw;  GtkWidget *hbox, *vbbox, *llist, *rlist, *lrarrow, *rlarrow, *lb, *rb;  char *title_in[1]  = { "LVL to display" };  char *title_out[1] = { "LVL not to display" };  GList *l;  char *elt[1];  lvl_dw = gtk_object_get_user_data(GTK_OBJECT(b));  if( gtk_toggle_button_get_active(b) )    {      if( !lvl_dw )	{	  lvl_dw = gtk_dialog_new();	  gtk_window_set_title(GTK_WINDOW(lvl_dw), "Select LVLs");	  gtk_widget_show(lvl_dw);	  	  hbox = gtk_hbox_new(FALSE, 0);	  gtk_container_add (GTK_CONTAINER (GTK_DIALOG(lvl_dw)->vbox),			     hbox);	  gtk_widget_show(hbox);	  llist = gtk_clist_new_with_titles(1, title_out);	  gtk_box_pack_start(GTK_BOX(hbox), llist, TRUE, TRUE, 0);	  gtk_widget_show(llist);	  gtk_clist_set_selection_mode (GTK_CLIST(llist), GTK_SELECTION_MULTIPLE);	  	  vbbox = gtk_vbutton_box_new();	  gtk_box_pack_start(GTK_BOX(hbox), vbbox, FALSE, FALSE, 0);	  gtk_vbutton_box_set_layout_default(GTK_BUTTONBOX_SPREAD);	  gtk_widget_show(vbbox);	  lrarrow = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_OUT);	  gtk_widget_show(lrarrow);	  lb = gtk_button_new();	  gtk_container_add(GTK_CONTAINER(lb), lrarrow);	  gtk_box_pack_start(GTK_BOX(vbbox), lb, FALSE, FALSE, 0);	  gtk_widget_show(lb);	  gtk_object_set_user_data(GTK_OBJECT(lb), llist);	  gtk_signal_connect(GTK_OBJECT(lb), "clicked",			     GTK_SIGNAL_FUNC(gld_lvl_dw_in), gld);	  rlist = gtk_clist_new_with_titles(1, title_in);	  gtk_box_pack_start(GTK_BOX(hbox), rlist, TRUE, TRUE, 0);	  gtk_widget_show(rlist);	  gtk_clist_set_selection_mode (GTK_CLIST(rlist), GTK_SELECTION_MULTIPLE);	  rlarrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_OUT);	  gtk_widget_show(rlarrow);	  rb = gtk_button_new();	  gtk_container_add(GTK_CONTAINER(rb), rlarrow);	  gtk_box_pack_start(GTK_BOX(vbbox), rb, FALSE, FALSE, 0);	  gtk_widget_show(rb);	  gtk_object_set_user_data(GTK_OBJECT(rb), rlist);	  gtk_signal_connect(GTK_OBJECT(rb), "clicked",			     GTK_SIGNAL_FUNC(gld_lvl_dw_out), gld);	  	  gtk_object_set_user_data(GTK_OBJECT(rlist), llist);	  gtk_object_set_user_data(GTK_OBJECT(llist), rlist);	  gtk_clist_freeze(GTK_CLIST(llist));	  gtk_clist_freeze(GTK_CLIST(rlist));	  for(l = g_list_first(GLOGGER(gld)->logd->lvls);	      l;	      l = g_list_next(l))	    {	      elt[0] = NC(l)->name;	      if( g_list_find( gld->lvls, NC(l) ) )		gtk_clist_append(GTK_CLIST(rlist), elt);	      else		gtk_clist_append(GTK_CLIST(llist), elt);			    }	  gtk_clist_thaw(GTK_CLIST(llist));	  gtk_clist_thaw(GTK_CLIST(rlist));	  	  gtk_object_set_user_data(GTK_OBJECT(lvl_dw), rlist);	  gtk_signal_connect( GTK_OBJECT(lvl_dw), "delete_event",			      GTK_SIGNAL_FUNC(gld_lvl_dw_delete), b );	}    }  else    {      if( lvl_dw )	gtk_widget_destroy(lvl_dw);      lvl_dw = NULL;    }  gtk_object_set_user_data(GTK_OBJECT(b), lvl_dw);}static gint gld_compare_emission_dates(GtkCList *list, gconstpointer p1, gconstpointer p2){  const GtkCListRow *row1 = (const GtkCListRow *) p1;  const GtkCListRow *row2 = (const GtkCListRow *) p2;  if( timercmp( &((msg *)row1->data)->edate, &((msg *)row2->data)->edate, ==) )    return 0;  if( timercmp( &((msg *)row1->data)->edate, &((msg *)row2->data)->edate, <) )    return -1;  return 1;}static void gld_init(Gld *gld){  char *titles[10] = { "UID" ,"LVL", "file", "function", "line number", "message id", "message", "emission date", "reception date", "sender" };  GtkWidget *vbox;  GtkWidget *table;  GtkWidget *b;  GtkWidget *hbbox;  GtkWidget *sw;  int i;  gld->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  gtk_window_set_title(GTK_WINDOW(gld->window), "Log vizualizer");  gtk_widget_show(gld->window);  vbox = gtk_vbox_new(FALSE, 0);  gtk_container_add(GTK_CONTAINER(gld->window), vbox);  gtk_widget_show(vbox);  hbbox = gtk_hbutton_box_new();  gtk_box_pack_start(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);  gtk_widget_show(hbbox);  gld->select_uids = gtk_toggle_button_new_with_label("Select UIDs to display");  gtk_object_set_user_data(GTK_OBJECT(gld->select_uids), NULL);  gtk_signal_connect(GTK_OBJECT(gld->select_uids), "toggled",		     GTK_SIGNAL_FUNC(gld_select_uids), gld);  gtk_box_pack_start(GTK_BOX(hbbox), gld->select_uids, FALSE, FALSE, 0);  gtk_widget_show(gld->select_uids);  gld->select_lvls = gtk_toggle_button_new_with_label("Select LVLs to display");  gtk_object_set_user_data(GTK_OBJECT(gld->select_lvls), NULL);  gtk_signal_connect(GTK_OBJECT(gld->select_lvls), "toggled",		     GTK_SIGNAL_FUNC(gld_select_lvls), gld);  gtk_box_pack_start(GTK_BOX(hbbox), gld->select_lvls, FALSE, FALSE, 0);  gtk_widget_show(gld->select_lvls);  table = gtk_table_new(3, 3, FALSE);  gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);  gtk_widget_show(table);  for(i = 0; i < 10; i++)    {      b = gtk_check_button_new_with_label( titles[i] );      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), TRUE);      gtk_object_set_user_data(GTK_OBJECT(b), (gpointer)i);      gtk_signal_connect(GTK_OBJECT(b), "toggled",			 GTK_SIGNAL_FUNC(gld_column_display_toggled), gld);      gtk_table_attach(GTK_TABLE(table), b, i/3, i/3+1, i%3, i%3+1, 		       GTK_EXPAND|GTK_SHRINK, GTK_EXPAND|GTK_SHRINK,		       0, 0);      gtk_widget_show(b);    }  sw = gtk_scrolled_window_new(NULL, NULL);  gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), 				 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);  gtk_widget_show(sw);  gld->mlist = gtk_clist_new_with_titles(10, titles);  gtk_container_add(GTK_CONTAINER(sw), gld->mlist);  gtk_clist_set_compare_func(GTK_CLIST(gld->mlist), gld_compare_emission_dates);  gtk_clist_set_sort_column(GTK_CLIST(gld->mlist), 7);  gtk_clist_set_sort_type(GTK_CLIST(gld->mlist),  GTK_SORT_ASCENDING);  gtk_widget_show(gld->mlist);  gtk_object_set_user_data( GTK_OBJECT(gld->window), gld);  gtk_signal_connect(GTK_OBJECT(gld->window), "delete_event",		     GTK_SIGNAL_FUNC(gld_delete), NULL);  gtk_signal_connect(GTK_OBJECT(gld), "destroy",		     GTK_SIGNAL_FUNC(gld_destroy), NULL);}guint gld_get_type(void){  static guint gld_type = 0;       if (!gld_type)    {      GtkTypeInfo gld_info =      {        "Gld",        sizeof (Gld),        sizeof (GldClass),        (GtkClassInitFunc) gld_class_init,        (GtkObjectInitFunc) gld_init,        (GtkArgSetFunc) NULL,        (GtkArgGetFunc) NULL      };             gld_type = gtk_type_unique (glogger_get_type (), &gld_info);    }     return gld_type;}void gld_compute_again(Gld *gld){  GList *l;  gtk_clist_freeze(GTK_CLIST(gld->mlist));  gtk_clist_clear(GTK_CLIST(gld->mlist));  for(l = g_list_first( GLOGGER(gld)->logd->msgs); l; l = g_list_next(l))    gld_data(GLOGGER(gld), MSG(l->data) );  gtk_clist_thaw(GTK_CLIST(gld->mlist));}GtkObject *gld_new(struct _GLogd *logd){  Gld *gld = GLD( gtk_object_newv (gld_get_type(), 0, NULL) );  GLOGGER(gld)->logd = logd;  gtk_signal_connect( GTK_OBJECT(gld), "newuid",		      GTK_SIGNAL_FUNC(gld_new_uid), NULL );  gtk_signal_connect( GTK_OBJECT(gld), "newlvl",		      GTK_SIGNAL_FUNC(gld_new_lvl), NULL );  gld->uids = g_list_copy(logd->uids);  gld->lvls = g_list_copy(logd->lvls);  gld_compute_again(gld);  return GTK_OBJECT(gld);}

⌨️ 快捷键说明

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