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

📄 options_dialog.c

📁 一个linux下的ftp程序。它是使用文件传输协议的一系列程序的集合。
💻 C
📖 第 1 页 / 共 4 页
字号:
        selitem = edititem;    }  if (selitem == -1)    selitem = 0;  option_data->tbl_row_num++;  gtk_table_resize (GTK_TABLE (option_data->table),                                option_data->tbl_row_num, 2);#if GTK_MAJOR_VERSION == 1  textwid = gtk_text_new (NULL, NULL);  gtk_widget_set_size_request (textwid, -1, 75);  gtk_table_attach_defaults (GTK_TABLE (option_data->table), textwid, 0, 2,                             option_data->tbl_row_num - 1,                              option_data->tbl_row_num);  gtk_widget_show (textwid);#else  box = gtk_hbox_new (FALSE, 0);  gtk_table_attach_defaults (GTK_TABLE (option_data->table), box, 0, 2,                    	     option_data->tbl_row_num - 1,                     	     option_data->tbl_row_num);  gtk_widget_show (box);    tempwid = gtk_label_new ("    ");  gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);  gtk_widget_show (tempwid);    tempwid = gtk_scrolled_window_new (NULL, NULL);  gtk_container_set_border_width (GTK_CONTAINER (tempwid), 0);  gtk_widget_set_size_request (tempwid, -1, 75);  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (tempwid),                                        GTK_SHADOW_IN);   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (tempwid),                                  GTK_POLICY_AUTOMATIC,                                  GTK_POLICY_AUTOMATIC);  gtk_box_pack_start (GTK_BOX (box), tempwid, TRUE, TRUE, 0);  gtk_widget_show (tempwid);    textwid = gtk_text_view_new ();  gtk_container_add (GTK_CONTAINER (tempwid), GTK_WIDGET (textwid));  gtk_widget_show (textwid);#endif  widdata = g_malloc0 (sizeof (*widdata));  widdata->combo = combo;  widdata->text = textwid;  widdata->cv = cv;  widdata->custom_edit_value = tempstr;  gtk_signal_connect (GTK_OBJECT (GTK_COMBO (combo)->list),                      "select_child",                       GTK_SIGNAL_FUNC (_textcomboedt_toggle), widdata);  gtk_list_select_item (GTK_LIST (GTK_COMBO (combo)->list), selitem);  gtk_widget_show (combo);  if (cv->comment != NULL)    {      tooltip = gtk_tooltips_new ();      gtk_tooltips_set_tip (GTK_TOOLTIPS(tooltip), combo, _(cv->comment), NULL);      tooltip = gtk_tooltips_new ();      gtk_tooltips_set_tip (GTK_TOOLTIPS(tooltip), textwid, _(cv->comment),                             NULL);    }  return (widdata);}static void_save_option_type_textcomboedt (gftp_config_vars * cv, void *user_data){  gftp_textcomboedt_widget_data * widdata;  gftp_options_dialog_data * option_data;  char *newstr, *proxy_config;  int freeit;#if GTK_MAJOR_VERSION == 1  char tmp[128];#else  GtkTextBuffer * textbuf;  GtkTextIter iter, iter2;  size_t len;#endif  option_data = user_data;  widdata = cv->user_data;#if GTK_MAJOR_VERSION == 1  /*     GTK_TEXT uses wchar_t instead of char in environment of multibyte encoding     locale (ex Japanese),  so we must convert from wide character      to multibyte charator....   Yasuyuki Furukawa (yasu@on.cs.keio.ac.jp)   */  if (GTK_TEXT (widdata->text)->use_wchar)    {      wcstombs (tmp, (wchar_t *) GTK_TEXT (widdata->text)->text.wc, sizeof (tmp));      newstr = tmp;    }  else    newstr = (char *) GTK_TEXT (widdata->text)->text.ch;   freeit = 0;#else  textbuf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widdata->text));  len = gtk_text_buffer_get_char_count (textbuf);  gtk_text_buffer_get_iter_at_offset (textbuf, &iter, 0);  gtk_text_buffer_get_iter_at_offset (textbuf, &iter2, len);  newstr = gtk_text_buffer_get_text (textbuf, &iter, &iter2, 0);  freeit = 1;#endif  proxy_config = _gftp_convert_from_newlines (newstr);  if (option_data->bm == NULL)    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, 6);  gtk_container_border_width (GTK_CONTAINER (option_data->box), 12);  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)

⌨️ 快捷键说明

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