finch/gntconv.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 26762
8cd83b679338
child 27699
8f6edef17bf5
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
1 /**
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
2 * @file gntconv.c GNT Conversation API
16255
fa61ee19f526 Rename the Doxygen group from gntui to finch and define the finch group
Richard Laager <rlaager@pidgin.im>
parents: 16190
diff changeset
3 * @ingroup finch
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19986
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19986
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19986
diff changeset
6 /* finch
14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15906
diff changeset
8 * Finch is the legal property of its developers, whose names are too numerous
14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
10 * source distribution.
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
11 *
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
12 * This program is free software; you can redistribute it and/or modify
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
13 * it under the terms of the GNU General Public License as published by
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
15 * (at your option) any later version.
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
16 *
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
17 * This program is distributed in the hope that it will be useful,
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
20 * GNU General Public License for more details.
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
21 *
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
22 * You should have received a copy of the GNU General Public License
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19798
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
14620
90d599495d65 [gaim-migrate @ 17281]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14612
diff changeset
25 */
13958
bd1c3bb3f33d [gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13949
diff changeset
26 #include <string.h>
14028
eefce1b0c4e3 [gaim-migrate @ 16522]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
27
18273
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18173
diff changeset
28 #include "finch.h"
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18173
diff changeset
29
14028
eefce1b0c4e3 [gaim-migrate @ 16522]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
30 #include <cmds.h>
15821
26ca6a5c7668 Make 'last message sent' idleness work. Should we be doing gaim_idle_touch from somewhere inside libpurple instead?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15373
diff changeset
31 #include <idle.h>
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
32 #include <prefs.h>
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33 #include <util.h>
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
35 #include "gntaccount.h"
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
36 #include "gntblist.h"
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 #include "gntconv.h"
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
38 #include "gntdebug.h"
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
39 #include "gntlog.h"
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
40 #include "gntplugin.h"
23374
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
41 #include "gntpounce.h"
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
42 #include "gntprefs.h"
23374
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
43 #include "gntrequest.h"
19612
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
44 #include "gntsound.h"
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14153
diff changeset
45 #include "gntstatus.h"
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47 #include "gnt.h"
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
48 #include "gntbox.h"
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
49 #include "gntentry.h"
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
50 #include "gntlabel.h"
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
51 #include "gntmenu.h"
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
52 #include "gntmenuitem.h"
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
53 #include "gntmenuitemcheck.h"
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
54 #include "gntstyle.h"
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
55 #include "gnttextview.h"
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
56 #include "gnttree.h"
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
57 #include "gntutils.h"
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
58 #include "gntwindow.h"
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16255
diff changeset
60 #define PREF_ROOT "/finch/conversations"
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
61 #define PREF_CHAT PREF_ROOT "/chats"
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
62 #define PREF_USERLIST PREF_CHAT "/userlist"
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
63
14253
b63ebf84c42b This is a hand-crafted commit to migrate across subversion revisions
Ethan Blanton <elb@pidgin.im>
parents: 14188
diff changeset
64 #include "config.h"
b63ebf84c42b This is a hand-crafted commit to migrate across subversion revisions
Ethan Blanton <elb@pidgin.im>
parents: 14188
diff changeset
65
17076
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
66 static void finch_write_common(PurpleConversation *conv, const char *who,
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
67 const char *message, PurpleMessageFlags flags, time_t mtime);
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
68 static void generate_send_to_menu(FinchConv *ggc);
17076
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
69
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
70 static int color_message_receive;
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
71 static int color_message_send;
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
72 static int color_message_highlight;
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
73 static int color_message_action;
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
74 static int color_timestamp;
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
75
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
76 static PurpleBuddy *
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
77 find_buddy_for_conversation(PurpleConversation *conv)
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
78 {
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
79 return purple_find_buddy(purple_conversation_get_account(conv),
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
80 purple_conversation_get_name(conv));
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
81 }
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
82
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
83 static PurpleChat *
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
84 find_chat_for_conversation(PurpleConversation *conv)
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
85 {
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
86 return purple_blist_find_chat(purple_conversation_get_account(conv),
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
87 purple_conversation_get_name(conv));
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
88 }
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
89
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
90 static PurpleBlistNode *
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
91 get_conversation_blist_node(PurpleConversation *conv)
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
92 {
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
93 PurpleBlistNode *node = NULL;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
94
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
95 switch (purple_conversation_get_type(conv)) {
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
96 case PURPLE_CONV_TYPE_IM:
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
97 node = (PurpleBlistNode*)find_buddy_for_conversation(conv);
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
98 node = node ? purple_blist_node_get_parent(node) : NULL;
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
99 break;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
100 case PURPLE_CONV_TYPE_CHAT:
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
101 node = (PurpleBlistNode*)find_chat_for_conversation(conv);
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
102 break;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
103 default:
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
104 break;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
105 }
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
106 return node;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
107 }
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
108
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
109 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
110 send_typing_notification(GntWidget *w, FinchConv *ggconv)
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
111 {
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
112 const char *text = gnt_entry_get_text(GNT_ENTRY(ggconv->entry));
17854
7c5d9ee6846a Do not send typing notification if you are typing a /-command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
113 gboolean empty = (!text || !*text || (*text == '/'));
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16255
diff changeset
114 if (purple_prefs_get_bool("/finch/conversations/notify_typing")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
115 PurpleConversation *conv = ggconv->active_conv;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
116 PurpleConvIm *im = PURPLE_CONV_IM(conv);
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
117 if (!empty) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
118 gboolean send = (purple_conv_im_get_send_typed_timeout(im) == 0);
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
119
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
120 purple_conv_im_stop_send_typed_timeout(im);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
121 purple_conv_im_start_send_typed_timeout(im);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
122 if (send || (purple_conv_im_get_type_again(im) != 0 &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
123 time(NULL) > purple_conv_im_get_type_again(im))) {
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
124 unsigned int timeout;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
125 timeout = serv_send_typing(purple_conversation_get_gc(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
126 purple_conversation_get_name(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
127 PURPLE_TYPING);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
128 purple_conv_im_set_type_again(im, timeout);
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
129 }
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
130 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
131 purple_conv_im_stop_send_typed_timeout(im);
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
132
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
133 serv_send_typing(purple_conversation_get_gc(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
134 purple_conversation_get_name(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
135 PURPLE_NOT_TYPING);
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
136 }
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
137 }
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
138 }
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
139
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
140 static void
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
141 entry_key_pressed(GntWidget *w, FinchConv *ggconv)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
142 {
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
143 const char *text = gnt_entry_get_text(GNT_ENTRY(ggconv->entry));
23503
9a0d740df39f Send '//message' as '/message', instead of looking for a 'message' command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23452
diff changeset
144 if (*text == '/' && *(text + 1) != '/')
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145 {
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
146 PurpleConversation *conv = ggconv->active_conv;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
147 PurpleCmdStatus status;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
148 const char *cmdline = text + 1;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
149 char *error = NULL, *escape;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
150
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
151 escape = g_markup_escape_text(cmdline, -1);
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
152 status = purple_cmd_do_command(conv, cmdline, escape, &error);
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
153 g_free(escape);
14028
eefce1b0c4e3 [gaim-migrate @ 16522]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
154
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
155 switch (status)
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
156 {
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
157 case PURPLE_CMD_STATUS_OK:
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
158 break;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
159 case PURPLE_CMD_STATUS_NOT_FOUND:
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
160 purple_conversation_write(conv, "", _("No such command."),
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
161 PURPLE_MESSAGE_NO_LOG, time(NULL));
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
162 break;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
163 case PURPLE_CMD_STATUS_WRONG_ARGS:
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
164 purple_conversation_write(conv, "", _("Syntax Error: You typed the wrong number of arguments "
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
165 "to that command."),
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
166 PURPLE_MESSAGE_NO_LOG, time(NULL));
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
167 break;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
168 case PURPLE_CMD_STATUS_FAILED:
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
169 purple_conversation_write(conv, "", error ? error : _("Your command failed for an unknown reason."),
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
170 PURPLE_MESSAGE_NO_LOG, time(NULL));
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
171 break;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
172 case PURPLE_CMD_STATUS_WRONG_TYPE:
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
173 if(purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
174 purple_conversation_write(conv, "", _("That command only works in chats, not IMs."),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
175 PURPLE_MESSAGE_NO_LOG, time(NULL));
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
176 else
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
177 purple_conversation_write(conv, "", _("That command only works in IMs, not chats."),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
178 PURPLE_MESSAGE_NO_LOG, time(NULL));
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
179 break;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
180 case PURPLE_CMD_STATUS_WRONG_PRPL:
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
181 purple_conversation_write(conv, "", _("That command doesn't work on this protocol."),
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
182 PURPLE_MESSAGE_NO_LOG, time(NULL));
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
183 break;
14000
aab306afdc43 [gaim-migrate @ 16469]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13993
diff changeset
184 }
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
185 g_free(error);
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
186 }
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
187 else if (!purple_account_is_connected(purple_conversation_get_account(ggconv->active_conv)))
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
188 {
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
189 purple_conversation_write(ggconv->active_conv, "", _("Message was not sent, because you are not signed on."),
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
190 PURPLE_MESSAGE_ERROR | PURPLE_MESSAGE_NO_LOG, time(NULL));
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
191 }
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
192 else
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
193 {
23503
9a0d740df39f Send '//message' as '/message', instead of looking for a 'message' command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23452
diff changeset
194 char *escape = g_markup_escape_text((*text == '/' ? text + 1 : text), -1);
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
195 char *apos = purple_strreplace(escape, "&apos;", "'");
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
196 g_free(escape);
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
197 escape = apos;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
198 switch (purple_conversation_get_type(ggconv->active_conv))
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
199 {
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
200 case PURPLE_CONV_TYPE_IM:
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
201 purple_conv_im_send_with_flags(PURPLE_CONV_IM(ggconv->active_conv), escape, PURPLE_MESSAGE_SEND);
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
202 break;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
203 case PURPLE_CONV_TYPE_CHAT:
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
204 purple_conv_chat_send(PURPLE_CONV_CHAT(ggconv->active_conv), escape);
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
205 break;
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
206 default:
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
207 g_free(escape);
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
208 g_return_if_reached();
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209 }
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
210 g_free(escape);
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
211 purple_idle_touch();
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
212 }
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
213 gnt_entry_add_to_history(GNT_ENTRY(ggconv->entry), text);
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
214 gnt_entry_clear(GNT_ENTRY(ggconv->entry));
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
215 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
216
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
217 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
218 closing_window(GntWidget *window, FinchConv *ggconv)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
219 {
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
220 GList *list = ggconv->list;
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
221 ggconv->window = NULL;
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
222 while (list) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
223 PurpleConversation *conv = list->data;
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
224 list = list->next;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
225 purple_conversation_destroy(conv);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
226 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
227 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
228
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
229 static void
14923
ccb42b285510 [gaim-migrate @ 17630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14884
diff changeset
230 size_changed_cb(GntWidget *widget, int width, int height)
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
231 {
14923
ccb42b285510 [gaim-migrate @ 17630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14884
diff changeset
232 int w, h;
ccb42b285510 [gaim-migrate @ 17630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14884
diff changeset
233 gnt_widget_get_size(widget, &w, &h);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
234 purple_prefs_set_int(PREF_ROOT "/size/width", w);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
235 purple_prefs_set_int(PREF_ROOT "/size/height", h);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
236 }
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
237
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
238 static void
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
239 save_position_cb(GntWidget *w, int x, int y)
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
240 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
241 purple_prefs_set_int(PREF_ROOT "/position/x", x);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
242 purple_prefs_set_int(PREF_ROOT "/position/y", y);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
243 }
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
244
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
245 static PurpleConversation *
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
246 find_conv_with_contact(PurpleAccount *account, const char *name)
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
247 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
248 PurpleBlistNode *node;
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
249 PurpleBuddy *buddy = purple_find_buddy(account, name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
250 PurpleConversation *ret = NULL;
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
251
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
252 if (!buddy)
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
253 return NULL;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
254
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
255 for (node = purple_blist_node_get_first_child(purple_blist_node_get_parent((PurpleBlistNode*)buddy));
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
256 node; node = purple_blist_node_get_sibling_next(node)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
257 if (node == (PurpleBlistNode*)buddy)
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
258 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
259 if ((ret = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
260 purple_buddy_get_name((PurpleBuddy*)node), purple_buddy_get_account((PurpleBuddy*)node))) != NULL)
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
261 break;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
262 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
263 return ret;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
264 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
265
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
266 static char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
267 get_conversation_title(PurpleConversation *conv, PurpleAccount *account)
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
268 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
269 return g_strdup_printf(_("%s (%s -- %s)"), purple_conversation_get_title(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
270 purple_account_get_username(account), purple_account_get_protocol_name(account));
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
271 }
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
272
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
273 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
274 update_buddy_typing(PurpleAccount *account, const char *who, gpointer null)
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
275 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
276 PurpleConversation *conv;
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
277 FinchConv *ggc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
278 PurpleConvIm *im = NULL;
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
279 char *title, *str;
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
280
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
281 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, account);
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
282
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
283 if (!conv)
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
284 return;
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
285
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
286 im = PURPLE_CONV_IM(conv);
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
287 ggc = FINCH_GET_DATA(conv);
14750
1dad59ae254d [gaim-migrate @ 17440]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14620
diff changeset
288
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
289 if (purple_conv_im_get_typing_state(im) == PURPLE_TYPING) {
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
290 int scroll;
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
291 str = get_conversation_title(conv, account);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
292 title = g_strdup_printf(_("%s [%s]"), str,
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
293 gnt_ascii_only() ? "T" : "\342\243\277");
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
294 g_free(str);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
295
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
296 scroll = gnt_text_view_get_lines_below(GNT_TEXT_VIEW(ggc->tv));
22573
54822222d0cc Patch from Kyle Turman to show the alias when available in the typing notification. Closes #4957.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22556
diff changeset
297 str = g_strdup_printf(_("\n%s is typing..."), purple_conversation_get_title(conv));
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
298 /* Updating is a little buggy. So just remove and add a new one */
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
299 gnt_text_view_tag_change(GNT_TEXT_VIEW(ggc->tv), "typing", NULL, TRUE);
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
300 gnt_text_view_append_text_with_tag(GNT_TEXT_VIEW(ggc->tv),
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
301 str, GNT_TEXT_FLAG_DIM, "typing");
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
302 g_free(str);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
303 if (scroll <= 1)
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
304 gnt_text_view_scroll(GNT_TEXT_VIEW(ggc->tv), 0);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
305 } else {
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
306 title = get_conversation_title(conv, account);
18935
902fd1b53149 Just show an empty line, instead of bouncing the text down when the user
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18605
diff changeset
307 gnt_text_view_tag_change(GNT_TEXT_VIEW(ggc->tv), "typing", " ", TRUE);
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
308 }
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
309 gnt_screen_rename_widget(ggc->window, title);
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
310 g_free(title);
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
311 }
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
312
17076
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
313 static void
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
314 chat_left_cb(PurpleConversation *conv, gpointer null)
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
315 {
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
316 finch_write_common(conv, NULL, _("You have left this chat."),
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
317 PURPLE_MESSAGE_SYSTEM, time(NULL));
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
318 }
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
319
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
320 static void
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
321 buddy_signed_on_off(PurpleBuddy *buddy, gpointer null)
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
322 {
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
323 PurpleConversation *conv = find_conv_with_contact(purple_buddy_get_account(buddy), purple_buddy_get_name(buddy));
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
324 if (conv == NULL)
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
325 return;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
326 generate_send_to_menu(FINCH_GET_DATA(conv));
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
327 }
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
328
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
329 static void
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
330 account_signed_on_off(PurpleConnection *gc, gpointer null)
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
331 {
20315
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
332 GList *list = purple_get_ims();
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
333 while (list) {
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
334 PurpleConversation *conv = list->data;
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
335 PurpleConversation *cc = find_conv_with_contact(
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
336 purple_conversation_get_account(conv), purple_conversation_get_name(conv));
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
337 if (cc)
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
338 generate_send_to_menu(FINCH_GET_DATA(cc));
20315
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
339 list = list->next;
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
340 }
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
341
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
342 if (PURPLE_CONNECTION_IS_CONNECTED(gc)) {
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
343 /* We just signed on. Let's see if there's any chat that we have open,
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
344 * and hadn't left before the disconnect. */
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
345 list = purple_get_chats();
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
346 while (list) {
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
347 PurpleConversation *conv = list->data;
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
348 PurpleChat *chat;
20622
30e148be3e2c Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20330
diff changeset
349 GHashTable *comps = NULL;
20315
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
350
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
351 list = list->next;
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
352 if (purple_conversation_get_account(conv) != purple_connection_get_account(gc) ||
20315
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
353 !purple_conversation_get_data(conv, "want-to-rejoin"))
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
354 continue;
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
355
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
356 chat = find_chat_for_conversation(conv);
20315
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
357 if (chat == NULL) {
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
358 PurplePluginProtocolInfo *info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
359 if (info->chat_info_defaults != NULL)
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
360 comps = info->chat_info_defaults(gc, purple_conversation_get_name(conv));
20622
30e148be3e2c Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20330
diff changeset
361 } else {
22341
ed341c90116e Add accessor and update finch to not touch the internals of PurpleBuddy and PurpleChat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22339
diff changeset
362 comps = purple_chat_get_components(chat);
20315
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
363 }
20622
30e148be3e2c Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20330
diff changeset
364 serv_join_chat(gc, comps);
30e148be3e2c Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20330
diff changeset
365 if (chat == NULL && comps != NULL)
30e148be3e2c Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20330
diff changeset
366 g_hash_table_destroy(comps);
20315
21fbfe31160a If there's a chat open when an account gets disconnected because of an error,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19986
diff changeset
367 }
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
368 }
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
369 }
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
370
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
371 static gpointer
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21859
diff changeset
372 finch_conv_get_handle(void)
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
373 {
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
374 static int handle;
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
375 return &handle;
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
376 }
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
377
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
378 static void
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
379 clear_scrollback_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
380 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
381 FinchConv *ggc = ggconv;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
382 gnt_text_view_clear(GNT_TEXT_VIEW(ggc->tv));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
383 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
384
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
385 static void
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
386 send_file_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
387 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
388 FinchConv *ggc = ggconv;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
389 serv_send_file(purple_conversation_get_gc(ggc->active_conv),
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
390 purple_conversation_get_name(ggc->active_conv), NULL);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
391 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
392
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
393 static void
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
394 add_pounce_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
395 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
396 FinchConv *ggc = ggconv;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
397 finch_pounce_editor_show(
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
398 purple_conversation_get_account(ggc->active_conv),
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
399 purple_conversation_get_name(ggc->active_conv), NULL);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
400 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
401
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
402 static void
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
403 get_info_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
404 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
405 FinchConv *ggc = ggconv;
17360
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17164
diff changeset
406 finch_retrieve_user_info(purple_conversation_get_gc(ggc->active_conv),
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
407 purple_conversation_get_name(ggc->active_conv));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
408 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
409
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
410 static void
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
411 toggle_timestamps_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
412 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
413 purple_prefs_set_bool(PREF_ROOT "/timestamps",
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
414 !purple_prefs_get_bool(PREF_ROOT "/timestamps"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
415 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
416
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
417 static void
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
418 toggle_logging_cb(GntMenuItem *item, gpointer ggconv)
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
419 {
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
420 FinchConv *fc = ggconv;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
421 PurpleConversation *conv = fc->active_conv;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
422 gboolean logging = gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item));
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
423 GList *iter;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
424
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
425 if (logging == purple_conversation_is_logging(conv))
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
426 return;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
427
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
428 /* Xerox */
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
429 if (logging) {
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
430 /* Enable logging first so the message below can be logged. */
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
431 purple_conversation_set_logging(conv, TRUE);
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
432
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
433 purple_conversation_write(conv, NULL,
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
434 _("Logging started. Future messages in this conversation will be logged."),
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
435 PURPLE_MESSAGE_SYSTEM, time(NULL));
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
436 } else {
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
437 purple_conversation_write(conv, NULL,
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
438 _("Logging stopped. Future messages in this conversation will not be logged."),
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
439 PURPLE_MESSAGE_SYSTEM, time(NULL));
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
440
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
441 /* Disable the logging second, so that the above message can be logged. */
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
442 purple_conversation_set_logging(conv, FALSE);
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
443 }
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
444
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
445 /* Each conversation with the same person will have the same logging setting */
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
446 for (iter = fc->list; iter; iter = iter->next) {
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
447 if (iter->data == conv)
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
448 continue;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
449 purple_conversation_set_logging(iter->data, logging);
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
450 }
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
451 }
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
452
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
453 static void
19612
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
454 toggle_sound_cb(GntMenuItem *item, gpointer ggconv)
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
455 {
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
456 FinchConv *fc = ggconv;
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
457 PurpleBlistNode *node = get_conversation_blist_node(fc->active_conv);
19612
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
458 fc->flags ^= FINCH_CONV_NO_SOUND;
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
459 if (node)
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
460 purple_blist_node_set_bool(node, "gnt-mute-sound", !!(fc->flags & FINCH_CONV_NO_SOUND));
19612
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
461 }
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
462
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
463 static void
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
464 send_to_cb(GntMenuItem *m, gpointer n)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
465 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
466 PurpleAccount *account = g_object_get_data(G_OBJECT(m), "purple_account");
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
467 gchar *buddy = g_object_get_data(G_OBJECT(m), "purple_buddy_name");
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
468 PurpleConversation *conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, buddy);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
469 finch_conversation_set_active(conv);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
470 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
471
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
472 static void
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
473 view_log_cb(GntMenuItem *n, gpointer ggc)
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
474 {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
475 FinchConv *fc;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
476 PurpleConversation *conv;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
477 PurpleLogType type;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
478 const char *name;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
479 PurpleAccount *account;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
480 GSList *buddies;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
481 GSList *cur;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
482
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
483 fc = ggc;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
484 conv = fc->active_conv;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
485
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
486 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
487 type = PURPLE_LOG_IM;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
488 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT)
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
489 type = PURPLE_LOG_CHAT;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
490 else
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
491 return;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
492
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
493 name = purple_conversation_get_name(conv);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
494 account = purple_conversation_get_account(conv);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
495
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
496 buddies = purple_find_buddies(account, name);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
497 for (cur = buddies; cur != NULL; cur = cur->next) {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
498 PurpleBlistNode *node = cur->data;
24951
d0837696fd3a Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24456
diff changeset
499 if ((node != NULL) &&
d0837696fd3a Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24456
diff changeset
500 (purple_blist_node_get_sibling_prev(node) || purple_blist_node_get_sibling_next(node))) {
d0837696fd3a Struct hiding for Finch. PurpleChat:alias and PurpleContact:totalsize are still used.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24456
diff changeset
501 finch_log_show_contact((PurpleContact *)purple_blist_node_get_parent(node));
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
502 g_slist_free(buddies);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
503 return;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
504 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
505 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
506 g_slist_free(buddies);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
507
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
508 finch_log_show(type, name, account);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
509 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
510
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
511 static void
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
512 generate_send_to_menu(FinchConv *ggc)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
513 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
514 GntWidget *sub, *menu = ggc->menu;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
515 GntMenuItem *item;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
516 GSList *buds;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
517 GList *list = NULL;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
518
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
519 buds = purple_find_buddies(purple_conversation_get_account(ggc->active_conv),
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
520 purple_conversation_get_name(ggc->active_conv));
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
521 if (!buds)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
522 return;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
523
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
524 if ((item = ggc->u.im->sendto) == NULL) {
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
525 item = gnt_menuitem_new(_("Send To"));
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
526 gnt_menu_add_item(GNT_MENU(menu), item);
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
527 ggc->u.im->sendto = item;
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
528 }
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
529 sub = gnt_menu_new(GNT_MENU_POPUP);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
530 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
531
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
532 for (; buds; buds = g_slist_delete_link(buds, buds)) {
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24951
diff changeset
533 PurpleBlistNode *node = PURPLE_BLIST_NODE(purple_buddy_get_contact(PURPLE_BUDDY(buds->data)));
22334
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
534 for (node = purple_blist_node_get_first_child(node); node != NULL;
6eec04817c0d Add API so Finch doesn't need to touch the internals of PurpleBlistNode.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
535 node = purple_blist_node_get_sibling_next(node)) {
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
536 PurpleBuddy *buddy = (PurpleBuddy *)node;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
537 PurpleAccount *account = purple_buddy_get_account(buddy);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
538 if (purple_account_is_connected(account)) {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
539 /* Use the PurplePresence to get unique buddies. */
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
540 PurplePresence *presence = purple_buddy_get_presence(buddy);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
541 if (!g_list_find(list, presence))
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
542 list = g_list_prepend(list, presence);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
543 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
544 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
545 }
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
546 for (list = g_list_reverse(list); list != NULL; list = g_list_delete_link(list, list)) {
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
547 PurplePresence *pre = list->data;
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
548 PurpleBuddy *buddy = purple_presence_get_buddy(pre);
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
549 PurpleAccount *account = purple_buddy_get_account(buddy);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
550 gchar *name = g_strdup(purple_buddy_get_name(buddy));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
551 gchar *text = g_strdup_printf("%s (%s)", purple_buddy_get_name(buddy), purple_account_get_username(account));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
552 item = gnt_menuitem_new(text);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
553 g_free(text);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
554 gnt_menu_add_item(GNT_MENU(sub), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
555 gnt_menuitem_set_callback(item, send_to_cb, NULL);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
556 g_object_set_data(G_OBJECT(item), "purple_account", account);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
557 g_object_set_data_full(G_OBJECT(item), "purple_buddy_name", name, g_free);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
558 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
559 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
560
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
561 static void
23374
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
562 invite_cb(GntMenuItem *item, gpointer ggconv)
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
563 {
26762
8cd83b679338 Open a chat-invite dialog when a buddy is dragged onto a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24974
diff changeset
564 FinchConv *fc = ggconv;
8cd83b679338 Open a chat-invite dialog when a buddy is dragged onto a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24974
diff changeset
565 PurpleConversation *conv = fc->active_conv;
8cd83b679338 Open a chat-invite dialog when a buddy is dragged onto a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24974
diff changeset
566 purple_conv_chat_invite_user(PURPLE_CONV_CHAT(conv), NULL, NULL, TRUE);
23374
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
567 }
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
568
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
569 static void
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
570 gg_create_menu(FinchConv *ggc)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
571 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
572 GntWidget *menu, *sub;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
573 GntMenuItem *item;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
574
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
575 ggc->menu = menu = gnt_menu_new(GNT_MENU_TOPLEVEL);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
576 gnt_window_set_menu(GNT_WINDOW(ggc->window), GNT_MENU(menu));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
577
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
578 item = gnt_menuitem_new(_("Conversation"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
579 gnt_menu_add_item(GNT_MENU(menu), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
580
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
581 sub = gnt_menu_new(GNT_MENU_POPUP);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
582 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
583
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
584 item = gnt_menuitem_new(_("Clear Scrollback"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
585 gnt_menu_add_item(GNT_MENU(sub), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
586 gnt_menuitem_set_callback(item, clear_scrollback_cb, ggc);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
587
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
588 item = gnt_menuitem_check_new(_("Show Timestamps"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
589 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
590 purple_prefs_get_bool(PREF_ROOT "/timestamps"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
591 gnt_menu_add_item(GNT_MENU(sub), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
592 gnt_menuitem_set_callback(item, toggle_timestamps_cb, ggc);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
593
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
594 if (purple_conversation_get_type(ggc->active_conv) == PURPLE_CONV_TYPE_IM) {
17018
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
595 PurpleAccount *account = purple_conversation_get_account(ggc->active_conv);
22335
f6715418a9a8 Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22334
diff changeset
596 PurpleConnection *gc = purple_account_get_connection(account);
22336
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
597 PurplePluginProtocolInfo *pinfo =
ac905bb0a8ec Add accessor and update finch to not touch the internals of PurpleConnection.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22335
diff changeset
598 gc ? PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)) : NULL;
17018
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
599
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
600 if (pinfo && pinfo->get_info) {
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
601 item = gnt_menuitem_new(_("Get Info"));
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
602 gnt_menu_add_item(GNT_MENU(sub), item);
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
603 gnt_menuitem_set_callback(item, get_info_cb, ggc);
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
604 }
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
605
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
606 item = gnt_menuitem_new(_("Add Buddy Pounce..."));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
607 gnt_menu_add_item(GNT_MENU(sub), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
608 gnt_menuitem_set_callback(item, add_pounce_cb, ggc);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
609
17018
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
610 if (pinfo && pinfo->send_file &&
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
611 (!pinfo->can_receive_file ||
22335
f6715418a9a8 Update finch to not touch the internals of PurpleAccount. This also includes a change I made to reduce the Cyclomatic Complexity of one of the functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22334
diff changeset
612 pinfo->can_receive_file(gc, purple_conversation_get_name(ggc->active_conv)))) {
17018
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
613 item = gnt_menuitem_new(_("Send File"));
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
614 gnt_menu_add_item(GNT_MENU(sub), item);
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
615 gnt_menuitem_set_callback(item, send_file_cb, ggc);
18b76ac05780 Change a string, and make sure non-functional items are not added in the conversation window menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16986
diff changeset
616 }
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
617
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
618 generate_send_to_menu(ggc);
23374
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
619 } else if (purple_conversation_get_type(ggc->active_conv) == PURPLE_CONV_TYPE_CHAT) {
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
620 item = gnt_menuitem_new(_("Invite..."));
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
621 gnt_menu_add_item(GNT_MENU(sub), item);
70c054708da7 Add an invite menu for chats
Richard Nelson <wabz@pidgin.im>
parents: 22840
diff changeset
622 gnt_menuitem_set_callback(item, invite_cb, ggc);
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
623 }
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
624
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
625 item = gnt_menuitem_new(_("View Log..."));
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
626 gnt_menu_add_item(GNT_MENU(sub), item);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
627 gnt_menuitem_set_callback(item, view_log_cb, ggc);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
628
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
629 item = gnt_menuitem_check_new(_("Enable Logging"));
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
630 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
631 purple_conversation_is_logging(ggc->active_conv));
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
632 gnt_menu_add_item(GNT_MENU(sub), item);
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
633 gnt_menuitem_set_callback(item, toggle_logging_cb, ggc);
19612
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
634
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
635 item = gnt_menuitem_check_new(_("Enable Sounds"));
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
636 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
637 !(ggc->flags & FINCH_CONV_NO_SOUND));
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
638 gnt_menu_add_item(GNT_MENU(sub), item);
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
639 gnt_menuitem_set_callback(item, toggle_sound_cb, ggc);
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
640 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
641
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
642 static void
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
643 create_conv_from_userlist(GntWidget *widget, FinchConv *fc)
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
644 {
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
645 PurpleAccount *account = purple_conversation_get_account(fc->active_conv);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
646 char *name = gnt_tree_get_selection_data(GNT_TREE(widget));
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
647 purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
648 }
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
649
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
650 static void
18173
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
651 gained_focus_cb(GntWindow *window, FinchConv *fc)
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
652 {
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
653 GList *iter;
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
654 for (iter = fc->list; iter; iter = iter->next) {
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
655 purple_conversation_set_data(iter->data, "unseen-count", 0);
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
656 purple_conversation_update(iter->data, PURPLE_CONV_UPDATE_UNSEEN);
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
657 }
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
658 }
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
659
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
660 static void
18423
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
661 completion_cb(GntEntry *entry, const char *start, const char *end)
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
662 {
23556
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
663 if (start == entry->start && *start != '/')
18423
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
664 gnt_widget_key_pressed(GNT_WIDGET(entry), ": ");
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
665 }
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
666
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
667 static void
23556
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
668 gg_setup_commands(FinchConv *fconv, gboolean remove_first)
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
669 {
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
670 GList *commands;
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
671 char command[256] = "/";
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
672
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
673 if (remove_first) {
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
674 commands = purple_cmd_list(NULL);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
675 for (; commands; commands = g_list_delete_link(commands, commands)) {
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
676 g_strlcpy(command + 1, commands->data, sizeof(command) - 1);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
677 gnt_entry_remove_suggest(GNT_ENTRY(fconv->entry), command);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
678 }
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
679 }
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
680
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
681 commands = purple_cmd_list(fconv->active_conv);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
682 for (; commands; commands = g_list_delete_link(commands, commands)) {
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
683 g_strlcpy(command + 1, commands->data, sizeof(command) - 1);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
684 gnt_entry_add_suggest(GNT_ENTRY(fconv->entry), command);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
685 }
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
686 }
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
687
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
688 static void
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
689 cmd_added_cb(const char *cmd, PurpleCmdPriority prior, PurpleCmdFlag flags,
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
690 FinchConv *fconv)
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
691 {
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
692 gg_setup_commands(fconv, TRUE);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
693 }
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
694
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
695 static void
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
696 cmd_removed_cb(const char *cmd, FinchConv *fconv)
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
697 {
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
698 char command[256] = "/";
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
699 g_strlcpy(command + 1, cmd, sizeof(command) - 1);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
700 gnt_entry_remove_suggest(GNT_ENTRY(fconv->entry), command);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
701 gg_setup_commands(fconv, TRUE);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
702 }
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
703
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
704 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
705 finch_create_conversation(PurpleConversation *conv)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
706 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
707 FinchConv *ggc = FINCH_GET_DATA(conv);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
708 char *title;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
709 PurpleConversationType type;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
710 PurpleConversation *cc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
711 PurpleAccount *account;
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
712 PurpleBlistNode *convnode = NULL;
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
713
22556
dc08052dcac2 Make sure an existing conversation selected from the 'Send IM' dialog is given the focus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22410
diff changeset
714 if (ggc) {
dc08052dcac2 Make sure an existing conversation selected from the 'Send IM' dialog is given the focus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22410
diff changeset
715 gnt_window_present(ggc->window);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
716 return;
22556
dc08052dcac2 Make sure an existing conversation selected from the 'Send IM' dialog is given the focus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22410
diff changeset
717 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
718
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
719 account = purple_conversation_get_account(conv);
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
720 cc = find_conv_with_contact(account, purple_conversation_get_name(conv));
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
721 if (cc && FINCH_GET_DATA(cc))
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
722 ggc = FINCH_GET_DATA(cc);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
723 else
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
724 ggc = g_new0(FinchConv, 1);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
725
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
726 /* Each conversation with the same person will have the same logging setting */
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
727 if (ggc->list) {
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
728 purple_conversation_set_logging(conv,
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
729 purple_conversation_is_logging(ggc->list->data));
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
730 }
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
731
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
732 ggc->list = g_list_prepend(ggc->list, conv);
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
733 ggc->active_conv = conv;
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
734 FINCH_SET_DATA(conv, ggc);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
735
22840
7a5dbaf5a914 Fix a crash which I think happens when the same buddy is in the buddylist
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22573
diff changeset
736 if (cc && FINCH_GET_DATA(cc) && cc != conv) {
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
737 finch_conversation_set_active(conv);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
738 return;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
739 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
740
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
741 type = purple_conversation_get_type(conv);
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
742 title = get_conversation_title(conv, account);
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
743
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
744 ggc->window = gnt_vwindow_new(FALSE);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
745 gnt_box_set_title(GNT_BOX(ggc->window), title);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
746 gnt_box_set_toplevel(GNT_BOX(ggc->window), TRUE);
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
747 gnt_box_set_pad(GNT_BOX(ggc->window), 0);
18305
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
748
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
749 switch (purple_conversation_get_type(conv)) {
18305
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
750 case PURPLE_CONV_TYPE_UNKNOWN:
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
751 gnt_widget_set_name(ggc->window, "conversation-window-unknown" );
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
752 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
753 case PURPLE_CONV_TYPE_IM:
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
754 gnt_widget_set_name(ggc->window, "conversation-window-im" );
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
755 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
756 case PURPLE_CONV_TYPE_CHAT:
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
757 gnt_widget_set_name(ggc->window, "conversation-window-chat" );
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
758 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
759 case PURPLE_CONV_TYPE_MISC:
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
760 gnt_widget_set_name(ggc->window, "conversation-window-misc" );
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
761 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
762 case PURPLE_CONV_TYPE_ANY:
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
763 gnt_widget_set_name(ggc->window, "conversation-window-any" );
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
764 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
765 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
766
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
767 ggc->tv = gnt_text_view_new();
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
768 gnt_widget_set_name(ggc->tv, "conversation-window-textview");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
769 gnt_widget_set_size(ggc->tv, purple_prefs_get_int(PREF_ROOT "/size/width"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
770 purple_prefs_get_int(PREF_ROOT "/size/height"));
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
771
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
772 if (type == PURPLE_CONV_TYPE_CHAT) {
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
773 GntWidget *hbox, *tree;
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
774 FinchConvChat *fc = ggc->u.chat = g_new0(FinchConvChat, 1);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
775 hbox = gnt_hbox_new(FALSE);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
776 gnt_box_set_pad(GNT_BOX(hbox), 0);
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
777 tree = fc->userlist = gnt_tree_new_with_columns(2);
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
778 gnt_tree_set_col_width(GNT_TREE(tree), 0, 1); /* The flag column */
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
779 gnt_tree_set_compare_func(GNT_TREE(tree), (GCompareFunc)g_utf8_collate);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
780 gnt_tree_set_hash_fns(GNT_TREE(tree), g_str_hash, g_str_equal, g_free);
19798
73b881a6c1f9 Use the proper column for searching users in the chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19672
diff changeset
781 gnt_tree_set_search_column(GNT_TREE(tree), 1);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
782 GNT_WIDGET_SET_FLAGS(tree, GNT_WIDGET_NO_BORDER);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
783 gnt_box_add_widget(GNT_BOX(hbox), ggc->tv);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
784 gnt_box_add_widget(GNT_BOX(hbox), tree);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
785 gnt_box_add_widget(GNT_BOX(ggc->window), hbox);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
786 g_signal_connect(G_OBJECT(tree), "activate", G_CALLBACK(create_conv_from_userlist), ggc);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
787 gnt_widget_set_visible(tree, purple_prefs_get_bool(PREF_USERLIST));
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
788 } else {
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
789 ggc->u.im = g_new0(FinchConvIm, 1);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
790 gnt_box_add_widget(GNT_BOX(ggc->window), ggc->tv);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
791 }
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
792
16190
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
793 ggc->info = gnt_vbox_new(FALSE);
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
794 gnt_box_add_widget(GNT_BOX(ggc->window), ggc->info);
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
795
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
796 ggc->entry = gnt_entry_new(NULL);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
797 gnt_box_add_widget(GNT_BOX(ggc->window), ggc->entry);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
798 gnt_widget_set_name(ggc->entry, "conversation-window-entry");
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
799 gnt_entry_set_history_length(GNT_ENTRY(ggc->entry), -1);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
800 gnt_entry_set_word_suggest(GNT_ENTRY(ggc->entry), TRUE);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
801 gnt_entry_set_always_suggest(GNT_ENTRY(ggc->entry), FALSE);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
802
16186
73cb5b43aaf9 Add a utility function to assist scrolling in a textview.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
803 gnt_text_view_attach_scroll_widget(GNT_TEXT_VIEW(ggc->tv), ggc->entry);
18605
76230f659c3f Use the utility function for the conversation and debug windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18423
diff changeset
804 gnt_text_view_attach_pager_widget(GNT_TEXT_VIEW(ggc->tv), ggc->entry);
76230f659c3f Use the utility function for the conversation and debug windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18423
diff changeset
805
21271
2b594093a1ca I feel good when I am able to send messages, instead of just typing them.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20791
diff changeset
806 g_signal_connect_after(G_OBJECT(ggc->entry), "activate", G_CALLBACK(entry_key_pressed), ggc);
18423
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
807 g_signal_connect(G_OBJECT(ggc->entry), "completion", G_CALLBACK(completion_cb), NULL);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
808 g_signal_connect(G_OBJECT(ggc->window), "destroy", G_CALLBACK(closing_window), ggc);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
809
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
810 gnt_widget_set_position(ggc->window, purple_prefs_get_int(PREF_ROOT "/position/x"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
811 purple_prefs_get_int(PREF_ROOT "/position/y"));
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
812 gnt_widget_show(ggc->window);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
813
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
814 g_signal_connect(G_OBJECT(ggc->tv), "size_changed", G_CALLBACK(size_changed_cb), NULL);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
815 g_signal_connect(G_OBJECT(ggc->window), "position_set", G_CALLBACK(save_position_cb), NULL);
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
816
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
817 if (type == PURPLE_CONV_TYPE_IM) {
15841
f2c4347c1597 Typing notifications are relevant only for IMs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15821
diff changeset
818 g_signal_connect(G_OBJECT(ggc->entry), "text_changed", G_CALLBACK(send_typing_notification), ggc);
f2c4347c1597 Typing notifications are relevant only for IMs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15821
diff changeset
819 }
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
820
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
821 convnode = get_conversation_blist_node(conv);
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
822 if ((convnode && purple_blist_node_get_bool(convnode, "gnt-mute-sound")) ||
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
823 !finch_sound_is_enabled())
19612
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
824 ggc->flags |= FINCH_CONV_NO_SOUND;
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
825
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
826 gg_create_menu(ggc);
23556
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
827 gg_setup_commands(ggc, FALSE);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
828
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
829 purple_signal_connect(purple_cmds_get_handle(), "cmd-added", ggc,
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
830 G_CALLBACK(cmd_added_cb), ggc);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
831 purple_signal_connect(purple_cmds_get_handle(), "cmd-removed", ggc,
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
832 G_CALLBACK(cmd_removed_cb), ggc);
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
833
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
834 g_free(title);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
835 gnt_box_give_focus_to_child(GNT_BOX(ggc->window), ggc->entry);
18173
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
836 g_signal_connect(G_OBJECT(ggc->window), "gained-focus", G_CALLBACK(gained_focus_cb), ggc);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
837 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
838
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
839 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
840 finch_destroy_conversation(PurpleConversation *conv)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
841 {
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
842 /* do stuff here */
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
843 FinchConv *ggc = FINCH_GET_DATA(conv);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
844 ggc->list = g_list_remove(ggc->list, conv);
23556
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
845 if (ggc->list && conv == ggc->active_conv) {
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
846 ggc->active_conv = ggc->list->data;
23556
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
847 gg_setup_commands(ggc, TRUE);
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
848 }
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
849
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
850 if (ggc->list == NULL) {
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
851 g_free(ggc->u.chat);
23556
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
852 purple_signals_disconnect_by_handle(ggc);
18301
1988607deed3 Fix a few runtime warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
853 if (ggc->window)
1988607deed3 Fix a few runtime warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
854 gnt_widget_destroy(ggc->window);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
855 g_free(ggc);
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
856 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
857 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
858
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
859 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
860 finch_write_common(PurpleConversation *conv, const char *who, const char *message,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
861 PurpleMessageFlags flags, time_t mtime)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
862 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
863 FinchConv *ggconv = FINCH_GET_DATA(conv);
14073
db4207d73bd7 [gaim-migrate @ 16603]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
864 char *strip, *newline;
13993
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
865 GntTextFormatFlags fl = 0;
14092
191e12cbe464 [gaim-migrate @ 16632]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
866 int pos;
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
867
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
868 g_return_if_fail(ggconv != NULL);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
869
24456
fa1be35a86da Set the urgent flag for conversation windows on receiving a /buzz etc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24103
diff changeset
870 if ((flags & PURPLE_MESSAGE_SYSTEM) && !(flags & PURPLE_MESSAGE_NOTIFY)) {
22410
6d2a5d806cc6 Ignore the recv/send flags when the system flag is set for a message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22409
diff changeset
871 flags &= ~(PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV);
6d2a5d806cc6 Ignore the recv/send flags when the system flag is set for a message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22409
diff changeset
872 }
6d2a5d806cc6 Ignore the recv/send flags when the system flag is set for a message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22409
diff changeset
873
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
874 if (ggconv->active_conv != conv) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
875 if (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV))
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
876 finch_conversation_set_active(conv);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
877 else
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
878 return;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
879 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
880
14284
6c99565d0f50 [gaim-migrate @ 16903]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14253
diff changeset
881 pos = gnt_text_view_get_lines_below(GNT_TEXT_VIEW(ggconv->tv));
6c99565d0f50 [gaim-migrate @ 16903]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14253
diff changeset
882
18935
902fd1b53149 Just show an empty line, instead of bouncing the text down when the user
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18605
diff changeset
883 gnt_text_view_tag_change(GNT_TEXT_VIEW(ggconv->tv), "typing", NULL, TRUE);
14777
c0ad17caf8ad [gaim-migrate @ 17469]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14750
diff changeset
884 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), "\n", GNT_TEXT_FLAG_NORMAL);
14284
6c99565d0f50 [gaim-migrate @ 16903]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14253
diff changeset
885
14296
ac12fbad24f7 [gaim-migrate @ 16916]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14284
diff changeset
886 /* Unnecessary to print the timestamp for delayed message */
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
887 if (purple_prefs_get_bool("/finch/conversations/timestamps"))
14122
daf2aaa61829 [gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
888 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv),
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
889 purple_utf8_strftime("(%H:%M:%S)", localtime(&mtime)), gnt_color_pair(color_timestamp));
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
890
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
891 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), " ", GNT_TEXT_FLAG_NORMAL);
14427
8af0c81db5b9 [gaim-migrate @ 17071]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14413
diff changeset
892
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
893 if (flags & PURPLE_MESSAGE_AUTO_RESP)
14483
82b73e12ce27 [gaim-migrate @ 17129]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14470
diff changeset
894 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv),
82b73e12ce27 [gaim-migrate @ 17129]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14470
diff changeset
895 _("<AUTO-REPLY> "), GNT_TEXT_FLAG_BOLD);
82b73e12ce27 [gaim-migrate @ 17129]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14470
diff changeset
896
20625
de0fcfa2bbc1 Show 'buzz'/'nudge' etc. messages differently from regular messages.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20622
diff changeset
897 if (who && *who && (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)) &&
de0fcfa2bbc1 Show 'buzz'/'nudge' etc. messages differently from regular messages.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20622
diff changeset
898 !(flags & PURPLE_MESSAGE_NOTIFY))
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
899 {
14427
8af0c81db5b9 [gaim-migrate @ 17071]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14413
diff changeset
900 char * name = NULL;
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
901 GntTextFormatFlags msgflags = GNT_TEXT_FLAG_NORMAL;
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
902 gboolean me = FALSE;
14427
8af0c81db5b9 [gaim-migrate @ 17071]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14413
diff changeset
903
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
904 if (purple_message_meify((char*)message, -1)) {
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
905 name = g_strdup_printf("*** %s", who);
22409
64d529e825cd Highlighted message color has a higher priority over an action message color.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22376
diff changeset
906 if (!(flags & PURPLE_MESSAGE_SEND) &&
64d529e825cd Highlighted message color has a higher priority over an action message color.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22376
diff changeset
907 (flags & PURPLE_MESSAGE_NICK))
64d529e825cd Highlighted message color has a higher priority over an action message color.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22376
diff changeset
908 msgflags = gnt_color_pair(color_message_highlight);
64d529e825cd Highlighted message color has a higher priority over an action message color.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22376
diff changeset
909 else
64d529e825cd Highlighted message color has a higher priority over an action message color.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22376
diff changeset
910 msgflags = gnt_color_pair(color_message_action);
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
911 me = TRUE;
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
912 } else {
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
913 name = g_strdup_printf("%s", who);
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
914 if (flags & PURPLE_MESSAGE_SEND)
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
915 msgflags = gnt_color_pair(color_message_send);
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
916 else if (flags & PURPLE_MESSAGE_NICK)
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
917 msgflags = gnt_color_pair(color_message_highlight);
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
918 else
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
919 msgflags = gnt_color_pair(color_message_receive);
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
920 }
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
921 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv),
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
922 name, msgflags);
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
923 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), me ? " " : ": ", GNT_TEXT_FLAG_NORMAL);
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
924 g_free(name);
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
925 } else
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
926 fl = GNT_TEXT_FLAG_DIM;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
927
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
928 if (flags & PURPLE_MESSAGE_ERROR)
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
929 fl |= GNT_TEXT_FLAG_BOLD;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
930
14073
db4207d73bd7 [gaim-migrate @ 16603]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
931 /* XXX: Remove this workaround when textview can parse messages. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
932 newline = purple_strdup_withhtml(message);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
933 strip = purple_markup_strip_html(newline);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
934 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv),
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
935 strip, fl);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
936
14073
db4207d73bd7 [gaim-migrate @ 16603]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
937 g_free(newline);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
938 g_free(strip);
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
939
18935
902fd1b53149 Just show an empty line, instead of bouncing the text down when the user
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18605
diff changeset
940 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM &&
902fd1b53149 Just show an empty line, instead of bouncing the text down when the user
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18605
diff changeset
941 purple_conv_im_get_typing_state(PURPLE_CONV_IM(conv)) == PURPLE_TYPING) {
22573
54822222d0cc Patch from Kyle Turman to show the alias when available in the typing notification. Closes #4957.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22556
diff changeset
942 strip = g_strdup_printf(_("\n%s is typing..."), purple_conversation_get_title(conv));
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
943 gnt_text_view_append_text_with_tag(GNT_TEXT_VIEW(ggconv->tv),
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
944 strip, GNT_TEXT_FLAG_DIM, "typing");
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
945 g_free(strip);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
946 }
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
947
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
948 if (pos <= 1)
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
949 gnt_text_view_scroll(GNT_TEXT_VIEW(ggconv->tv), 0);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
950
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
951 if (flags & (PURPLE_MESSAGE_RECV | PURPLE_MESSAGE_NICK | PURPLE_MESSAGE_ERROR))
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
952 gnt_widget_set_urgent(ggconv->tv);
18173
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
953 if (flags & PURPLE_MESSAGE_RECV && !gnt_widget_has_focus(ggconv->window)) {
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
954 int count = GPOINTER_TO_INT(purple_conversation_get_data(conv, "unseen-count"));
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
955 purple_conversation_set_data(conv, "unseen-count", GINT_TO_POINTER(count + 1));
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
956 purple_conversation_update(conv, PURPLE_CONV_UPDATE_UNSEEN);
2e65bc9fa310 Provide a 'unseen-count' data for the conversations so the dbus-docklet can use that information.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17854
diff changeset
957 }
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
958 }
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
960 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
961 finch_write_chat(PurpleConversation *conv, const char *who, const char *message,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
962 PurpleMessageFlags flags, time_t mtime)
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
963 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
964 purple_conversation_write(conv, who, message, flags, mtime);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
965 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
966
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
967 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
968 finch_write_im(PurpleConversation *conv, const char *who, const char *message,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
969 PurpleMessageFlags flags, time_t mtime)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
970 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
971 PurpleAccount *account = purple_conversation_get_account(conv);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
972 if (flags & PURPLE_MESSAGE_SEND)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
973 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
974 who = purple_connection_get_display_name(purple_account_get_connection(account));
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
975 if (!who)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
976 who = purple_account_get_alias(account);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
977 if (!who)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
978 who = purple_account_get_username(account);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
979 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
980 else if (flags & PURPLE_MESSAGE_RECV)
14070
4ced9ac77397 [gaim-migrate @ 16594]
Richard Nelson <wabz@pidgin.im>
parents: 14050
diff changeset
981 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
982 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
983 who = purple_conversation_get_name(conv);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
984 buddy = purple_find_buddy(account, who);
14070
4ced9ac77397 [gaim-migrate @ 16594]
Richard Nelson <wabz@pidgin.im>
parents: 14050
diff changeset
985 if (buddy)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
986 who = purple_buddy_get_contact_alias(buddy);
14070
4ced9ac77397 [gaim-migrate @ 16594]
Richard Nelson <wabz@pidgin.im>
parents: 14050
diff changeset
987 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
988
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
989 purple_conversation_write(conv, who, message, flags, mtime);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
990 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
991
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
992 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
993 finch_write_conv(PurpleConversation *conv, const char *who, const char *alias,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
994 const char *message, PurpleMessageFlags flags, time_t mtime)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
995 {
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
996 const char *name;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
997 if (alias && *alias)
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
998 name = alias;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
999 else if (who && *who)
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
1000 name = who;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
1001 else
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
1002 name = NULL;
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1003
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1004 finch_write_common(conv, name, message, flags, mtime);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1005 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1006
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1007 static const char *
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1008 chat_flag_text(PurpleConvChatBuddyFlags flags)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1009 {
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1010 if (flags & PURPLE_CBFLAGS_FOUNDER)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1011 return "~";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1012 if (flags & PURPLE_CBFLAGS_OP)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1013 return "@";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1014 if (flags & PURPLE_CBFLAGS_HALFOP)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1015 return "%";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1016 if (flags & PURPLE_CBFLAGS_VOICE)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1017 return "+";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1018 return " ";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1019 }
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1020
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1021 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1022 finch_chat_add_users(PurpleConversation *conv, GList *users, gboolean new_arrivals)
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1023 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
1024 FinchConv *ggc = FINCH_GET_DATA(conv);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1025 GntEntry *entry = GNT_ENTRY(ggc->entry);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1026
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1027 if (!new_arrivals)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1028 {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1029 /* Print the list of users in the room */
23585
7b7739c29f86 Show the count of users when joining a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23556
diff changeset
1030 GString *string = g_string_new(NULL);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1031 GList *iter;
23585
7b7739c29f86 Show the count of users when joining a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23556
diff changeset
1032 int count = g_list_length(users);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1033
23585
7b7739c29f86 Show the count of users when joining a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23556
diff changeset
1034 g_string_printf(string,
7b7739c29f86 Show the count of users when joining a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23556
diff changeset
1035 ngettext("List of %d user:\n", "List of %d users:\n", count), count);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1036 for (iter = users; iter; iter = iter->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1037 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1038 PurpleConvChatBuddy *cbuddy = iter->data;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1039 char *str;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1040
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1041 if ((str = cbuddy->alias) == NULL)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1042 str = cbuddy->name;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1043 g_string_append_printf(string, "[ %s ]", str);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1044 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1045
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1046 purple_conversation_write(conv, NULL, string->str,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1047 PURPLE_MESSAGE_SYSTEM, time(NULL));
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1048 g_string_free(string, TRUE);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1049 }
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1050
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1051 for (; users; users = users->next)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1052 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1053 PurpleConvChatBuddy *cbuddy = users->data;
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1054 GntTree *tree = GNT_TREE(ggc->u.chat->userlist);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1055 gnt_entry_add_suggest(entry, cbuddy->name);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1056 gnt_entry_add_suggest(entry, cbuddy->alias);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1057 gnt_tree_add_row_after(tree, g_strdup(cbuddy->name),
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1058 gnt_tree_create_row(tree, chat_flag_text(cbuddy->flags), cbuddy->alias), NULL, NULL);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1059 }
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1060 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1061
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1062 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1063 finch_chat_rename_user(PurpleConversation *conv, const char *old, const char *new_n, const char *new_a)
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1064 {
14318
07aba2cdc261 [gaim-migrate @ 16938]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14296
diff changeset
1065 /* Update the name for string completion */
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
1066 FinchConv *ggc = FINCH_GET_DATA(conv);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1067 GntEntry *entry = GNT_ENTRY(ggc->entry);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1068 GntTree *tree = GNT_TREE(ggc->u.chat->userlist);
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1069 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), new_n);
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1070
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1071 gnt_entry_remove_suggest(entry, old);
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1072 gnt_tree_remove(tree, (gpointer)old);
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1073
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1074 gnt_entry_add_suggest(entry, new_n);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1075 gnt_entry_add_suggest(entry, new_a);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1076 gnt_tree_add_row_after(tree, g_strdup(new_n),
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1077 gnt_tree_create_row(tree, chat_flag_text(cb->flags), new_a), NULL, NULL);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1078 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1079
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1080 static void
17164
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1081 finch_chat_remove_users(PurpleConversation *conv, GList *list)
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1082 {
14318
07aba2cdc261 [gaim-migrate @ 16938]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14296
diff changeset
1083 /* Remove the name from string completion */
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
1084 FinchConv *ggc = FINCH_GET_DATA(conv);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1085 GntEntry *entry = GNT_ENTRY(ggc->entry);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1086 for (; list; list = list->next) {
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1087 GntTree *tree = GNT_TREE(ggc->u.chat->userlist);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1088 gnt_entry_remove_suggest(entry, list->data);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1089 gnt_tree_remove(tree, list->data);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1090 }
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1091 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1092
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1093 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1094 finch_chat_update_user(PurpleConversation *conv, const char *user)
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1095 {
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1096 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), user);
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
1097 FinchConv *ggc = FINCH_GET_DATA(conv);
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1098 gnt_tree_change_text(GNT_TREE(ggc->u.chat->userlist), (gpointer)user, 0, chat_flag_text(cb->flags));
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1099 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1100
19611
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1101 static void
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1102 finch_conv_present(PurpleConversation *conv)
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1103 {
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1104 FinchConv *fc = FINCH_CONV(conv);
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1105 if (fc && fc->window)
20780
c48390a2851d void functions shouldn't 'return'. Thanks tmcmahon2. Fixes #3151 (gntconv.c fails to compile in Solaris 9)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20625
diff changeset
1106 gnt_window_present(fc->window);
19611
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1107 }
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1108
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1109 static gboolean
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1110 finch_conv_has_focus(PurpleConversation *conv)
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1111 {
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1112 FinchConv *fc = FINCH_CONV(conv);
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1113 if (fc && fc->window)
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1114 return gnt_widget_has_focus(fc->window);
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1115 return FALSE;
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1116 }
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1117
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1118 static PurpleConversationUiOps conv_ui_ops =
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1119 {
17164
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1120 finch_create_conversation,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1121 finch_destroy_conversation,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1122 finch_write_chat,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1123 finch_write_im,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1124 finch_write_conv,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1125 finch_chat_add_users,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1126 finch_chat_rename_user,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1127 finch_chat_remove_users,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1128 finch_chat_update_user,
19611
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1129 finch_conv_present, /* present */
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1130 finch_conv_has_focus, /* has_focus */
17164
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1131 NULL, /* custom_smiley_add */
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1132 NULL, /* custom_smiley_write */
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1133 NULL, /* custom_smiley_close */
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1134 NULL, /* send_confirm */
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1135 NULL,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1136 NULL,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1137 NULL,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1138 NULL
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1139 };
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1140
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1141 PurpleConversationUiOps *finch_conv_get_ui_ops()
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1142 {
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1143 return &conv_ui_ops;
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1144 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1145
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1146 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1147 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1148 say_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1149 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1150 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1151 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1152 purple_conv_im_send(PURPLE_CONV_IM(conv), args[0]);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1153 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1154 purple_conv_chat_send(PURPLE_CONV_CHAT(conv), args[0]);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1155
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1156 return PURPLE_CMD_RET_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1157 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1158
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1159 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1160 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1161 me_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1162 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1163 {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1164 char *tmp;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1165
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1166 tmp = g_strdup_printf("/me %s", args[0]);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1167
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1168 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1169 purple_conv_im_send(PURPLE_CONV_IM(conv), tmp);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1170 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1171 purple_conv_chat_send(PURPLE_CONV_CHAT(conv), tmp);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1172
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1173 g_free(tmp);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1174 return PURPLE_CMD_RET_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1175 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1176
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1177 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1178 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1179 debug_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1180 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1181 {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1182 char *tmp, *markup;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1183 PurpleCmdStatus status;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1184
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1185 if (!g_ascii_strcasecmp(args[0], "version")) {
21106
b85fbef13eed Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21076
diff changeset
1186 tmp = g_strdup_printf("me is using Finch v%s.", DISPLAY_VERSION);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1187 markup = g_markup_escape_text(tmp, -1);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1188
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1189 status = purple_cmd_do_command(conv, tmp, markup, error);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1190
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1191 g_free(tmp);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1192 g_free(markup);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1193 return status;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1194 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1195 purple_conversation_write(conv, NULL, _("Supported debug options are: version"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1196 PURPLE_MESSAGE_NO_LOG|PURPLE_MESSAGE_ERROR, time(NULL));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1197 return PURPLE_CMD_STATUS_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1198 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1199 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1200
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1201 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1202 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1203 clear_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1204 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1205 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
1206 FinchConv *ggconv = FINCH_GET_DATA(conv);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1207 gnt_text_view_clear(GNT_TEXT_VIEW(ggconv->tv));
19599
5d2c452fbc12 Clear the message history in the /clear callback.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
1208 purple_conversation_clear_message_history(conv);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1209 return PURPLE_CMD_STATUS_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1210 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1211
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1212 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1213 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1214 help_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1215 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1216 {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1217 GList *l, *text;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1218 GString *s;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1219
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1220 if (args[0] != NULL) {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1221 s = g_string_new("");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1222 text = purple_cmd_help(conv, args[0]);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1223
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1224 if (text) {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1225 for (l = text; l; l = l->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1226 if (l->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1227 g_string_append_printf(s, "%s\n", (char *)l->data);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1228 else
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1229 g_string_append_printf(s, "%s", (char *)l->data);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1230 } else {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1231 g_string_append(s, _("No such command (in this context)."));
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1232 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1233 } else {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1234 s = g_string_new(_("Use \"/help &lt;command&gt;\" for help on a specific command.\n"
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1235 "The following commands are available in this context:\n"));
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1236
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1237 text = purple_cmd_list(conv);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1238 for (l = text; l; l = l->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1239 if (l->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1240 g_string_append_printf(s, "%s, ", (char *)l->data);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1241 else
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1242 g_string_append_printf(s, "%s.", (char *)l->data);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1243 g_list_free(text);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1244 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1245
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1246 purple_conversation_write(conv, NULL, s->str, PURPLE_MESSAGE_NO_LOG, time(NULL));
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1247 g_string_free(s, TRUE);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1248
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1249 return PURPLE_CMD_STATUS_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1250 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1251
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1252 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1253 cmd_show_window(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data)
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
1254 {
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21859
diff changeset
1255 void (*callback)(void) = data;
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
1256 callback();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1257 return PURPLE_CMD_STATUS_OK;
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
1258 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1259
24103
ed57aae4e3d6 Fix compiling with glib < 2.6
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23585
diff changeset
1260 #if GLIB_CHECK_VERSION(2,6,0)
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1261 static PurpleCmdRet
23452
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1262 cmd_message_color(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data)
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1263 {
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1264 int *msgclass = NULL;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1265 int fg, bg;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1266
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1267 if (strcmp(args[0], "receive") == 0)
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1268 msgclass = &color_message_receive;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1269 else if (strcmp(args[0], "send") == 0)
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1270 msgclass = &color_message_send;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1271 else if (strcmp(args[0], "highlight") == 0)
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1272 msgclass = &color_message_highlight;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1273 else if (strcmp(args[0], "action") == 0)
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1274 msgclass = &color_message_action;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1275 else if (strcmp(args[0], "timestamp") == 0)
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1276 msgclass = &color_timestamp;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1277 else {
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1278 if (error)
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1279 *error = g_strdup_printf(_("%s is not a valid message class. See '/help msgcolor' for valid message classes."), args[0]);
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1280 return PURPLE_CMD_STATUS_FAILED;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1281 }
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1282
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1283 fg = gnt_colors_get_color(args[1]);
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1284 if (fg == -EINVAL) {
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1285 if (error)
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1286 *error = g_strdup_printf(_("%s is not a valid color. See '/help msgcolor' for valid colors."), args[1]);
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1287 return PURPLE_CMD_STATUS_FAILED;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1288 }
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1289
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1290 bg = gnt_colors_get_color(args[2]);
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1291 if (bg == -EINVAL) {
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1292 if (error)
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1293 *error = g_strdup_printf(_("%s is not a valid color. See '/help msgcolor' for valid colors."), args[2]);
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1294 return PURPLE_CMD_STATUS_FAILED;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1295 }
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1296
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1297 init_pair(*msgclass, fg, bg);
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1298
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1299 return PURPLE_CMD_STATUS_OK;
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1300 }
24103
ed57aae4e3d6 Fix compiling with glib < 2.6
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23585
diff changeset
1301 #endif
23452
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1302
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1303 static PurpleCmdRet
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1304 users_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data)
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1305 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
1306 FinchConv *fc = FINCH_GET_DATA(conv);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1307 FinchConvChat *ch;
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1308 if (!fc)
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1309 return PURPLE_CMD_STATUS_FAILED;
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1310
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1311 ch = fc->u.chat;
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1312 gnt_widget_set_visible(ch->userlist,
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1313 (GNT_WIDGET_IS_FLAG_SET(ch->userlist, GNT_WIDGET_INVISIBLE)));
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1314 gnt_box_readjust(GNT_BOX(fc->window));
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1315 gnt_box_give_focus_to_child(GNT_BOX(fc->window), fc->entry);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1316 purple_prefs_set_bool(PREF_USERLIST, !(GNT_WIDGET_IS_FLAG_SET(ch->userlist, GNT_WIDGET_INVISIBLE)));
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1317 return PURPLE_CMD_STATUS_OK;
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1318 }
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1319
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1320 void finch_conversation_init()
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1321 {
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1322 color_message_send = gnt_style_get_color(NULL, "color-message-sent");
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1323 if (!color_message_send)
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1324 color_message_send = gnt_color_add_pair(COLOR_CYAN, -1);
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1325 color_message_receive = gnt_style_get_color(NULL, "color-message-received");
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1326 if (!color_message_receive)
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1327 color_message_receive = gnt_color_add_pair(COLOR_RED, -1);
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1328 color_message_highlight = gnt_style_get_color(NULL, "color-message-highlight");
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1329 if (!color_message_highlight)
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1330 color_message_highlight = gnt_color_add_pair(COLOR_GREEN, -1);
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1331 color_timestamp = gnt_style_get_color(NULL, "color-timestamp");
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1332 if (!color_timestamp)
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1333 color_timestamp = gnt_color_add_pair(COLOR_BLUE, -1);
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1334 color_message_action = gnt_style_get_color(NULL, "color-message-action");
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1335 if (!color_message_action)
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1336 color_message_action = gnt_color_add_pair(COLOR_YELLOW, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1337 purple_prefs_add_none(PREF_ROOT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1338 purple_prefs_add_none(PREF_ROOT "/size");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1339 purple_prefs_add_int(PREF_ROOT "/size/width", 70);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1340 purple_prefs_add_int(PREF_ROOT "/size/height", 20);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1341 purple_prefs_add_none(PREF_ROOT "/position");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1342 purple_prefs_add_int(PREF_ROOT "/position/x", 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1343 purple_prefs_add_int(PREF_ROOT "/position/y", 0);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1344 purple_prefs_add_none(PREF_CHAT);
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1345 purple_prefs_add_bool(PREF_USERLIST, FALSE);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
1346
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
1347 /* Xerox the commands */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1348 purple_cmd_register("say", "S", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1349 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1350 say_command_cb, _("say &lt;message&gt;: Send a message normally as if you weren't using a command."), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1351 purple_cmd_register("me", "S", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1352 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1353 me_command_cb, _("me &lt;action&gt;: Send an IRC style action to a buddy or chat."), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1354 purple_cmd_register("debug", "w", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1355 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1356 debug_command_cb, _("debug &lt;option&gt;: Send various debug information to the current conversation."), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1357 purple_cmd_register("clear", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1358 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1359 clear_command_cb, _("clear: Clears the conversation scrollback."), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1360 purple_cmd_register("help", "w", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1361 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, NULL,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1362 help_command_cb, _("help &lt;command&gt;: Help on a specific command."), NULL);
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1363 purple_cmd_register("users", "", PURPLE_CMD_P_DEFAULT,
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1364 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, NULL,
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1365 users_command_cb, _("users: Show the list of users in the chat."), NULL);
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
1366
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
1367 /* Now some commands to bring up some other windows */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1368 purple_cmd_register("plugins", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1369 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1370 cmd_show_window, _("plugins: Show the plugins window."), finch_plugins_show_all);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1371 purple_cmd_register("buddylist", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1372 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1373 cmd_show_window, _("buddylist: Show the buddylist."), finch_blist_show);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1374 purple_cmd_register("accounts", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1375 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1376 cmd_show_window, _("accounts: Show the accounts window."), finch_accounts_show_all);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1377 purple_cmd_register("debugwin", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1378 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1379 cmd_show_window, _("debugwin: Show the debug window."), finch_debug_window_show);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1380 purple_cmd_register("prefs", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1381 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1382 cmd_show_window, _("prefs: Show the preference window."), finch_prefs_show_all);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1383 purple_cmd_register("status", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1384 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1385 cmd_show_window, _("statuses: Show the savedstatuses window."), finch_savedstatus_show_all);
17076
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1386
24103
ed57aae4e3d6 Fix compiling with glib < 2.6
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23585
diff changeset
1387 #if GLIB_CHECK_VERSION(2,6,0)
23452
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1388 /* Allow customizing the message colors using a command during run-time */
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1389 purple_cmd_register("msgcolor", "www", PURPLE_CMD_P_DEFAULT,
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1390 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1391 cmd_message_color, _("msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: "
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1392 "Set the color for different classes of messages in the conversation window.<br>"
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1393 " &lt;class&gt;: receive, send, highlight, action, timestamp<br>"
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1394 " &lt;foreground/background&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, default<br><br>"
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1395 "EXAMPLE:<br> msgcolor send cyan default"),
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1396 NULL);
24103
ed57aae4e3d6 Fix compiling with glib < 2.6
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23585
diff changeset
1397 #endif
23452
0cf9a2c482ff msgcolor command to change colors of messages in conversations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23374
diff changeset
1398
17076
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1399 purple_signal_connect(purple_conversations_get_handle(), "buddy-typing", finch_conv_get_handle(),
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1400 PURPLE_CALLBACK(update_buddy_typing), NULL);
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1401 purple_signal_connect(purple_conversations_get_handle(), "buddy-typing-stopped", finch_conv_get_handle(),
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1402 PURPLE_CALLBACK(update_buddy_typing), NULL);
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1403 purple_signal_connect(purple_conversations_get_handle(), "chat-left", finch_conv_get_handle(),
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1404 PURPLE_CALLBACK(chat_left_cb), NULL);
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
1405 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", finch_conv_get_handle(),
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
1406 PURPLE_CALLBACK(buddy_signed_on_off), NULL);
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
1407 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", finch_conv_get_handle(),
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
1408 PURPLE_CALLBACK(buddy_signed_on_off), NULL);
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
1409 purple_signal_connect(purple_connections_get_handle(), "signed-on", finch_conv_get_handle(),
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
1410 PURPLE_CALLBACK(account_signed_on_off), NULL);
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
1411 purple_signal_connect(purple_connections_get_handle(), "signed-off", finch_conv_get_handle(),
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
1412 PURPLE_CALLBACK(account_signed_on_off), NULL);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1413 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1414
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1415 void finch_conversation_uninit()
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1416 {
17076
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1417 purple_signals_disconnect_by_handle(finch_conv_get_handle());
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1418 }
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1419
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1420 void finch_conversation_set_active(PurpleConversation *conv)
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1421 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
1422 FinchConv *ggconv = FINCH_GET_DATA(conv);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1423 PurpleAccount *account;
14470
352d47a0724d [gaim-migrate @ 17116]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14450
diff changeset
1424 char *title;
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1425
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1426 g_return_if_fail(ggconv);
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1427 g_return_if_fail(g_list_find(ggconv->list, conv));
23556
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
1428 if (ggconv->active_conv == conv)
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
1429 return;
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1430
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1431 ggconv->active_conv = conv;
23556
33eca6f632b9 Tab-completion for commands in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23503
diff changeset
1432 gg_setup_commands(ggconv, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1433 account = purple_conversation_get_account(conv);
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
1434 title = get_conversation_title(conv, account);
14470
352d47a0724d [gaim-migrate @ 17116]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14450
diff changeset
1435 gnt_screen_rename_widget(ggconv->window, title);
352d47a0724d [gaim-migrate @ 17116]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14450
diff changeset
1436 g_free(title);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1437 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1438
16190
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1439 void finch_conversation_set_info_widget(PurpleConversation *conv, GntWidget *widget)
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1440 {
22339
f68309ed6c0a We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22337
diff changeset
1441 FinchConv *fc = FINCH_GET_DATA(conv);
16190
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1442 int height, width;
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1443
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1444 gnt_box_remove_all(GNT_BOX(fc->info));
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1445
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1446 if (widget) {
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1447 gnt_box_add_widget(GNT_BOX(fc->info), widget);
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1448 gnt_box_readjust(GNT_BOX(fc->info));
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1449 }
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1450
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1451 gnt_widget_get_size(fc->window, &width, &height);
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1452 gnt_box_readjust(GNT_BOX(fc->window));
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1453 gnt_screen_resize_widget(fc->window, width, height);
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1454 gnt_box_give_focus_to_child(GNT_BOX(fc->window), fc->entry);
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1455 }
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1456

mercurial