annotate finch/gntconv.c @ 24522:692c34bf98d8

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