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

📄 notify.c

📁 Linux下的多协议即时通讯程序源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
		purplewin = PIDGIN_CONVERSATION(conv)->win;		if (GPOINTER_TO_INT(purple_conversation_get_data(conv, "notify-message-count")) != 0)			/* reattach appropriate notifications */			notify(conv, FALSE);	}}static voidapply_notify(){	GList *convs = purple_get_conversations();	while (convs) {		PurpleConversation *conv = (PurpleConversation *)convs->data;		/* detach signals */		detach_signals(conv);		/* reattach appropriate signals */		attach_signals(conv);		convs = convs->next;	}}static GtkWidget *get_config_frame(PurplePlugin *plugin){	GtkWidget *ret = NULL, *frame = NULL;	GtkWidget *vbox = NULL, *hbox = NULL;	GtkWidget *toggle = NULL, *entry = NULL, *ref;	ret = gtk_vbox_new(FALSE, 18);	gtk_container_set_border_width(GTK_CONTAINER (ret), 12);	/*---------- "Notify For" ----------*/	frame = pidgin_make_frame(ret, _("Notify For"));	vbox = gtk_vbox_new(FALSE, 5);	gtk_container_add(GTK_CONTAINER(frame), vbox);	toggle = gtk_check_button_new_with_mnemonic(_("_IM windows"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/type_im"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(type_toggle_cb), "type_im");	toggle = gtk_check_button_new_with_mnemonic(_("C_hat windows"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/type_chat"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(type_toggle_cb), "type_chat");	ref = toggle;	toggle = gtk_check_button_new_with_mnemonic(_("\t_Only when someone says your screen name"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                            purple_prefs_get_bool("/plugins/gtk/X11/notify/type_chat_nick"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(type_toggle_cb), "type_chat_nick");	gtk_widget_set_sensitive(toggle, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ref)));	g_signal_connect(G_OBJECT(ref), "toggled",	                 G_CALLBACK(pidgin_toggle_sensitive), toggle);	toggle = gtk_check_button_new_with_mnemonic(_("_Focused windows"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/type_focused"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(type_toggle_cb), "type_focused");	/*---------- "Notification Methods" ----------*/	frame = pidgin_make_frame(ret, _("Notification Methods"));	vbox = gtk_vbox_new(FALSE, 5);	gtk_container_add(GTK_CONTAINER(frame), vbox);	/* String method button */	hbox = gtk_hbox_new(FALSE, 18);	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);	toggle = gtk_check_button_new_with_mnemonic(_("Prepend _string into window title:"));	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/method_string"));	gtk_box_pack_start(GTK_BOX(hbox), toggle, FALSE, FALSE, 0);	entry = gtk_entry_new();	gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0);	gtk_entry_set_max_length(GTK_ENTRY(entry), 10);	gtk_widget_set_sensitive(GTK_WIDGET(entry),	                         purple_prefs_get_bool("/plugins/gtk/X11/notify/method_string"));	gtk_entry_set_text(GTK_ENTRY(entry),	                   purple_prefs_get_string("/plugins/gtk/X11/notify/title_string"));	g_object_set_data(G_OBJECT(toggle), "title-entry", entry);	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(method_toggle_cb), "method_string");	g_signal_connect(G_OBJECT(entry), "focus-out-event",	                 G_CALLBACK(options_entry_cb), "method_string");	/* Count method button */	toggle = gtk_check_button_new_with_mnemonic(_("Insert c_ount of new messages into window title"));	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/method_count"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(method_toggle_cb), "method_count");#ifndef _WIN32	/* Count xprop method button */	toggle = gtk_check_button_new_with_mnemonic(_("Insert count of new message into _X property"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/method_count_xprop"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(method_toggle_cb), "method_count_xprop");	/* Urgent method button */	toggle = gtk_check_button_new_with_mnemonic(_("Set window manager \"_URGENT\" hint"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/method_urgent"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(method_toggle_cb), "method_urgent");#endif	/* Raise window method button */	toggle = gtk_check_button_new_with_mnemonic(_("R_aise conversation window"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/method_raise"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(method_toggle_cb), "method_raise");	/*---------- "Notification Removals" ----------*/	frame = pidgin_make_frame(ret, _("Notification Removal"));	vbox = gtk_vbox_new(FALSE, 5);	gtk_container_add(GTK_CONTAINER(frame), vbox);	/* Remove on focus button */	toggle = gtk_check_button_new_with_mnemonic(_("Remove when conversation window _gains focus"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/notify_focus"));	g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(notify_toggle_cb), "notify_focus");	/* Remove on click button */	toggle = gtk_check_button_new_with_mnemonic(_("Remove when conversation window _receives click"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/notify_click"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(notify_toggle_cb), "notify_click");	/* Remove on type button */	toggle = gtk_check_button_new_with_mnemonic(_("Remove when _typing in conversation window"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/notify_type"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(notify_toggle_cb), "notify_type");	/* Remove on message send button */	toggle = gtk_check_button_new_with_mnemonic(_("Remove when a _message gets sent"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/notify_send"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(notify_toggle_cb), "notify_send");#if 0	/* Remove on conversation switch button */	toggle = gtk_check_button_new_with_mnemonic(_("Remove on switch to conversation ta_b"));	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/notify_switch"));	g_signal_connect(G_OBJECT(toggle), "toggled",	                 G_CALLBACK(notify_toggle_cb), "notify_switch");#endif	gtk_widget_show_all(ret);	return ret;}static gbooleanplugin_load(PurplePlugin *plugin){	GList *convs = purple_get_conversations();	void *conv_handle = purple_conversations_get_handle();	void *gtk_conv_handle = pidgin_conversations_get_handle();	my_plugin = plugin;	purple_signal_connect(gtk_conv_handle, "displayed-im-msg", plugin,	                    PURPLE_CALLBACK(message_displayed_cb), NULL);	purple_signal_connect(gtk_conv_handle, "displayed-chat-msg", plugin,	                    PURPLE_CALLBACK(message_displayed_cb), NULL);	purple_signal_connect(gtk_conv_handle, "conversation-switched", plugin,	                    PURPLE_CALLBACK(conv_switched), NULL);	purple_signal_connect(conv_handle, "sent-im-msg", plugin,	                    PURPLE_CALLBACK(im_sent_im), NULL);	purple_signal_connect(conv_handle, "sent-chat-msg", plugin,	                    PURPLE_CALLBACK(chat_sent_im), NULL);	purple_signal_connect(conv_handle, "conversation-created", plugin,	                    PURPLE_CALLBACK(conv_created), NULL);	purple_signal_connect(conv_handle, "chat-joined", plugin,	                    PURPLE_CALLBACK(conv_created), NULL);	purple_signal_connect(conv_handle, "deleting-conversation", plugin,	                    PURPLE_CALLBACK(deleting_conv), NULL);#if 0	purple_signal_connect(gtk_conv_handle, "conversation-dragging", plugin,	                    PURPLE_CALLBACK(conversation_dragging), NULL);#endif	while (convs) {		PurpleConversation *conv = (PurpleConversation *)convs->data;		/* attach signals */		attach_signals(conv);		convs = convs->next;	}	return TRUE;}static gbooleanplugin_unload(PurplePlugin *plugin){	GList *convs = purple_get_conversations();	while (convs) {		PurpleConversation *conv = (PurpleConversation *)convs->data;		/* kill signals */		detach_signals(conv);		convs = convs->next;	}	return TRUE;}static PidginPluginUiInfo ui_info ={	get_config_frame,	0, /* page_num (Reserved) */	/* padding */	NULL,	NULL,	NULL,	NULL};static PurplePluginInfo info ={	PURPLE_PLUGIN_MAGIC,	PURPLE_MAJOR_VERSION,	PURPLE_MINOR_VERSION,	PURPLE_PLUGIN_STANDARD,                             /**< type           */	PIDGIN_PLUGIN_TYPE,                             /**< ui_requirement */	0,                                                /**< flags          */	NULL,                                             /**< dependencies   */	PURPLE_PRIORITY_DEFAULT,                            /**< priority       */	NOTIFY_PLUGIN_ID,                                 /**< id             */	N_("Message Notification"),                       /**< name           */	VERSION,                                          /**< version        */	                                                  /**  summary        */	N_("Provides a variety of ways of notifying you of unread messages."),	                                                  /**  description    */	N_("Provides a variety of ways of notifying you of unread messages."),	                                                  /**< author         */	"Etan Reisner <deryni@eden.rutgers.edu>\n\t\t\tBrian Tarricone <bjt23@cornell.edu>",	PURPLE_WEBSITE,                                     /**< homepage       */	plugin_load,                                      /**< load           */	plugin_unload,                                    /**< unload         */	NULL,                                             /**< destroy        */	&ui_info,                                         /**< ui_info        */	NULL,                                              /**< extra_info     */	NULL,	NULL,	/* padding */	NULL,	NULL,	NULL,	NULL};static voidinit_plugin(PurplePlugin *plugin){	purple_prefs_add_none("/plugins/gtk");	purple_prefs_add_none("/plugins/gtk/X11");	purple_prefs_add_none("/plugins/gtk/X11/notify");	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_im", TRUE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_chat", FALSE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_chat_nick", FALSE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/type_focused", FALSE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/method_string", FALSE);	purple_prefs_add_string("/plugins/gtk/X11/notify/title_string", "(*)");	purple_prefs_add_bool("/plugins/gtk/X11/notify/method_urgent", FALSE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/method_count", FALSE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/method_count_xprop", FALSE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/method_raise", FALSE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_focus", TRUE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_click", FALSE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_type", TRUE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_send", TRUE);	purple_prefs_add_bool("/plugins/gtk/X11/notify/notify_switch", TRUE);}PURPLE_INIT_PLUGIN(notify, init_plugin, info)

⌨️ 快捷键说明

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