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

📄 settings.c

📁 The major functionality added in this release includes: - Rootless mode in X11 - Widget Templt
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 + -