finch/gntconv.c

Sat, 02 Feb 2008 03:51:19 +0000

author
Richard Nelson <wabz@pidgin.im>
date
Sat, 02 Feb 2008 03:51:19 +0000
changeset 22376
25a17b6b69c2
parent 22341
ed341c90116e
child 22409
64d529e825cd
permissions
-rw-r--r--

Add a finch log viewer. This is largely copied from Pidgin.

The search box must be focused in order to scroll the log or fire up the pager,
and is labelled such. Feel free to come up with a better widget to attach these
to.

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"
14121
3d8804b82150 [gaim-migrate @ 16674]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14109
diff changeset
41 #include "gntprefs.h"
19612
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
42 #include "gntsound.h"
14188
cff503f91616 [gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14153
diff changeset
43 #include "gntstatus.h"
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
44 #include "gntpounce.h"
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
45
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46 #include "gnt.h"
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47 #include "gntbox.h"
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
48 #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
49 #include "gntlabel.h"
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
50 #include "gntmenu.h"
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
51 #include "gntmenuitem.h"
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
52 #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
53 #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
54 #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
55 #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
56 #include "gntutils.h"
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
57 #include "gntwindow.h"
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58
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
59 #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
60 #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
61 #define PREF_USERLIST PREF_CHAT "/userlist"
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
62
14253
b63ebf84c42b This is a hand-crafted commit to migrate across subversion revisions
Ethan Blanton <elb@pidgin.im>
parents: 14188
diff changeset
63 #include "config.h"
b63ebf84c42b This is a hand-crafted commit to migrate across subversion revisions
Ethan Blanton <elb@pidgin.im>
parents: 14188
diff changeset
64
17076
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
65 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
66 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
67 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
68
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
69 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
70 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
71 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
72 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
73 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
74
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
75 static PurpleBuddy *
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
76 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
77 {
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
78 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
79 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
80 }
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 static PurpleChat *
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
83 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
84 {
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
85 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
86 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
87 }
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
88
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
89 static PurpleBlistNode *
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
90 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
91 {
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
92 PurpleBlistNode *node = NULL;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
93
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
94 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
95 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
96 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
97 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
98 break;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
99 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
100 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
101 break;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
102 default:
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
103 break;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
104 }
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
105 return node;
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
106 }
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
107
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
108 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
109 send_typing_notification(GntWidget *w, FinchConv *ggconv)
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
110 {
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
111 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
112 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
113 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
114 PurpleConversation *conv = ggconv->active_conv;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
115 PurpleConvIm *im = PURPLE_CONV_IM(conv);
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
116 if (!empty) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
117 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
118
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
119 purple_conv_im_stop_send_typed_timeout(im);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
120 purple_conv_im_start_send_typed_timeout(im);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
121 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
122 time(NULL) > purple_conv_im_get_type_again(im))) {
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
123 unsigned int timeout;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
124 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
125 purple_conversation_get_name(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
126 PURPLE_TYPING);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
127 purple_conv_im_set_type_again(im, timeout);
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
128 }
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
129 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
130 purple_conv_im_stop_send_typed_timeout(im);
15373
8483019d6961 [gaim-migrate @ 18102]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15262
diff changeset
131
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
132 serv_send_typing(purple_conversation_get_gc(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
133 purple_conversation_get_name(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
134 PURPLE_NOT_TYPING);
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
135 }
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
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
139 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
140 entry_key_pressed(GntWidget *w, FinchConv *ggconv)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
141 {
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
142 const char *text = gnt_entry_get_text(GNT_ENTRY(ggconv->entry));
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 if (*text == '/')
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144 {
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
145 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
146 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
147 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
148 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
149
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 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
151 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
152 g_free(escape);
14028
eefce1b0c4e3 [gaim-migrate @ 16522]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
153
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
154 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
155 {
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 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
157 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
158 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
159 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
160 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
161 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
162 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
163 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
164 "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
165 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
166 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
167 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
168 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
169 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
170 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
171 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
172 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
173 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
174 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
175 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
176 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
177 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
178 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
179 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
180 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
181 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
182 break;
14000
aab306afdc43 [gaim-migrate @ 16469]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13993
diff changeset
183 }
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
184 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
185 }
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
186 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
187 {
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 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
189 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
190 }
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 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
192 {
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 char *escape = g_markup_escape_text(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
194 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
195 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
196 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
197 switch (purple_conversation_get_type(ggconv->active_conv))
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
198 {
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
199 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
200 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
201 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
202 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
203 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
204 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
205 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
206 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
207 g_return_if_reached();
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
208 }
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
209 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
210 purple_idle_touch();
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
211 }
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
212 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
213 gnt_entry_clear(GNT_ENTRY(ggconv->entry));
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
214 }
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 static void
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
217 closing_window(GntWidget *window, FinchConv *ggconv)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
218 {
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
219 GList *list = ggconv->list;
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
220 ggconv->window = NULL;
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
221 while (list) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
222 PurpleConversation *conv = list->data;
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
223 list = list->next;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
224 purple_conversation_destroy(conv);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
225 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
226 }
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 static void
14923
ccb42b285510 [gaim-migrate @ 17630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14884
diff changeset
229 size_changed_cb(GntWidget *widget, int width, int height)
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
230 {
14923
ccb42b285510 [gaim-migrate @ 17630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14884
diff changeset
231 int w, h;
ccb42b285510 [gaim-migrate @ 17630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14884
diff changeset
232 gnt_widget_get_size(widget, &w, &h);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
233 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
234 purple_prefs_set_int(PREF_ROOT "/size/height", h);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
235 }
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 static void
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
238 save_position_cb(GntWidget *w, int x, int y)
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
239 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
240 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
241 purple_prefs_set_int(PREF_ROOT "/position/y", y);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
242 }
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
243
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
244 static PurpleConversation *
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
245 find_conv_with_contact(PurpleAccount *account, const char *name)
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
246 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
247 PurpleBlistNode *node;
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
248 PurpleBuddy *buddy = purple_find_buddy(account, name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
249 PurpleConversation *ret = NULL;
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
250
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
251 if (!buddy)
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
252 return NULL;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
253
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
254 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
255 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
256 if (node == (PurpleBlistNode*)buddy)
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
257 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
258 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
259 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
260 break;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
261 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
262 return ret;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
263 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
264
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
265 static char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
266 get_conversation_title(PurpleConversation *conv, PurpleAccount *account)
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
267 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
268 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
269 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
270 }
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 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
273 update_buddy_typing(PurpleAccount *account, const char *who, gpointer null)
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
274 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
275 PurpleConversation *conv;
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
276 FinchConv *ggc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
277 PurpleConvIm *im = NULL;
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
278 char *title, *str;
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
279
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
280 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
281
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
282 if (!conv)
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
283 return;
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
284
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
285 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
286 ggc = FINCH_GET_DATA(conv);
14750
1dad59ae254d [gaim-migrate @ 17440]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14620
diff changeset
287
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
288 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
289 int scroll;
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
290 str = get_conversation_title(conv, account);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
291 title = g_strdup_printf(_("%s [%s]"), str,
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
292 gnt_ascii_only() ? "T" : "\342\243\277");
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
293 g_free(str);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
294
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
295 scroll = gnt_text_view_get_lines_below(GNT_TEXT_VIEW(ggc->tv));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
296 str = g_strdup_printf(_("\n%s is typing..."), purple_conversation_get_name(conv));
15262
8f97f9047232 [gaim-migrate @ 17990]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15250
diff changeset
297 /* 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
298 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
299 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
300 str, GNT_TEXT_FLAG_DIM, "typing");
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
301 g_free(str);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
302 if (scroll <= 1)
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
303 gnt_text_view_scroll(GNT_TEXT_VIEW(ggc->tv), 0);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
304 } else {
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
305 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
306 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
307 }
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
308 gnt_screen_rename_widget(ggc->window, title);
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
309 g_free(title);
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
310 }
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
311
17076
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
312 static void
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
313 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
314 {
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
315 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
316 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
317 }
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
318
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
319 static void
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
320 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
321 {
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
322 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
323 if (conv == NULL)
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
324 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
325 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
326 }
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 static void
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
329 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
330 {
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
331 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
332 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
333 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
334 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
335 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
336 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
337 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
338 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
339 }
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 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
342 /* 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
343 * 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
344 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
345 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
346 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
347 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
348 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
349
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 list = list->next;
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
351 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
352 !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
353 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
354
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
355 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
356 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
357 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
358 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
359 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
360 } 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
361 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
362 }
20622
30e148be3e2c Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20330
diff changeset
363 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
364 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
365 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
366 }
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
367 }
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
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
370 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
371 finch_conv_get_handle(void)
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
372 {
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
373 static int handle;
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
374 return &handle;
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
375 }
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
376
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
377 static void
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
378 clear_scrollback_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
379 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
380 FinchConv *ggc = ggconv;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
381 gnt_text_view_clear(GNT_TEXT_VIEW(ggc->tv));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
382 }
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 static void
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
385 send_file_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
386 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
387 FinchConv *ggc = ggconv;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
388 serv_send_file(purple_conversation_get_gc(ggc->active_conv),
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
389 purple_conversation_get_name(ggc->active_conv), NULL);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
390 }
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 static void
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
393 add_pounce_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
394 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
395 FinchConv *ggc = ggconv;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
396 finch_pounce_editor_show(
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
397 purple_conversation_get_account(ggc->active_conv),
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
398 purple_conversation_get_name(ggc->active_conv), NULL);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
399 }
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 static void
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
402 get_info_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
403 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
404 FinchConv *ggc = ggconv;
17360
4b04b2ee459a Use utility functions to get user info. Closes #964.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17164
diff changeset
405 finch_retrieve_user_info(purple_conversation_get_gc(ggc->active_conv),
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
406 purple_conversation_get_name(ggc->active_conv));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
407 }
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 static void
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
410 toggle_timestamps_cb(GntMenuItem *item, gpointer ggconv)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
411 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
412 purple_prefs_set_bool(PREF_ROOT "/timestamps",
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
413 !purple_prefs_get_bool(PREF_ROOT "/timestamps"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
414 }
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 static void
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
417 toggle_logging_cb(GntMenuItem *item, gpointer ggconv)
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
418 {
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
419 FinchConv *fc = ggconv;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
420 PurpleConversation *conv = fc->active_conv;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
421 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
422 GList *iter;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
423
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
424 if (logging == purple_conversation_is_logging(conv))
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
425 return;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
426
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
427 /* Xerox */
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
428 if (logging) {
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
429 /* 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
430 purple_conversation_set_logging(conv, TRUE);
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
431
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
432 purple_conversation_write(conv, NULL,
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
433 _("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
434 PURPLE_MESSAGE_SYSTEM, time(NULL));
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
435 } else {
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
436 purple_conversation_write(conv, NULL,
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
437 _("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
438 PURPLE_MESSAGE_SYSTEM, time(NULL));
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
439
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
440 /* 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
441 purple_conversation_set_logging(conv, FALSE);
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
442 }
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 /* 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
445 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
446 if (iter->data == conv)
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
447 continue;
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
448 purple_conversation_set_logging(iter->data, logging);
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
449 }
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 static void
19612
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
453 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
454 {
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
455 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
456 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
457 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
458 if (node)
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
459 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
460 }
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 static void
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
463 send_to_cb(GntMenuItem *m, gpointer n)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
464 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
465 PurpleAccount *account = g_object_get_data(G_OBJECT(m), "purple_account");
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
466 gchar *buddy = g_object_get_data(G_OBJECT(m), "purple_buddy_name");
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
467 PurpleConversation *conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, buddy);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
468 finch_conversation_set_active(conv);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
469 }
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 static void
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
472 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
473 {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
474 FinchConv *fc;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
475 PurpleConversation *conv;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
476 PurpleLogType type;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
477 const char *name;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
478 PurpleAccount *account;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
479 GSList *buddies;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
480 GSList *cur;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
481
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
482 fc = ggc;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
483 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
484
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
485 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
486 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
487 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
488 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
489 else
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
490 return;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
491
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
492 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
493 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
494
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
495 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
496 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
497 PurpleBlistNode *node = cur->data;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
498 if ((node != NULL) && ((node->prev != NULL) || (node->next != NULL))) {
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
499 finch_log_show_contact((PurpleContact *)node->parent);
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
500 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
501 return;
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
502 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
503 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
504 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
505
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
506 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
507 }
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
508
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
509 static void
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
510 generate_send_to_menu(FinchConv *ggc)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
511 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
512 GntWidget *sub, *menu = ggc->menu;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
513 GntMenuItem *item;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
514 GSList *buds;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
515 GList *list = NULL;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
516
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
517 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
518 purple_conversation_get_name(ggc->active_conv));
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
519 if (!buds)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
520 return;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
521
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
522 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
523 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
524 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
525 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
526 }
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
527 sub = gnt_menu_new(GNT_MENU_POPUP);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
528 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
529
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
530 for (; buds; buds = g_slist_delete_link(buds, buds)) {
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
531 PurpleBlistNode *node = (PurpleBlistNode *)purple_buddy_get_contact((PurpleBuddy *)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
532 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
533 node = purple_blist_node_get_sibling_next(node)) {
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
534 PurpleBuddy *buddy = (PurpleBuddy *)node;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
535 PurpleAccount *account = purple_buddy_get_account(buddy);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
536 if (purple_account_is_connected(account)) {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
537 /* Use the PurplePresence to get unique buddies. */
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
538 PurplePresence *presence = purple_buddy_get_presence(buddy);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
539 if (!g_list_find(list, presence))
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
540 list = g_list_prepend(list, presence);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
541 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
542 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
543 }
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
544 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
545 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
546 PurpleBuddy *buddy = purple_presence_get_buddy(pre);
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
547 PurpleAccount *account = purple_buddy_get_account(buddy);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
548 gchar *name = g_strdup(purple_buddy_get_name(buddy));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
549 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
550 item = gnt_menuitem_new(text);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
551 g_free(text);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
552 gnt_menu_add_item(GNT_MENU(sub), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
553 gnt_menuitem_set_callback(item, send_to_cb, NULL);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
554 g_object_set_data(G_OBJECT(item), "purple_account", account);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
555 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
556 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
557 }
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 static void
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
560 gg_create_menu(FinchConv *ggc)
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
561 {
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
562 GntWidget *menu, *sub;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
563 GntMenuItem *item;
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
564
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
565 ggc->menu = menu = gnt_menu_new(GNT_MENU_TOPLEVEL);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
566 gnt_window_set_menu(GNT_WINDOW(ggc->window), GNT_MENU(menu));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
567
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
568 item = gnt_menuitem_new(_("Conversation"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
569 gnt_menu_add_item(GNT_MENU(menu), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
570
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
571 sub = gnt_menu_new(GNT_MENU_POPUP);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
572 gnt_menuitem_set_submenu(item, GNT_MENU(sub));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
573
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
574 item = gnt_menuitem_new(_("Clear Scrollback"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
575 gnt_menu_add_item(GNT_MENU(sub), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
576 gnt_menuitem_set_callback(item, clear_scrollback_cb, ggc);
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_check_new(_("Show Timestamps"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
579 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
580 purple_prefs_get_bool(PREF_ROOT "/timestamps"));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
581 gnt_menu_add_item(GNT_MENU(sub), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
582 gnt_menuitem_set_callback(item, toggle_timestamps_cb, ggc);
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 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
585 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
586 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
587 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
588 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
589
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
590 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
591 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
592 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
593 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
594 }
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
595
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
596 item = gnt_menuitem_new(_("Add Buddy Pounce..."));
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
597 gnt_menu_add_item(GNT_MENU(sub), item);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
598 gnt_menuitem_set_callback(item, add_pounce_cb, ggc);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
599
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
600 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
601 (!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
602 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
603 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
604 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
605 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
606 }
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
607
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
608 generate_send_to_menu(ggc);
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
609 }
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
610
22376
25a17b6b69c2 Add a finch log viewer. This is largely copied from Pidgin.
Richard Nelson <wabz@pidgin.im>
parents: 22341
diff changeset
611 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
612 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
613 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
614
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
615 item = gnt_menuitem_check_new(_("Enable Logging"));
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
616 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
617 purple_conversation_is_logging(ggc->active_conv));
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
618 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
619 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
620
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
621 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
622 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
623 !(ggc->flags & FINCH_CONV_NO_SOUND));
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
624 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
625 gnt_menuitem_set_callback(item, toggle_sound_cb, ggc);
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
626 }
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
627
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
628 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
629 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
630 {
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
631 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
632 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
633 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
634 }
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
635
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
636 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
637 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
638 {
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
639 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
640 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
641 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
642 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
643 }
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
644 }
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
645
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
646 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
647 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
648 {
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
649 if (start == entry->start)
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
650 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
651 }
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
652
83cabde8668d Use the completion-signal to append a ': ' after a tab-completed nick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18305
diff changeset
653 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
654 finch_create_conversation(PurpleConversation *conv)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
655 {
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
656 FinchConv *ggc = FINCH_GET_DATA(conv);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
657 char *title;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
658 PurpleConversationType type;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
659 PurpleConversation *cc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
660 PurpleAccount *account;
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
661 PurpleBlistNode *convnode = NULL;
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
662
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
663 if (ggc)
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
664 return;
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
665
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
666 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
667 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
668 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
669 ggc = FINCH_GET_DATA(cc);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
670 else
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
671 ggc = g_new0(FinchConv, 1);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
672
19610
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
673 /* 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
674 if (ggc->list) {
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
675 purple_conversation_set_logging(conv,
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
676 purple_conversation_is_logging(ggc->list->data));
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
677 }
0663ae14e7c5 Separate logging support for each conversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19550
diff changeset
678
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
679 ggc->list = g_list_prepend(ggc->list, conv);
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
680 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
681 FINCH_SET_DATA(conv, ggc);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
682
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
683 if (cc && FINCH_GET_DATA(cc)) {
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
684 finch_conversation_set_active(conv);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
685 return;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
686 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
687
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
688 type = purple_conversation_get_type(conv);
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
689 title = get_conversation_title(conv, account);
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
690
16948
1b74eac08677 Conversation menus
Richard Nelson <wabz@pidgin.im>
parents: 16478
diff changeset
691 ggc->window = gnt_vwindow_new(FALSE);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
692 gnt_box_set_title(GNT_BOX(ggc->window), title);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
693 gnt_box_set_toplevel(GNT_BOX(ggc->window), TRUE);
13978
70d7030b7f26 [gaim-migrate @ 16418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13969
diff changeset
694 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
695
22337
9868137b6724 Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22336
diff changeset
696 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
697 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
698 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
699 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
700 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
701 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
702 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
703 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
704 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
705 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
706 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
707 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
708 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
709 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
710 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
711 break;
7301814a6124 Plucked revision from finchfeat to give different names to windows for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18301
diff changeset
712 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
713
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
714 ggc->tv = gnt_text_view_new();
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
715 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
716 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
717 purple_prefs_get_int(PREF_ROOT "/size/height"));
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
718
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
719 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
720 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
721 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
722 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
723 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
724 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
725 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
726 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
727 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
728 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
729 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
730 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
731 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
732 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
733 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
734 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
735 } else {
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
736 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
737 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
738 }
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
739
16190
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
740 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
741 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
742
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
743 ggc->entry = gnt_entry_new(NULL);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
744 gnt_box_add_widget(GNT_BOX(ggc->window), ggc->entry);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
745 gnt_widget_set_name(ggc->entry, "conversation-window-entry");
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
746 gnt_entry_set_history_length(GNT_ENTRY(ggc->entry), -1);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
747 gnt_entry_set_word_suggest(GNT_ENTRY(ggc->entry), TRUE);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
748 gnt_entry_set_always_suggest(GNT_ENTRY(ggc->entry), FALSE);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
749
16186
73cb5b43aaf9 Add a utility function to assist scrolling in a textview.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15931
diff changeset
750 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
751 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
752
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
753 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
754 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
755 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
756
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
757 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
758 purple_prefs_get_int(PREF_ROOT "/position/y"));
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
759 gnt_widget_show(ggc->window);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
760
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
761 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
762 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
763
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
764 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
765 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
766 }
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
767
19986
7c725191167c Remember the 'Enable Sounds' setting for a conversation. Closes #312.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
768 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
769 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
770 !finch_sound_is_enabled())
19612
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
771 ggc->flags |= FINCH_CONV_NO_SOUND;
043dcbf3a36e Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19611
diff changeset
772
19449
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
773 gg_create_menu(ggc);
a1a8233074ec Update the 'send to' menu in conversation windows when necessary.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18935
diff changeset
774
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
775 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
776 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
777 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
778 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
779
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
780 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
781 finch_destroy_conversation(PurpleConversation *conv)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
782 {
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
783 /* 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
784 FinchConv *ggc = FINCH_GET_DATA(conv);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
785 ggc->list = g_list_remove(ggc->list, conv);
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
786 if (ggc->list && conv == ggc->active_conv)
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
787 ggc->active_conv = ggc->list->data;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
788
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
789 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
790 g_free(ggc->u.chat);
18301
1988607deed3 Fix a few runtime warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
791 if (ggc->window)
1988607deed3 Fix a few runtime warnings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18273
diff changeset
792 gnt_widget_destroy(ggc->window);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
793 g_free(ggc);
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
794 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
795 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
796
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
797 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
798 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
799 PurpleMessageFlags flags, time_t mtime)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
800 {
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
801 FinchConv *ggconv = FINCH_GET_DATA(conv);
14073
db4207d73bd7 [gaim-migrate @ 16603]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
802 char *strip, *newline;
13993
8c12e7d15b40 [gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13989
diff changeset
803 GntTextFormatFlags fl = 0;
14092
191e12cbe464 [gaim-migrate @ 16632]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14086
diff changeset
804 int pos;
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
805
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
806 g_return_if_fail(ggconv != NULL);
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
807
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
808 if (ggconv->active_conv != conv) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
809 if (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV))
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
810 finch_conversation_set_active(conv);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
811 else
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
812 return;
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
813 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
814
14284
6c99565d0f50 [gaim-migrate @ 16903]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14253
diff changeset
815 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
816
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
817 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
818 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
819
14296
ac12fbad24f7 [gaim-migrate @ 16916]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14284
diff changeset
820 /* 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
821 if (purple_prefs_get_bool("/finch/conversations/timestamps"))
14122
daf2aaa61829 [gaim-migrate @ 16678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14121
diff changeset
822 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
823 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
824
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
825 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
826
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
827 if (flags & PURPLE_MESSAGE_AUTO_RESP)
14483
82b73e12ce27 [gaim-migrate @ 17129]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14470
diff changeset
828 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
829 _("<AUTO-REPLY> "), GNT_TEXT_FLAG_BOLD);
82b73e12ce27 [gaim-migrate @ 17129]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14470
diff changeset
830
20625
de0fcfa2bbc1 Show 'buzz'/'nudge' etc. messages differently from regular messages.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20622
diff changeset
831 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
832 !(flags & PURPLE_MESSAGE_NOTIFY))
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
833 {
14427
8af0c81db5b9 [gaim-migrate @ 17071]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14413
diff changeset
834 char * name = NULL;
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
835 GntTextFormatFlags msgflags = GNT_TEXT_FLAG_NORMAL;
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
836 gboolean me = FALSE;
14427
8af0c81db5b9 [gaim-migrate @ 17071]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14413
diff changeset
837
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
838 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
839 name = g_strdup_printf("*** %s", who);
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
840 msgflags = gnt_color_pair(color_message_action);
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
841 me = TRUE;
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
842 } else {
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
843 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
844 if (flags & PURPLE_MESSAGE_SEND)
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
845 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
846 else if (flags & PURPLE_MESSAGE_NICK)
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
847 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
848 else
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
849 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
850 }
21859
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
851 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
852 name, msgflags);
5107469829ef Do not append ':' after expanding a /me.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21855
diff changeset
853 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
854 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
855 } else
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
856 fl = GNT_TEXT_FLAG_DIM;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
857
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
858 if (flags & PURPLE_MESSAGE_ERROR)
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
859 fl |= GNT_TEXT_FLAG_BOLD;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
860
14073
db4207d73bd7 [gaim-migrate @ 16603]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
861 /* 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
862 newline = purple_strdup_withhtml(message);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
863 strip = purple_markup_strip_html(newline);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
864 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
865 strip, fl);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
866
14073
db4207d73bd7 [gaim-migrate @ 16603]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14072
diff changeset
867 g_free(newline);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
868 g_free(strip);
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
869
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
870 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
871 purple_conv_im_get_typing_state(PURPLE_CONV_IM(conv)) == PURPLE_TYPING) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
872 strip = g_strdup_printf(_("\n%s is typing..."), purple_conversation_get_name(conv));
15233
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
873 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
874 strip, GNT_TEXT_FLAG_DIM, "typing");
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
875 g_free(strip);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
876 }
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
877
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
878 if (pos <= 1)
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
879 gnt_text_view_scroll(GNT_TEXT_VIEW(ggconv->tv), 0);
fdd9e78534ad [gaim-migrate @ 17957]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14939
diff changeset
880
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
881 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
882 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
883 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
884 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
885 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
886 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
887 }
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
888 }
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
889
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
890 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
891 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
892 PurpleMessageFlags flags, time_t mtime)
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
893 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
894 purple_conversation_write(conv, who, message, flags, mtime);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
895 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
896
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
897 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
898 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
899 PurpleMessageFlags flags, time_t mtime)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
900 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
901 PurpleAccount *account = purple_conversation_get_account(conv);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
902 if (flags & PURPLE_MESSAGE_SEND)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
903 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
904 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
905 if (!who)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
906 who = purple_account_get_alias(account);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
907 if (!who)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
908 who = purple_account_get_username(account);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
909 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
910 else if (flags & PURPLE_MESSAGE_RECV)
14070
4ced9ac77397 [gaim-migrate @ 16594]
Richard Nelson <wabz@pidgin.im>
parents: 14050
diff changeset
911 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
912 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
913 who = purple_conversation_get_name(conv);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
914 buddy = purple_find_buddy(account, who);
14070
4ced9ac77397 [gaim-migrate @ 16594]
Richard Nelson <wabz@pidgin.im>
parents: 14050
diff changeset
915 if (buddy)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
916 who = purple_buddy_get_contact_alias(buddy);
14070
4ced9ac77397 [gaim-migrate @ 16594]
Richard Nelson <wabz@pidgin.im>
parents: 14050
diff changeset
917 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
918
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
919 purple_conversation_write(conv, who, message, flags, mtime);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
920 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
921
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
922 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
923 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
924 const char *message, PurpleMessageFlags flags, time_t mtime)
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
925 {
13959
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
926 const char *name;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
927 if (alias && *alias)
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
928 name = alias;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
929 else if (who && *who)
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
930 name = who;
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
931 else
49d3a87c2679 [gaim-migrate @ 16382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13958
diff changeset
932 name = NULL;
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
933
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
934 finch_write_common(conv, name, message, flags, mtime);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
935 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
936
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
937 static const char *
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
938 chat_flag_text(PurpleConvChatBuddyFlags flags)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
939 {
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
940 if (flags & PURPLE_CBFLAGS_FOUNDER)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
941 return "~";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
942 if (flags & PURPLE_CBFLAGS_OP)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
943 return "@";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
944 if (flags & PURPLE_CBFLAGS_HALFOP)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
945 return "%";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
946 if (flags & PURPLE_CBFLAGS_VOICE)
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
947 return "+";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
948 return " ";
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
949 }
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
950
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
951 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
952 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
953 {
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
954 FinchConv *ggc = FINCH_GET_DATA(conv);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
955 GntEntry *entry = GNT_ENTRY(ggc->entry);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
956
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
957 if (!new_arrivals)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
958 {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
959 /* Print the list of users in the room */
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
960 GString *string = g_string_new(_("List of users:\n"));
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
961 GList *iter;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
962
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
963 for (iter = users; iter; iter = iter->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
964 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
965 PurpleConvChatBuddy *cbuddy = iter->data;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
966 char *str;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
967
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
968 if ((str = cbuddy->alias) == NULL)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
969 str = cbuddy->name;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
970 g_string_append_printf(string, "[ %s ]", str);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
971 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
972
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
973 purple_conversation_write(conv, NULL, string->str,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
974 PURPLE_MESSAGE_SYSTEM, time(NULL));
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
975 g_string_free(string, TRUE);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
976 }
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
977
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
978 for (; users; users = users->next)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
979 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
980 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
981 GntTree *tree = GNT_TREE(ggc->u.chat->userlist);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
982 gnt_entry_add_suggest(entry, cbuddy->name);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
983 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
984 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
985 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
986 }
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
987 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
988
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
989 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
990 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
991 {
14318
07aba2cdc261 [gaim-migrate @ 16938]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14296
diff changeset
992 /* 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
993 FinchConv *ggc = FINCH_GET_DATA(conv);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
994 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
995 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
996 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
997
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
998 gnt_entry_remove_suggest(entry, old);
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
999 gnt_tree_remove(tree, (gpointer)old);
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1000
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1001 gnt_entry_add_suggest(entry, new_n);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1002 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
1003 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
1004 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
1005 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1006
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1007 static void
17164
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1008 finch_chat_remove_users(PurpleConversation *conv, GList *list)
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1009 {
14318
07aba2cdc261 [gaim-migrate @ 16938]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14296
diff changeset
1010 /* 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
1011 FinchConv *ggc = FINCH_GET_DATA(conv);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1012 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
1013 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
1014 GntTree *tree = GNT_TREE(ggc->u.chat->userlist);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14122
diff changeset
1015 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
1016 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
1017 }
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1018 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1019
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1020 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1021 finch_chat_update_user(PurpleConversation *conv, const char *user)
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1022 {
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1023 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
1024 FinchConv *ggc = FINCH_GET_DATA(conv);
17115
7295bc64f5fa Show user flags in chat userlist.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17076
diff changeset
1025 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
1026 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1027
19611
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1028 static void
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1029 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
1030 {
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1031 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
1032 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
1033 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
1034 }
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1035
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1036 static gboolean
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1037 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
1038 {
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1039 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
1040 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
1041 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
1042 return FALSE;
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1043 }
1ea4a579fbfa Add two missing conversation-uiops functions. (has_focus and present)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19610
diff changeset
1044
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1045 static PurpleConversationUiOps conv_ui_ops =
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1046 {
17164
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1047 finch_create_conversation,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1048 finch_destroy_conversation,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1049 finch_write_chat,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1050 finch_write_im,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1051 finch_write_conv,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1052 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
1053 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
1054 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
1055 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
1056 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
1057 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
1058 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
1059 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
1060 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
1061 NULL, /* send_confirm */
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1062 NULL,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1063 NULL,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1064 NULL,
3a005b9e8f28 Death to more futuristic struct initialization. This should be the last.
Richard Laager <rlaager@pidgin.im>
parents: 17115
diff changeset
1065 NULL
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1066 };
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1067
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1068 PurpleConversationUiOps *finch_conv_get_ui_ops()
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1069 {
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1070 return &conv_ui_ops;
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1071 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1072
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1073 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1074 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1075 say_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1076 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1077 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1078 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
1079 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
1080 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
1081 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
1082
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1083 return PURPLE_CMD_RET_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1084 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1085
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1086 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1087 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1088 me_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1089 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1090 {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1091 char *tmp;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1092
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1093 tmp = g_strdup_printf("/me %s", args[0]);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1094
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1095 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
1096 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
1097 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
1098 purple_conv_chat_send(PURPLE_CONV_CHAT(conv), tmp);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1099
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1100 g_free(tmp);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1101 return PURPLE_CMD_RET_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1102 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1103
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1104 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1105 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1106 debug_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1107 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1108 {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1109 char *tmp, *markup;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1110 PurpleCmdStatus status;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1111
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1112 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
1113 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
1114 markup = g_markup_escape_text(tmp, -1);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1115
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1116 status = purple_cmd_do_command(conv, tmp, markup, error);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1117
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1118 g_free(tmp);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1119 g_free(markup);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1120 return status;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1121 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1122 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
1123 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
1124 return PURPLE_CMD_STATUS_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1125 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1126 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1127
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1128 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1129 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1130 clear_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1131 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1132 {
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
1133 FinchConv *ggconv = FINCH_GET_DATA(conv);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1134 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
1135 purple_conversation_clear_message_history(conv);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1136 return PURPLE_CMD_STATUS_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1137 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1138
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1139 /* Xerox */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1140 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1141 help_command_cb(PurpleConversation *conv,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1142 const char *cmd, char **args, char **error, void *data)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1143 {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1144 GList *l, *text;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1145 GString *s;
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1146
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1147 if (args[0] != NULL) {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1148 s = g_string_new("");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1149 text = purple_cmd_help(conv, args[0]);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1150
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1151 if (text) {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1152 for (l = text; l; l = l->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1153 if (l->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1154 g_string_append_printf(s, "%s\n", (char *)l->data);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1155 else
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1156 g_string_append_printf(s, "%s", (char *)l->data);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1157 } else {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1158 g_string_append(s, _("No such command (in this context)."));
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1159 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1160 } else {
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1161 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
1162 "The following commands are available in this context:\n"));
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1163
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1164 text = purple_cmd_list(conv);
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1165 for (l = text; l; l = l->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1166 if (l->next)
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1167 g_string_append_printf(s, "%s, ", (char *)l->data);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1168 else
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1169 g_string_append_printf(s, "%s.", (char *)l->data);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1170 g_list_free(text);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1171 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1172
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1173 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
1174 g_string_free(s, TRUE);
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1175
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1176 return PURPLE_CMD_STATUS_OK;
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1177 }
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1178
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1179 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1180 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
1181 {
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21859
diff changeset
1182 void (*callback)(void) = data;
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
1183 callback();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1184 return PURPLE_CMD_STATUS_OK;
14086
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
1185 }
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1186
16949
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1187 static PurpleCmdRet
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1188 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
1189 {
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
1190 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
1191 FinchConvChat *ch;
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1192 if (!fc)
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1193 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
1194
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1195 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
1196 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
1197 (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
1198 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
1199 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
1200 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
1201 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
1202 }
fd7fcea88ac0 Add a /users command to toggle the userlist in chat windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16948
diff changeset
1203
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1204 void finch_conversation_init()
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1205 {
21855
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1206 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
1207 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
1208 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
1209 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
1210 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
1211 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
1212 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
1213 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
1214 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
1215 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
1216 if (!color_timestamp)
fc93ce6595e4 Add color to the conversation window to indicate various message attributes
Richard Nelson <wabz@pidgin.im>
parents: 21453
diff changeset
1217 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
1218 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
1219 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
1220 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
1221 purple_prefs_add_none(PREF_ROOT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1222 purple_prefs_add_none(PREF_ROOT "/size");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1223 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
1224 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
1225 purple_prefs_add_none(PREF_ROOT "/position");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1226 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
1227 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
1228 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
1229 purple_prefs_add_bool(PREF_USERLIST, FALSE);
14072
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
1230
4e64a4f18686 [gaim-migrate @ 16602]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14070
diff changeset
1231 /* Xerox the commands */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1232 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
1233 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1234 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
1235 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
1236 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1237 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
1238 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
1239 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1240 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
1241 purple_cmd_register("clear", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1242 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
14033
127990de806d [gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14028
diff changeset
1243 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
1244 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
1245 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
1246 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
1247 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
1248 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
1249 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
1250
732c14687955 [gaim-migrate @ 16622]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14073
diff changeset
1251 /* 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
1252 purple_cmd_register("plugins", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1253 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
1254 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
1255 purple_cmd_register("buddylist", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1256 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
1257 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
1258 purple_cmd_register("accounts", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1259 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
1260 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
1261 purple_cmd_register("debugwin", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1262 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
1263 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
1264 purple_cmd_register("prefs", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1265 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
1266 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
1267 purple_cmd_register("status", "", PURPLE_CMD_P_DEFAULT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1268 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
1269 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
1270
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1271 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
1272 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
1273 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
1274 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
1275 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
1276 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
1277 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
1278 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
1279 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
1280 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
1281 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
1282 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
1283 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
1284 PURPLE_CALLBACK(account_signed_on_off), NULL);
13947
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1285 }
a77f6f615c20 [gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1286
15878
f52832b611fe renamed gaim-text to finch
Sean Egan <seanegan@pidgin.im>
parents: 15841
diff changeset
1287 void finch_conversation_uninit()
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1288 {
17076
9968d75058a4 Notify when you leave a chat, after /part or /kick.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17028
diff changeset
1289 purple_signals_disconnect_by_handle(finch_conv_get_handle());
13969
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1290 }
0541f389442e [gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13959
diff changeset
1291
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1292 void finch_conversation_set_active(PurpleConversation *conv)
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1293 {
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
1294 FinchConv *ggconv = FINCH_GET_DATA(conv);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1295 PurpleAccount *account;
14470
352d47a0724d [gaim-migrate @ 17116]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14450
diff changeset
1296 char *title;
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1297
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1298 g_return_if_fail(ggconv);
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1299 g_return_if_fail(g_list_find(ggconv->list, conv));
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1300
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1301 ggconv->active_conv = conv;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15878
diff changeset
1302 account = purple_conversation_get_account(conv);
14612
308d4a6d4e84 [gaim-migrate @ 17273]
Richard Nelson <wabz@pidgin.im>
parents: 14483
diff changeset
1303 title = get_conversation_title(conv, account);
14470
352d47a0724d [gaim-migrate @ 17116]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14450
diff changeset
1304 gnt_screen_rename_widget(ggconv->window, title);
352d47a0724d [gaim-migrate @ 17116]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14450
diff changeset
1305 g_free(title);
14450
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1306 }
1ac2b6e98ef8 [gaim-migrate @ 17094]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14427
diff changeset
1307
16190
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1308 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
1309 {
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
1310 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
1311 int height, width;
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1312
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1313 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
1314
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1315 if (widget) {
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1316 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
1317 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
1318 }
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1319
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1320 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
1321 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
1322 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
1323 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
1324 }
435e34f11655 Allow adding information widgets in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16186
diff changeset
1325

mercurial