📄 settings.c
字号:
gtk_widget_set_style (colgad, stylefg); gtk_style_unref (stylefg); *colset = col;}static voidsettings_ctree_select (GtkWidget * ctree, GtkCTreeNode * node){ GtkWidget *book; gint page; if (!GTK_CLIST (ctree)->selection) return; book = GTK_WIDGET (gtk_object_get_user_data (GTK_OBJECT (ctree))); page = (gint) gtk_ctree_node_get_row_data (GTK_CTREE (ctree), node); gtk_notebook_set_page (GTK_NOTEBOOK (book), page);}static voidsettings_ptoggle_check (GtkWidget * widget, int *pref){ *pref = (int) (GTK_TOGGLE_BUTTON (widget)->active);}/*static voidsettings_pinvtoggle_check (GtkWidget * widget, int *pref){ *pref = ((int) (GTK_TOGGLE_BUTTON (widget)->active) ? 0 : 1);}*//* Misc callbacks */static voidsettings_transparent_check (GtkWidget * widget, struct session *sess){ if (GTK_TOGGLE_BUTTON (widget)->active) { sess->setup->prefs.transparent = TRUE; gtk_widget_set_sensitive (sess->setup->background, FALSE);#if defined(USE_GDK_PIXBUF) || defined(USE_MMX) gtk_widget_set_sensitive (sess->setup->check_tint, TRUE);#endif } else { sess->setup->prefs.transparent = FALSE; gtk_toggle_button_set_active ((GtkToggleButton *) sess->setup-> check_tint, FALSE); gtk_widget_set_sensitive (sess->setup->background, TRUE); gtk_widget_set_sensitive (sess->setup->check_tint, FALSE); }}static voidsettings_transparent_dialog_check (GtkWidget * widget, struct session *sess){ if (GTK_TOGGLE_BUTTON (widget)->active) { sess->setup->prefs.dialog_transparent = TRUE; gtk_widget_set_sensitive (sess->setup->background_dialog, FALSE);#if defined(USE_GDK_PIXBUF) || defined(USE_MMX) gtk_widget_set_sensitive (sess->setup->dialog_check_tint, TRUE);#endif } else { sess->setup->prefs.dialog_transparent = FALSE; gtk_toggle_button_set_active ((GtkToggleButton *) sess->setup-> dialog_check_tint, FALSE); gtk_widget_set_sensitive (sess->setup->background_dialog, TRUE); gtk_widget_set_sensitive (sess->setup->dialog_check_tint, FALSE); }}static voidsettings_nu_color_clicked (GtkWidget * igad, struct session *sess){ settings_color_clicked (igad, sess->setup->nu_color, &sess->setup->prefs.nu_color);}static voidsettings_slider_cb (GtkAdjustment * adj, int *value){ session *sess; GtkWidget *tog; *value = adj->value; tog = gtk_object_get_user_data (GTK_OBJECT (adj)); sess = gtk_object_get_user_data (GTK_OBJECT (tog)); if (GTK_TOGGLE_BUTTON (tog)->active) { GTK_XTEXT (sess->gui->textgad)->tint_red = sess->setup->prefs.tint_red; GTK_XTEXT (sess->gui->textgad)->tint_green = sess->setup->prefs.tint_green; GTK_XTEXT (sess->gui->textgad)->tint_blue = sess->setup->prefs.tint_blue; if (GTK_XTEXT (sess->gui->textgad)->transparent) gtk_xtext_refresh (GTK_XTEXT (sess->gui->textgad), 1); }}static voidsettings_slider (GtkWidget * vbox, char *label, int *value, GtkWidget * tog){ GtkAdjustment *adj; GtkWidget *wid, *hbox, *lbox, *lab; hbox = gtk_hbox_new (0, 0); gtk_container_add (GTK_CONTAINER (vbox), hbox); gtk_widget_show (hbox); lbox = gtk_hbox_new (0, 0); gtk_box_pack_start (GTK_BOX (hbox), lbox, 0, 0, 2); gtk_widget_set_usize (lbox, 60, 0); gtk_widget_show (lbox); lab = gtk_label_new (label); gtk_box_pack_end (GTK_BOX (lbox), lab, 0, 0, 0); gtk_widget_show (lab); adj = (GtkAdjustment *) gtk_adjustment_new (*value, 0, 255.0, 1, 25, 0); gtk_object_set_user_data (GTK_OBJECT (adj), tog); gtk_signal_connect (GTK_OBJECT (adj), "value_changed", GTK_SIGNAL_FUNC (settings_slider_cb), value); wid = gtk_hscale_new (adj); gtk_scale_set_value_pos ((GtkScale *) wid, GTK_POS_RIGHT); gtk_scale_set_digits ((GtkScale *) wid, 0); gtk_container_add (GTK_CONTAINER (hbox), wid); gtk_widget_show (wid);}/* Functions to help build a page type */static voidsettings_create_window_page (GtkWidget * vvbox, GtkWidget ** font_normal_wid, char *font_normal_str, GtkWidget ** backgroundwid, char *background, int transparent, void *transparent_callback, int tint, int *tint_pref, int *separator, int *indent_nicks, int *wordwrap, GtkWidget ** transwid, GtkWidget ** tintwid, int *red, int *green, int *blue, int *autoindent, struct session *sess){ GtkWidget *vbox, *table, *wid, *left_box, *right_box; gint row_index = 0; vbox = settings_create_group (vvbox, _("Appearance")); table = settings_create_table (vbox); settings_create_tworows (vbox, &left_box, &right_box); settings_create_entry (_("Font:"), FONTNAMELEN, table, font_normal_str, font_normal_wid, 0, settings_openfontdialog, row_index++);#ifndef PATH_MAX#define PATH_MAX 4096#endif#ifdef USE_GDK_PIXBUF settings_create_entry (_("Background Picture:"), PATH_MAX, table, background, backgroundwid, 0, settings_openfiledialog, row_index++);#else settings_create_entry (_("Background XPM:"), PATH_MAX, table, background, backgroundwid, 0, settings_openfiledialog, row_index++);#endif if (transparent) gtk_widget_set_sensitive (*backgroundwid, FALSE); wid = settings_create_toggle (_("Indent Nicks"), left_box, *indent_nicks, settings_ptoggle_check, indent_nicks); add_tip (wid, _("Make nicknames right justified.")); wid = settings_create_toggle (_("Auto Indent"), left_box, *autoindent, settings_ptoggle_check, autoindent); add_tip (wid, _("Auto adjust the separator bar position as needed.")); wid = settings_create_toggle (_("Draw Separator Bar"), left_box, *separator, settings_ptoggle_check, separator); add_tip (wid, _("Make the separator an actual visible line.")); wid = settings_create_toggle (_("Word Wrap"), right_box, *wordwrap, settings_ptoggle_check, wordwrap); add_tip (wid, _("Don't split words from one line to the next")); *transwid = settings_create_toggle (_("Transparent Background"), right_box, transparent, transparent_callback, sess); add_tip (*transwid, _("Make the text box seem see-through")); *tintwid = settings_create_toggle (_("Tint Transparency"), right_box, tint, settings_ptoggle_check, tint_pref); add_tip (*tintwid, _("Tint the see-through text box to make it darker")); settings_create_toggle (_("Use a font set"), left_box, prefs.use_fontset, settings_ptoggle_check, &(sess->setup->prefs.use_fontset));#ifndef USE_XLIB gtk_widget_set_sensitive (*transwid, FALSE);#endif#if defined(USE_GDK_PIXBUF) || defined(USE_MMX) if (!transparent)#endif gtk_widget_set_sensitive (*tintwid, FALSE); vbox = settings_create_group (vvbox, _("Tint Setting"));#if !defined(USE_GDK_PIXBUF) && !defined(USE_MMX) gtk_widget_set_sensitive (vbox, FALSE);#endif wid = gtk_check_button_new_with_label (_("Change in realtime")); gtk_object_set_user_data (GTK_OBJECT (wid), sess); settings_slider (vbox, _("Red:"), red, wid); settings_slider (vbox, _("Green:"), green, wid); settings_slider (vbox, _("Blue:"), blue, wid); gtk_container_add (GTK_CONTAINER (vbox), wid); gtk_widget_show (wid);}static voidsettings_sortset (GtkWidget * item, int num){ session *sess = gtk_object_get_user_data (GTK_OBJECT (item->parent)); sess->setup->prefs.userlist_sort = num;}/* Functions for each "Page" */static voidsettings_page_interface (struct session *sess, GtkWidget * vbox){ GtkWidget *wid; GtkWidget *tab; GtkWidget *tog; gint row_index; static char *ulmenutext[] = { N_("A-Z, Ops first"), N_("A-Z"), N_("Z-A, Ops last"), N_("Z-A"), N_("Unsorted"), NULL }; wid = settings_create_group (vbox, _("Startup and Shutdown")); tog = settings_create_toggle (_("No Server List On Startup"), wid, prefs.skipserverlist, settings_ptoggle_check, &(sess->setup->prefs.skipserverlist)); add_tip (tog, _("Don't display the server list on X-Chat startup")); tog = settings_create_toggle (_("Auto Save URL list"), wid, prefs.autosave_url, settings_ptoggle_check, &(sess->setup->prefs.autosave_url)); add_tip (tog, _("Auto save your URL list when exiting from X-Chat")); wid = settings_create_group (vbox, _("User List")); tog = settings_create_toggle (_ ("Give the User List style"), wid, prefs.style_namelistgad, settings_ptoggle_check, &(sess->setup->prefs.style_namelistgad)); tog = settings_create_toggle (_("Show userhost"), wid, prefs.showhostname_in_userlist, settings_ptoggle_check, &(sess->setup->prefs.showhostname_in_userlist)); add_tip (tog, _("Show userhost of users in channel userlist")); tog = settings_create_toggle (_("Enable Paned Userlist"), wid, prefs.paned_userlist, settings_ptoggle_check, &(sess->setup->prefs.paned_userlist)); add_tip (tog, _("Use paned user list instead of a fixed width one")); tog = settings_create_toggle (_("Userlist icons"), wid, prefs.userlist_icons, settings_ptoggle_check, &(sess->setup->prefs.userlist_icons)); tab = settings_create_table (wid); row_index = 0; settings_create_entry (_("Double Click Command:"), sizeof (prefs.doubleclickuser) - 1, tab, prefs.doubleclickuser, &sess->setup->entry_doubleclickuser, 0, 0, row_index++); settings_create_optmenu (tab, _("Userlist sorted by:"), ulmenutext, settings_sortset, sess, row_index, prefs.userlist_sort);}static voidsettings_page_interface_inout (struct session *sess, GtkWidget * vbox){ GtkWidget *wid; GtkWidget *tab; GtkWidget *tog; GtkWidget *entry; GtkWidget *left_box, *right_box; wid = settings_create_group (vbox, _("Input Box")); settings_create_tworows (wid, &left_box, &right_box); tog = settings_create_toggle (_("Nick Name Completion"), left_box, prefs.nickcompletion, settings_ptoggle_check, &(sess->setup->prefs.nickcompletion)); add_tip (tog, _("Complete nicknames when a partial one is entered")); tog = settings_create_toggle (_("Old-style Nickname Completion"), left_box, prefs.old_nickcompletion, settings_ptoggle_check, &(sess->setup->prefs.old_nickcompletion)); add_tip (tog, _("Nickname completion is old-style (instead of GNU-style)")); tog = settings_create_toggle (_("Give the Input Box style"), left_box, prefs.style_inputbox, settings_ptoggle_check, &(sess->setup->prefs.style_inputbox)); add_tip (tog, _("Input box gets same style as main text area")); tog = settings_create_toggle (_("Input Box always in focus"), right_box, prefs.inputgad_superfocus, settings_ptoggle_check, &(sess->setup->prefs.inputgad_superfocus)); tog = settings_create_toggle (_("Show nickname"), right_box, prefs.nickgad, settings_ptoggle_check, &(sess->setup->prefs.nickgad)); add_tip (tog, _("Show nickname and op/voice icon before the input box")); tab = settings_create_table (wid); entry = settings_create_entry (_("Nickname Completion Character:"), 1, tab, prefs.nick_suffix, &sess->setup->entry_nick_suffix, 0, 0, 0); add_tip (entry, _("Character to append to completed nicknames")); wid = settings_create_group (vbox, _("Output Box")); settings_create_tworows (wid, &left_box, &right_box); tog = settings_create_toggle (_("Strip MIRC Color"), right_box, prefs.stripcolor, settings_ptoggle_check, &(sess->setup->prefs.stripcolor)); add_tip (tog, _("Strip MIRC color codes from text before displaying")); tog = settings_create_toggle (_("Colored Nicks"), left_box, prefs.colorednicks, settings_ptoggle_check, &(sess->setup->prefs.colorednicks)); add_tip (tog, _("Output nicknames in different colors")); tog = settings_create_toggle (_("Show invites in active window"), left_box, prefs.show_invite_in_front_session, settings_ptoggle_check, &(sess->setup-> prefs.show_invite_in_front_session)); tog = settings_create_toggle (_("Time Stamp All Text"), left_box, prefs.timestamp, settings_ptoggle_check, &(sess->setup->prefs.timestamp)); add_tip (tog, _("Prefix all text with the current time stamp")); tog = settings_create_toggle (_("Filter out BEEPs"), right_box, prefs.filterbeep, settings_ptoggle_check, &(sess->setup->prefs.filterbeep)); add_tip (tog, _("Remove ^G BEEP codes from text before displaying")); tab = settings_create_table (wid); entry = settings_create_entry (_("Time Stamp Format:"), 63, tab, prefs.stamp_format, &sess->setup->entry_stamp_format, 0, 0, 0); wid = settings_create_group (vbox, _("Buffer Settings")); tab = settings_create_table (wid); sess->setup->entry_max_lines = settings_create_numberentry (_("Text Buffer Size:"), 0, 10000, 1, tab, prefs.max_lines, 0, _("lines (0=Unlimited)."));#ifdef USE_JCODE wid = settings_create_group (vbox, _("Other Settings")); tog = settings_create_toggle (_("Kanji locale <=> JIS translation"), wid, prefs.kanji_conv, settings_ptoggle_check, &(sess->setup->prefs.kanji_conv)); #endif}static voidsettings_tabsset (GtkWidget * item, int num){ session *sess = gtk_object_get_user_data (GTK_OBJECT (item->parent)); sess->setup->prefs.tabs_position = num;}static voidsettings_lagmeterset (GtkWidget * item, int num){ session *sess = gtk_object_get_user_data (GTK_OBJECT (item->parent)); sess->setup->prefs.lagometer = num;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -