plugins/musicmessaging/musicmessaging.c

Tue, 14 Feb 2006 05:43:43 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Tue, 14 Feb 2006 05:43:43 +0000
changeset 13281
3558cb15ebb9
parent 13234
1d8e569b2053
child 14018
0d82c17d8000
permissions
-rw-r--r--

[gaim-migrate @ 15646]
Always show a vertical scrollbar on conversations imhtmls. This will solve the shrinking conversation window bug. I chose this approach instead of saving the size of the window (as I had previous talked about), as this prevents the contents of the scrollback from rewrapping when the scrollbars appear or disappear. It also just seems to feel like the right thing to do, but maybe that's me being lazy.

11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
1 /*
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
2 * Music messaging plugin for Gaim
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
3 *
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
4 * Copyright (C) 2005 Christian Muise.
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
5 *
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
6 * This program is free software; you can redistribute it and/or
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
7 * modify it under the terms of the GNU General Public License as
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
8 * published by the Free Software Foundation; either version 2 of the
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
9 * License, or (at your option) any later version.
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
10 *
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
11 * This program is distributed in the hope that it will be useful, but
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
14 * General Public License for more details.
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
15 *
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
16 * You should have received a copy of the GNU General Public License
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
17 * along with this program; if not, write to the Free Software
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
19 * 02111-1307, USA.
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
20 */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
21
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
22 #include "internal.h"
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
23 #include "gtkgaim.h"
11088
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
24
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
25 #include "conversation.h"
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
26
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
27 #include "gtkconv.h"
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
28 #include "gtkplugin.h"
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
29 #include "gtkutils.h"
11088
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
30
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
31 #include "notify.h"
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
32 #include "version.h"
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
33 #include "debug.h"
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
34
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
35 #define DBUS_API_SUBJECT_TO_CHANGE
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
36 #include <dbus/dbus.h>
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
37 #include "dbus-maybe.h"
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
38 #include "dbus-bindings.h"
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
39 #include "dbus-server.h"
11365
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
40 #include "dbus-gaim.h"
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
41
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
42 #define MUSICMESSAGING_PLUGIN_ID "gtk-hazure-musicmessaging"
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
43 #define MUSICMESSAGING_PREFIX "##MM##"
13090
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
44 #define MUSICMESSAGING_START_MSG _("A music messaging session has been requested. Please click the MM icon to accept.")
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
45 #define MUSICMESSAGING_CONFIRM_MSG _("Music messaging session confirmed.")
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
46
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
47 typedef struct {
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
48 GaimConversation *conv; /* pointer to the conversation */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
49 GtkWidget *seperator; /* seperator in the conversation */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
50 GtkWidget *button; /* button in the conversation */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
51 GPid pid; /* the pid of the score editor */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
52
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
53 gboolean started; /* session has started and editor run */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
54 gboolean originator; /* started the mm session */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
55 gboolean requested; /* received a request to start a session */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
56
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
57 } MMConversation;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
58
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
59 static gboolean start_session(MMConversation *mmconv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
60 static void run_editor(MMConversation *mmconv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
61 static void kill_editor(MMConversation *mmconv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
62 static void add_button (MMConversation *mmconv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
63 static void remove_widget (GtkWidget *button);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
64 static void init_conversation (GaimConversation *conv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
65 static void conv_destroyed(GaimConversation *conv);
13234
1d8e569b2053 [gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13090
diff changeset
66 static gboolean intercept_sent(GaimAccount *account, const char *who, char **message, void* pData);
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
67 static gboolean intercept_received(GaimAccount *account, char **sender, char **message, GaimConversation *conv, int *flags);
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
68 static gboolean send_change_request (const int session, const char *id, const char *command, const char *parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
69 static gboolean send_change_confirmed (const int session, const char *command, const char *parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
70 static void session_end (MMConversation *mmconv);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
71
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
72 /* Globals */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
73 /* List of sessions */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
74 GList *conversations;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
75
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
76 /* Pointer to this plugin */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
77 GaimPlugin *plugin_pointer;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
78
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
79 /* Define types needed for DBus */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
80 DBusGConnection *connection;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
81 DBusGProxy *proxy;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
82 #define DBUS_SERVICE_GSCORE "org.gscore.GScoreService"
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
83 #define DBUS_PATH_GSCORE "/org/gscore/GScoreObject"
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
84 #define DBUS_INTERFACE_GSCORE "org.gscore.GScoreInterface"
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
85
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
86 /* Define the functions to export for use with DBus */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
87 DBUS_EXPORT void music_messaging_change_request (const int session, const char *command, const char *parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
88 DBUS_EXPORT void music_messaging_change_confirmed (const int session, const char *command, const char *parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
89 DBUS_EXPORT void music_messaging_change_failed (const int session, const char *id, const char *command, const char *parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
90 DBUS_EXPORT void music_messaging_done_session (const int session);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
91
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
92 /* This file has been generated by the #dbus-analize-functions.py
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
93 script. It contains dbus wrappers for the four functions declared
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
94 above. */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
95 #include "music-messaging-bindings.c"
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
96
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
97 /* Exported functions */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
98 void music_messaging_change_request(const int session, const char *command, const char *parameters)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
99 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
100
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
101 MMConversation *mmconv = (MMConversation *)g_list_nth_data(conversations, session);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
102
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
103 if (mmconv->started)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
104 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
105 if (mmconv->originator)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
106 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
107 char *name = (mmconv->conv)->name;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
108 send_change_request (session, name, command, parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
109 } else
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
110 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
111 GString *to_send = g_string_new("");
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
112 g_string_append_printf(to_send, "##MM## request %s %s##MM##", command, parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
113
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
114 gaim_conv_im_send(GAIM_CONV_IM(mmconv->conv), to_send->str);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
115
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
116 gaim_debug_misc("Sent request: %s\n", to_send->str);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
117 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
118 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
119
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
120 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
121
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
122 void music_messaging_change_confirmed(const int session, const char *command, const char *parameters)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
123 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
124
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
125 MMConversation *mmconv = (MMConversation *)g_list_nth_data(conversations, session);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
126
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
127 if (mmconv->started)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
128 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
129 if (mmconv->originator)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
130 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
131 GString *to_send = g_string_new("");
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
132 g_string_append_printf(to_send, "##MM## confirm %s %s##MM##", command, parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
133
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
134 gaim_conv_im_send(GAIM_CONV_IM(mmconv->conv), to_send->str);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
135 } else
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
136 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
137 /* Do nothing. If they aren't the originator, then they can't confirm. */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
138 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
139 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
140
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
141 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
142
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
143 void music_messaging_change_failed(const int session, const char *id, const char *command, const char *parameters)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
144 {
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
145 MMConversation *mmconv = (MMConversation *)g_list_nth_data(conversations, session);
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
146
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
147 gaim_notify_message(plugin_pointer, GAIM_NOTIFY_MSG_INFO, command,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
148 parameters, NULL, NULL, NULL);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
149
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
150 if (mmconv->started)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
151 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
152 if (mmconv->originator)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
153 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
154 GString *to_send = g_string_new("");
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
155 g_string_append_printf(to_send, "##MM## failed %s %s %s##MM##", id, command, parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
156
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
157 gaim_conv_im_send(GAIM_CONV_IM(mmconv->conv), to_send->str);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
158 } else
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
159 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
160 /* Do nothing. If they aren't the originator, then they can't confirm. */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
161 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
162 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
163 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
164
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
165 void music_messaging_done_session(const int session)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
166 {
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
167 MMConversation *mmconv = (MMConversation *)g_list_nth_data(conversations, session);
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
168
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
169 gaim_notify_message(plugin_pointer, GAIM_NOTIFY_MSG_INFO, "Session",
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
170 "Session Complete", NULL, NULL, NULL);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
171
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
172 session_end(mmconv);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
173 }
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
174
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
175
11355
8c34a2d54284 [gaim-migrate @ 13574]
Christian Muise <christian.muise@gmail.com>
parents: 11254
diff changeset
176 /* DBus commands that can be sent to the editor */
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
177 G_BEGIN_DECLS
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
178 DBusConnection *gaim_dbus_get_connection(void);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
179 G_END_DECLS
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
180
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
181 static gboolean send_change_request (const int session, const char *id, const char *command, const char *parameters)
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
182 {
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
183 DBusMessage *message;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
184
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
185 /* Create the signal we need */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
186 message = dbus_message_new_signal (DBUS_PATH_GAIM, DBUS_INTERFACE_GAIM, "GscoreChangeRequest");
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
187
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
188 /* Append the string "Ping!" to the signal */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
189 dbus_message_append_args (message,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
190 DBUS_TYPE_INT32, &session,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
191 DBUS_TYPE_STRING, &id,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
192 DBUS_TYPE_STRING, &command,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
193 DBUS_TYPE_STRING, &parameters,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
194 DBUS_TYPE_INVALID);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
195
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
196 /* Send the signal */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
197 dbus_connection_send (gaim_dbus_get_connection(), message, NULL);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
198
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
199 /* Free the signal now we have finished with it */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
200 dbus_message_unref (message);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
201
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
202 /* Tell the user we sent a signal */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
203 g_printerr("Sent change request signal: %d %s %s %s\n", session, id, command, parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
204
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
205 return TRUE;
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
206 }
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
207
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
208 static gboolean send_change_confirmed (const int session, const char *command, const char *parameters)
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
209 {
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
210 DBusMessage *message;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
211
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
212 /* Create the signal we need */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
213 message = dbus_message_new_signal (DBUS_PATH_GAIM, DBUS_INTERFACE_GAIM, "GscoreChangeConfirmed");
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
214
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
215 /* Append the string "Ping!" to the signal */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
216 dbus_message_append_args (message,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
217 DBUS_TYPE_INT32, &session,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
218 DBUS_TYPE_STRING, &command,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
219 DBUS_TYPE_STRING, &parameters,
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
220 DBUS_TYPE_INVALID);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
221
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
222 /* Send the signal */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
223 dbus_connection_send (gaim_dbus_get_connection(), message, NULL);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
224
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
225 /* Free the signal now we have finished with it */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
226 dbus_message_unref (message);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
227
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
228 /* Tell the user we sent a signal */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
229 g_printerr("Sent change confirmed signal.\n");
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
230
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
231 return TRUE;
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
232 }
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
233
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
234
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
235 static int
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
236 mmconv_from_conv_loc(GaimConversation *conv)
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
237 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
238 MMConversation *mmconv_current = NULL;
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
239 guint i;
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
240
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
241 for (i = 0; i < g_list_length(conversations); i++)
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
242 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
243 mmconv_current = (MMConversation *)g_list_nth_data(conversations, i);
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
244 if (conv == mmconv_current->conv)
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
245 {
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
246 return i;
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
247 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
248 }
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
249 return -1;
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
250 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
251
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
252 static MMConversation*
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
253 mmconv_from_conv(GaimConversation *conv)
11365
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
254 {
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
255 return (MMConversation *)g_list_nth_data(conversations, mmconv_from_conv_loc(conv));
11365
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
256 }
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
257
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
258 static gboolean
11088
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
259 plugin_load(GaimPlugin *plugin) {
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
260 void *conv_list_handle;
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
261
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
262 /* First, we have to register our four exported functions with the
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
263 main gaim dbus loop. Without this statement, the gaim dbus
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
264 code wouldn't know about our functions. */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
265 GAIM_DBUS_REGISTER_BINDINGS(plugin);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
266
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
267 /* Keep the plugin for reference (needed for notify's) */
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
268 plugin_pointer = plugin;
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
269
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
270 /* Add the button to all the current conversations */
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
271 gaim_conversation_foreach (init_conversation);
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
272
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
273 /* Listen for any new conversations */
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
274 conv_list_handle = gaim_conversations_get_handle();
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
275
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
276 gaim_signal_connect(conv_list_handle, "conversation-created",
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
277 plugin, GAIM_CALLBACK(init_conversation), NULL);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
278
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
279 /* Listen for conversations that are ending */
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
280 gaim_signal_connect(conv_list_handle, "deleting-conversation",
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
281 plugin, GAIM_CALLBACK(conv_destroyed), NULL);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
282
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
283 /* Listen for sending/receiving messages to replace tags */
13234
1d8e569b2053 [gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13090
diff changeset
284 gaim_signal_connect(conv_list_handle, "sending-im-msg",
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
285 plugin, GAIM_CALLBACK(intercept_sent), NULL);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
286 gaim_signal_connect(conv_list_handle, "receiving-im-msg",
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
287 plugin, GAIM_CALLBACK(intercept_received), NULL);
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
288
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
289 return TRUE;
11088
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
290 }
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
291
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
292 static gboolean
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
293 plugin_unload(GaimPlugin *plugin) {
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
294 MMConversation *mmconv = NULL;
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
295
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
296 while (g_list_length(conversations) > 0)
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
297 {
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
298 mmconv = g_list_first(conversations)->data;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
299 conv_destroyed(mmconv->conv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
300 }
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
301 return TRUE;
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
302 }
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
303
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
304
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
305
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
306 static gboolean
13234
1d8e569b2053 [gaim-migrate @ 15598]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13090
diff changeset
307 intercept_sent(GaimAccount *account, const char *who, char **message, void* pData)
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
308 {
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
309
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
310 if (0 == strncmp(*message, MUSICMESSAGING_PREFIX, strlen(MUSICMESSAGING_PREFIX)))
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
311 {
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
312 gaim_debug_misc("gaim-musicmessaging", "Sent MM Message: %s\n", *message);
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
313 message = 0;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
314 }
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
315 else if (0 == strncmp(*message, MUSICMESSAGING_START_MSG, strlen(MUSICMESSAGING_START_MSG)))
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
316 {
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
317 gaim_debug_misc("gaim-musicmessaging", "Sent MM request.\n");
11420
7e38dc3d0f48 [gaim-migrate @ 13657]
Christian Muise <christian.muise@gmail.com>
parents: 11418
diff changeset
318 return FALSE;
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
319 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
320 else if (0 == strncmp(*message, MUSICMESSAGING_CONFIRM_MSG, strlen(MUSICMESSAGING_CONFIRM_MSG)))
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
321 {
11365
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
322 gaim_debug_misc("gaim-musicmessaging", "Sent MM confirm.\n");
11420
7e38dc3d0f48 [gaim-migrate @ 13657]
Christian Muise <christian.muise@gmail.com>
parents: 11418
diff changeset
323 return FALSE;
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
324 }
11365
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
325 else if (0 == strncmp(*message, "test1", strlen("test1")))
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
326 {
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
327 gaim_debug_misc("gaim-musicmessaging", "\n\nTEST 1\n\n");
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
328 send_change_request(0, "test-id", "test-command", "test-parameters");
11365
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
329 return FALSE;
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
330 }
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
331 else if (0 == strncmp(*message, "test2", strlen("test2")))
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
332 {
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
333 gaim_debug_misc("gaim-musicmessaging", "\n\nTEST 2\n\n");
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
334 send_change_confirmed(1, "test-command", "test-parameters");
11365
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
335 return FALSE;
9138f01151d7 [gaim-migrate @ 13589]
Christian Muise <christian.muise@gmail.com>
parents: 11362
diff changeset
336 }
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
337 else
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
338 {
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
339 return FALSE;
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
340 /* Do nothing...procceed as normal */
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
341 }
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
342 return TRUE;
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
343 }
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
344
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
345 static gboolean
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
346 intercept_received(GaimAccount *account, char **sender, char **message, GaimConversation *conv, int *flags)
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
347 {
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
348 MMConversation *mmconv = mmconv_from_conv(conv);
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
349
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
350 gaim_debug_misc("gaim-musicmessaging", "Intercepted: %s\n", *message);
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
351 if (strstr(*message, MUSICMESSAGING_PREFIX))
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
352 {
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
353 char *parsed_message = strtok(strstr(*message, MUSICMESSAGING_PREFIX), "<");
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
354 gaim_debug_misc("gaim-musicmessaging", "Received an MM Message: %s\n", parsed_message);
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
355
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
356 if (mmconv->started)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
357 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
358 if (strstr(parsed_message, "request"))
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
359 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
360 if (mmconv->originator)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
361 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
362 int session = mmconv_from_conv_loc(conv);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
363 char *id = (mmconv->conv)->name;
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
364 char *command;
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
365 char *parameters;
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
366
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
367 gaim_debug_misc("gaim-musicmessaging", "Sending request to gscore.\n");
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
368
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
369 /* Get past the first two terms - '##MM##' and 'request' */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
370 strtok(parsed_message, " "); /* '##MM##' */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
371 strtok(NULL, " "); /* 'request' */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
372
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
373 command = strtok(NULL, " ");
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
374 parameters = strtok(NULL, "#");
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
375
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
376 send_change_request (session, id, command, parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
377
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
378 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
379 } else if (strstr(parsed_message, "confirm"))
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
380 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
381 if (!mmconv->originator)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
382 {
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
383 int session = mmconv_from_conv_loc(conv);
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
384 char *command;
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
385 char *parameters;
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
386
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
387 gaim_debug_misc("gaim-musicmessaging", "Sending confirmation to gscore.\n");
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
388
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
389 /* Get past the first two terms - '##MM##' and 'confirm' */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
390 strtok(parsed_message, " "); /* '##MM##' */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
391 strtok(NULL, " "); /* 'confirm' */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
392
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
393 command = strtok(NULL, " ");
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
394 parameters = strtok(NULL, "#");
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
395
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
396 send_change_confirmed (session, command, parameters);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
397 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
398 } else if (strstr(parsed_message, "failed"))
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
399 {
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
400 char *id;
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
401 char *command;
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
402
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
403 /* Get past the first two terms - '##MM##' and 'confirm' */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
404 strtok(parsed_message, " "); /* '##MM##' */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
405 strtok(NULL, " "); /* 'failed' */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
406
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
407 id = strtok(NULL, " ");
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
408 command = strtok(NULL, " ");
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
409 /* char *parameters = strtok(NULL, "#"); DONT NEED PARAMETERS */
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
410
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
411 if ((mmconv->conv)->name == id)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
412 {
13090
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
413 gaim_notify_message(plugin_pointer, GAIM_NOTIFY_MSG_ERROR,
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
414 _("Music Messaging"),
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
415 _("There was a conflict in running the command:"), command, NULL, NULL);
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
416 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
417 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
418 }
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
419
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
420 message = 0;
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
421 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
422 else if (strstr(*message, MUSICMESSAGING_START_MSG))
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
423 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
424 gaim_debug_misc("gaim-musicmessaging", "Received MM request.\n");
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
425 if (!(mmconv->originator))
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
426 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
427 mmconv->requested = TRUE;
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
428 return FALSE;
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
429 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
430
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
431 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
432 else if (strstr(*message, MUSICMESSAGING_CONFIRM_MSG))
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
433 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
434 gaim_debug_misc("gaim-musicmessagin", "Received MM confirm.\n");
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
435
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
436 if (mmconv->originator)
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
437 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
438 start_session(mmconv);
11420
7e38dc3d0f48 [gaim-migrate @ 13657]
Christian Muise <christian.muise@gmail.com>
parents: 11418
diff changeset
439 return FALSE;
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
440 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
441 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
442 else
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
443 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
444 return FALSE;
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
445 /* Do nothing. */
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
446 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
447 return TRUE;
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
448 }
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
449
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
450 static void send_request(MMConversation *mmconv)
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
451 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
452 GaimConnection *connection = gaim_conversation_get_gc(mmconv->conv);
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
453 const char *convName = gaim_conversation_get_name(mmconv->conv);
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
454 serv_send_im(connection, convName, MUSICMESSAGING_START_MSG, GAIM_MESSAGE_SEND);
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
455 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
456
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
457 static void send_request_confirmed(MMConversation *mmconv)
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
458 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
459 GaimConnection *connection = gaim_conversation_get_gc(mmconv->conv);
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
460 const char *convName = gaim_conversation_get_name(mmconv->conv);
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
461 serv_send_im(connection, convName, MUSICMESSAGING_CONFIRM_MSG, GAIM_MESSAGE_SEND);
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
462 }
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
463
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
464
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
465 static gboolean
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
466 start_session(MMConversation *mmconv)
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
467 {
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
468 run_editor(mmconv);
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
469 return TRUE;
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
470 }
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
471
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
472 static void session_end (MMConversation *mmconv)
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
473 {
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
474 mmconv->started = FALSE;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
475 mmconv->originator = FALSE;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
476 mmconv->requested = FALSE;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
477 kill_editor(mmconv);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
478 }
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
479
11169
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
480 static void music_button_toggled (GtkWidget *widget, gpointer data)
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
481 {
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
482 MMConversation *mmconv = mmconv_from_conv(((MMConversation *) data)->conv);
11169
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
483 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
484 {
11418
9a84d5b27748 [gaim-migrate @ 13655]
Christian Muise <christian.muise@gmail.com>
parents: 11417
diff changeset
485 if (((MMConversation *) data)->requested)
9a84d5b27748 [gaim-migrate @ 13655]
Christian Muise <christian.muise@gmail.com>
parents: 11417
diff changeset
486 {
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
487 start_session(mmconv);
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
488 send_request_confirmed(mmconv);
11418
9a84d5b27748 [gaim-migrate @ 13655]
Christian Muise <christian.muise@gmail.com>
parents: 11417
diff changeset
489 }
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
490 else
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
491 {
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
492 ((MMConversation *) data)->originator = TRUE;
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
493 send_request((MMConversation *) data);
11418
9a84d5b27748 [gaim-migrate @ 13655]
Christian Muise <christian.muise@gmail.com>
parents: 11417
diff changeset
494 }
11169
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
495 } else {
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
496 session_end((MMConversation *)data);
11169
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
497 }
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
498 }
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
499
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
500 static void set_editor_path (GtkWidget *button, GtkWidget *text_field)
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
501 {
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
502 const char * path = gtk_entry_get_text((GtkEntry*)text_field);
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
503 gaim_prefs_set_string("/plugins/gtk/musicmessaging/editor_path", path);
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
504
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
505 }
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
506
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
507 static void run_editor (MMConversation *mmconv)
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
508 {
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
509 GError *spawn_error = NULL;
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
510 GString *session_id;
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
511 gchar * args[4];
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
512 args[0] = (gchar *)gaim_prefs_get_string("/plugins/gtk/musicmessaging/editor_path");
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
513
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
514 args[1] = "-session_id";
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
515 session_id = g_string_new("");
11417
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
516 g_string_sprintfa(session_id, "%d", mmconv_from_conv_loc(mmconv->conv));
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
517 args[2] = session_id->str;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
518
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
519 args[3] = NULL;
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
520
f5fea1b5986f [gaim-migrate @ 13654]
Christian Muise <christian.muise@gmail.com>
parents: 11365
diff changeset
521 if (!(g_spawn_async (".", args, NULL, 4, NULL, NULL, &(mmconv->pid), &spawn_error)))
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
522 {
13090
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
523 gaim_notify_error(plugin_pointer, _("Error Running Editor"),
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
524 _("The following error has occured:"), spawn_error->message);
11254
3cbf29bdc44a [gaim-migrate @ 13426]
Christian Muise <christian.muise@gmail.com>
parents: 11216
diff changeset
525 mmconv->started = FALSE;
3cbf29bdc44a [gaim-migrate @ 13426]
Christian Muise <christian.muise@gmail.com>
parents: 11216
diff changeset
526 }
3cbf29bdc44a [gaim-migrate @ 13426]
Christian Muise <christian.muise@gmail.com>
parents: 11216
diff changeset
527 else
3cbf29bdc44a [gaim-migrate @ 13426]
Christian Muise <christian.muise@gmail.com>
parents: 11216
diff changeset
528 {
3cbf29bdc44a [gaim-migrate @ 13426]
Christian Muise <christian.muise@gmail.com>
parents: 11216
diff changeset
529 mmconv->started = TRUE;
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
530 }
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
531 }
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
532
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
533 static void kill_editor (MMConversation *mmconv)
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
534 {
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
535 if (mmconv->pid)
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
536 {
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
537 kill(mmconv->pid, SIGINT);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
538 mmconv->pid = 0;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
539 }
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
540 }
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
541
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
542 static void init_conversation (GaimConversation *conv)
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
543 {
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
544 MMConversation *mmconv;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
545 mmconv = g_malloc(sizeof(MMConversation));
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
546
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
547 mmconv->conv = conv;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
548 mmconv->started = FALSE;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
549 mmconv->originator = FALSE;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
550 mmconv->requested = FALSE;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
551
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
552 add_button(mmconv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
553
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
554 conversations = g_list_append(conversations, mmconv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
555 }
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
556
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
557 static void conv_destroyed (GaimConversation *conv)
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
558 {
11362
d28bb616f412 [gaim-migrate @ 13586]
Christian Muise <christian.muise@gmail.com>
parents: 11355
diff changeset
559 MMConversation *mmconv = mmconv_from_conv(conv);
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
560
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
561 remove_widget(mmconv->button);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
562 remove_widget(mmconv->seperator);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
563 if (mmconv->started)
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
564 {
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
565 kill_editor(mmconv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
566 }
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
567 conversations = g_list_remove(conversations, mmconv);
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
568 }
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
569
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
570 static void add_button (MMConversation *mmconv)
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
571 {
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
572 GaimConversation *conv = mmconv->conv;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
573
11169
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
574 GtkWidget *button, *image, *sep;
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
575 gchar *file_path;
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
576
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
577 button = gtk_toggle_button_new();
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
578 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
579
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
580 g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(music_button_toggled), mmconv);
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
581
11900
26ddf2b8a8fe [gaim-migrate @ 14191]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11659
diff changeset
582 file_path = g_build_filename(DATADIR, "pixmaps", "gaim", "buttons",
11659
65d522cdb2d6 [gaim-migrate @ 13944]
Gary Kramlich <grim@reaperworld.com>
parents: 11420
diff changeset
583 "music.png", NULL);
11254
3cbf29bdc44a [gaim-migrate @ 13426]
Christian Muise <christian.muise@gmail.com>
parents: 11216
diff changeset
584 image = gtk_image_new_from_file(file_path);
11659
65d522cdb2d6 [gaim-migrate @ 13944]
Gary Kramlich <grim@reaperworld.com>
parents: 11420
diff changeset
585 g_free(file_path);
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
586
11169
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
587 gtk_container_add((GtkContainer *)button, image);
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
588
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
589 sep = gtk_vseparator_new();
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
590
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
591 mmconv->seperator = sep;
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
592 mmconv->button = button;
11169
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
593
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
594 gtk_widget_show(sep);
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
595 gtk_widget_show(image);
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
596 gtk_widget_show(button);
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
597
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
598 gtk_box_pack_start(GTK_BOX(GAIM_GTK_CONVERSATION(conv)->toolbar), sep, FALSE, FALSE, 0);
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
599 gtk_box_pack_start(GTK_BOX(GAIM_GTK_CONVERSATION(conv)->toolbar), button, FALSE, FALSE, 0);
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
600 }
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
601
11200
082b8c63d9b1 [gaim-migrate @ 13328]
Christian Muise <christian.muise@gmail.com>
parents: 11169
diff changeset
602 static void remove_widget (GtkWidget *button)
11169
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
603 {
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
604 gtk_widget_hide(button);
96612b706d45 [gaim-migrate @ 13270]
Christian Muise <christian.muise@gmail.com>
parents: 11166
diff changeset
605 gtk_widget_destroy(button);
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
606 }
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
607
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
608 static GtkWidget *
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
609 get_config_frame(GaimPlugin *plugin)
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
610 {
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
611 GtkWidget *ret;
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
612 GtkWidget *vbox;
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
613
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
614 GtkWidget *editor_path;
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
615 GtkWidget *editor_path_label;
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
616 GtkWidget *editor_path_button;
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
617
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
618 /* Outside container */
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
619 ret = gtk_vbox_new(FALSE, 18);
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
620 gtk_container_set_border_width(GTK_CONTAINER(ret), 10);
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
621
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
622 /* Configuration frame */
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
623 vbox = gaim_gtk_make_frame(ret, _("Music Messaging Configuration"));
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
624
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
625 /* Path to the score editor */
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
626 editor_path = gtk_entry_new();
13090
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
627 editor_path_label = gtk_label_new(_("Score Editor Path"));
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
628 editor_path_button = gtk_button_new_with_mnemonic(_("_Apply"));
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
629
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
630 gtk_entry_set_text((GtkEntry*)editor_path, "/usr/local/bin/gscore");
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
631
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
632 g_signal_connect(G_OBJECT(editor_path_button), "clicked",
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
633 G_CALLBACK(set_editor_path), editor_path);
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
634
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
635 gtk_box_pack_start(GTK_BOX(vbox), editor_path_label, FALSE, FALSE, 0);
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
636 gtk_box_pack_start(GTK_BOX(vbox), editor_path, FALSE, FALSE, 0);
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
637 gtk_box_pack_start(GTK_BOX(vbox), editor_path_button, FALSE, FALSE, 0);
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
638
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
639 gtk_widget_show_all(ret);
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
640
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
641 return ret;
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
642 }
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
643
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
644 static GaimGtkPluginUiInfo ui_info =
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
645 {
12627
fa4c64a821d2 [gaim-migrate @ 14963]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12604
diff changeset
646 get_config_frame,
fa4c64a821d2 [gaim-migrate @ 14963]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12604
diff changeset
647 0 /* page_num (reserved) */
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
648 };
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
649
11088
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
650 static GaimPluginInfo info = {
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
651 GAIM_PLUGIN_MAGIC,
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
652 GAIM_MAJOR_VERSION,
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
653 GAIM_MINOR_VERSION,
13090
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
654 GAIM_PLUGIN_STANDARD, /**< type */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
655 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
656 0, /**< flags */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
657 NULL, /**< dependencies */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
658 GAIM_PRIORITY_DEFAULT, /**< priority */
11088
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
659
13090
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
660 MUSICMESSAGING_PLUGIN_ID, /**< id */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
661 "Music Messaging", /**< name */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
662 VERSION, /**< version */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
663 N_("Music Messaging Plugin for collaborative composition."),
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
664 /** summary */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
665 N_("The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time."),
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
666 /** description */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
667 "Christian Muise <christian.muise@gmail.com>", /**< author */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
668 GAIM_WEBSITE, /**< homepage */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
669 plugin_load, /**< load */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
670 plugin_unload, /**< unload */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
671 NULL, /**< destroy */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
672 &ui_info, /**< ui_info */
aee4ed853ff3 [gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12627
diff changeset
673 NULL, /**< extra_info */
11088
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
674 NULL,
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
675 NULL
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
676 };
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
677
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
678 static void
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
679 init_plugin(GaimPlugin *plugin) {
11166
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
680 gaim_prefs_add_none("/plugins/gtk/musicmessaging");
61bc885358db [gaim-migrate @ 13267]
Christian Muise <christian.muise@gmail.com>
parents: 11108
diff changeset
681 gaim_prefs_add_string("/plugins/gtk/musicmessaging/editor_path", "/usr/local/bin/gscore");
11088
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
682 }
a27865ae1e2b [gaim-migrate @ 13108]
Christian Muise <christian.muise@gmail.com>
parents:
diff changeset
683
11108
cd88f2093c73 [gaim-migrate @ 13157]
Christian Muise <christian.muise@gmail.com>
parents: 11088
diff changeset
684 GAIM_INIT_PLUGIN(musicmessaging, init_plugin, info);

mercurial