📄 options_dialog.c
字号:
{ 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 (domain_label, data != NULL); gtk_widget_set_sensitive (network_label, data == NULL); gtk_widget_set_sensitive (netmask_label, 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 voidbuttons_toggle (GtkWidget * widget, gint row, gint col, GdkEventButton * event, gpointer data){ gtk_widget_set_sensitive (edit_button, data != NULL); gtk_widget_set_sensitive (delete_button, 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); buttons_toggle (NULL, 0, 0, 0, NULL);}static voidadd_proxy_host (GtkWidget * widget, gpointer data){ GtkWidget *tempwid, *dialog, *box, *rbox, *vbox, *nradio, *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); gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 10);#else dialog = gtk_dialog_new_with_buttons (title, NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL); gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);#endif 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);#if GTK_MAJOR_VERSION > 1 if (gftp_icon != NULL) { if ((tempstr = get_xpm_path (gftp_icon->filename, 0)) != NULL) { gtk_window_set_default_icon_from_file (tempstr, NULL); g_free (tempstr); } }#endif vbox = gtk_vbox_new (FALSE, 6); gtk_container_border_width (GTK_CONTAINER (vbox), 5); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox, FALSE, FALSE, 0); gtk_widget_show (vbox); box = gtk_hbox_new (FALSE, 12); gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 0); gtk_widget_show (box); #if GTK_MAJOR_VERSION == 1 tempwid = gtk_label_new (_("Type:"))#else tempwid = gtk_label_new_with_mnemonic (_("_Type:"));#endif gtk_misc_set_alignment (GTK_MISC (tempwid), 0, 0); gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); rbox = gtk_vbox_new (FALSE, 6); gtk_box_pack_start (GTK_BOX (box), rbox, TRUE, TRUE, 0); gtk_widget_show (rbox); domain_active = gtk_radio_button_new_with_label (NULL, _("Domain")); gtk_signal_connect (GTK_OBJECT (domain_active), "toggled", GTK_SIGNAL_FUNC (add_toggle), (gpointer) 1); nradio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (domain_active)), _("Network")); gtk_signal_connect (GTK_OBJECT (nradio), "toggled", GTK_SIGNAL_FUNC (add_toggle), NULL);#if GTK_MAJOR_VERSION > 1 gtk_label_set_mnemonic_widget (GTK_LABEL (tempwid), nradio);#endif gtk_box_pack_start (GTK_BOX (rbox), nradio, TRUE, TRUE, 0); gtk_widget_show (nradio); gtk_box_pack_start (GTK_BOX (rbox), domain_active, TRUE, TRUE, 0); gtk_widget_show (domain_active); box = gtk_hbox_new (FALSE, 12); gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 0); gtk_widget_show (box); tempwid = gtk_label_new (" "); gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); table = gtk_table_new (2, 2, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_table_set_col_spacings (GTK_TABLE (table), 12); gtk_box_pack_start (GTK_BOX (box), table, FALSE, FALSE, 0); gtk_widget_show (table);#if GTK_MAJOR_VERSION == 1 tempwid = gtk_label_new (_("Network Address"));#else tempwid = gtk_label_new_with_mnemonic (_("_Network address:"));#endif network_label = tempwid; gtk_misc_set_alignment (GTK_MISC (tempwid), 0, 0.5); gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 0, 1); gtk_widget_show (tempwid); box = gtk_hbox_new (FALSE, 6); gtk_table_attach_defaults (GTK_TABLE (table), box, 1, 2, 0, 1); gtk_widget_show (box); network1 = gtk_entry_new (); gtk_widget_set_size_request (network1, 36, -1);#if GTK_MAJOR_VERSION > 1 gtk_label_set_mnemonic_widget (GTK_LABEL (tempwid), network1);#endif gtk_box_pack_start (GTK_BOX (box), network1, TRUE, TRUE, 0); gtk_widget_show (network1); network2 = gtk_entry_new (); gtk_widget_set_size_request (network2, 36, -1); gtk_box_pack_start (GTK_BOX (box), network2, TRUE, TRUE, 0); gtk_widget_show (network2); network3 = gtk_entry_new (); gtk_widget_set_size_request (network3, 36, -1); gtk_box_pack_start (GTK_BOX (box), network3, TRUE, TRUE, 0); gtk_widget_show (network3); network4 = gtk_entry_new (); gtk_widget_set_size_request (network4, 36, -1); gtk_box_pack_start (GTK_BOX (box), network4, TRUE, TRUE, 0); gtk_widget_show (network4);#if GTK_MAJOR_VERSION == 1 tempwid = gtk_label_new (_("Netmask"));#else tempwid = gtk_label_new_with_mnemonic (_("N_etmask:"));#endif netmask_label = tempwid; gtk_misc_set_alignment (GTK_MISC (tempwid), 0, 0.5); gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 1, 2); gtk_widget_show (tempwid); box = gtk_hbox_new (FALSE, 6); gtk_table_attach_defaults (GTK_TABLE (table), box, 1, 2, 1, 2); gtk_widget_show (box); netmask1 = gtk_entry_new (); gtk_widget_set_size_request (netmask1, 36, -1);#if GTK_MAJOR_VERSION > 1 gtk_label_set_mnemonic_widget (GTK_LABEL (tempwid), netmask1);#endif gtk_box_pack_start (GTK_BOX (box), netmask1, TRUE, TRUE, 0); gtk_widget_show (netmask1); netmask2 = gtk_entry_new (); gtk_widget_set_size_request (netmask2, 36, -1); gtk_box_pack_start (GTK_BOX (box), netmask2, TRUE, TRUE, 0); gtk_widget_show (netmask2); netmask3 = gtk_entry_new (); gtk_widget_set_size_request (netmask3, 36, -1); gtk_box_pack_start (GTK_BOX (box), netmask3, TRUE, TRUE, 0); gtk_widget_show (netmask3); netmask4 = gtk_entry_new (); gtk_widget_set_size_request (netmask4, 36, -1); gtk_box_pack_start (GTK_BOX (box), netmask4, TRUE, TRUE, 0); gtk_widget_show (netmask4); box = gtk_hbox_new (FALSE, 12); gtk_box_pack_start (GTK_BOX (vbox), box, TRUE, TRUE, 0); gtk_widget_show (box); tempwid = gtk_label_new (" "); gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid);#if GTK_MAJOR_VERSION == 1 tempwid = gtk_label_new (_("Domain"));#else tempwid = gtk_label_new_with_mnemonic (_("_Domain:"));#endif domain_label = tempwid; gtk_misc_set_alignment (GTK_MISC (tempwid), 0, 0.5); gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0); gtk_widget_show (tempwid); new_proxy_domain = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (box), new_proxy_domain, TRUE, TRUE, 0); gtk_widget_show (new_proxy_domain);#if GTK_MAJOR_VERSION > 1 gtk_label_set_mnemonic_widget (GTK_LABEL (tempwid), new_proxy_domain);#endif if (!hosts || !hosts->domain) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (nradio), TRUE); add_toggle (NULL, NULL); } else { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (domain_active), TRUE); add_toggle (NULL, (gpointer) 1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -