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

📄 options_dialog.c

📁 Linux下使用最为广泛的gftp的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
    gftp_set_global_option (cv->key, proxy_config);  else    gftp_set_bookmark_option (option_data->bm, cv->key, proxy_config);  g_free (proxy_config);  if (freeit)    g_free (newstr);}static void *_print_option_type_hidetext (gftp_config_vars * cv, void *user_data, void *value){  gftp_options_dialog_data * option_data;  GtkWidget * tempwid;  option_data = user_data;  tempwid = _gen_input_widget (option_data, cv->description, cv->comment);  gtk_entry_set_visibility (GTK_ENTRY (tempwid), 0);  gtk_entry_set_text (GTK_ENTRY (tempwid), (char *) value);  return (tempwid);}static void *_print_option_type_int (gftp_config_vars * cv, void *user_data, void *value){  gftp_options_dialog_data * option_data;  GtkWidget * tempwid;  char tempstr[20];  option_data = user_data;  tempwid = _gen_input_widget (option_data, cv->description, cv->comment);  g_snprintf (tempstr, sizeof (tempstr), "%d", GPOINTER_TO_INT(value));  gtk_entry_set_text (GTK_ENTRY (tempwid), tempstr);  return (tempwid);}static void_save_option_type_int (gftp_config_vars * cv, void *user_data){  gftp_options_dialog_data * option_data;  const char *tempstr;  intptr_t val;  option_data = user_data;  tempstr = gtk_entry_get_text (GTK_ENTRY (cv->user_data));  val = strtol (tempstr, NULL, 10);  if (option_data->bm == NULL)    gftp_set_global_option (cv->key, GINT_TO_POINTER(val));  else    gftp_set_bookmark_option (option_data->bm, cv->key, GINT_TO_POINTER(val));}static void *_print_option_type_checkbox (gftp_config_vars * cv, void *user_data, void *value){  gftp_options_dialog_data * option_data;  GtkTooltips * tooltip;  GtkWidget * tempwid;  option_data = user_data;  if (option_data->last_option != gftp_option_type_checkbox)    _print_option_type_newtable (NULL, user_data, NULL);  if (option_data->tbl_col_num == 0)    {      option_data->tbl_row_num++;      gtk_table_resize (GTK_TABLE (option_data->table),                         option_data->tbl_row_num + 1, 2);    }  tempwid = gtk_check_button_new_with_label (_(cv->description));  gtk_table_attach_defaults (GTK_TABLE (option_data->table), tempwid,                              option_data->tbl_col_num,                              option_data->tbl_col_num + 1,                              option_data->tbl_row_num,                              option_data->tbl_row_num + 1);  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tempwid),                                GPOINTER_TO_INT(value));  gtk_widget_show (tempwid);  option_data->tbl_col_num = (option_data->tbl_col_num + 1) % 2;  if (cv->comment != NULL)    {      tooltip = gtk_tooltips_new ();      gtk_tooltips_set_tip (GTK_TOOLTIPS(tooltip), tempwid, _(cv->comment),                            NULL);    }  return (tempwid);}static void_save_option_type_checkbox (gftp_config_vars * cv, void *user_data){  gftp_options_dialog_data * option_data;  intptr_t val;  option_data = user_data;  val = GTK_TOGGLE_BUTTON (cv->user_data)->active;  if (option_data->bm == NULL)    gftp_set_global_option (cv->key, GINT_TO_POINTER (val));  else    gftp_set_bookmark_option (option_data->bm, cv->key, GINT_TO_POINTER (val));}static void *_print_option_type_float (gftp_config_vars * cv, void *user_data, void *value){  gftp_options_dialog_data * option_data;  GtkWidget * tempwid;  char tempstr[20];  float f;  option_data = user_data;  tempwid = _gen_input_widget (option_data, cv->description, cv->comment);  memcpy (&f, &value, sizeof (f));  g_snprintf (tempstr, sizeof (tempstr), "%.2f", f);  gtk_entry_set_text (GTK_ENTRY (tempwid), tempstr);  return (tempwid);}static void_save_option_type_float (gftp_config_vars * cv, void *user_data){  gftp_options_dialog_data * option_data;  union { void *ptr; float f; } fv;  const char *tempstr;  option_data = user_data;  tempstr = gtk_entry_get_text (GTK_ENTRY (cv->user_data));  fv.f = strtod (tempstr, NULL);  if (option_data->bm == NULL)    gftp_set_global_option (cv->key, fv.ptr);  else    gftp_set_bookmark_option (option_data->bm, cv->key, fv.ptr);}static void *_print_option_type_notebook (gftp_config_vars * cv, void *user_data, void *value){  gftp_options_dialog_data * option_data;  GtkWidget * tempwid;  option_data = user_data;  option_data->box = gtk_vbox_new (FALSE, 0);  gtk_container_border_width (GTK_CONTAINER (option_data->box), 10);  gtk_widget_show (option_data->box);  tempwid = gtk_label_new (_(cv->description));  gtk_widget_show (tempwid);  gtk_notebook_append_page (GTK_NOTEBOOK (option_data->notebook),                             option_data->box, tempwid);  _print_option_type_newtable (NULL, user_data, NULL);    return (NULL);}static voidclean_old_changes (GtkWidget * widget, gpointer data){  gftp_textcomboedt_widget_data * widdata;  gftp_config_vars * cv;  GList * templist;  int i;  for (templist = gftp_options_list;       templist != NULL;       templist = templist->next)    {      cv = templist->data;      for (i=0; cv[i].key != NULL; i++)        {          widdata = cv->user_data;          if (widdata != NULL)            {              if (widdata->custom_edit_value != NULL)                g_free (widdata->custom_edit_value);              g_free (widdata);              cv->user_data = NULL;            }        }    }  if (new_proxy_hosts != NULL)    {      gftp_free_proxy_hosts (new_proxy_hosts);      new_proxy_hosts = NULL;    }}static voidapply_changes (GtkWidget * widget, gpointer data){  gftp_config_list_vars * proxy_hosts;  gftp_config_vars * cv;  GList * templist;  int i;  for (templist = gftp_options_list;        templist != NULL;        templist = templist->next)    {      cv = templist->data;      for (i=0; cv[i].key != NULL; i++)        {          if (!(cv[i].ports_shown & GFTP_PORT_GTK))            continue;          if (gftp_option_types[cv[i].otype].ui_save_function == NULL)            continue;          gftp_option_types[cv[i].otype].ui_save_function (&cv[i], gftp_option_types[cv[i].otype].user_data);        }    }  gftp_lookup_global_option ("dont_use_proxy", &proxy_hosts);  if (proxy_hosts->list != NULL)    gftp_free_proxy_hosts (proxy_hosts->list);  proxy_hosts->list = new_proxy_hosts;  new_proxy_hosts = NULL;  gftpui_show_or_hide_command ();}#if GTK_MAJOR_VERSION > 1static voidoptions_action (GtkWidget * widget, gint response, gpointer user_data){  switch (response)    {      case GTK_RESPONSE_APPLY:        apply_changes (widget, NULL);        break;      case GTK_RESPONSE_OK:        apply_changes (widget, NULL);        /* no break */      default:        clean_old_changes (widget, user_data);        gtk_widget_destroy (widget);    }}#endifstatic voidadd_host_to_listbox (GList * templist){  gftp_proxy_hosts *hosts;  char *add_data[2];  int num;  hosts = templist->data;  if (hosts->domain)    {      add_data[0] = hosts->domain;      add_data[1] = NULL;      num = gtk_clist_append (GTK_CLIST (proxy_list), add_data);    }  else    {      add_data[0] = g_strdup_printf ("%d.%d.%d.%d",				     hosts->ipv4_network_address >> 24 & 0xff,				     hosts->ipv4_network_address >> 16 & 0xff,				     hosts->ipv4_network_address >> 8 & 0xff,				     hosts->ipv4_network_address & 0xff);      add_data[1] = g_strdup_printf ("%d.%d.%d.%d",				     hosts->ipv4_netmask >> 24 & 0xff,				     hosts->ipv4_netmask >> 16 & 0xff,				     hosts->ipv4_netmask >> 8 & 0xff,				     hosts->ipv4_netmask & 0xff);      num = gtk_clist_append (GTK_CLIST (proxy_list), add_data);      g_free (add_data[0]);      g_free (add_data[1]);    }  gtk_clist_set_row_data (GTK_CLIST (proxy_list), num, (gpointer) templist);}static voidadd_ok (GtkWidget * widget, gpointer data){  gftp_proxy_hosts *hosts;  const char *edttxt;  GList *templist;  int num;  templist = data;  if (templist == NULL)    {      hosts = g_malloc0 (sizeof (*hosts));      new_proxy_hosts = g_list_append (new_proxy_hosts, hosts);      for (templist = new_proxy_hosts; templist->next != NULL;	   templist = templist->next);    }  else    {      num = gtk_clist_find_row_from_data (GTK_CLIST (proxy_list), templist);      if (num != -1)	gtk_clist_remove (GTK_CLIST (proxy_list), num);      hosts = templist->data;    }  if (hosts->domain)    {      g_free (hosts->domain);      hosts->domain = NULL;    }  if (GTK_TOGGLE_BUTTON (domain_active)->active)    {      edttxt = gtk_entry_get_text (GTK_ENTRY (new_proxy_domain));      hosts->domain = g_strdup (edttxt);      hosts->ipv4_netmask = hosts->ipv4_network_address = 0;    }  else    {      edttxt = gtk_entry_get_text (GTK_ENTRY (network1));      hosts->ipv4_network_address = (strtol (edttxt, NULL, 10) & 0xff) << 24;      edttxt = gtk_entry_get_text (GTK_ENTRY (network2));      hosts->ipv4_network_address |= (strtol (edttxt, NULL, 10) & 0xff) << 16;      edttxt = gtk_entry_get_text (GTK_ENTRY (network3));      hosts->ipv4_network_address |= (strtol (edttxt, NULL, 10) & 0xff) << 8;      edttxt = gtk_entry_get_text (GTK_ENTRY (network4));      hosts->ipv4_network_address |= strtol (edttxt, NULL, 10) & 0xff;      edttxt = gtk_entry_get_text (GTK_ENTRY (netmask1));      hosts->ipv4_netmask = (strtol (edttxt, NULL, 10) & 0xff) << 24;      edttxt = gtk_entry_get_text (GTK_ENTRY (netmask2));      hosts->ipv4_netmask |= (strtol (edttxt, NULL, 10) & 0xff) << 16;      edttxt = gtk_entry_get_text (GTK_ENTRY (netmask3));      hosts->ipv4_netmask |= (strtol (edttxt, NULL, 10) & 0xff) << 8;      edttxt = gtk_entry_get_text (GTK_ENTRY (netmask4));      hosts->ipv4_netmask |= strtol (edttxt, NULL, 10) & 0xff;    }  add_host_to_listbox (templist);}#if GTK_MAJOR_VERSION > 1static voidproxyhosts_action (GtkWidget * widget, gint response, gpointer user_data){  switch (response)    {      case GTK_RESPONSE_OK:        add_ok (widget, user_data);        /* no break */      default:        gtk_widget_destroy (widget);    }}#endifstatic voidadd_toggle (GtkWidget * widget, gpointer data){  gtk_widget_set_sensitive (new_proxy_domain, data != NULL);  gtk_widget_set_sensitive (network1, data == NULL);  gtk_widget_set_sensitive (network2, data == NULL);  gtk_widget_set_sensitive (network3, data == NULL);  gtk_widget_set_sensitive (network4, data == NULL);  gtk_widget_set_sensitive (netmask1, data == NULL);  gtk_widget_set_sensitive (netmask2, data == NULL);  gtk_widget_set_sensitive (netmask3, data == NULL);  gtk_widget_set_sensitive (netmask4, data == NULL);}static voiddelete_proxy_host (GtkWidget * widget, gpointer data){  GList *templist;  int num;  gftp_configuration_changed = 1; /* FIXME */  if ((templist = GTK_CLIST (proxy_list)->selection) == NULL)    return;  num = GPOINTER_TO_INT (templist->data);  templist = gtk_clist_get_row_data (GTK_CLIST (proxy_list), num);  new_proxy_hosts = g_list_remove_link (new_proxy_hosts, templist);  gtk_clist_remove (GTK_CLIST (proxy_list), num);}static voidadd_proxy_host (GtkWidget * widget, gpointer data){  GtkWidget *tempwid, *dialog, *frame, *box, *table;  gftp_proxy_hosts *hosts;  char *tempstr, *title;  GList *templist;  gftp_configuration_changed = 1; /* FIXME */  if (data)    {      if ((templist = GTK_CLIST (proxy_list)->selection) == NULL)	return;      templist = gtk_clist_get_row_data (GTK_CLIST (proxy_list),                                          GPOINTER_TO_INT (templist->data));      hosts = templist->data;    }  else    {      hosts = NULL;      templist = NULL;    }  title = hosts ? _("Edit Host") : _("Add Host");#if GTK_MAJOR_VERSION == 1  dialog = gtk_dialog_new ();  gtk_window_set_title (GTK_WINDOW (dialog), title);  gtk_container_border_width (GTK_CONTAINER			      (GTK_DIALOG (dialog)->action_area), 5);  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->action_area), 15);  gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->action_area), TRUE);  gtk_grab_add (dialog);#else  dialog = gtk_dialog_new_with_buttons (title, NULL, 0,                                        GTK_STOCK_SAVE,                                        GTK_RESPONSE_OK,                                        GTK_STOCK_CANCEL,                                        GTK_RESPONSE_CANCEL,                                        NULL);#endif  gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 10);  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 2);  gtk_window_set_wmclass (GTK_WINDOW(dialog), "hostinfo", "Gftp");  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);  frame = gtk_frame_new (NULL);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), frame, TRUE, TRUE,		      0);  gtk_widget_show (frame);  box = gtk_hbox_new (FALSE, 5);  gtk_container_border_width (GTK_CONTAINER (box), 5);

⌨️ 快捷键说明

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