Mercurial > audlegacy-plugins
annotate src/song_change/song_change.c @ 2284:d19b53359b24
cleaned up the sndfile wav plugin, currently limiting it ONLY TO WAV
PLAYBACK. if somebody is more experienced with it and wants to restore
the other formats, go ahead (maybe change the name of the plugin too?).
author | mf0102 <0102@gmx.at> |
---|---|
date | Wed, 09 Jan 2008 15:41:22 +0100 |
parents | c44b90b6322e |
children | f88dd72c9156 |
rev | line source |
---|---|
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
1 /* |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
2 * Audacious: A cross-platform multimedia player. |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
3 * Copyright (c) 2005 Audacious Team |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
4 */ |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
5 #include "config.h" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
6 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
7 #include <glib.h> |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
8 #include <gtk/gtk.h> |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
9 #include <sys/types.h> |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
10 #include <sys/wait.h> |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
11 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
12 #include <signal.h> |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
13 #include <unistd.h> |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
14 #include <stdio.h> |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
15 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
16 #include <string.h> |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
17 |
1950
2ebeb7816c5e
Change from "" to <>-style includes. With thanks to ccr for the correct sed voodoo.
chainsaw@localhost
parents:
1395
diff
changeset
|
18 #include <audacious/plugin.h> |
1952
17a6441c71b6
Some missed #include "" to <> changes.
Matti Hamalainen <ccr@tnsp.org>
parents:
1950
diff
changeset
|
19 #include <audacious/ui_preferences.h> |
1950
2ebeb7816c5e
Change from "" to <>-style includes. With thanks to ccr for the correct sed voodoo.
chainsaw@localhost
parents:
1395
diff
changeset
|
20 #include <audacious/configdb.h> |
2ebeb7816c5e
Change from "" to <>-style includes. With thanks to ccr for the correct sed voodoo.
chainsaw@localhost
parents:
1395
diff
changeset
|
21 #include <audacious/auddrct.h> |
2ebeb7816c5e
Change from "" to <>-style includes. With thanks to ccr for the correct sed voodoo.
chainsaw@localhost
parents:
1395
diff
changeset
|
22 #include <audacious/formatter.h> |
527
d124034ebea3
[svn] - glib/gi18n.h -> audacious/i18n.h for automatic dgettext support
nenolod
parents:
406
diff
changeset
|
23 #include <audacious/i18n.h> |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
24 #include <audacious/hook.h> |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
25 #include <audacious/playlist.h> |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
26 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
27 static void init(void); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
28 static void cleanup(void); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
29 static GtkWidget *configure(void); |
594
424d51558e0a
[svn] - Adapted song_change plugin to new hook functions
mf0102
parents:
552
diff
changeset
|
30 static void songchange_playback_begin(gpointer unused, gpointer unused2); |
424d51558e0a
[svn] - Adapted song_change plugin to new hook functions
mf0102
parents:
552
diff
changeset
|
31 static void songchange_playback_end(gpointer unused, gpointer unused2); |
424d51558e0a
[svn] - Adapted song_change plugin to new hook functions
mf0102
parents:
552
diff
changeset
|
32 static void songchange_playlist_eof(gpointer unused, gpointer unused2); |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
33 static void songchange_playback_ttc(gpointer, gpointer); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
34 |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
35 typedef struct |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
36 { |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
37 gchar *title; |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
38 gchar *filename; |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
39 } |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
40 songchange_playback_ttc_prevs_t; |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
41 static songchange_playback_ttc_prevs_t *ttc_prevs = NULL; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
42 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
43 static char *cmd_line = NULL; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
44 static char *cmd_line_after = NULL; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
45 static char *cmd_line_end = NULL; |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
46 static char *cmd_line_ttc = NULL; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
47 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
48 static GtkWidget *configure_vbox = NULL; |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
49 static GtkWidget *cmd_entry, *cmd_after_entry, *cmd_end_entry, *cmd_ttc_entry; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
50 static GtkWidget *cmd_warn_label, *cmd_warn_img; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
51 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
52 GeneralPlugin sc_gp = |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
53 { |
2149 | 54 .description = "Song Change " PACKAGE_VERSION, |
55 .init = init, | |
56 .cleanup = cleanup, | |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
57 }; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
58 |
1119 | 59 GeneralPlugin *songchange_gplist[] = { &sc_gp, NULL }; |
2149 | 60 SIMPLE_GENERAL_PLUGIN(songchange, songchange_gplist); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
61 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
62 static void bury_child(int signal) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
63 { |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
64 waitpid(-1, NULL, WNOHANG); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
65 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
66 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
67 static void execute_command(char *cmd) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
68 { |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
69 char *argv[4] = {"/bin/sh", "-c", NULL, NULL}; |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
70 int i; |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
71 argv[2] = cmd; |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
72 signal(SIGCHLD, bury_child); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
73 if (fork() == 0) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
74 { |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
75 /* We don't want this process to hog the audio device etc */ |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
76 for (i = 3; i < 255; i++) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
77 close(i); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
78 execv("/bin/sh", argv); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
79 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
80 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
81 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
82 /* Format codes: |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
83 * |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
84 * F - frequency (in hertz) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
85 * c - number of channels |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
86 * f - filename (full path) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
87 * l - length (in milliseconds) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
88 * n - name |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
89 * r - rate (in bits per second) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
90 * s - name (since everyone's used to it) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
91 * t - playlist position (%02d) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
92 * p - currently playing (1 or 0) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
93 */ |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
94 /* do_command(): do @cmd after replacing the format codes |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
95 @cmd: command to run |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
96 @current_file: file name of current song |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
97 @pos: playlist_pos */ |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
98 static void |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
99 do_command(char *cmd, const char *current_file, int pos) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
100 { |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
101 int length, rate, freq, nch; |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
102 char *str, *shstring = NULL, *temp, numbuf[16]; |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
103 gboolean playing; |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
104 Formatter *formatter; |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
105 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
106 if (cmd && strlen(cmd) > 0) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
107 { |
2072 | 108 formatter = aud_formatter_new(); |
1024 | 109 str = audacious_drct_pl_get_title(pos); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
110 if (str) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
111 { |
2050
2ffc6a69fcd1
string API calls -> vtable
William Pitcock <nenolod@atheme.org>
parents:
1952
diff
changeset
|
112 temp = aud_escape_shell_chars(str); |
2072 | 113 aud_formatter_associate(formatter, 's', temp); |
114 aud_formatter_associate(formatter, 'n', temp); | |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
115 g_free(str); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
116 g_free(temp); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
117 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
118 else |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
119 { |
2072 | 120 aud_formatter_associate(formatter, 's', ""); |
121 aud_formatter_associate(formatter, 'n', ""); | |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
122 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
123 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
124 if (current_file) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
125 { |
2050
2ffc6a69fcd1
string API calls -> vtable
William Pitcock <nenolod@atheme.org>
parents:
1952
diff
changeset
|
126 temp = aud_escape_shell_chars(current_file); |
2072 | 127 aud_formatter_associate(formatter, 'f', temp); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
128 g_free(temp); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
129 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
130 else |
2072 | 131 aud_formatter_associate(formatter, 'f', ""); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
132 sprintf(numbuf, "%02d", pos + 1); |
2072 | 133 aud_formatter_associate(formatter, 't', numbuf); |
1024 | 134 length = audacious_drct_pl_get_time(pos); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
135 if (length != -1) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
136 { |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
137 sprintf(numbuf, "%d", length); |
2072 | 138 aud_formatter_associate(formatter, 'l', numbuf); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
139 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
140 else |
2072 | 141 aud_formatter_associate(formatter, 'l', "0"); |
1024 | 142 audacious_drct_get_info(&rate, &freq, &nch); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
143 sprintf(numbuf, "%d", rate); |
2072 | 144 aud_formatter_associate(formatter, 'r', numbuf); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
145 sprintf(numbuf, "%d", freq); |
2072 | 146 aud_formatter_associate(formatter, 'F', numbuf); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
147 sprintf(numbuf, "%d", nch); |
2072 | 148 aud_formatter_associate(formatter, 'c', numbuf); |
1024 | 149 playing = audacious_drct_get_playing(); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
150 sprintf(numbuf, "%d", playing); |
2072 | 151 aud_formatter_associate(formatter, 'p', numbuf); |
152 shstring = aud_formatter_format(formatter, cmd); | |
153 aud_formatter_destroy(formatter); | |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
154 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
155 if (shstring) |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
156 { |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
157 execute_command(shstring); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
158 /* FIXME: This can possibly be freed too early */ |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
159 g_free(shstring); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
160 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
161 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
162 } |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
163 |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
164 static void read_config(void) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
165 { |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
166 ConfigDb *db; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
167 |
2124 | 168 db = aud_cfg_db_open(); |
169 if ( !aud_cfg_db_get_string(db, "song_change", "cmd_line", &cmd_line) ) | |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
170 cmd_line = g_strdup(""); |
2124 | 171 if ( !aud_cfg_db_get_string(db, "song_change", "cmd_line_after", &cmd_line_after) ) |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
172 cmd_line_after = g_strdup(""); |
2124 | 173 if ( !aud_cfg_db_get_string(db, "song_change", "cmd_line_end", &cmd_line_end) ) |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
174 cmd_line_end = g_strdup(""); |
2124 | 175 if ( !aud_cfg_db_get_string(db, "song_change", "cmd_line_ttc", &cmd_line_ttc) ) |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
176 cmd_line_ttc = g_strdup(""); |
2124 | 177 aud_cfg_db_close(db); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
178 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
179 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
180 static void cleanup(void) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
181 { |
2060 | 182 aud_hook_dissociate("playback begin", songchange_playback_begin); |
183 aud_hook_dissociate("playback end", songchange_playback_end); | |
184 aud_hook_dissociate("playlist end reached", songchange_playlist_eof); | |
185 aud_hook_dissociate( "playlist set info" , songchange_playback_ttc); | |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
186 |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
187 if ( ttc_prevs != NULL ) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
188 { |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
189 if ( ttc_prevs->title != NULL ) g_free( ttc_prevs->title ); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
190 if ( ttc_prevs->filename != NULL ) g_free( ttc_prevs->filename ); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
191 g_free( ttc_prevs ); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
192 ttc_prevs = NULL; |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
193 } |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
194 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
195 g_free(cmd_line); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
196 g_free(cmd_line_after); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
197 g_free(cmd_line_end); |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
198 g_free(cmd_line_ttc); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
199 cmd_line = NULL; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
200 cmd_line_after = NULL; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
201 cmd_line_end = NULL; |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
202 cmd_line_ttc = NULL; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
203 signal(SIGCHLD, SIG_DFL); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
204 |
2071 | 205 aud_prefswin_page_destroy(configure_vbox); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
206 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
207 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
208 static void save_and_close(GtkWidget *w, gpointer data) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
209 { |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
210 ConfigDb *db; |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
211 char *cmd, *cmd_after, *cmd_end, *cmd_ttc; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
212 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
213 cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(cmd_entry))); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
214 cmd_after = g_strdup(gtk_entry_get_text(GTK_ENTRY(cmd_after_entry))); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
215 cmd_end = g_strdup(gtk_entry_get_text(GTK_ENTRY(cmd_end_entry))); |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
216 cmd_ttc = g_strdup(gtk_entry_get_text(GTK_ENTRY(cmd_ttc_entry))); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
217 |
2124 | 218 db = aud_cfg_db_open(); |
219 aud_cfg_db_set_string(db, "song_change", "cmd_line", cmd); | |
220 aud_cfg_db_set_string(db, "song_change", "cmd_line_after", cmd_after); | |
221 aud_cfg_db_set_string(db, "song_change", "cmd_line_end", cmd_end); | |
222 aud_cfg_db_set_string(db, "song_change", "cmd_line_ttc", cmd_ttc); | |
223 aud_cfg_db_close(db); | |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
224 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
225 if (cmd_line != NULL) |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
226 g_free(cmd_line); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
227 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
228 cmd_line = g_strdup(cmd); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
229 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
230 if (cmd_line_after != NULL) |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
231 g_free(cmd_line_after); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
232 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
233 cmd_line_after = g_strdup(cmd_after); |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
234 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
235 if (cmd_line_end != NULL) |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
236 g_free(cmd_line_end); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
237 |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
238 cmd_line_end = g_strdup(cmd_end); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
239 |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
240 if (cmd_line_ttc != NULL) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
241 g_free(cmd_line_ttc); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
242 |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
243 cmd_line_ttc = g_strdup(cmd_ttc); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
244 |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
245 g_free(cmd); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
246 g_free(cmd_after); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
247 g_free(cmd_end); |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
248 g_free(cmd_ttc); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
249 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
250 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
251 static int check_command(char *command) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
252 { |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
253 const char *dangerous = "fns"; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
254 char *c; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
255 int qu = 0; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
256 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
257 for (c = command; *c != '\0'; c++) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
258 { |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
259 if (*c == '"' && (c == command || *(c - 1) != '\\')) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
260 qu = !qu; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
261 else if (*c == '%' && !qu && strchr(dangerous, *(c + 1))) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
262 return -1; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
263 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
264 return 0; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
265 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
266 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
267 static void configure_ok_cb(GtkWidget *w, gpointer data) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
268 { |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
269 char *cmd, *cmd_after, *cmd_end, *cmd_ttc; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
270 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
271 cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(cmd_entry))); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
272 cmd_after = g_strdup(gtk_entry_get_text(GTK_ENTRY(cmd_after_entry))); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
273 cmd_end = g_strdup(gtk_entry_get_text(GTK_ENTRY(cmd_end_entry))); |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
274 cmd_ttc = g_strdup(gtk_entry_get_text(GTK_ENTRY(cmd_ttc_entry))); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
275 |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
276 if (check_command(cmd) < 0 || check_command(cmd_after) < 0 || |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
277 check_command(cmd_end) < 0 || check_command(cmd_ttc) < 0) |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
278 { |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
279 gtk_widget_show(cmd_warn_img); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
280 gtk_widget_show(cmd_warn_label); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
281 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
282 else |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
283 { |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
284 gtk_widget_hide(cmd_warn_img); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
285 gtk_widget_hide(cmd_warn_label); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
286 save_and_close(NULL, NULL); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
287 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
288 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
289 g_free(cmd); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
290 g_free(cmd_after); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
291 g_free(cmd_end); |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
292 g_free(cmd_ttc); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
293 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
294 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
295 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
296 static GtkWidget *configure(void) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
297 { |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
298 GtkWidget *sep1, *sep2, *sep3, *sep4; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
299 GtkWidget *cmd_hbox, *cmd_label; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
300 GtkWidget *cmd_after_hbox, *cmd_after_label; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
301 GtkWidget *cmd_end_hbox, *cmd_end_label; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
302 GtkWidget *cmd_desc, *cmd_after_desc, *cmd_end_desc, *f_desc; |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
303 GtkWidget *cmd_ttc_hbox, *cmd_ttc_label, *cmd_ttc_desc; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
304 GtkWidget *song_frame, *song_vbox; |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
305 GtkWidget *bbox_hbox; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
306 char *temp; |
1369
6d87598ff8a9
Internationalization... (The first step of the "i18n" project could be ready for Audacious 1.4 release)
Stany HENRY <StrassBoy@gmail.com>
parents:
1212
diff
changeset
|
307 |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
308 read_config(); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
309 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
310 configure_vbox = gtk_vbox_new(FALSE, 12); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
311 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
312 song_frame = gtk_frame_new(_("Commands")); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
313 gtk_box_pack_start(GTK_BOX(configure_vbox), song_frame, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
314 song_vbox = gtk_vbox_new(FALSE, 12); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
315 gtk_container_set_border_width(GTK_CONTAINER(song_vbox), 6); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
316 gtk_container_add(GTK_CONTAINER(song_frame), song_vbox); |
1369
6d87598ff8a9
Internationalization... (The first step of the "i18n" project could be ready for Audacious 1.4 release)
Stany HENRY <StrassBoy@gmail.com>
parents:
1212
diff
changeset
|
317 |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
318 cmd_desc = gtk_label_new(_( |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
319 "Command to run when Audacious starts a new song.")); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
320 gtk_label_set_justify(GTK_LABEL(cmd_desc), GTK_JUSTIFY_LEFT); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
321 gtk_misc_set_alignment(GTK_MISC(cmd_desc), 0, 0.5); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
322 gtk_box_pack_start(GTK_BOX(song_vbox), cmd_desc, FALSE, FALSE, 0); |
1369
6d87598ff8a9
Internationalization... (The first step of the "i18n" project could be ready for Audacious 1.4 release)
Stany HENRY <StrassBoy@gmail.com>
parents:
1212
diff
changeset
|
323 gtk_label_set_line_wrap(GTK_LABEL(cmd_desc), FALSE); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
324 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
325 cmd_hbox = gtk_hbox_new(FALSE, 6); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
326 gtk_box_pack_start(GTK_BOX(song_vbox), cmd_hbox, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
327 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
328 cmd_label = gtk_label_new(_("Command:")); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
329 gtk_box_pack_start(GTK_BOX(cmd_hbox), cmd_label, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
330 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
331 cmd_entry = gtk_entry_new(); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
332 if (cmd_line) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
333 gtk_entry_set_text(GTK_ENTRY(cmd_entry), cmd_line); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
334 gtk_widget_set_usize(cmd_entry, 200, -1); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
335 gtk_box_pack_start(GTK_BOX(cmd_hbox), cmd_entry, TRUE, TRUE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
336 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
337 sep1 = gtk_hseparator_new(); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
338 gtk_box_pack_start(GTK_BOX(song_vbox), sep1, TRUE, TRUE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
339 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
340 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
341 cmd_after_desc = gtk_label_new(_( |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
342 "Command to run toward the end of a song.")); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
343 gtk_label_set_justify(GTK_LABEL(cmd_after_desc), GTK_JUSTIFY_LEFT); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
344 gtk_misc_set_alignment(GTK_MISC(cmd_after_desc), 0, 0.5); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
345 gtk_box_pack_start(GTK_BOX(song_vbox), cmd_after_desc, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
346 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
347 cmd_after_hbox = gtk_hbox_new(FALSE, 6); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
348 gtk_box_pack_start(GTK_BOX(song_vbox), cmd_after_hbox, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
349 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
350 cmd_after_label = gtk_label_new(_("Command:")); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
351 gtk_box_pack_start(GTK_BOX(cmd_after_hbox), cmd_after_label, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
352 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
353 cmd_after_entry = gtk_entry_new(); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
354 if (cmd_line_after) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
355 gtk_entry_set_text(GTK_ENTRY(cmd_after_entry), cmd_line_after); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
356 gtk_widget_set_usize(cmd_after_entry, 200, -1); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
357 gtk_box_pack_start(GTK_BOX(cmd_after_hbox), cmd_after_entry, TRUE, TRUE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
358 sep2 = gtk_hseparator_new(); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
359 gtk_box_pack_start(GTK_BOX(song_vbox), sep2, TRUE, TRUE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
360 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
361 cmd_end_desc = gtk_label_new(_( |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
362 "Command to run when Audacious reaches the end " |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
363 "of the playlist.")); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
364 gtk_label_set_justify(GTK_LABEL(cmd_end_desc), GTK_JUSTIFY_LEFT); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
365 gtk_misc_set_alignment(GTK_MISC(cmd_end_desc), 0, 0.5); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
366 gtk_box_pack_start(GTK_BOX(song_vbox), cmd_end_desc, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
367 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
368 cmd_end_hbox = gtk_hbox_new(FALSE, 6); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
369 gtk_box_pack_start(GTK_BOX(song_vbox), cmd_end_hbox, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
370 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
371 cmd_end_label = gtk_label_new(_("Command:")); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
372 gtk_box_pack_start(GTK_BOX(cmd_end_hbox), cmd_end_label, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
373 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
374 cmd_end_entry = gtk_entry_new(); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
375 if (cmd_line_end) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
376 gtk_entry_set_text(GTK_ENTRY(cmd_end_entry), cmd_line_end); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
377 gtk_widget_set_usize(cmd_end_entry, 200, -1); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
378 gtk_box_pack_start(GTK_BOX(cmd_end_hbox), cmd_end_entry, TRUE, TRUE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
379 sep3 = gtk_hseparator_new(); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
380 gtk_box_pack_start(GTK_BOX(song_vbox), sep3, TRUE, TRUE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
381 |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
382 cmd_ttc_desc = gtk_label_new(_( |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
383 "Command to run when title changes for a song " |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
384 "(i.e. network streams titles).")); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
385 gtk_label_set_justify(GTK_LABEL(cmd_ttc_desc), GTK_JUSTIFY_LEFT); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
386 gtk_misc_set_alignment(GTK_MISC(cmd_ttc_desc), 0, 0.5); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
387 gtk_box_pack_start(GTK_BOX(song_vbox), cmd_ttc_desc, FALSE, FALSE, 0); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
388 |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
389 cmd_ttc_hbox = gtk_hbox_new(FALSE, 6); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
390 gtk_box_pack_start(GTK_BOX(song_vbox), cmd_ttc_hbox, FALSE, FALSE, 0); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
391 |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
392 cmd_ttc_label = gtk_label_new(_("Command:")); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
393 gtk_box_pack_start(GTK_BOX(cmd_ttc_hbox), cmd_ttc_label, FALSE, FALSE, 0); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
394 |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
395 cmd_ttc_entry = gtk_entry_new(); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
396 if (cmd_line_ttc) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
397 gtk_entry_set_text(GTK_ENTRY(cmd_ttc_entry), cmd_line_ttc); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
398 gtk_widget_set_usize(cmd_ttc_entry, 200, -1); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
399 gtk_box_pack_start(GTK_BOX(cmd_ttc_hbox), cmd_ttc_entry, TRUE, TRUE, 0); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
400 sep4 = gtk_hseparator_new(); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
401 gtk_box_pack_start(GTK_BOX(song_vbox), sep4, TRUE, TRUE, 0); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
402 |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
403 temp = g_strdup_printf( |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
404 _("You can use the following format strings which\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
405 "will be substituted before calling the command\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
406 "(not all are useful for the end-of-playlist command).\n\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
407 "%%F: Frequency (in hertz)\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
408 "%%c: Number of channels\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
409 "%%f: filename (full path)\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
410 "%%l: length (in milliseconds)\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
411 "%%n or %%s: Song name\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
412 "%%r: Rate (in bits per second)\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
413 "%%t: Playlist position (%%02d)\n" |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
414 "%%p: Currently playing (1 or 0)")); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
415 f_desc = gtk_label_new(temp); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
416 g_free(temp); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
417 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
418 gtk_label_set_justify(GTK_LABEL(f_desc), GTK_JUSTIFY_LEFT); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
419 gtk_misc_set_alignment(GTK_MISC(f_desc), 0, 0.5); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
420 gtk_box_pack_start(GTK_BOX(song_vbox), f_desc, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
421 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
422 bbox_hbox = gtk_hbox_new(FALSE, 6); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
423 gtk_box_pack_start(GTK_BOX(configure_vbox), bbox_hbox, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
424 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
425 cmd_warn_img = gtk_image_new_from_stock("gtk-dialog-warning", GTK_ICON_SIZE_MENU); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
426 gtk_box_pack_start(GTK_BOX(bbox_hbox), cmd_warn_img, FALSE, FALSE, 0); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
427 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
428 temp = g_strdup_printf( |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
429 _("<span size='small'>Parameters passed to the shell should be encapsulated in quotes. Doing otherwise is a security risk.</span>")); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
430 cmd_warn_label = gtk_label_new(temp); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
431 gtk_label_set_markup(GTK_LABEL(cmd_warn_label), temp); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
432 gtk_box_pack_start(GTK_BOX(bbox_hbox), cmd_warn_label, FALSE, FALSE, 0); |
2269
c44b90b6322e
Fixes memory leak in song change plugin when applying configuration (Bugzilla #48)
Jussi Judin <jjudin+audacious@iki.fi>
parents:
2149
diff
changeset
|
433 g_free(temp); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
434 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
435 g_signal_connect(GTK_OBJECT(cmd_entry), "changed", GTK_SIGNAL_FUNC(configure_ok_cb), NULL); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
436 g_signal_connect(GTK_OBJECT(cmd_after_entry), "changed", GTK_SIGNAL_FUNC(configure_ok_cb), NULL); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
437 g_signal_connect(GTK_OBJECT(cmd_end_entry), "changed", GTK_SIGNAL_FUNC(configure_ok_cb), NULL); |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
438 g_signal_connect(GTK_OBJECT(cmd_ttc_entry), "changed", GTK_SIGNAL_FUNC(configure_ok_cb), NULL); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
439 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
440 gtk_widget_show_all(configure_vbox); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
441 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
442 return configure_vbox; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
443 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
444 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
445 static void init(void) |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
446 { |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
447 read_config(); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
448 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
449 configure_vbox = configure(); |
2071 | 450 aud_prefswin_page_new(configure_vbox, "Song Change", DATA_DIR "/images/plugins.png"); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
451 |
2060 | 452 aud_hook_associate("playback begin", songchange_playback_begin, NULL); |
453 aud_hook_associate("playback end", songchange_playback_end, NULL); | |
454 aud_hook_associate("playlist end reached", songchange_playlist_eof, NULL); | |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
455 |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
456 ttc_prevs = g_malloc0(sizeof(songchange_playback_ttc_prevs_t)); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
457 ttc_prevs->title = NULL; |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
458 ttc_prevs->filename = NULL; |
2060 | 459 aud_hook_associate( "playlist set info" , songchange_playback_ttc , ttc_prevs ); |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
460 |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
461 configure_ok_cb(NULL, NULL); |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
462 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
463 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
464 static void |
594
424d51558e0a
[svn] - Adapted song_change plugin to new hook functions
mf0102
parents:
552
diff
changeset
|
465 songchange_playback_begin(gpointer unused, gpointer unused2) |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
466 { |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
467 int pos; |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
468 char *current_file; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
469 |
1024 | 470 pos = audacious_drct_pl_get_pos(); |
471 current_file = audacious_drct_pl_get_file(pos); | |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
472 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
473 do_command(cmd_line, current_file, pos); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
474 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
475 g_free(current_file); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
476 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
477 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
478 static void |
594
424d51558e0a
[svn] - Adapted song_change plugin to new hook functions
mf0102
parents:
552
diff
changeset
|
479 songchange_playback_end(gpointer unused, gpointer unused2) |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
480 { |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
481 int pos; |
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
482 char *current_file; |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
483 |
1024 | 484 pos = audacious_drct_pl_get_pos(); |
485 current_file = audacious_drct_pl_get_file(pos); | |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
486 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
487 do_command(cmd_line_after, current_file, pos); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
488 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
489 g_free(current_file); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
490 } |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
491 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
492 static void |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
493 songchange_playback_ttc(gpointer plentry_gp, gpointer prevs_gp) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
494 { |
2058
fffa7e3d39e0
use aud_ip_state (replacement to ip_data).
William Pitcock <nenolod@atheme.org>
parents:
2051
diff
changeset
|
495 if ( ( aud_ip_state->playing ) && ( strcmp(cmd_line_ttc,"") ) ) |
1212
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
496 { |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
497 songchange_playback_ttc_prevs_t *prevs = prevs_gp; |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
498 PlaylistEntry *pl_entry = plentry_gp; |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
499 |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
500 /* same filename but title changed, useful to detect http stream song changes */ |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
501 |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
502 if ( ( prevs->title != NULL ) && ( prevs->filename != NULL ) ) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
503 { |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
504 if ( ( pl_entry->filename != NULL ) && ( !strcmp(pl_entry->filename,prevs->filename) ) ) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
505 { |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
506 if ( ( pl_entry->title != NULL ) && ( strcmp(pl_entry->title,prevs->title) ) ) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
507 { |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
508 int pos = audacious_drct_pl_get_pos(); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
509 char *current_file = audacious_drct_pl_get_file(pos); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
510 do_command(cmd_line_ttc, current_file, pos); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
511 g_free(current_file); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
512 g_free(prevs->title); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
513 prevs->title = g_strdup(pl_entry->title); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
514 } |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
515 } |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
516 else |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
517 { |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
518 g_free(prevs->filename); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
519 prevs->filename = g_strdup(pl_entry->filename); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
520 /* if filename changes, reset title as well */ |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
521 if ( prevs->title != NULL ) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
522 g_free(prevs->title); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
523 prevs->title = g_strdup(pl_entry->title); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
524 } |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
525 } |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
526 else |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
527 { |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
528 if ( prevs->title != NULL ) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
529 g_free(prevs->title); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
530 prevs->title = g_strdup(pl_entry->title); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
531 if ( prevs->filename != NULL ) |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
532 g_free(prevs->filename); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
533 prevs->filename = g_strdup(pl_entry->filename); |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
534 } |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
535 } |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
536 } |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
537 |
36cc5e56246e
Added title changes event for songchange plugin
Giacomo Lozito <james@develia.org>
parents:
1119
diff
changeset
|
538 static void |
594
424d51558e0a
[svn] - Adapted song_change plugin to new hook functions
mf0102
parents:
552
diff
changeset
|
539 songchange_playlist_eof(gpointer unused, gpointer unused2) |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
540 { |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
541 int pos; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
542 char *current_file; |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
543 |
1024 | 544 pos = audacious_drct_pl_get_pos(); |
545 current_file = audacious_drct_pl_get_file(pos); | |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
546 |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
547 do_command(cmd_line_end, current_file, pos); |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
548 |
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
549 g_free(current_file); |
549
f4b8032d08f1
[svn] - songchange: use asynchronous hooks instead of a polling event
nenolod
parents:
527
diff
changeset
|
550 } |
0
13389e613d67
[svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff
changeset
|
551 |