pidgin/plugins/vvconfig.c

Wed, 21 Sep 2011 06:45:26 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 21 Sep 2011 06:45:26 +0000
changeset 32575
eb4fc932fae9
parent 31681
0f60ba9bf9c7
child 32433
f539a2c083b2
child 32748
8ccddc6bfc19
child 32908
d97dff4ffe5c
permissions
-rw-r--r--

Apply conversation theme when opening the GTK conversation. All the
parsing stuff was moved out of the theme code and into the conversation
code.

Someone (not me!) needs to check the code I commented out and see if
we really need that stuff (and then port it to WebKit/styling).

We also need to determine where to place Template.html and the rest
of our (not-yet-written) default theme.

28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
1 /*
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
2 * Configures microphones and webcams for voice and video
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
3 * Copyright (C) 2009 Mike Ruprecht <cmaiku@gmail.com>
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
4 *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
5 * This program is free software; you can redistribute it and/or
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
6 * modify it under the terms of the GNU General Public License
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
7 * as published by the Free Software Foundation; either version 2
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
8 * of the License, or (at your option) any later version.
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
9 *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
10 * This program is distributed in the hope that it will be useful,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
13 * GNU General Public License for more details.
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
14 *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
16 * along with this program; if not, write to the Free Software
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
18 */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
19 #include "internal.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
20
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
21 #include "debug.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
22 #include "mediamanager.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
23 #include "media-gst.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
24 #include "version.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
25 #include "gtkplugin.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
26 #include "gtkutils.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
27 #include "gtkprefs.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
28
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
29 #include <gst/interfaces/propertyprobe.h>
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
30
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
31 /* container window for showing a stand-alone configurator */
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
32 static GtkWidget *window = NULL;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
33
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
34 static PurpleMediaElementInfo *old_video_src = NULL, *old_video_sink = NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
35 *old_audio_src = NULL, *old_audio_sink = NULL;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
36
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
37 static const gchar *AUDIO_SRC_PLUGINS[] = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
38 "alsasrc", "ALSA",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
39 /* "esdmon", "ESD", ? */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
40 "osssrc", "OSS",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
41 "pulsesrc", "PulseAudio",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
42 /* "audiotestsrc wave=silence", "Silence", */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
43 "audiotestsrc", "Test Sound",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
44 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
45 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
46
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
47 static const gchar *AUDIO_SINK_PLUGINS[] = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
48 "alsasink", "ALSA",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
49 "artsdsink", "aRts",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
50 "esdsink", "ESD",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
51 "osssink", "OSS",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
52 "pulsesink", "PulseAudio",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
53 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
54 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
55
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
56 static const gchar *VIDEO_SRC_PLUGINS[] = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
57 "videotestsrc", "Test Input",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
58 "dshowvideosrc","DirectDraw",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
59 "ksvideosrc", "KS Video",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
60 "qcamsrc", "Quickcam",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
61 "v4lsrc", "Video4Linux",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
62 "v4l2src", "Video4Linux2",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
63 "v4lmjpegsrc", "Video4Linux MJPEG",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
64 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
65 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
66
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
67 static const gchar *VIDEO_SINK_PLUGINS[] = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
68 /* "aasink", "AALib", Didn't work for me */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
69 "directdrawsink","DirectDraw",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
70 "glimagesink", "OpenGL",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
71 "ximagesink", "X Window System",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
72 "xvimagesink", "X Window System (Xv)",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
73 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
74 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
75
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
76 static GList *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
77 get_element_devices(const gchar *element_name)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
78 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
79 GList *ret = NULL;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
80 GstElement *element;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
81 GObjectClass *klass;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
82 GstPropertyProbe *probe;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
83 const GParamSpec *pspec;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
84
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
85 ret = g_list_prepend(ret, (gpointer)_("Default"));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
86 ret = g_list_prepend(ret, "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
87
31369
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
88 if (!strcmp(element_name, "<custom>") || (*element_name == '\0')) {
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
89 return g_list_reverse(ret);
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
90 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
91
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
92 element = gst_element_factory_make(element_name, "test");
31681
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
93 if(!element) {
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
94 purple_debug_info("vvconfig", "'%s' - unable to find element\n", element_name);
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
95 return g_list_reverse(ret);
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
96 }
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
97
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
98 klass = G_OBJECT_GET_CLASS (element);
31681
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
99 if(!klass) {
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
100 purple_debug_info("vvconfig", "'%s' - unable to find G_Object Class\n", element_name);
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
101 return g_list_reverse(ret);
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
102 }
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
103
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
104 if (!g_object_class_find_property(klass, "device") ||
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
105 !GST_IS_PROPERTY_PROBE(element) ||
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
106 !(probe = GST_PROPERTY_PROBE(element)) ||
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
107 !(pspec = gst_property_probe_get_property(probe, "device"))) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
108 purple_debug_info("vvconfig", "'%s' - no device\n", element_name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
109 } else {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
110 gint n;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
111 GValueArray *array;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
112
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
113 /* Set autoprobe[-fps] to FALSE to avoid delays when probing. */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
114 if (g_object_class_find_property (klass, "autoprobe")) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
115 g_object_set (G_OBJECT (element), "autoprobe", FALSE, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
116 if (g_object_class_find_property (klass, "autoprobe-fps")) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
117 g_object_set (G_OBJECT (element), "autoprobe-fps", FALSE, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
118 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
119 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
120
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
121 array = gst_property_probe_probe_and_get_values (probe, pspec);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
122 if (array == NULL) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
123 purple_debug_info("vvconfig", "'%s' has no devices\n", element_name);
31369
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
124 return g_list_reverse(ret);
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
125 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31279
diff changeset
126
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
127 for (n=0; n < array->n_values; ++n) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
128 GValue *device;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
129 const gchar *name;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
130 const gchar *device_name;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
131
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
132 device = g_value_array_get_nth(array, n);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
133 g_object_set_property(G_OBJECT(element), "device", device);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
134 if (gst_element_set_state(element, GST_STATE_READY)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
135 != GST_STATE_CHANGE_SUCCESS) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
136 purple_debug_warning("vvconfig",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
137 "Error changing state of %s\n",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
138 element_name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
139 continue;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
140 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
141
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
142 g_object_get(G_OBJECT(element), "device-name", &name, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
143 device_name = g_value_get_string(device);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
144 if (name == NULL)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
145 name = _("Unknown");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
146 purple_debug_info("vvconfig", "Found device %s : %s for %s\n",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
147 device_name, name, element_name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
148 ret = g_list_prepend(ret, (gpointer)name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
149 ret = g_list_prepend(ret, (gpointer)device_name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
150 gst_element_set_state(element, GST_STATE_NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
151 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
152 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
153 gst_object_unref(element);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31279
diff changeset
154
31369
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
155 return g_list_reverse(ret);
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
156 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
157
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
158 static GList *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
159 get_element_plugins(const gchar **plugins)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
160 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
161 GList *ret = NULL;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
162
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
163 ret = g_list_prepend(ret, "Default");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
164 ret = g_list_prepend(ret, "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
165 for (; plugins[0] && plugins[1]; plugins += 2) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
166 if (gst_default_registry_check_feature_version(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
167 plugins[0], 0, 0, 0)) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
168 ret = g_list_prepend(ret, (gpointer)plugins[1]);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
169 ret = g_list_prepend(ret, (gpointer)plugins[0]);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
170 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
171 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
172 ret = g_list_reverse(ret);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
173 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
174 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
175
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
176 static void
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
177 device_changed_cb(const gchar *name, PurplePrefType type,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
178 gconstpointer value, gpointer data)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
179 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
180 GtkSizeGroup *sg = data;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
181 GtkWidget *parent, *widget;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
182 GSList *widgets;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
183 GList *devices;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
184 GValue gvalue;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
185 gint position;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
186 gchar *label, *pref;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
187
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
188 widgets = gtk_size_group_get_widgets(GTK_SIZE_GROUP(sg));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
189 for (; widgets; widgets = g_slist_next(widgets)) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
190 const gchar *widget_name =
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
191 gtk_widget_get_name(GTK_WIDGET(widgets->data));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
192 if (!strcmp(widget_name, name)) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
193 gchar *temp_str;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
194 gchar delimiters[3] = {0, 0, 0};
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
195 const gchar *text;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
196 gint keyval, pos;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
197
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
198 widget = widgets->data;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
199 /* Get label with _ from the GtkLabel */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
200 text = gtk_label_get_text(GTK_LABEL(widget));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
201 keyval = gtk_label_get_mnemonic_keyval(GTK_LABEL(widget));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
202 delimiters[0] = g_ascii_tolower(keyval);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
203 delimiters[1] = g_ascii_toupper(keyval);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
204 pos = strcspn(text, delimiters);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
205 if (pos != -1) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
206 temp_str = g_strndup(text, pos);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
207 label = g_strconcat(temp_str, "_",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
208 text + pos, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
209 g_free(temp_str);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
210 } else {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
211 label = g_strdup(text);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
212 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
213 break;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
214 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
215 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
216
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
217 if (widgets == NULL)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
218 return;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
219
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
220 parent = gtk_widget_get_parent(widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
221 widget = parent;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
222 parent = gtk_widget_get_parent(GTK_WIDGET(widget));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
223 gvalue.g_type = 0;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
224 g_value_init(&gvalue, G_TYPE_INT);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
225 gtk_container_child_get_property(GTK_CONTAINER(parent),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
226 GTK_WIDGET(widget), "position", &gvalue);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
227 position = g_value_get_int(&gvalue);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
228 g_value_unset(&gvalue);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
229 gtk_widget_destroy(widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
230
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
231 pref = g_strdup(name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
232 strcpy(pref + strlen(pref) - strlen("plugin"), "device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
233 devices = get_element_devices(value);
31369
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
234 if (g_list_find_custom(devices, purple_prefs_get_string(pref),
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
235 (GCompareFunc)strcmp) == NULL)
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
236 purple_prefs_set_string(pref, g_list_next(devices)->data);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
237 widget = pidgin_prefs_dropdown_from_list(parent,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
238 label, PURPLE_PREF_STRING,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
239 pref, devices);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
240 g_list_free(devices);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
241 g_signal_connect_swapped(widget, "destroy",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
242 G_CALLBACK(g_free), pref);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
243 g_free(label);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
244 gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.5);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
245 gtk_widget_set_name(widget, name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
246 gtk_size_group_add_widget(sg, widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
247 gtk_box_reorder_child(GTK_BOX(parent),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
248 gtk_widget_get_parent(GTK_WIDGET(widget)), position);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
249 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
250
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
251 static void
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
252 get_plugin_frame(GtkWidget *parent, GtkSizeGroup *sg,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
253 const gchar *name, const gchar *plugin_label,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
254 const gchar **plugin_strs, const gchar *plugin_pref,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
255 const gchar *device_label, const gchar *device_pref)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
256 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
257 GtkWidget *vbox, *widget;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
258 GList *plugins, *devices;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
259
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
260 vbox = pidgin_make_frame(parent, name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
261
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
262 /* Setup plugin preference */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
263 plugins = get_element_plugins(plugin_strs);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
264 widget = pidgin_prefs_dropdown_from_list(vbox, plugin_label,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
265 PURPLE_PREF_STRING, plugin_pref, plugins);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
266 g_list_free(plugins);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
267 gtk_size_group_add_widget(sg, widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
268 gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.5);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
269
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
270 /* Setup device preference */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
271 devices = get_element_devices(purple_prefs_get_string(plugin_pref));
31279
c0104df45b93 vvconfig: Stop resetting device selections to defaults. Fixes #13044.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 30752
diff changeset
272 if (g_list_find_custom(devices, purple_prefs_get_string(device_pref),
c0104df45b93 vvconfig: Stop resetting device selections to defaults. Fixes #13044.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 30752
diff changeset
273 (GCompareFunc) strcmp) == NULL)
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
274 purple_prefs_set_string(device_pref, g_list_next(devices)->data);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
275 widget = pidgin_prefs_dropdown_from_list(vbox, device_label,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
276 PURPLE_PREF_STRING, device_pref, devices);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
277 g_list_free(devices);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
278 gtk_widget_set_name(widget, plugin_pref);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
279 gtk_size_group_add_widget(sg, widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
280 gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.5);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
281
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
282 purple_prefs_connect_callback(vbox, plugin_pref,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
283 device_changed_cb, sg);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
284 g_signal_connect_swapped(vbox, "destroy",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
285 G_CALLBACK(purple_prefs_disconnect_by_handle), vbox);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
286 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
287
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
288 static GtkWidget *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
289 get_plugin_config_frame(PurplePlugin *plugin) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
290 GtkWidget *notebook, *vbox_audio, *vbox_video;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
291 GtkSizeGroup *sg;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
292
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
293 notebook = gtk_notebook_new();
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
294 gtk_container_set_border_width(GTK_CONTAINER(notebook),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
295 PIDGIN_HIG_BORDER);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
296 gtk_widget_show(notebook);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
297
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
298 vbox_audio = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
299 vbox_video = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
300 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
301 vbox_audio, gtk_label_new(_("Audio")));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
302 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
303 vbox_video, gtk_label_new(_("Video")));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
304 gtk_container_set_border_width(GTK_CONTAINER (vbox_audio),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
305 PIDGIN_HIG_BORDER);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
306 gtk_container_set_border_width(GTK_CONTAINER (vbox_video),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
307 PIDGIN_HIG_BORDER);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
308
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
309 gtk_widget_show(vbox_audio);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
310 gtk_widget_show(vbox_video);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
311
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
312 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
313
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
314 get_plugin_frame(vbox_audio, sg, _("Output"), _("_Plugin"), AUDIO_SINK_PLUGINS,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
315 "/plugins/core/vvconfig/audio/sink/plugin", _("_Device"),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
316 "/plugins/core/vvconfig/audio/sink/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
317 get_plugin_frame(vbox_audio, sg, _("Input"), _("P_lugin"), AUDIO_SRC_PLUGINS,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
318 "/plugins/core/vvconfig/audio/src/plugin", _("D_evice"),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
319 "/plugins/core/vvconfig/audio/src/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
320
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
321 get_plugin_frame(vbox_video, sg, _("Output"), _("_Plugin"), VIDEO_SINK_PLUGINS,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
322 "/plugins/gtk/vvconfig/video/sink/plugin", _("_Device"),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
323 "/plugins/gtk/vvconfig/video/sink/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
324 get_plugin_frame(vbox_video, sg, _("Input"), _("P_lugin"), VIDEO_SRC_PLUGINS,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
325 "/plugins/core/vvconfig/video/src/plugin", _("D_evice"),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
326 "/plugins/core/vvconfig/video/src/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
327
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
328 return notebook;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
329 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
330
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
331 static GstElement *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
332 create_video_src(PurpleMedia *media,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
333 const gchar *session_id, const gchar *participant)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
334 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
335 const gchar *plugin = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
336 "/plugins/core/vvconfig/video/src/plugin");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
337 const gchar *device = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
338 "/plugins/core/vvconfig/video/src/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
339 GstElement *ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
340
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
341 if (plugin[0] == '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
342 return purple_media_element_info_call_create(old_video_src,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
343 media, session_id, participant);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
344
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
345 ret = gst_element_factory_make(plugin, "vvconfig-videosrc");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
346 if (device[0] != '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
347 g_object_set(G_OBJECT(ret), "device", device, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
348 if (!strcmp(plugin, "videotestsrc"))
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
349 g_object_set(G_OBJECT(ret), "is-live", 1, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
350 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
351 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
352
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
353 static GstElement *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
354 create_video_sink(PurpleMedia *media,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
355 const gchar *session_id, const gchar *participant)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
356 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
357 const gchar *plugin = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
358 "/plugins/gtk/vvconfig/video/sink/plugin");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
359 const gchar *device = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
360 "/plugins/gtk/vvconfig/video/sink/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
361 GstElement *ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
362
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
363 if (plugin[0] == '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
364 return purple_media_element_info_call_create(old_video_sink,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
365 media, session_id, participant);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
366
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
367 ret = gst_element_factory_make(plugin, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
368 if (device[0] != '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
369 g_object_set(G_OBJECT(ret), "device", device, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
370 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
371 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
372
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
373 static GstElement *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
374 create_audio_src(PurpleMedia *media,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
375 const gchar *session_id, const gchar *participant)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
376 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
377 const gchar *plugin = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
378 "/plugins/core/vvconfig/audio/src/plugin");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
379 const gchar *device = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
380 "/plugins/core/vvconfig/audio/src/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
381 GstElement *ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
382
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
383 if (plugin[0] == '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
384 return purple_media_element_info_call_create(old_audio_src,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
385 media, session_id, participant);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
386
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
387 ret = gst_element_factory_make(plugin, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
388 if (device[0] != '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
389 g_object_set(G_OBJECT(ret), "device", device, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
390 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
391 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
392
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
393 static GstElement *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
394 create_audio_sink(PurpleMedia *media,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
395 const gchar *session_id, const gchar *participant)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
396 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
397 const gchar *plugin = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
398 "/plugins/core/vvconfig/audio/sink/plugin");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
399 const gchar *device = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
400 "/plugins/core/vvconfig/audio/sink/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
401 GstElement *ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
402
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
403 if (plugin[0] == '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
404 return purple_media_element_info_call_create(old_audio_sink,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
405 media, session_id, participant);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
406
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
407 ret = gst_element_factory_make(plugin, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
408 if (device[0] != '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
409 g_object_set(G_OBJECT(ret), "device", device, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
410 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
411 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
412
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
413 static void
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
414 set_element_info_cond(PurpleMediaElementInfo *old_info,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
415 PurpleMediaElementInfo *new_info, const gchar *id)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
416 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
417 gchar *element_id = purple_media_element_info_get_id(old_info);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
418 if (!strcmp(element_id, id))
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
419 purple_media_manager_set_active_element(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
420 purple_media_manager_get(), new_info);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
421 g_free(element_id);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
422 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
423
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
424 static gboolean
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
425 plugin_load(PurplePlugin *plugin)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
426 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
427 PurpleMediaManager *manager;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
428 PurpleMediaElementInfo *video_src, *video_sink,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
429 *audio_src, *audio_sink;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
430
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
431 /* Disable the plugin if the UI doesn't support VV */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
432 if (purple_media_manager_get_ui_caps(purple_media_manager_get()) ==
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
433 PURPLE_MEDIA_CAPS_NONE)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
434 return FALSE;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
435
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
436 purple_prefs_add_none("/plugins/core/vvconfig");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
437 purple_prefs_add_none("/plugins/core/vvconfig/audio");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
438 purple_prefs_add_none("/plugins/core/vvconfig/audio/src");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
439 purple_prefs_add_string("/plugins/core/vvconfig/audio/src/plugin", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
440 purple_prefs_add_string("/plugins/core/vvconfig/audio/src/device", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
441 purple_prefs_add_none("/plugins/core/vvconfig/audio/sink");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
442 purple_prefs_add_string("/plugins/core/vvconfig/audio/sink/plugin", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
443 purple_prefs_add_string("/plugins/core/vvconfig/audio/sink/device", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
444 purple_prefs_add_none("/plugins/core/vvconfig/video");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
445 purple_prefs_add_none("/plugins/core/vvconfig/video/src");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
446 purple_prefs_add_string("/plugins/core/vvconfig/video/src/plugin", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
447 purple_prefs_add_string("/plugins/core/vvconfig/video/src/device", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
448 purple_prefs_add_none("/plugins/gtk/vvconfig");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
449 purple_prefs_add_none("/plugins/gtk/vvconfig/video");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
450 purple_prefs_add_none("/plugins/gtk/vvconfig/video/sink");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
451 purple_prefs_add_string("/plugins/gtk/vvconfig/video/sink/plugin", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
452 purple_prefs_add_string("/plugins/gtk/vvconfig/video/sink/device", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
453
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
454 video_src = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
455 "id", "vvconfig-videosrc",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
456 "name", "VV Conf Plugin Video Source",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
457 "type", PURPLE_MEDIA_ELEMENT_VIDEO
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
458 | PURPLE_MEDIA_ELEMENT_SRC
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
459 | PURPLE_MEDIA_ELEMENT_ONE_SRC
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
460 | PURPLE_MEDIA_ELEMENT_UNIQUE,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
461 "create-cb", create_video_src, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
462 video_sink = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
463 "id", "vvconfig-videosink",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
464 "name", "VV Conf Plugin Video Sink",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
465 "type", PURPLE_MEDIA_ELEMENT_VIDEO
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
466 | PURPLE_MEDIA_ELEMENT_SINK
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
467 | PURPLE_MEDIA_ELEMENT_ONE_SINK,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
468 "create-cb", create_video_sink, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
469 audio_src = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
470 "id", "vvconfig-audiosrc",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
471 "name", "VV Conf Plugin Audio Source",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
472 "type", PURPLE_MEDIA_ELEMENT_AUDIO
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
473 | PURPLE_MEDIA_ELEMENT_SRC
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
474 | PURPLE_MEDIA_ELEMENT_ONE_SRC
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
475 | PURPLE_MEDIA_ELEMENT_UNIQUE,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
476 "create-cb", create_audio_src, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
477 audio_sink = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
478 "id", "vvconfig-audiosink",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
479 "name", "VV Conf Plugin Audio Sink",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
480 "type", PURPLE_MEDIA_ELEMENT_AUDIO
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
481 | PURPLE_MEDIA_ELEMENT_SINK
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
482 | PURPLE_MEDIA_ELEMENT_ONE_SINK,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
483 "create-cb", create_audio_sink, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
484
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
485 purple_debug_info("gtkmedia", "Registering media element types\n");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
486 manager = purple_media_manager_get();
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
487
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
488 old_video_src = purple_media_manager_get_active_element(manager,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
489 PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SRC);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
490 old_video_sink = purple_media_manager_get_active_element(manager,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
491 PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SINK);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
492 old_audio_src = purple_media_manager_get_active_element(manager,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
493 PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SRC);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
494 old_audio_sink = purple_media_manager_get_active_element(manager,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
495 PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SINK);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
496
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
497 set_element_info_cond(old_video_src, video_src, "pidgindefaultvideosrc");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
498 set_element_info_cond(old_video_sink, video_sink, "pidgindefaultvideosink");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
499 set_element_info_cond(old_audio_src, audio_src, "pidgindefaultaudiosrc");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
500 set_element_info_cond(old_audio_sink, audio_sink, "pidgindefaultaudiosink");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
501
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
502 return TRUE;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
503 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
504
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
505 static void
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
506 config_destroy(GtkObject *w, gpointer nul)
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
507 {
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
508 purple_debug_info("vvconfig", "closing vv configuration window\n");
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
509 window = NULL;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
510 }
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
511
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
512 static void
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
513 config_close(GtkObject *w, gpointer nul)
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
514 {
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
515 gtk_widget_destroy(GTK_WIDGET(window));
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
516 }
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
517
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
518 typedef GtkWidget *(*FrameCreateCb)(PurplePlugin *plugin);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
519
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
520 static void
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
521 show_config(PurplePluginAction *action)
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
522 {
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
523 if (!window) {
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
524 FrameCreateCb create_frame = action->user_data;
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
525 GtkWidget *vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
526 GtkWidget *hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
527 GtkWidget *config_frame = create_frame(NULL);
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
528 GtkWidget *close = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31279
diff changeset
529
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
530 gtk_container_add(GTK_CONTAINER(vbox), config_frame);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
531 gtk_container_add(GTK_CONTAINER(vbox), hbox);
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
532 window = pidgin_create_window(action->label,
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
533 PIDGIN_HIG_BORDER, NULL, FALSE);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31279
diff changeset
534 g_signal_connect(G_OBJECT(window), "destroy",
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
535 G_CALLBACK(config_destroy), NULL);
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
536 g_signal_connect(G_OBJECT(close), "clicked",
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
537 G_CALLBACK(config_close), NULL);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
538 gtk_box_pack_end(GTK_BOX(hbox), close, FALSE, FALSE, PIDGIN_HIG_BORDER);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
539 gtk_container_add(GTK_CONTAINER(window), vbox);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
540 gtk_widget_show(GTK_WIDGET(close));
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
541 gtk_widget_show(GTK_WIDGET(vbox));
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
542 gtk_widget_show(GTK_WIDGET(hbox));
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
543 }
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
544 gtk_window_present(GTK_WINDOW(window));
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
545 }
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
546
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
547 static GstElement *
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
548 create_pipeline()
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
549 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
550 GstElement *pipeline = gst_pipeline_new("voicetest");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
551 GstElement *src = create_audio_src(NULL, NULL, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
552 GstElement *sink = create_audio_sink(NULL, NULL, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
553 GstElement *volume = gst_element_factory_make("volume", "volume");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
554 GstElement *level = gst_element_factory_make("level", "level");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
555 GstElement *valve = gst_element_factory_make("valve", "valve");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
556
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
557 gst_bin_add_many(GST_BIN(pipeline), src, volume, level, valve, sink, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
558 gst_element_link_many(src, volume, level, valve, sink, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
559
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
560 gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
561
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
562 return pipeline;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
563 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
564
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
565 static void
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
566 on_volume_change_cb(GtkRange *range, GstBin *pipeline)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
567 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
568 GstElement *volume;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
569
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
570 g_return_if_fail(pipeline != NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
571
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
572 volume = gst_bin_get_by_name(pipeline, "volume");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
573 g_object_set(volume, "volume", gtk_range_get_value(range) / 10.0, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
574 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
575
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
576 static gdouble
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
577 gst_msg_db_to_percent(GstMessage *msg, gchar *value_name)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
578 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
579 const GValue *list;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
580 const GValue *value;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
581 gdouble value_db;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
582 gdouble percent;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
583
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
584 list = gst_structure_get_value(
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
585 gst_message_get_structure(msg), value_name);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
586 value = gst_value_list_get_value(list, 0);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
587 value_db = g_value_get_double(value);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
588 percent = pow(10, value_db / 20);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
589 return (percent > 1.0) ? 1.0 : percent;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
590 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
591
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
592 typedef struct
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
593 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
594 GtkProgressBar *level;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
595 GtkRange *threshold;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
596 } BusCbCtx;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
597
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
598 static gboolean
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
599 gst_bus_cb(GstBus *bus, GstMessage *msg, BusCbCtx *ctx)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
600 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
601 if (GST_MESSAGE_TYPE(msg) == GST_MESSAGE_ELEMENT &&
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
602 gst_structure_has_name(msg->structure, "level")) {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
603
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
604 GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
605 gchar *name = gst_element_get_name(src);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
606
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
607 if (!strcmp(name, "level")) {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
608 gdouble percent;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
609 gdouble threshold;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
610 GstElement *valve;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
611
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
612 percent = gst_msg_db_to_percent(msg, "rms");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
613 gtk_progress_bar_set_fraction(ctx->level, percent * 5);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
614
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
615 percent = gst_msg_db_to_percent(msg, "decay");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
616 threshold = gtk_range_get_value(ctx->threshold) / 100.0;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
617 valve = gst_bin_get_by_name(GST_BIN(GST_ELEMENT_PARENT(src)), "valve");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
618 g_object_set(valve, "drop", (percent < threshold), NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
619 g_object_set(ctx->level,
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
620 "text", (percent < threshold) ? _("DROP") : " ", NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
621 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
622
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
623 g_free(name);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
624 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
625
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
626 return TRUE;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
627 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
628
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
629 static void
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
630 voice_test_frame_destroy_cb(GtkObject *w, GstElement *pipeline)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
631 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
632 g_return_if_fail(GST_IS_ELEMENT(pipeline));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
633
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
634 gst_element_set_state(pipeline, GST_STATE_NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
635 gst_object_unref(pipeline);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
636 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
637
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
638 static void
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
639 volume_scale_destroy_cb(GtkRange *volume, gpointer nul)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
640 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
641 purple_prefs_set_int("/purple/media/audio/volume/input",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
642 gtk_range_get_value(volume));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
643 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
644
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
645 static gchar*
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
646 threshold_value_format_cb(GtkScale *scale, gdouble value)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
647 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
648 return g_strdup_printf ("%.*f%%", gtk_scale_get_digits(scale), value);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
649 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
650
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
651 static void
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
652 threshold_scale_destroy_cb(GtkRange *threshold, gpointer nul)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
653 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
654 purple_prefs_set_int("/purple/media/audio/silence_threshold",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
655 gtk_range_get_value(threshold));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
656 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
657
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
658 static GtkWidget *
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
659 get_voice_test_frame(PurplePlugin *plugin)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
660 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
661 GtkWidget *vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
662 GtkWidget *level = gtk_progress_bar_new();
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
663 GtkWidget *volume = gtk_hscale_new_with_range(0, 100, 1);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
664 GtkWidget *threshold = gtk_hscale_new_with_range(0, 100, 1);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
665 GtkWidget *label;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
666 GtkTable *table = GTK_TABLE(gtk_table_new(2, 2, FALSE));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
667
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
668 GstElement *pipeline;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
669 GstBus *bus;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
670 BusCbCtx *ctx;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
671
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
672 g_object_set(vbox, "width-request", 500, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
673
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
674 gtk_table_set_row_spacings(table, PIDGIN_HIG_BOX_SPACE);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
675 gtk_table_set_col_spacings(table, PIDGIN_HIG_BOX_SPACE);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
676
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
677 label = gtk_label_new(_("Volume:"));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
678 g_object_set(label, "xalign", 0.0, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
679 gtk_table_attach(table, label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
680 gtk_table_attach_defaults(table, volume, 1, 2, 0, 1);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
681 label = gtk_label_new(_("Silence threshold:"));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
682 g_object_set(label, "xalign", 0.0, "yalign", 1.0, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
683 gtk_table_attach(table, label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
684 gtk_table_attach_defaults(table, threshold, 1, 2, 1, 2);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
685
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
686 gtk_container_add(GTK_CONTAINER(vbox), level);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
687 gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(table));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
688 gtk_widget_show_all(vbox);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
689
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
690 pipeline = create_pipeline();
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
691 bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
692 gst_bus_add_signal_watch(bus);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
693 ctx = g_new(BusCbCtx, 1);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
694 ctx->level = GTK_PROGRESS_BAR(level);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
695 ctx->threshold = GTK_RANGE(threshold);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
696 g_signal_connect_data(bus, "message", G_CALLBACK(gst_bus_cb),
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
697 ctx, (GClosureNotify)g_free, 0);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
698 gst_object_unref(bus);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
699
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
700 g_signal_connect(volume, "value-changed",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
701 (GCallback)on_volume_change_cb, pipeline);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
702
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
703 gtk_range_set_value(GTK_RANGE(volume),
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
704 purple_prefs_get_int("/purple/media/audio/volume/input"));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
705 gtk_widget_set(volume, "draw-value", FALSE, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
706
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
707 gtk_range_set_value(GTK_RANGE(threshold),
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
708 purple_prefs_get_int("/purple/media/audio/silence_threshold"));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
709
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
710 g_signal_connect(vbox, "destroy",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
711 G_CALLBACK(voice_test_frame_destroy_cb), pipeline);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
712 g_signal_connect(volume, "destroy",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
713 G_CALLBACK(volume_scale_destroy_cb), NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
714 g_signal_connect(threshold, "format-value",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
715 G_CALLBACK(threshold_value_format_cb), NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
716 g_signal_connect(threshold, "destroy",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
717 G_CALLBACK(threshold_scale_destroy_cb), NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
718
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
719 return vbox;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
720 }
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
721
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
722 static GList *
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
723 actions(PurplePlugin *plugin, gpointer context)
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
724 {
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
725 GList *l = NULL;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
726 PurplePluginAction *act = NULL;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
727
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
728 act = purple_plugin_action_new(_("Input and Output Settings"),
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
729 show_config);
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
730 act->user_data = get_plugin_config_frame;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
731 l = g_list_append(l, act);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
732
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
733 act = purple_plugin_action_new(_("Microphone Test"),
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
734 show_config);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
735 act->user_data = get_voice_test_frame;
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
736 l = g_list_append(l, act);
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
737
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
738 return l;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
739 }
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
740
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
741 static gboolean
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
742 plugin_unload(PurplePlugin *plugin)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
743 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
744 PurpleMediaManager *manager = purple_media_manager_get();
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
745 purple_media_manager_set_active_element(manager, old_video_src);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
746 purple_media_manager_set_active_element(manager, old_video_sink);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
747 purple_media_manager_set_active_element(manager, old_audio_src);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
748 purple_media_manager_set_active_element(manager, old_audio_sink);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
749 return TRUE;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
750 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
751
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
752 static PidginPluginUiInfo ui_info = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
753 get_plugin_config_frame,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
754 0, /* page_num (Reserved) */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
755 /* Padding */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
756 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
757 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
758 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
759 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
760 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
761
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
762 static PurplePluginInfo info =
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
763 {
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
764 PURPLE_PLUGIN_MAGIC, /**< magic */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
765 PURPLE_MAJOR_VERSION, /**< major version */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
766 PURPLE_MINOR_VERSION, /**< minor version */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
767 PURPLE_PLUGIN_STANDARD, /**< type */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
768 PIDGIN_PLUGIN_TYPE, /**< ui_requirement */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
769 0, /**< flags */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
770 NULL, /**< dependencies */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
771 PURPLE_PRIORITY_DEFAULT, /**< priority */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
772
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
773 "gtk-maiku-vvconfig", /**< id */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
774 N_("Voice/Video Settings"), /**< name */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
775 DISPLAY_VERSION, /**< version */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
776 N_("Configure your microphone and webcam."), /**< summary */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
777 N_("Configure microphone and webcam "
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
778 "settings for voice/video calls."), /**< description */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
779 "Mike Ruprecht <cmaiku@gmail.com>", /**< author */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
780 PURPLE_WEBSITE, /**< homepage */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
781
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
782 plugin_load, /**< load */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
783 plugin_unload, /**< unload */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
784 NULL, /**< destroy */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
785
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
786 &ui_info, /**< ui_info */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
787 NULL, /**< extra_info */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
788 NULL, /**< prefs_info */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
789 actions, /**< actions */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
790
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
791 /* padding */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
792 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
793 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
794 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
795 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
796 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
797
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
798 static void
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
799 init_plugin(PurplePlugin *plugin) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
800 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
801
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
802 PURPLE_INIT_PLUGIN(vvconfig, init_plugin, info)

mercurial