Mercurial > pidgin
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 |
rev | line source |
---|---|
15817 | 1 /** |
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 | 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 | 9 * to list here. Please refer to the COPYRIGHT file distributed with this |
10 * source distribution. | |
11 * | |
12 * This program is free software; you can redistribute it and/or modify | |
13 * it under the terms of the GNU General Public License as published by | |
14 * the Free Software Foundation; either version 2 of the License, or | |
15 * (at your option) any later version. | |
16 * | |
17 * This program is distributed in the hope that it will be useful, | |
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 * GNU General Public License for more details. | |
21 * | |
22 * You should have received a copy of the GNU General Public License | |
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 | 25 */ |
26 #include <string.h> | |
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 | 30 #include <cmds.h> |
31 #include <idle.h> | |
32 #include <prefs.h> | |
33 #include <util.h> | |
34 | |
35 #include "gntaccount.h" | |
36 #include "gntblist.h" | |
37 #include "gntconv.h" | |
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 | 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 | 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 | 45 #include "gntstatus.h" |
46 | |
47 #include "gnt.h" | |
48 #include "gntbox.h" | |
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 | 51 #include "gntmenu.h" |
52 #include "gntmenuitem.h" | |
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 | 58 #include "gntwindow.h" |
15817 | 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 | 63 |
64 #include "config.h" | |
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 | 109 static void |
110 send_typing_notification(GntWidget *w, FinchConv *ggconv) | |
111 { | |
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 | 115 PurpleConversation *conv = ggconv->active_conv; |
116 PurpleConvIm *im = PURPLE_CONV_IM(conv); | |
15817 | 117 if (!empty) { |
15822 | 118 gboolean send = (purple_conv_im_get_send_typed_timeout(im) == 0); |
15817 | 119 |
15822 | 120 purple_conv_im_stop_send_typed_timeout(im); |
121 purple_conv_im_start_send_typed_timeout(im); | |
122 if (send || (purple_conv_im_get_type_again(im) != 0 && | |
123 time(NULL) > purple_conv_im_get_type_again(im))) { | |
15817 | 124 unsigned int timeout; |
15822 | 125 timeout = serv_send_typing(purple_conversation_get_gc(conv), |
126 purple_conversation_get_name(conv), | |
127 PURPLE_TYPING); | |
128 purple_conv_im_set_type_again(im, timeout); | |
15817 | 129 } |
130 } else { | |
15822 | 131 purple_conv_im_stop_send_typed_timeout(im); |
15817 | 132 |
15822 | 133 serv_send_typing(purple_conversation_get_gc(conv), |
134 purple_conversation_get_name(conv), | |
135 PURPLE_NOT_TYPING); | |
15817 | 136 } |
137 } | |
138 } | |
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 | 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 | 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 | 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 | 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 | 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 | 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, "'", "'"); |
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 | 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 | 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 | 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 | 215 } |
216 | |
217 static void | |
218 closing_window(GntWidget *window, FinchConv *ggconv) | |
219 { | |
220 GList *list = ggconv->list; | |
221 ggconv->window = NULL; | |
222 while (list) { | |
15822 | 223 PurpleConversation *conv = list->data; |
15817 | 224 list = list->next; |
15822 | 225 purple_conversation_destroy(conv); |
15817 | 226 } |
227 } | |
228 | |
229 static void | |
230 size_changed_cb(GntWidget *widget, int width, int height) | |
231 { | |
232 int w, h; | |
233 gnt_widget_get_size(widget, &w, &h); | |
15822 | 234 purple_prefs_set_int(PREF_ROOT "/size/width", w); |
235 purple_prefs_set_int(PREF_ROOT "/size/height", h); | |
15817 | 236 } |
237 | |
238 static void | |
239 save_position_cb(GntWidget *w, int x, int y) | |
240 { | |
15822 | 241 purple_prefs_set_int(PREF_ROOT "/position/x", x); |
242 purple_prefs_set_int(PREF_ROOT "/position/y", y); | |
15817 | 243 } |
244 | |
15822 | 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 | 247 { |
15822 | 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 | 250 PurpleConversation *ret = NULL; |
15817 | 251 |
252 if (!buddy) | |
253 return NULL; | |
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 | 257 if (node == (PurpleBlistNode*)buddy) |
15817 | 258 continue; |
15822 | 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 | 261 break; |
262 } | |
263 return ret; | |
264 } | |
265 | |
266 static char * | |
15822 | 267 get_conversation_title(PurpleConversation *conv, PurpleAccount *account) |
15817 | 268 { |
15822 | 269 return g_strdup_printf(_("%s (%s -- %s)"), purple_conversation_get_title(conv), |
270 purple_account_get_username(account), purple_account_get_protocol_name(account)); | |
15817 | 271 } |
272 | |
273 static void | |
15822 | 274 update_buddy_typing(PurpleAccount *account, const char *who, gpointer null) |
15817 | 275 { |
15822 | 276 PurpleConversation *conv; |
15817 | 277 FinchConv *ggc; |
15822 | 278 PurpleConvIm *im = NULL; |
15817 | 279 char *title, *str; |
280 | |
15822 | 281 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, account); |
15817 | 282 |
283 if (!conv) | |
284 return; | |
285 | |
15822 | 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 | 288 |
15822 | 289 if (purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { |
15817 | 290 int scroll; |
291 str = get_conversation_title(conv, account); | |
292 title = g_strdup_printf(_("%s [%s]"), str, | |
293 gnt_ascii_only() ? "T" : "\342\243\277"); | |
294 g_free(str); | |
295 | |
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 | 298 /* Updating is a little buggy. So just remove and add a new one */ |
299 gnt_text_view_tag_change(GNT_TEXT_VIEW(ggc->tv), "typing", NULL, TRUE); | |
300 gnt_text_view_append_text_with_tag(GNT_TEXT_VIEW(ggc->tv), | |
301 str, GNT_TEXT_FLAG_DIM, "typing"); | |
302 g_free(str); | |
303 if (scroll <= 1) | |
304 gnt_text_view_scroll(GNT_TEXT_VIEW(ggc->tv), 0); | |
305 } else { | |
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 | 308 } |
309 gnt_screen_rename_widget(ggc->window, title); | |
310 g_free(title); | |
311 } | |
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 | 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 | 373 { |
374 static int handle; | |
375 return &handle; | |
376 } | |
377 | |
378 static void | |
16892 | 379 clear_scrollback_cb(GntMenuItem *item, gpointer ggconv) |
380 { | |
381 FinchConv *ggc = ggconv; | |
382 gnt_text_view_clear(GNT_TEXT_VIEW(ggc->tv)); | |
383 } | |
384 | |
385 static void | |
386 send_file_cb(GntMenuItem *item, gpointer ggconv) | |
387 { | |
388 FinchConv *ggc = ggconv; | |
389 serv_send_file(purple_conversation_get_gc(ggc->active_conv), | |
390 purple_conversation_get_name(ggc->active_conv), NULL); | |
391 } | |
392 | |
393 static void | |
394 add_pounce_cb(GntMenuItem *item, gpointer ggconv) | |
395 { | |
396 FinchConv *ggc = ggconv; | |
397 finch_pounce_editor_show( | |
398 purple_conversation_get_account(ggc->active_conv), | |
399 purple_conversation_get_name(ggc->active_conv), NULL); | |
400 } | |
401 | |
402 static void | |
403 get_info_cb(GntMenuItem *item, gpointer ggconv) | |
404 { | |
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 | 407 purple_conversation_get_name(ggc->active_conv)); |
408 } | |
409 | |
410 static void | |
411 toggle_timestamps_cb(GntMenuItem *item, gpointer ggconv) | |
412 { | |
413 purple_prefs_set_bool(PREF_ROOT "/timestamps", | |
414 !purple_prefs_get_bool(PREF_ROOT "/timestamps")); | |
415 } | |
416 | |
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 | 464 send_to_cb(GntMenuItem *m, gpointer n) |
465 { | |
466 PurpleAccount *account = g_object_get_data(G_OBJECT(m), "purple_account"); | |
467 gchar *buddy = g_object_get_data(G_OBJECT(m), "purple_buddy_name"); | |
468 PurpleConversation *conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, buddy); | |
469 finch_conversation_set_active(conv); | |
470 } | |
471 | |
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 | 511 generate_send_to_menu(FinchConv *ggc) |
512 { | |
513 GntWidget *sub, *menu = ggc->menu; | |
514 GntMenuItem *item; | |
515 GSList *buds; | |
516 GList *list = NULL; | |
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 | 520 if (!buds) |
521 return; | |
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 | 528 sub = gnt_menu_new(GNT_MENU_POPUP); |
529 gnt_menuitem_set_submenu(item, GNT_MENU(sub)); | |
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 | 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 | 535 PurpleBuddy *buddy = (PurpleBuddy *)node; |
536 PurpleAccount *account = purple_buddy_get_account(buddy); | |
537 if (purple_account_is_connected(account)) { | |
538 /* Use the PurplePresence to get unique buddies. */ | |
539 PurplePresence *presence = purple_buddy_get_presence(buddy); | |
540 if (!g_list_find(list, presence)) | |
541 list = g_list_prepend(list, presence); | |
542 } | |
543 } | |
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 | 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 | 548 PurpleAccount *account = purple_buddy_get_account(buddy); |
549 gchar *name = g_strdup(purple_buddy_get_name(buddy)); | |
550 gchar *text = g_strdup_printf("%s (%s)", purple_buddy_get_name(buddy), purple_account_get_username(account)); | |
551 item = gnt_menuitem_new(text); | |
552 g_free(text); | |
553 gnt_menu_add_item(GNT_MENU(sub), item); | |
554 gnt_menuitem_set_callback(item, send_to_cb, NULL); | |
555 g_object_set_data(G_OBJECT(item), "purple_account", account); | |
556 g_object_set_data_full(G_OBJECT(item), "purple_buddy_name", name, g_free); | |
557 } | |
558 } | |
559 | |
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 | 602 gg_create_menu(FinchConv *ggc) |
603 { | |
604 GntWidget *menu, *sub; | |
605 GntMenuItem *item; | |
606 | |
607 ggc->menu = menu = gnt_menu_new(GNT_MENU_TOPLEVEL); | |
608 gnt_window_set_menu(GNT_WINDOW(ggc->window), GNT_MENU(menu)); | |
609 | |
610 item = gnt_menuitem_new(_("Conversation")); | |
611 gnt_menu_add_item(GNT_MENU(menu), item); | |
612 | |
613 sub = gnt_menu_new(GNT_MENU_POPUP); | |
614 gnt_menuitem_set_submenu(item, GNT_MENU(sub)); | |
615 | |
616 item = gnt_menuitem_new(_("Clear Scrollback")); | |
617 gnt_menu_add_item(GNT_MENU(sub), item); | |
618 gnt_menuitem_set_callback(item, clear_scrollback_cb, ggc); | |
619 | |
620 item = gnt_menuitem_check_new(_("Show Timestamps")); | |
621 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), | |
622 purple_prefs_get_bool(PREF_ROOT "/timestamps")); | |
623 gnt_menu_add_item(GNT_MENU(sub), item); | |
624 gnt_menuitem_set_callback(item, toggle_timestamps_cb, ggc); | |
625 | |
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 | 637 |
638 item = gnt_menuitem_new(_("Add Buddy Pounce...")); | |
639 gnt_menu_add_item(GNT_MENU(sub), item); | |
640 gnt_menuitem_set_callback(item, add_pounce_cb, ggc); | |
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 | 649 |
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 | 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 | 672 } |
673 | |
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 | 737 finch_create_conversation(PurpleConversation *conv) |
15817 | 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 | 740 char *title; |
15822 | 741 PurpleConversationType type; |
742 PurpleConversation *cc; | |
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 | 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 | 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 | 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 | 755 else |
756 ggc = g_new0(FinchConv, 1); | |
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 | 764 ggc->list = g_list_prepend(ggc->list, conv); |
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 | 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 | 769 finch_conversation_set_active(conv); |
770 return; | |
771 } | |
772 | |
15822 | 773 type = purple_conversation_get_type(conv); |
15817 | 774 title = get_conversation_title(conv, account); |
775 | |
16892 | 776 ggc->window = gnt_vwindow_new(FALSE); |
15817 | 777 gnt_box_set_title(GNT_BOX(ggc->window), title); |
778 gnt_box_set_toplevel(GNT_BOX(ggc->window), TRUE); | |
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 | 798 |
799 ggc->tv = gnt_text_view_new(); | |
800 gnt_widget_set_name(ggc->tv, "conversation-window-textview"); | |
15822 | 801 gnt_widget_set_size(ggc->tv, purple_prefs_get_int(PREF_ROOT "/size/width"), |
802 purple_prefs_get_int(PREF_ROOT "/size/height")); | |
15817 | 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 | 828 ggc->entry = gnt_entry_new(NULL); |
829 gnt_box_add_widget(GNT_BOX(ggc->window), ggc->entry); | |
830 gnt_widget_set_name(ggc->entry, "conversation-window-entry"); | |
831 gnt_entry_set_history_length(GNT_ENTRY(ggc->entry), -1); | |
832 gnt_entry_set_word_suggest(GNT_ENTRY(ggc->entry), TRUE); | |
833 gnt_entry_set_always_suggest(GNT_ENTRY(ggc->entry), FALSE); | |
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 | 840 g_signal_connect(G_OBJECT(ggc->window), "destroy", G_CALLBACK(closing_window), ggc); |
841 | |
15822 | 842 gnt_widget_set_position(ggc->window, purple_prefs_get_int(PREF_ROOT "/position/x"), |
843 purple_prefs_get_int(PREF_ROOT "/position/y")); | |
15817 | 844 gnt_widget_show(ggc->window); |
845 | |
846 g_signal_connect(G_OBJECT(ggc->tv), "size_changed", G_CALLBACK(size_changed_cb), NULL); | |
847 g_signal_connect(G_OBJECT(ggc->window), "position_set", G_CALLBACK(save_position_cb), NULL); | |
848 | |
15822 | 849 if (type == PURPLE_CONV_TYPE_IM) { |
15817 | 850 g_signal_connect(G_OBJECT(ggc->entry), "text_changed", G_CALLBACK(send_typing_notification), ggc); |
851 } | |
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 | 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 | 869 } |
870 | |
871 static void | |
15822 | 872 finch_destroy_conversation(PurpleConversation *conv) |
15817 | 873 { |
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 | 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 | 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 | 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 | 887 g_free(ggc); |
888 } | |
889 } | |
890 | |
891 static void | |
15822 | 892 finch_write_common(PurpleConversation *conv, const char *who, const char *message, |
893 PurpleMessageFlags flags, time_t mtime) | |
15817 | 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 | 896 char *strip, *newline; |
897 GntTextFormatFlags fl = 0; | |
898 int pos; | |
899 | |
900 g_return_if_fail(ggconv != NULL); | |
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 | 906 if (ggconv->active_conv != conv) { |
15822 | 907 if (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)) |
15817 | 908 finch_conversation_set_active(conv); |
909 else | |
910 return; | |
911 } | |
912 | |
913 pos = gnt_text_view_get_lines_below(GNT_TEXT_VIEW(ggconv->tv)); | |
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 | 916 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), "\n", GNT_TEXT_FLAG_NORMAL); |
917 | |
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 | 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 | 924 |
15822 | 925 if (flags & PURPLE_MESSAGE_AUTO_RESP) |
15817 | 926 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
927 _("<AUTO-REPLY> "), GNT_TEXT_FLAG_BOLD); | |
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 | 931 { |
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 | 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 | 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 | 958 fl = GNT_TEXT_FLAG_DIM; |
959 | |
15822 | 960 if (flags & PURPLE_MESSAGE_ERROR) |
15817 | 961 fl |= GNT_TEXT_FLAG_BOLD; |
962 | |
963 /* XXX: Remove this workaround when textview can parse messages. */ | |
15822 | 964 newline = purple_strdup_withhtml(message); |
965 strip = purple_markup_strip_html(newline); | |
15817 | 966 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
967 strip, fl); | |
968 | |
969 g_free(newline); | |
970 g_free(strip); | |
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 | 975 gnt_text_view_append_text_with_tag(GNT_TEXT_VIEW(ggconv->tv), |
976 strip, GNT_TEXT_FLAG_DIM, "typing"); | |
977 g_free(strip); | |
978 } | |
979 | |
980 if (pos <= 1) | |
981 gnt_text_view_scroll(GNT_TEXT_VIEW(ggconv->tv), 0); | |
982 | |
15822 | 983 if (flags & (PURPLE_MESSAGE_RECV | PURPLE_MESSAGE_NICK | PURPLE_MESSAGE_ERROR)) |
15817 | 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 | 990 } |
991 | |
992 static void | |
15822 | 993 finch_write_chat(PurpleConversation *conv, const char *who, const char *message, |
994 PurpleMessageFlags flags, time_t mtime) | |
15817 | 995 { |
15822 | 996 purple_conversation_write(conv, who, message, flags, mtime); |
15817 | 997 } |
998 | |
999 static void | |
15822 | 1000 finch_write_im(PurpleConversation *conv, const char *who, const char *message, |
1001 PurpleMessageFlags flags, time_t mtime) | |
15817 | 1002 { |
15822 | 1003 PurpleAccount *account = purple_conversation_get_account(conv); |
1004 if (flags & PURPLE_MESSAGE_SEND) | |
15817 | 1005 { |
15822 | 1006 who = purple_connection_get_display_name(purple_account_get_connection(account)); |
15817 | 1007 if (!who) |
15822 | 1008 who = purple_account_get_alias(account); |
15817 | 1009 if (!who) |
15822 | 1010 who = purple_account_get_username(account); |
15817 | 1011 } |
15822 | 1012 else if (flags & PURPLE_MESSAGE_RECV) |
15817 | 1013 { |
15822 | 1014 PurpleBuddy *buddy; |
1015 who = purple_conversation_get_name(conv); | |
1016 buddy = purple_find_buddy(account, who); | |
15817 | 1017 if (buddy) |
15822 | 1018 who = purple_buddy_get_contact_alias(buddy); |
15817 | 1019 } |
1020 | |
15822 | 1021 purple_conversation_write(conv, who, message, flags, mtime); |
15817 | 1022 } |
1023 | |
1024 static void | |
15822 | 1025 finch_write_conv(PurpleConversation *conv, const char *who, const char *alias, |
1026 const char *message, PurpleMessageFlags flags, time_t mtime) | |
15817 | 1027 { |
1028 const char *name; | |
1029 if (alias && *alias) | |
1030 name = alias; | |
1031 else if (who && *who) | |
1032 name = who; | |
1033 else | |
1034 name = NULL; | |
1035 | |
1036 finch_write_common(conv, name, message, flags, mtime); | |
1037 } | |
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 | 1053 static void |
15822 | 1054 finch_chat_add_users(PurpleConversation *conv, GList *users, gboolean new_arrivals) |
15817 | 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 | 1057 GntEntry *entry = GNT_ENTRY(ggc->entry); |
1058 | |
1059 if (!new_arrivals) | |
1060 { | |
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 | 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 | 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 | 1068 for (iter = users; iter; iter = iter->next) |
1069 { | |
15822 | 1070 PurpleConvChatBuddy *cbuddy = iter->data; |
15817 | 1071 char *str; |
1072 | |
1073 if ((str = cbuddy->alias) == NULL) | |
1074 str = cbuddy->name; | |
1075 g_string_append_printf(string, "[ %s ]", str); | |
1076 } | |
1077 | |
15822 | 1078 purple_conversation_write(conv, NULL, string->str, |
1079 PURPLE_MESSAGE_SYSTEM, time(NULL)); | |
15817 | 1080 g_string_free(string, TRUE); |
1081 } | |
1082 | |
1083 for (; users; users = users->next) | |
1084 { | |
15822 | 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 | 1087 gnt_entry_add_suggest(entry, cbuddy->name); |
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 | 1091 } |
1092 } | |
1093 | |
1094 static void | |
15822 | 1095 finch_chat_rename_user(PurpleConversation *conv, const char *old, const char *new_n, const char *new_a) |
15817 | 1096 { |
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 | 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 | 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 | 1106 gnt_entry_add_suggest(entry, new_n); |
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 | 1110 } |
1111 | |
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 | 1114 { |
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 | 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 | 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 | 1123 } |
1124 | |
1125 static void | |
15822 | 1126 finch_chat_update_user(PurpleConversation *conv, const char *user) |
15817 | 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 | 1131 } |
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 | 1150 static PurpleConversationUiOps conv_ui_ops = |
15817 | 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 | 1171 }; |
1172 | |
15822 | 1173 PurpleConversationUiOps *finch_conv_get_ui_ops() |
15817 | 1174 { |
1175 return &conv_ui_ops; | |
1176 } | |
1177 | |
1178 /* Xerox */ | |
15822 | 1179 static PurpleCmdRet |
1180 say_command_cb(PurpleConversation *conv, | |
15817 | 1181 const char *cmd, char **args, char **error, void *data) |
1182 { | |
15822 | 1183 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) |
1184 purple_conv_im_send(PURPLE_CONV_IM(conv), args[0]); | |
1185 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) | |
1186 purple_conv_chat_send(PURPLE_CONV_CHAT(conv), args[0]); | |
15817 | 1187 |
15822 | 1188 return PURPLE_CMD_RET_OK; |
15817 | 1189 } |
1190 | |
1191 /* Xerox */ | |
15822 | 1192 static PurpleCmdRet |
1193 me_command_cb(PurpleConversation *conv, | |
15817 | 1194 const char *cmd, char **args, char **error, void *data) |
1195 { | |
1196 char *tmp; | |
1197 | |
1198 tmp = g_strdup_printf("/me %s", args[0]); | |
1199 | |
15822 | 1200 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) |
1201 purple_conv_im_send(PURPLE_CONV_IM(conv), tmp); | |
1202 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) | |
1203 purple_conv_chat_send(PURPLE_CONV_CHAT(conv), tmp); | |
15817 | 1204 |
1205 g_free(tmp); | |
15822 | 1206 return PURPLE_CMD_RET_OK; |
15817 | 1207 } |
1208 | |
1209 /* Xerox */ | |
15822 | 1210 static PurpleCmdRet |
1211 debug_command_cb(PurpleConversation *conv, | |
15817 | 1212 const char *cmd, char **args, char **error, void *data) |
1213 { | |
1214 char *tmp, *markup; | |
15822 | 1215 PurpleCmdStatus status; |
15817 | 1216 |
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 | 1219 markup = g_markup_escape_text(tmp, -1); |
1220 | |
15822 | 1221 status = purple_cmd_do_command(conv, tmp, markup, error); |
15817 | 1222 |
1223 g_free(tmp); | |
1224 g_free(markup); | |
1225 return status; | |
1226 } else { | |
15822 | 1227 purple_conversation_write(conv, NULL, _("Supported debug options are: version"), |
1228 PURPLE_MESSAGE_NO_LOG|PURPLE_MESSAGE_ERROR, time(NULL)); | |
1229 return PURPLE_CMD_STATUS_OK; | |
15817 | 1230 } |
1231 } | |
1232 | |
1233 /* Xerox */ | |
15822 | 1234 static PurpleCmdRet |
1235 clear_command_cb(PurpleConversation *conv, | |
15817 | 1236 const char *cmd, char **args, char **error, void *data) |
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 | 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 | 1241 return PURPLE_CMD_STATUS_OK; |
15817 | 1242 } |
1243 | |
1244 /* Xerox */ | |
15822 | 1245 static PurpleCmdRet |
1246 help_command_cb(PurpleConversation *conv, | |
15817 | 1247 const char *cmd, char **args, char **error, void *data) |
1248 { | |
1249 GList *l, *text; | |
1250 GString *s; | |
1251 | |
1252 if (args[0] != NULL) { | |
1253 s = g_string_new(""); | |
15822 | 1254 text = purple_cmd_help(conv, args[0]); |
15817 | 1255 |
1256 if (text) { | |
1257 for (l = text; l; l = l->next) | |
1258 if (l->next) | |
1259 g_string_append_printf(s, "%s\n", (char *)l->data); | |
1260 else | |
1261 g_string_append_printf(s, "%s", (char *)l->data); | |
1262 } else { | |
1263 g_string_append(s, _("No such command (in this context).")); | |
1264 } | |
1265 } else { | |
1266 s = g_string_new(_("Use \"/help <command>\" for help on a specific command.\n" | |
1267 "The following commands are available in this context:\n")); | |
1268 | |
15822 | 1269 text = purple_cmd_list(conv); |
15817 | 1270 for (l = text; l; l = l->next) |
1271 if (l->next) | |
1272 g_string_append_printf(s, "%s, ", (char *)l->data); | |
1273 else | |
1274 g_string_append_printf(s, "%s.", (char *)l->data); | |
1275 g_list_free(text); | |
1276 } | |
1277 | |
15822 | 1278 purple_conversation_write(conv, NULL, s->str, PURPLE_MESSAGE_NO_LOG, time(NULL)); |
15817 | 1279 g_string_free(s, TRUE); |
1280 | |
15822 | 1281 return PURPLE_CMD_STATUS_OK; |
15817 | 1282 } |
1283 | |
15822 | 1284 static PurpleCmdRet |
1285 cmd_show_window(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data) | |
15817 | 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 | 1288 callback(); |
15822 | 1289 return PURPLE_CMD_STATUS_OK; |
15817 | 1290 } |
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 | 1352 void finch_conversation_init() |
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 | 1369 purple_prefs_add_none(PREF_ROOT); |
1370 purple_prefs_add_none(PREF_ROOT "/size"); | |
1371 purple_prefs_add_int(PREF_ROOT "/size/width", 70); | |
1372 purple_prefs_add_int(PREF_ROOT "/size/height", 20); | |
1373 purple_prefs_add_none(PREF_ROOT "/position"); | |
1374 purple_prefs_add_int(PREF_ROOT "/position/x", 0); | |
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 | 1378 |
1379 /* Xerox the commands */ | |
15822 | 1380 purple_cmd_register("say", "S", PURPLE_CMD_P_DEFAULT, |
1381 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 1382 say_command_cb, _("say <message>: Send a message normally as if you weren't using a command."), NULL); |
15822 | 1383 purple_cmd_register("me", "S", PURPLE_CMD_P_DEFAULT, |
1384 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 1385 me_command_cb, _("me <action>: Send an IRC style action to a buddy or chat."), NULL); |
15822 | 1386 purple_cmd_register("debug", "w", PURPLE_CMD_P_DEFAULT, |
1387 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 1388 debug_command_cb, _("debug <option>: Send various debug information to the current conversation."), NULL); |
15822 | 1389 purple_cmd_register("clear", "", PURPLE_CMD_P_DEFAULT, |
1390 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 1391 clear_command_cb, _("clear: Clears the conversation scrollback."), NULL); |
15822 | 1392 purple_cmd_register("help", "w", PURPLE_CMD_P_DEFAULT, |
1393 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, NULL, | |
15817 | 1394 help_command_cb, _("help <command>: 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 | 1398 |
1399 /* Now some commands to bring up some other windows */ | |
15822 | 1400 purple_cmd_register("plugins", "", PURPLE_CMD_P_DEFAULT, |
1401 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 1402 cmd_show_window, _("plugins: Show the plugins window."), finch_plugins_show_all); |
15822 | 1403 purple_cmd_register("buddylist", "", PURPLE_CMD_P_DEFAULT, |
1404 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 1405 cmd_show_window, _("buddylist: Show the buddylist."), finch_blist_show); |
15822 | 1406 purple_cmd_register("accounts", "", PURPLE_CMD_P_DEFAULT, |
1407 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 1408 cmd_show_window, _("accounts: Show the accounts window."), finch_accounts_show_all); |
15822 | 1409 purple_cmd_register("debugwin", "", PURPLE_CMD_P_DEFAULT, |
1410 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 1411 cmd_show_window, _("debugwin: Show the debug window."), finch_debug_window_show); |
15822 | 1412 purple_cmd_register("prefs", "", PURPLE_CMD_P_DEFAULT, |
1413 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 1414 cmd_show_window, _("prefs: Show the preference window."), finch_prefs_show_all); |
15822 | 1415 purple_cmd_register("status", "", PURPLE_CMD_P_DEFAULT, |
1416 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL, | |
15817 | 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 <class> <foreground> <background>: " |
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 " <class>: 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 " <foreground/background>: 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 | 1445 } |
1446 | |
1447 void finch_conversation_uninit() | |
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 | 1450 } |
1451 | |
15822 | 1452 void finch_conversation_set_active(PurpleConversation *conv) |
15817 | 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 | 1455 PurpleAccount *account; |
15817 | 1456 char *title; |
1457 | |
1458 g_return_if_fail(ggconv); | |
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 | 1462 |
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 | 1465 account = purple_conversation_get_account(conv); |
15817 | 1466 title = get_conversation_title(conv, account); |
1467 gnt_screen_rename_widget(ggconv->window, title); | |
1468 g_free(title); | |
1469 } | |
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 |