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