📄 settings.c
字号:
static voidsettings_page_irc_notification (struct session *sess, GtkWidget * vbox){ GtkWidget *wid; GtkWidget *tab; GtkWidget *tog; gint row_index; wid = settings_create_group (vbox, _("Generic")); tog = settings_create_toggle (_("Show notifies in active window"), wid, prefs.show_notify_in_front_session, settings_ptoggle_check, &(sess->setup-> prefs.show_notify_in_front_session)); tog = settings_create_toggle (_("Send /whois"), wid, prefs.whois_on_notifyonline, settings_ptoggle_check, &(sess->setup->prefs.whois_on_notifyonline)); wid = settings_create_group (vbox, _("User List Notify Highlighting")); tog = settings_create_toggle (_("Highlight Notifies"), wid, prefs.hilitenotify, settings_ptoggle_check, &(sess->setup->prefs.hilitenotify)); add_tip (tog, _("Highlight notified users in the user list")); tab = settings_create_table (wid); row_index = 0; settings_create_color_box (_("Notified User Color:"), tab, prefs.nu_color, &sess->setup->nu_color, settings_nu_color_clicked, sess, row_index++); wid = settings_create_group (vbox, _("Notification Timeouts")); tab = settings_create_table (wid); sess->setup->entry_timeout = settings_create_numberentry (_("Notify Check Interval:"), 0, 960, 1, tab, prefs.notify_timeout, 0, _("seconds (0=Disable)."));}#ifdef USE_TRANSstatic voidsettings_page_irc_charset (struct session *sess, GtkWidget * vbox){ GtkWidget *wid, *tog, *tab; wid = settings_create_group (vbox, _("General")); tog = settings_create_toggle (_("Enable Character Translation"), wid, prefs.use_trans, settings_ptoggle_check, &(sess->setup->prefs.use_trans)); tab = settings_create_table (wid); settings_create_entry (_("Translation File:"), sizeof (prefs.trans_file) - 1, tab, prefs.trans_file, &sess->setup->entry_trans_file, 0, settings_openfiledialog, 1); gtkutil_label_new (_("Use a ircII style translation file."), wid);}#endifstatic voidsettings_page_dcc (struct session *sess, GtkWidget * vbox){ GtkWidget *wid; GtkWidget *tog; wid = settings_create_group (vbox, _("General")); tog = settings_create_toggle (_("Auto Open DCC Send Window"), wid, prefs.autoopendccsendwindow, settings_ptoggle_check, &(sess->setup->prefs. autoopendccsendwindow)); add_tip (tog, _("Automatically open DCC Send Window")); tog = settings_create_toggle (_("Auto Open DCC Recv Window"), wid, prefs.autoopendccrecvwindow, settings_ptoggle_check, &(sess->setup->prefs. autoopendccrecvwindow)); add_tip (tog, _("Automatically open DCC Recv Window")); tog = settings_create_toggle (_("Auto Open DCC Chat Window"), wid, prefs.autoopendccchatwindow, settings_ptoggle_check, &(sess->setup->prefs. autoopendccchatwindow)); add_tip (tog, _("Automatically open DCC Chat Window")); tog = settings_create_toggle (_("Resume on Auto Accept"), wid, prefs.autoresume, settings_ptoggle_check, &(sess->setup->prefs.autoresume)); add_tip (tog, _("When Auto-Accepting DCC, try to resume."));}static voidsettings_page_dcc_filetransfer (struct session *sess, GtkWidget * vbox){ GtkWidget *wid; GtkWidget *tab, *tog; GtkWidget *left_box, *right_box; gint row_index; char buf[127]; wid = settings_create_group (vbox, _("Timeouts")); tab = settings_create_table (wid); row_index = 0; sess->setup->entry_dcctimeout = settings_create_numberentry (_("DCC Offers Timeout:"), 0, 10000, 1, tab, prefs.dcctimeout, row_index++, _("seconds.")); sess->setup->entry_dccstalltimeout = settings_create_numberentry (_("DCC Stall Timeout:"), 0, 10000, 1, tab, prefs.dccstalltimeout, row_index++, _("seconds.")); wid = settings_create_group (vbox, _("Received files")); tab = settings_create_table (wid); row_index = 0; sprintf (buf, "%04o", prefs.dccpermissions); settings_create_entry (_("File Permissions:"), 5, tab, buf, &sess->setup->entry_permissions, _("(octal)"), 0, row_index++); settings_create_entry (_("Directory to save to:"), sizeof (prefs.dccdir) - 1, tab, prefs.dccdir, &sess->setup->entry_dccdir, 0, 0, row_index++); tog = settings_create_toggle (_("Save file with Nickname"), wid, prefs.dccwithnick, settings_ptoggle_check, &(sess->setup->prefs.dccwithnick)); add_tip (tog, _("Put the sender\'s nickname in incoming filenames")); wid = settings_create_group (vbox, _("DCC Send Options")); tab = settings_create_table (wid); settings_create_tworows (wid, &left_box, &right_box); tog = settings_create_toggle (_("Fast DCC Send"), left_box, prefs.fastdccsend, settings_ptoggle_check, &(sess->setup->prefs.fastdccsend)); add_tip (tog, _("Don\'t wait for ACKs to send more data")); tog = settings_create_toggle (_("Fill Spaces"), right_box, prefs.dcc_send_fillspaces, settings_ptoggle_check, &(sess->setup->prefs.dcc_send_fillspaces)); add_tip (tog, _("File names with spaces will be filled with underscore")); sess->setup->entry_dcc_send_port_first = settings_create_numberentry (_("First DCC Send Port:"), 0, 65535, 1, tab, prefs.first_dcc_send_port, row_index++, _("(0=Disabled)")); sess->setup->entry_dcc_send_port_last = settings_create_numberentry (_("Last DCC Send Port:"), 0, 65535, 1, tab, prefs.last_dcc_send_port, row_index++, 0); sess->setup->entry_dcc_blocksize = settings_create_numberentry (_("Send Block Size:"), 0, 10000, 1, tab, prefs.dcc_blocksize, row_index++, _("(1024=Normal)"));}static voidsettings_page_ctcp (struct session *sess, GtkWidget * vbox){ GtkWidget *wid; GtkWidget *tab; GtkWidget *tog; gint row_index; wid = settings_create_group (vbox, _("Built-in Replies")); tog = settings_create_toggle (_("Hide Version"), wid, prefs.hidever, settings_ptoggle_check, &(sess->setup->prefs.hidever)); add_tip (tog, _("Do not reply to CTCP version")); wid = settings_create_group (vbox, _("Sound")); tab = settings_create_table (wid); row_index = 0; settings_create_entry (_("Sound Dir:"), sizeof (prefs.sounddir) - 1, tab, prefs.sounddir, &sess->setup->entry_sounddir, 0, 0, row_index++); settings_create_entry (_("Play Command:"), sizeof (prefs.soundcmd) - 1, tab, prefs.soundcmd, &sess->setup->entry_soundcmd, 0, 0, row_index++);}/* Create Interface */voidsettings_opengui (struct session *sess){ GtkCTreeNode *last_top; GtkCTreeNode *last_child; GtkWidget *dialog; GtkWidget *hbbox; GtkWidget *frame; GtkWidget *ctree; GtkWidget *book; GtkWidget *hbox; GtkWidget *vbox; GtkWidget *wid; gchar *titles[1]; gint page_index; if (sess->setup) { gdk_window_show (sess->setup->settings_window->window); return; } sess->setup = malloc (sizeof (struct setup)); memcpy (&sess->setup->prefs, &prefs, sizeof (struct xchatprefs)); /* prepare the dialog */ dialog = gtkutil_dialog_new (_("X-Chat: Preferences"), "preferences", settings_closegui, sess); sess->setup->settings_window = dialog; /* prepare the action area */ gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area), 2); gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dialog)->action_area), FALSE); /* prepare the button box */ hbbox = gtk_hbutton_box_new (); gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbbox), 4); gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->action_area), hbbox, FALSE, FALSE, 0); gtk_widget_show (hbbox); /* i love buttons */#ifdef USE_GNOME wid = gnome_stock_button (GNOME_STOCK_BUTTON_OK);#else wid = gtk_button_new_with_label (_("Ok"));#endif gtk_signal_connect (GTK_OBJECT (wid), "clicked", GTK_SIGNAL_FUNC (settings_ok_clicked), sess); gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); gtk_widget_show (wid);#ifdef USE_GNOME wid = gnome_stock_button (GNOME_STOCK_BUTTON_APPLY);#else wid = gtk_button_new_with_label (_("Apply"));#endif gtk_signal_connect (GTK_OBJECT (wid), "clicked", GTK_SIGNAL_FUNC (settings_apply_clicked), sess); gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); gtk_widget_show (wid);#ifdef USE_GNOME wid = gnome_stock_button (GNOME_STOCK_BUTTON_CANCEL);#else wid = gtk_button_new_with_label (_("Cancel"));#endif gtk_signal_connect (GTK_OBJECT (wid), "clicked", GTK_SIGNAL_FUNC (gtkutil_destroy), sess->setup->settings_window); gtk_box_pack_start (GTK_BOX (hbbox), wid, FALSE, FALSE, 0); gtk_widget_show (wid); sess->setup->cancel_button = wid; /* the main hbox */ hbox = gtk_hbox_new (FALSE, 6); gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 0); gtk_widget_show (hbox); /* the tree */ titles[0] = _("Categories"); ctree = gtk_ctree_new_with_titles (1, 0, titles); gtk_clist_set_selection_mode (GTK_CLIST (ctree), GTK_SELECTION_BROWSE); gtk_ctree_set_indent (GTK_CTREE (ctree), 15); gtk_widget_set_usize (ctree, 164, 0); gtk_box_pack_start (GTK_BOX (hbox), ctree, FALSE, FALSE, 0); gtk_widget_show (ctree); /* the preferences frame */ frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0); gtk_widget_show (frame); /* the notebook */ book = gtk_notebook_new (); gtk_notebook_set_show_tabs (GTK_NOTEBOOK (book), FALSE); gtk_notebook_set_show_border (GTK_NOTEBOOK (book), FALSE); gtk_container_add (GTK_CONTAINER (frame), book); gtk_object_set_user_data (GTK_OBJECT (ctree), book); gtk_signal_connect (GTK_OBJECT (ctree), "tree_select_row", GTK_SIGNAL_FUNC (settings_ctree_select), NULL); page_index = 0; vbox = settings_create_page (book, _("Interface Settings"), ctree, _("Interface"), NULL, &last_top, page_index++, settings_page_interface, sess); gtk_ctree_select (GTK_CTREE (ctree), last_top); vbox = settings_create_page (book, _("IRC Input/Output Settings"), ctree, _("IRC Input/Output"), last_top, &last_child, page_index++, settings_page_interface_inout, sess); vbox = settings_create_page (book, _("Window Layout Settings"), ctree, _("Window Layout"), last_top, &last_child, page_index++, settings_page_interface_layout, sess); vbox = settings_create_page (book, _("Main Window Settings"), ctree, _("Main Window"), last_top, &last_child, page_index++, settings_page_interface_mainwindow, sess); vbox = settings_create_page (book, _("Channel Window Settings"), ctree, _("Channel Windows"), last_top, &last_child, page_index++, settings_page_interface_channelwindow, sess); vbox = settings_create_page (book, _("Dialog Window Settings"), ctree, _("Dialog Windows"), last_top, &last_child, page_index++, settings_page_interface_dialogwindow, sess);#ifdef USE_PANEL vbox = settings_create_page (book, _("Panel Settings"), ctree, _("Panel"), last_top, &last_child, page_index++, settings_page_interface_panel, sess);#endif vbox = settings_create_page (book, _("IRC Settings"), ctree, _("IRC"), NULL, &last_top, page_index++, settings_page_irc, sess); vbox = settings_create_page (book, _("IP Address Settings"), ctree, _("IP Address"), last_top, &last_child, page_index++, settings_page_irc_ipaddress, sess); vbox = settings_create_page (book, _("Proxy Server"), ctree, _("Proxy Server"), last_top, &last_child, page_index++, settings_page_proxy, sess); vbox = settings_create_page (book, _("Away Settings"), ctree, _("Away"), last_top, &last_child, page_index++, settings_page_irc_away, sess); vbox = settings_create_page (book, _("Highlighting Settings"), ctree, _("Highlighting"), last_top, &last_child, page_index++, settings_page_irc_highlighting, sess); vbox = settings_create_page (book, _("Logging Settings"), ctree, _("Logging"), last_top, &last_child, page_index++, settings_page_irc_logging, sess); vbox = settings_create_page (book, _("Notification Settings"), ctree, _("Notification"), last_top, &last_child, page_index++, settings_page_irc_notification, sess);#ifdef USE_TRANS vbox = settings_create_page (book, _("Character Set (Translation Tables)"), ctree, _("Character Set"), last_top, &last_child, page_index++, settings_page_irc_charset, sess);#endif vbox = settings_create_page (book, _("CTCP Settings"), ctree, _("CTCP"), last_top, &last_child, page_index++, settings_page_ctcp, sess); vbox = settings_create_page (book, _("DCC Settings"), ctree, _("DCC"), NULL, &last_top, page_index++, settings_page_dcc, sess); vbox = settings_create_page (book, _("File Transfer Settings"), ctree, _("File Transfer"), last_top, &last_child, page_index++, settings_page_dcc_filetransfer, sess); /* since they all fit in the window, why not expand them all */ gtk_ctree_expand_recursive ((GtkCTree *) ctree, 0); gtk_clist_select_row (GTK_CLIST (ctree), 0, 0); gtk_widget_show (book); gtk_widget_show (sess->setup->settings_window);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -