annotate plugins/psychic.c @ 12879:f8748df5c17a

[gaim-migrate @ 15231] A patch from Sadrul Habib Chowdhury to make the scroll wheel and GtkScrolledWindow in the status selector work. committer: Tailor Script <tailor@pidgin.im>
author Gary Kramlich <grim@reaperworld.com>
date Sun, 15 Jan 2006 03:53:36 +0000
parents 6cc43e23ad36
children a355472257f4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12859
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3 #include "internal.h"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5 #include "blist.h"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
6 #include "conversation.h"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
7 #include "debug.h"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
8 #include "signals.h"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
9 #include "version.h"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
10
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
11 #include "plugin.h"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
12 #include "pluginpref.h"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
13 #include "prefs.h"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
14
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
15
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
16 #define DEBUG_INFO(a...) gaim_debug_info("psychic", a)
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
17
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
18
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
19 #define PLUGIN_ID "core-psychic"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
20 #define PLUGIN_NAME N_("Psychic Mode")
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
21 #define PLUGIN_SUMMARY N_("Psychic mode for incoming conversation")
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
22 #define PLUGIN_DESC N_("Causes conversation windows to appear as other" \
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
23 " users begin to message you")
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
24 #define PLUGIN_AUTHOR "Christopher O'Brien <siege@preoccupied.net>"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
25
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
26
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
27 #define PREFS_BASE "/plugins/core/psychic"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
28 #define PREF_BUDDIES PREFS_BASE "/buddies_only"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
29 #define PREF_NOTICE PREFS_BASE "/show_notice"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
30
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
31
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
32 static void
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
33 buddy_typing_cb(GaimAccount *acct, const char *name, void *data) {
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
34 GaimConversation *gconv;
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
35
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
36 if(gaim_prefs_get_bool(PREF_BUDDIES)) {
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
37 if(! gaim_find_buddy(acct, name)) {
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
38 DEBUG_INFO("not in blist, doing nothing\n");
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
39 return;
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
40 }
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
41 }
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
42
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
43 gconv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, name, acct);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
44 if(! gconv) {
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
45 DEBUG_INFO("no previous conversation exists\n");
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
46 gconv = gaim_conversation_new(GAIM_CONV_TYPE_IM, acct, name);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
47 gaim_conversation_present(gconv);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
48
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
49 if(gaim_prefs_get_bool(PREF_NOTICE)) {
12861
6cc43e23ad36 [gaim-migrate @ 15212]
Christopher O'Brien <siege@pidgin.im>
parents: 12859
diff changeset
50 gaim_conversation_write(gconv, NULL,
6cc43e23ad36 [gaim-migrate @ 15212]
Christopher O'Brien <siege@pidgin.im>
parents: 12859
diff changeset
51 _("You feel a disturbance in the force..."),
12859
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
52 GAIM_MESSAGE_NO_LOG, time(NULL));
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
53 }
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
54 }
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
55 }
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
56
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
57
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
58 static GaimPluginPrefFrame *
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
59 get_plugin_pref_frame(GaimPlugin *plugin) {
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
60
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
61 GaimPluginPrefFrame *frame;
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
62 GaimPluginPref *pref;
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
63
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
64 frame = gaim_plugin_pref_frame_new();
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
65
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
66 pref = gaim_plugin_pref_new_with_name(PREF_BUDDIES);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
67 gaim_plugin_pref_set_label(pref, _("Only enable for users in buddy list"));
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
68 gaim_plugin_pref_frame_add(frame, pref);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
69
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
70 pref = gaim_plugin_pref_new_with_name(PREF_NOTICE);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
71 gaim_plugin_pref_set_label(pref, _("Display notification message in"
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
72 " conversations"));
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
73 gaim_plugin_pref_frame_add(frame, pref);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
74
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
75 return frame;
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
76 }
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
77
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
78
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
79 static gboolean
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
80 plugin_load(GaimPlugin *plugin) {
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
81
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
82 void *convs_handle;
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
83 convs_handle = gaim_conversations_get_handle();
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
84
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
85 gaim_signal_connect(convs_handle, "buddy-typing", plugin,
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
86 GAIM_CALLBACK(buddy_typing_cb), NULL);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
87
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
88 return TRUE;
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
89 }
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
90
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
91
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
92 static GaimPluginUiInfo prefs_info = {
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
93 get_plugin_pref_frame,
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
94 0, /* page_num (Reserved) */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
95 NULL, /* frame (Reserved) */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
96 };
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
97
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
98
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
99 static GaimPluginInfo info = {
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
100 GAIM_PLUGIN_MAGIC,
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
101 GAIM_MAJOR_VERSION,
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
102 GAIM_MINOR_VERSION,
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
103 GAIM_PLUGIN_STANDARD, /**< type */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
104 NULL, /**< ui_requirement */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
105 0, /**< flags */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
106 NULL, /**< dependencies */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
107 GAIM_PRIORITY_DEFAULT, /**< priority */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
108
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
109 PLUGIN_ID, /**< id */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
110 PLUGIN_NAME, /**< name */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
111 VERSION, /**< version */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
112 PLUGIN_SUMMARY, /**< summary */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
113 PLUGIN_DESC, /**< description */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
114 PLUGIN_AUTHOR, /**< author */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
115 GAIM_WEBSITE, /**< homepage */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
116
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
117 plugin_load, /**< load */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
118 NULL, /**< unload */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
119 NULL, /**< destroy */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
120
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
121 NULL, /**< ui_info */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
122 NULL, /**< extra_info */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
123 &prefs_info, /**< prefs_info */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
124 NULL, /**< actions */
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
125 };
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
126
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
127
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
128 static void
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
129 init_plugin(GaimPlugin *plugin) {
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
130 gaim_prefs_add_none(PREFS_BASE);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
131 gaim_prefs_add_bool(PREF_BUDDIES, FALSE);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
132 gaim_prefs_add_bool(PREF_NOTICE, TRUE);
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
133 }
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
134
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
135
02e1ef5bc3d5 [gaim-migrate @ 15210]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
136 GAIM_INIT_PLUGIN(psychic, init_plugin, info)