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

📄 config.c

📁 串口调试工具。非常好的串口调试助手
💻 C
📖 第 1 页 / 共 4 页
字号:
  if(!strcmp(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(Combos[2])->entry)), "odd"))      config.parite = 1;  else if(!strcmp(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(Combos[2])->entry)), "even"))      config.parite = 2;  else      config.parite = 0;  config.stops = atoi(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(Combos[4])->entry)));  if(!strcmp(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(Combos[5])->entry)), "Xon/Xoff"))    config.flux = 1;  else if(!strcmp(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(Combos[5])->entry)), "RTS/CTS"))    config.flux = 2;  else    config.flux = 0;  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(Combos[7])))    {      config.car = *gtk_entry_get_text(GTK_ENTRY(Entry));      config.delai = 0;    }  else    config.car = -1;	  message = Config_port();  if(message == NULL)    message = g_strdup_printf(_("No open port"));  Set_status_message(message);  g_free(message);  return FALSE;}gint Grise_Degrise(GtkWidget *bouton, gpointer pointeur){  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bouton)))    {      gtk_widget_set_sensitive(GTK_WIDGET(Entry), TRUE);      gtk_widget_set_sensitive(GTK_WIDGET(pointeur), FALSE);    }  else    {      gtk_widget_set_sensitive(GTK_WIDGET(Entry), FALSE);      gtk_widget_set_sensitive(GTK_WIDGET(pointeur), TRUE);    }  return FALSE;}gint Config_Font(GtkWidget *widget, guint param){  GtkFontSelectionDialog *fontsel;  fontsel = (GtkFontSelectionDialog *)gtk_font_selection_dialog_new(_("Font selection"));  gtk_signal_connect(GTK_OBJECT(fontsel), "delete_event", (GtkSignalFunc)gtk_widget_destroy, NULL);  gtk_signal_connect(GTK_OBJECT(fontsel), "destroy", (GtkSignalFunc)gtk_widget_destroy, NULL);  gtk_signal_connect_object(GTK_OBJECT(fontsel->cancel_button), "clicked", (GtkSignalFunc)gtk_widget_destroy, GTK_OBJECT(fontsel));  gtk_signal_connect_object(GTK_OBJECT(fontsel->ok_button), "clicked", (GtkSignalFunc)Lis_Font, GTK_OBJECT(fontsel));  gtk_signal_connect_object(GTK_OBJECT(fontsel->ok_button), "clicked", (GtkSignalFunc)gtk_widget_destroy, GTK_OBJECT(fontsel));  gtk_font_selection_dialog_set_font_name(fontsel, term_conf.font);  gtk_widget_show(GTK_WIDGET(fontsel));  return FALSE;}void Set_Font(void){  if(Bouton_font != NULL)    {      gchar *string;      gtk_button_set_label(GTK_BUTTON(Bouton_font), term_conf.font);      string = g_strdup(term_conf.font);      cfgStoreValue(cfg, "font", string, CFG_INI, 0);      g_free(string);    }  if(term_conf.font != NULL)    vte_terminal_set_font_from_string(VTE_TERMINAL(display), term_conf.font);   }gint Lis_Font(GtkFontSelectionDialog *fontsel){  g_free(term_conf.font);  term_conf.font = gtk_font_selection_dialog_get_font_name(fontsel);  Set_Font();  return FALSE;}gint config_window(gpointer *pointer, guint param){  switch(param)    {    case 0:      Select_config(_("Load configuration"), G_CALLBACK(load_config));      break;    case 1:      Save_config_file();      break;    default:      Select_config(_("Delete configuration"), G_CALLBACK(delete_config));    }  return 0;}void Select_config(gchar *title, void *callback){  GtkWidget *dialog;  gint i, max;  GtkWidget *Frame, *Scroll, *Liste, *Label;  gchar *texte_label;  GtkListStore *Modele_Liste;  GtkTreeIter iter_Liste;  GtkCellRenderer *renderer;  GtkTreeViewColumn *Colonne;  GtkTreeSelection *Selection_Liste;  enum   {    N_texte,    N_COLONNES          };  /* Parse the config file */  max = cfgParse(config_file, cfg, CFG_INI);  if(max == -1)    {      show_message(_("Cannot read configuration file !\n"), MSG_ERR);      return;    }  else    {       gchar *Titre[]= {_("Configurations")};            dialog = gtk_dialog_new_with_buttons (title,					    NULL,					    GTK_DIALOG_DESTROY_WITH_PARENT,					    GTK_STOCK_CANCEL,					    GTK_RESPONSE_NONE,					    GTK_STOCK_OK,					    GTK_RESPONSE_ACCEPT,					    NULL);            Modele_Liste = gtk_list_store_new(N_COLONNES, G_TYPE_STRING);            Liste = gtk_tree_view_new_with_model(GTK_TREE_MODEL(Modele_Liste));      gtk_tree_view_set_search_column(GTK_TREE_VIEW(Liste), N_texte);            Selection_Liste = gtk_tree_view_get_selection(GTK_TREE_VIEW(Liste));      gtk_tree_selection_set_mode(Selection_Liste, GTK_SELECTION_SINGLE);            Frame = gtk_frame_new(NULL);            Scroll = gtk_scrolled_window_new(NULL, NULL);      gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(Scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);      gtk_container_add(GTK_CONTAINER(Frame), Scroll);      gtk_container_add(GTK_CONTAINER(Scroll), Liste);            renderer = gtk_cell_renderer_text_new();            g_object_set(G_OBJECT(renderer), "xalign", (gfloat)0.5, NULL);      Colonne = gtk_tree_view_column_new_with_attributes(Titre[0], renderer, "text", 0, NULL);      gtk_tree_view_column_set_sort_column_id(Colonne, 0);            Label=gtk_label_new("");      texte_label = g_strdup_printf("<span weight=\"bold\" style=\"italic\">%s</span>", Titre[0]);      gtk_label_set_markup(GTK_LABEL(Label), texte_label);      g_free(texte_label);      gtk_tree_view_column_set_widget(GTK_TREE_VIEW_COLUMN(Colonne), Label);       gtk_widget_show(Label);        gtk_tree_view_column_set_alignment(GTK_TREE_VIEW_COLUMN(Colonne), 0.5f);      gtk_tree_view_column_set_resizable(GTK_TREE_VIEW_COLUMN(Colonne), FALSE);      gtk_tree_view_append_column(GTK_TREE_VIEW(Liste), Colonne);      for(i = 0; i < max; i++)	{	  gtk_list_store_append(Modele_Liste, &iter_Liste);	  gtk_list_store_set(Modele_Liste, &iter_Liste, N_texte, cfgSectionNumberToName(i), -1);	}      gtk_widget_set_size_request(GTK_WIDGET(dialog), 200, 200);      g_signal_connect(GTK_OBJECT(dialog), "response", G_CALLBACK (callback), GTK_TREE_SELECTION(Selection_Liste));      g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), GTK_WIDGET(dialog));      gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), Frame);            gtk_widget_show_all (dialog);    }}void Save_config_file(void){  GtkWidget *dialog, *label, *box, *entry;  dialog = gtk_dialog_new_with_buttons (_("Save configuration"),					NULL,					GTK_DIALOG_DESTROY_WITH_PARENT,					GTK_STOCK_CANCEL,					GTK_RESPONSE_NONE,					GTK_STOCK_OK,					GTK_RESPONSE_ACCEPT,					NULL);  label=gtk_label_new(_("Configuration name : "));  box = gtk_hbox_new(FALSE, 0);  entry = gtk_entry_new();  gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0);  gtk_box_pack_start(GTK_BOX(box), entry, FALSE, TRUE, 0);  g_signal_connect(GTK_OBJECT(dialog), "response", G_CALLBACK(save_config), GTK_ENTRY(entry));  g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), GTK_WIDGET(dialog));  gtk_container_add(GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), box);  gtk_widget_show_all (dialog);}void really_save_config(GtkDialog *Fenetre, gint id, gpointer data){  int max, cfg_num, i;  gchar *string = NULL;  cfg_num = -1;  if(id == GTK_RESPONSE_ACCEPT)    {      max = cfgParse(config_file, cfg, CFG_INI);      if(max == -1)	return;      for(i = 0; i < max; i++)	{	  if(!strcmp((char *)data, cfgSectionNumberToName(i)))	    cfg_num = i;	}      /* not overwriting */      if(cfg_num == -1)	{	  max = cfgAllocForNewSection(cfg, (char *)data);	  cfg_num = max - 1;	}      else	{	  if(remove_section(config_file, (char *)data) == -1)	    {	      show_message(_("Cannot overwrite section !"), MSG_ERR);       	      return;	    }	  if(max == cfgParse(config_file, cfg, CFG_INI))	    {	      show_message(_("Cannot read configuration file !"), MSG_ERR);	      return;	    }	  max = cfgAllocForNewSection(cfg, (char *)data);	  cfg_num = max - 1;	}      Copy_configuration(cfg_num);      cfgDump(config_file, cfg, CFG_INI, max);      string = g_strdup_printf(_("Configuration [%s] saved\n"), (char *)data);      show_message(string, MSG_WRN);      g_free(string);    }  else    Save_config_file();}void save_config(GtkDialog *Fenetre, gint id, GtkWidget *edit){  int max, i;  GtkWidget *dialog, *label;  static gchar text[100];  if(id == GTK_RESPONSE_ACCEPT)    {      max = cfgParse(config_file, cfg, CFG_INI);      if(max == -1)	return;            for(i = 0; i < max; i++)	{	  if(!strcmp(gtk_entry_get_text(GTK_ENTRY(edit)), cfgSectionNumberToName(i)))	    {	      /* section already exists */	      dialog = gtk_dialog_new_with_buttons (_("Warning !"),						    NULL,						    GTK_DIALOG_DESTROY_WITH_PARENT,						    GTK_STOCK_CANCEL,						    GTK_RESPONSE_NONE,						    GTK_STOCK_OK,						    GTK_RESPONSE_ACCEPT,						    NULL);	      sprintf(text, _("\nSection [%s] already exists\nDo you want to overwrite it ?\n"), gtk_entry_get_text(GTK_ENTRY(edit)));	      label=gtk_label_new(text);	      strcpy(text, gtk_entry_get_text(GTK_ENTRY(edit)));	      g_signal_connect(GTK_OBJECT(dialog), "response", G_CALLBACK(really_save_config), (gpointer)text);	      g_signal_connect_swapped(GTK_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), GTK_WIDGET(dialog));	      	      gtk_container_add(GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label);	      	      gtk_widget_show_all (dialog);	      i = max + 1;	    }	}      if(i == max)	/* Section does not exist */	{	  strcpy(text, gtk_entry_get_text(GTK_ENTRY(edit)));	  really_save_config(Fenetre, GTK_RESPONSE_ACCEPT, (gpointer)text);	}    }}void load_config(GtkDialog *Fenetre, gint id, GtkTreeSelection *Selection_Liste){  GtkTreeIter iter;  GtkTreeModel *Modele;  gchar *txt, *message;  if(id == GTK_RESPONSE_ACCEPT)    {      if(gtk_tree_selection_get_selected(Selection_Liste, &Modele, &iter))	{	  gtk_tree_model_get(GTK_TREE_MODEL(Modele), &iter, 0, (gint *)&txt, -1);	  Load_configuration_from_file(txt);	  Verify_configuration();	  message = Config_port();	  Set_Font();	  add_shortcuts();	  if(message == NULL)	    message = g_strdup_printf(_("No open port"));	  Set_status_message(message);	  g_free(message);	}    }}void delete_config(GtkDialog *Fenetre, gint id, GtkTreeSelection *Selection_Liste){  GtkTreeIter iter;  GtkTreeModel *Modele;  gchar *txt;  if(id == GTK_RESPONSE_ACCEPT)    {      if(gtk_tree_selection_get_selected(Selection_Liste, &Modele, &iter))	{	  gtk_tree_model_get(GTK_TREE_MODEL(Modele), &iter, 0, (gint *)&txt, -1);	  if(remove_section(config_file, txt) == -1)	    show_message(_("Cannot delete section !"), MSG_ERR);	}    }}

⌨️ 快捷键说明

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