plugins/extplacement.c

Mon, 14 Jun 2004 07:05:10 +0000

author
Tim Ringenbach <marv@pidgin.im>
date
Mon, 14 Jun 2004 07:05:10 +0000
changeset 9281
f8963ac088f6
parent 9251
60b4994e93b8
child 9425
c9dc8ba467f4
permissions
-rw-r--r--

[gaim-migrate @ 10084]
This keeps track of IP addresses that other clients send us, and displays
them in the Get Info dialog. Eventually we'll want to do other stuff with
them, probably.

9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
1 /*
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
2 * Extra conversation placement options for Gaim
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
3 *
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
6 * source distribution.
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
7 *
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
8 * This program is free software; you can redistribute it and/or
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
9 * modify it under the terms of the GNU General Public License
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
10 * as published by the Free Software Foundation; either version 2
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
11 * of the License, or (at your option) any later version.
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
12 *
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
13 * This program is distributed in the hope that it will be useful,
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
16 * GNU General Public License for more details.
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
17 *
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
18 * You should have received a copy of the GNU General Public License
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
19 * along with this program; if not, write to the Free Software
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
21 */
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
22
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
23 #include "internal.h"
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
24 #include "conversation.h"
9215
0d07b7d5a8d6 [gaim-migrate @ 10011]
Nathan Walp <nwalp@pidgin.im>
parents: 9179
diff changeset
25 #include "gtkplugin.h"
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
26
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
27 static void
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
28 conv_placement_by_number(GaimConversation *conv)
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
29 {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
30 GaimConvWindow *win = NULL;
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
31
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
32 win = gaim_get_last_window_with_type(gaim_conversation_get_type(conv));
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
33
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
34 if (win == NULL) {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
35 win = gaim_conv_window_new();
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
36
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
37 gaim_conv_window_add_conversation(win, conv);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
38 gaim_conv_window_show(win);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
39 } else {
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
40 int max_count = gaim_prefs_get_int("/plugins/gtk/extplacement/placement_number");
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
41 int count = gaim_conv_window_get_conversation_count(win);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
42
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
43 if (count < max_count)
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
44 gaim_conv_window_add_conversation(win, conv);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
45 else {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
46 GList *l = NULL;
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
47
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
48 for (l = gaim_get_windows(); l != NULL; l = l->next) {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
49 win = (GaimConvWindow *)l->data;
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
50
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
51 count = gaim_conv_window_get_conversation_count(win);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
52 if (count < max_count) {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
53 gaim_conv_window_add_conversation(win, conv);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
54 return;
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
55 }
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
56 }
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
57 win = gaim_conv_window_new();
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
58
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
59 gaim_conv_window_add_conversation(win, conv);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
60 gaim_conv_window_show(win);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
61 }
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
62 }
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
63 }
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
64
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
65 static gboolean
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
66 plugin_load(GaimPlugin *plugin)
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
67 {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
68 gaim_conv_placement_add_fnc("number", _("By conversation count"),
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
69 &conv_placement_by_number);
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
70 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement");
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
71 return TRUE;
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
72 }
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
73
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
74 static gboolean
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
75 plugin_unload(GaimPlugin *plugin)
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
76 {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
77 gaim_conv_placement_remove_fnc("number");
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
78 gaim_prefs_trigger_callback("/gaim/gtk/conversations/placement");
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
79 return TRUE;
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
80 }
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
81
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
82 static GaimPluginPrefFrame *
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
83 get_plugin_pref_frame(GaimPlugin *plugin) {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
84 GaimPluginPrefFrame *frame;
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
85 GaimPluginPref *ppref;
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
86
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
87 frame = gaim_plugin_pref_frame_new();
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
88
9217
e24b8de727d7 [gaim-migrate @ 10013]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9215
diff changeset
89 ppref = gaim_plugin_pref_new_with_label(_("Conversation Placement"));
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
90 gaim_plugin_pref_frame_add(frame, ppref);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
91
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
92 ppref = gaim_plugin_pref_new_with_name_and_label(
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
93 "/plugins/gtk/extplacement/placement_number",
9217
e24b8de727d7 [gaim-migrate @ 10013]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9215
diff changeset
94 _("Number of conversations per window"));
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
95 gaim_plugin_pref_set_bounds(ppref, 1, 50);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
96 gaim_plugin_pref_frame_add(frame, ppref);
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
97
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
98 return frame;
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
99 }
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
100
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
101 static GaimPluginUiInfo prefs_info = {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
102 get_plugin_pref_frame
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
103 };
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
104
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
105 static GaimPluginInfo info =
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
106 {
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
107 GAIM_PLUGIN_API_VERSION, /**< api_version */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
108 GAIM_PLUGIN_STANDARD, /**< type */
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
109 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
110 0, /**< flags */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
111 NULL, /**< dependencies */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
112 GAIM_PRIORITY_DEFAULT, /**< priority */
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
113 "gtk-extplacement", /**< id */
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
114 N_("ExtPlacement"), /**< name */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
115 VERSION, /**< version */
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
116 N_("Extra conversation placement options."), /**< summary */
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
117 /** description */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
118 N_("Either restrict the number of conversations per windows"
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
119 " or use separate windows for IMs and Chats"),
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
120 "Stu Tomlinson <stu@nosnilmot.com>", /**< author */
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
121 GAIM_WEBSITE, /**< homepage */
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
122 plugin_load, /**< load */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
123 plugin_unload, /**< unload */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
124 NULL, /**< destroy */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
125 NULL, /**< ui_info */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
126 NULL, /**< extra_info */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
127 &prefs_info, /**< prefs_info */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
128 NULL /**< actions */
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
129 };
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
130
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
131 static void
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
132 init_plugin(GaimPlugin *plugin)
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
133 {
9179
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
134 gaim_prefs_add_none("/plugins/gtk/extplacement");
36946139d4bc [gaim-migrate @ 9974]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9157
diff changeset
135 gaim_prefs_add_int("/plugins/gtk/extplacement/placement_number", 4);
9157
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
136 }
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
137
3583ff23ea29 [gaim-migrate @ 9941]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
138 GAIM_INIT_PLUGIN(extplacement, init_plugin, info)

mercurial