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

📄 options_dialog.c

📁 一个linux下的ftp程序。它是使用文件传输协议的一系列程序的集合。
💻 C
📖 第 1 页 / 共 4 页
字号:
/*****************************************************************************//*  menu-items.c - menu callbacks                                            *//*  Copyright (C) 1998-2003 Brian Masney <masneyb@gftp.org>                  *//*                                                                           *//*  This program is free software; you can redistribute it and/or modify     *//*  it under the terms of the GNU General Public License as published by     *//*  the Free Software Foundation; either version 2 of the License, or        *//*  (at your option) any later version.                                      *//*                                                                           *//*  This program is distributed in the hope that it will be useful,          *//*  but WITHOUT ANY WARRANTY; without even the implied warranty of           *//*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            *//*  GNU General Public License for more details.                             *//*                                                                           *//*  You should have received a copy of the GNU General Public License        *//*  along with this program; if not, write to the Free Software              *//*  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                *//*****************************************************************************/#include "gftp-gtk.h"static const char cvsid[] = "$Id: options_dialog.c,v 1.25 2004/12/02 22:22:31 masneyb Exp $";static GtkWidget * proxy_list, * new_proxy_domain, * network1,                 * network2, * network3, * network4, * netmask1, * netmask2,                  * netmask3, * netmask4, * domain_active,                 * domain_label, * network_label, * netmask_label,                  * edit_button, * delete_button;static gftp_options_dialog_data * gftp_option_data;static GList * new_proxy_hosts = NULL;static void_setup_option (gftp_option_type_enum otype,               gftp_options_dialog_data * option_data,                void * (*ui_print_function) (gftp_config_vars * cv,                                            void *user_data,                                            void *value),               void (*ui_save_function) (gftp_config_vars * cv,                                         void *user_data),               void (*ui_cancel_function) (gftp_config_vars * cv,                                           void *user_data)){  gftp_option_types[otype].user_data = option_data;  gftp_option_types[otype].ui_print_function = ui_print_function;  gftp_option_types[otype].ui_save_function = ui_save_function;  gftp_option_types[otype].ui_cancel_function = ui_cancel_function;}static void *_gen_input_widget (gftp_options_dialog_data * option_data, char *label, char *tiptxt){  GtkTooltips * tooltip;  GtkWidget * tempwid;  option_data->tbl_row_num++;  gtk_table_resize (GTK_TABLE (option_data->table),                     option_data->tbl_row_num, 2);  tempwid = gtk_label_new (_(label));  gtk_misc_set_alignment (GTK_MISC (tempwid), 0, 0.5);  gtk_table_attach (GTK_TABLE (option_data->table), tempwid, 0, 1,                    option_data->tbl_row_num - 1,                     option_data->tbl_row_num,                    (GtkAttachOptions) (GTK_FILL),                    (GtkAttachOptions) (0), 0, 0);  gtk_widget_show (tempwid);  tempwid = gtk_entry_new ();  gtk_table_attach_defaults (GTK_TABLE (option_data->table), tempwid, 1, 2,                             option_data->tbl_row_num - 1,                              option_data->tbl_row_num);  gtk_widget_show (tempwid);  if (tiptxt != NULL)    {      tooltip = gtk_tooltips_new ();      gtk_tooltips_set_tip (GTK_TOOLTIPS(tooltip), tempwid, _(tiptxt), NULL);    }  return (tempwid);}static void *_print_option_type_newtable (gftp_config_vars * cv, void *user_data, void *value){  gftp_options_dialog_data * option_data;  option_data = user_data;  option_data->table = gtk_table_new (1, 2, FALSE);  gtk_table_set_row_spacings (GTK_TABLE (option_data->table), 6);  gtk_table_set_col_spacings (GTK_TABLE (option_data->table), 12);  gtk_box_pack_start (GTK_BOX (option_data->box), option_data->table, FALSE,                       FALSE, 0);  gtk_widget_show (option_data->table);  option_data->tbl_row_num = 0;  option_data->tbl_col_num = 0;  return (NULL);}static void *_print_option_type_text (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);  if (value != NULL)    gtk_entry_set_text (GTK_ENTRY (tempwid), (char *) value);  return (tempwid);}static void_save_option_type_text (gftp_config_vars * cv, void *user_data){  gftp_options_dialog_data * option_data;  const char *tempstr;  option_data = user_data;  tempstr = gtk_entry_get_text (GTK_ENTRY (cv->user_data));  if (option_data->bm == NULL)    gftp_set_global_option (cv->key, tempstr);  else    gftp_set_bookmark_option (option_data->bm, cv->key, tempstr);}static GtkWidget *_gen_combo_widget (gftp_options_dialog_data * option_data, char *label){  GtkWidget * tempwid, * combo;  option_data->tbl_row_num++;  gtk_table_resize (GTK_TABLE (option_data->table),                                option_data->tbl_row_num, 2);  tempwid = gtk_label_new (_(label));  gtk_misc_set_alignment (GTK_MISC (tempwid), 0, 0.5);  gtk_table_attach (GTK_TABLE (option_data->table), tempwid, 0, 1,                    option_data->tbl_row_num - 1,                     option_data->tbl_row_num,		    (GtkAttachOptions) (GTK_FILL),                    (GtkAttachOptions) (0), 0, 0);  gtk_widget_show (tempwid);  combo = gtk_combo_new ();  gtk_table_attach_defaults (GTK_TABLE (option_data->table), combo, 1, 2,                             option_data->tbl_row_num - 1,                              option_data->tbl_row_num);  return (combo);}static void *_print_option_type_textcombo (gftp_config_vars * cv, void *user_data, void *value){  gftp_options_dialog_data * option_data;  GtkWidget * tempwid, * combo;  GList * widget_list;  GtkTooltips * tooltip;  int selitem, i;  char **clist;  option_data = user_data;  combo = _gen_combo_widget (option_data, cv->description);  if (cv->listdata != NULL)    {      selitem = 0;      widget_list = NULL;      clist = cv->listdata;      for (i=0; clist[i] != NULL; i++)        {          if (value != NULL && strcasecmp ((char *) value, clist[i]) == 0)            selitem = i;          tempwid = gtk_list_item_new_with_label (clist[i]);          gtk_widget_show (tempwid);          widget_list = g_list_append (widget_list, tempwid);        }      gtk_list_prepend_items (GTK_LIST (GTK_COMBO (combo)->list), widget_list);       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);    }  return (combo);}static void_save_option_type_textcombo (gftp_config_vars * cv, void *user_data){  gftp_options_dialog_data * option_data;  const char *tempstr;  option_data = user_data;  tempstr = gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (cv->user_data)->entry));  if (option_data->bm == NULL)    gftp_set_global_option (cv->key, tempstr);  else    gftp_set_bookmark_option (option_data->bm, cv->key, tempstr);}static void_textcomboedt_toggle (GtkList * list, GtkWidget * child, gpointer data){  gftp_textcomboedt_widget_data * widdata;  gftp_textcomboedt_data * tedata;  char *insert_text;  int num, isedit;#if GTK_MAJOR_VERSION > 1  GtkTextIter iter, iter2;  GtkTextBuffer * textbuf;  guint len;#endif  widdata = data;  tedata = widdata->cv->listdata;  num = gtk_list_child_position (list, child);  isedit = tedata[num].flags & GFTP_TEXTCOMBOEDT_EDITABLE;#if GTK_MAJOR_VERSION == 1  gtk_text_set_editable (GTK_TEXT (widdata->text), isedit);#else  gtk_text_view_set_editable (GTK_TEXT_VIEW (widdata->text), isedit);#endif  if (isedit)    insert_text = widdata->custom_edit_value;  else    insert_text = tedata[num].text;#if GTK_MAJOR_VERSION == 1  gtk_text_set_point (GTK_TEXT (widdata->text), 0);  gtk_text_forward_delete (GTK_TEXT (widdata->text),			   gtk_text_get_length (GTK_TEXT (widdata->text)));  gtk_text_insert (GTK_TEXT (widdata->text), NULL, NULL, NULL,                    insert_text, -1);#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);  gtk_text_buffer_delete (textbuf, &iter, &iter2);  len = gtk_text_buffer_get_char_count (textbuf);  gtk_text_buffer_get_iter_at_offset (textbuf, &iter, len);  gtk_text_buffer_insert (textbuf, &iter, insert_text, -1);#endif}static char *_gftp_convert_to_newlines (char *str){  char *stpos, *endpos, *ret, savechar;  size_t len;  ret = g_strdup ("");  len = 0;  for (stpos = str;        (endpos = strstr (stpos, "%n")) != NULL;       stpos = endpos + 2)    {       savechar = *endpos;      *endpos = '\0';      len += strlen (stpos) + 1;      ret = g_realloc (ret, len + 1);      strcat (ret, stpos);      strcat (ret, "\n");      *endpos = savechar;    }  if (stpos != NULL && *stpos != '\0')    {      len += strlen (stpos);      ret = g_realloc (ret, len + 1);      strcat (ret, stpos);    }  return (ret);}static char *_gftp_convert_from_newlines (char *str){  char *stpos, *endpos, *ret, savechar;  size_t len;  ret = g_strdup ("");  len = 0;  for (stpos = str;        (endpos = strchr (stpos, '\n')) != NULL;       stpos = endpos + 1)    {       savechar = *endpos;      *endpos = '\0';      len += strlen (stpos) + 2;      ret = g_realloc (ret, len + 1);      strcat (ret, stpos);      strcat (ret, "%n");      *endpos = savechar;    }  if (stpos != NULL && *stpos != '\0')    {      len += strlen (stpos);      ret = g_realloc (ret, len + 1);      strcat (ret, stpos);    }  return (ret);}static void *_print_option_type_textcomboedt (gftp_config_vars * cv, void *user_data, void *value){  gftp_textcomboedt_widget_data * widdata;  GtkWidget * box, * combo, * textwid, * tempwid;  gftp_options_dialog_data * option_data;  gftp_textcomboedt_data * tedata;  int i, selitem, edititem;  GtkTooltips * tooltip;  GList * widget_list;  char *tempstr;  option_data = user_data;  combo = _gen_combo_widget (option_data, cv->description);   tempstr = NULL;  if (value != NULL)    tempstr = _gftp_convert_to_newlines (value);  if (tempstr == NULL)    tempstr = g_strdup ("");  edititem = selitem = -1;  if (cv->listdata != NULL)    {      widget_list = NULL;      tedata = cv->listdata;      for (i=0; tedata[i].description != NULL; i++)        {          if (tedata[i].flags & GFTP_TEXTCOMBOEDT_EDITABLE)            edititem = i;          if (selitem == -1 &&              strcasecmp (tempstr, tedata[i].text) == 0)            selitem = i;          tempwid = gtk_list_item_new_with_label (tedata[i].description);          gtk_widget_show (tempwid);          widget_list = g_list_append (widget_list, tempwid);        }      gtk_list_prepend_items (GTK_LIST (GTK_COMBO (combo)->list), widget_list);       if (selitem == -1 && edititem != -1)

⌨️ 快捷键说明

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