comparison src/audacious/ui_lastfm.c @ 3402:dc5ac604569d

- completed German translation (for now ...) - made Last.fm plugin more internationalizationable :-)
author mf0102 <0102@gmx.at>
date Mon, 27 Aug 2007 21:27:23 +0200
parents f985357757e0
children aea3349e2c62
comparison
equal deleted inserted replaced
3401:ae30eb582a66 3402:dc5ac604569d
3 #include <gdk/gdkkeysyms.h> 3 #include <gdk/gdkkeysyms.h>
4 #include "configdb.h" 4 #include "configdb.h"
5 #include "playback.h" 5 #include "playback.h"
6 #define DEBUG 1 6 #define DEBUG 1
7 typedef struct { 7 typedef struct {
8 gchar *username, 8 gchar *username,
9 *session; 9 *session;
10 }last_fm; 10 }last_fm;
11 11
12 typedef struct 12 typedef struct
13 { 13 {
14 gchar *artist, 14 gchar *artist,
15 *title; 15 *title;
16 } 16 }
17 track_data; 17 track_data;
18 18
19 last_fm *login_data=NULL; 19 last_fm *login_data=NULL;
20 Playlist *current_playlist=NULL; 20 Playlist *current_playlist=NULL;
21 GtkWidget *lastfm_url_entry, *lastfm_label,*artist_label,*title_label,*album_label, *gui_window=NULL; 21 GtkWidget *lastfm_url_entry, *lastfm_label,*artist_label,*title_label,*album_label, *gui_window=NULL;
22 22
23 gpointer open_url(gpointer url) 23 gpointer open_url(gpointer url)
24 { 24 {
25 gchar*s=g_new0(gchar,20); 25 gchar*s=g_new0(gchar,20);
26 VFSFile* fd = vfs_fopen((gchar*)url,"r"); 26 VFSFile* fd = vfs_fopen((gchar*)url,"r");
27 if(fd) 27 if(fd)
28 { 28 {
29 vfs_fgets(s,20,fd); 29 vfs_fgets(s,20,fd);
30 g_print("Got data: '%s'\n",s); 30 g_print("Got data: '%s'\n",s);
31 vfs_fclose(fd); 31 vfs_fclose(fd);
32 } 32 }
33 g_free(s); 33 g_free(s);
34 g_free(url); 34 g_free(url);
35 return NULL; 35 return NULL;
36 } 36 }
37 void command(gchar *comm) 37 void command(gchar *comm)
38 { 38 {
39 /* get the session from mowgli*/ 39 /* get the session from mowgli*/
40 if(login_data->session) 40 if(login_data->session)
41 { 41 {
42 g_free(login_data->session); 42 g_free(login_data->session);
43 login_data->session=NULL; 43 login_data->session=NULL;
44 } 44 }
45 login_data->session = g_strdup(mowgli_global_storage_get("lastfm_session_id")); 45 login_data->session = g_strdup(mowgli_global_storage_get("lastfm_session_id"));
46 gchar *url=g_strdup_printf("http://ws.audioscrobbler.com/radio/control.php?session=%s&command=%s&debug=0",login_data->session,comm); 46 gchar *url=g_strdup_printf("http://ws.audioscrobbler.com/radio/control.php?session=%s&command=%s&debug=0",login_data->session,comm);
47 g_thread_create(open_url,url,FALSE,NULL); 47 g_thread_create(open_url,url,FALSE,NULL);
48 if(!g_str_has_prefix(comm,"love")) 48 if(!g_str_has_prefix(comm,"love"))
49 g_thread_create((gpointer)playback_initiate,NULL,FALSE,NULL); 49 g_thread_create((gpointer)playback_initiate,NULL,FALSE,NULL);
50 return;
51
52 }
53 static void change_track_data_cb(gpointer track, gpointer unused)
54 {
55 gchar **inf,
56 **t,
57 *alb,
58 *tr;
59 tr=g_strdup(((track_data*)track)->title);
60
61 if(tr==NULL)
62 return ;
63 if(g_strrstr(tr,"last.fm")==NULL)
64 {
65 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),"Not last.fm stream");
50 return; 66 return;
51 67 }
52 }
53 static void change_track_data_cb(gpointer track, gpointer unused)
54 {
55 gchar **inf,
56 **t,
57 *alb,
58 *tr;
59 tr=g_strdup(((track_data*)track)->title);
60
61 if(tr==NULL)
62 return ;
63 if(g_strrstr(tr,"last.fm")==NULL)
64 {
65 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),"Not last.fm stream");
66 return;
67 }
68 68
69 #if DEBUG 69 #if DEBUG
70 g_print("New Track: %s \n",tr); 70 g_print("New Track: %s \n",tr);
71 #endif 71 #endif
72 if(g_str_has_prefix(tr,"lastfm://")) 72 if(g_str_has_prefix(tr,"lastfm://"))
73 return; 73 return;
74 if(g_strrstr(tr,"Neighbour")!=NULL) 74 if(g_strrstr(tr,"Neighbour")!=NULL)
75 { 75 {
76 gchar *temp=g_strdup_printf("lastfm://user/%s/neighbours", login_data->username);
77 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),temp);
78 g_free(temp);
79 }
80 if(g_strrstr(tr,"Personal")!=NULL)
81 {
82 gchar *temp=g_strdup_printf("lastfm://user/%s/personal", login_data->username);
83 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),temp);
84 g_free(temp);
85 }
86
87 inf = g_strsplit(tr," - ",2);
88 if(inf[0]==NULL || inf[1]==NULL)
89 return;
90 gchar* artist_markup=g_strdup_printf("<b>Artist:</b> %s" ,inf[0]);
91 gtk_label_set_markup(GTK_LABEL(artist_label),artist_markup);
92 g_free(artist_markup);
93
94 t = g_strsplit(inf[1], g_strrstr(inf[1],"("),2);
95 if(t[0]==NULL) return;
96 alb = g_strdup(mowgli_global_storage_get("lastfm_album"));
97
98 gchar* title_markup=g_strdup_printf("<b>Title:</b> %s" ,t[0]);
99 gtk_label_set_markup( GTK_LABEL(title_label),title_markup);
100 g_free(title_markup);
101
102 gchar* album_markup=g_strdup_printf("<b>Album:</b> %s" ,alb);
103 gtk_label_set_markup( GTK_LABEL(album_label),album_markup);
104 g_free(album_markup);
105
106 g_strfreev(inf);
107 g_strfreev(t);
108 g_free(alb);
109 g_free(tr);
110
111 return ;
112 }
113
114 static void show_login_error_dialog(void)
115 {
116 const gchar *markup =
117 N_("<b><big>Couldn't find your lastfm login data.</big></b>\n\n"
118 "Check if your Scrobbler's plugin login settings are configured properly.\n");
119
120 GtkWidget *dialog =
121 gtk_message_dialog_new_with_markup(NULL,
122 GTK_DIALOG_DESTROY_WITH_PARENT,
123 GTK_MESSAGE_ERROR,
124 GTK_BUTTONS_OK,
125 _(markup));
126 gtk_dialog_run(GTK_DIALOG(dialog));
127 gtk_widget_destroy(dialog);
128 }
129
130
131
132 void init_last_fm(void)
133 {
134 login_data = g_new0(last_fm,1);
135 login_data->username = NULL;
136 login_data->session = NULL;
137 ConfigDb *cfg = NULL;
138
139 if ((cfg = bmp_cfg_db_open()) != NULL)
140 {
141 login_data->username=NULL;
142 bmp_cfg_db_get_string(cfg, "audioscrobbler","username",
143 &login_data->username);
144 if(login_data->username==NULL)
145 show_login_error_dialog();
146 g_free(cfg);
147 }
148
149 current_playlist = g_new0(Playlist,1);
150 current_playlist = playlist_get_active();
151 track_data * tr=g_new0(track_data,1);
152 tr->title =NULL;
153 hook_associate( "playlist set info" , change_track_data_cb ,tr);
154
155 }
156
157 /*event callback functions*/
158
159 gboolean love_press_callback(GtkWidget *love)
160 {
161 command("love");
162 return FALSE;
163 }
164
165 gboolean skip_press_callback(GtkWidget *skip)
166 {
167 command("skip");
168 return FALSE;
169 }
170 gboolean ban_press_callback(GtkWidget *ban)
171 {
172 command("ban");
173 return FALSE;
174 }
175
176
177 gboolean add_press_callback(GtkWidget *love)
178 {
179 gchar *text=NULL;
180 gint poz=0;
181 text = g_strdup(gtk_entry_get_text(GTK_ENTRY(lastfm_url_entry)));
182 if(playback_get_playing()==TRUE)
183 playback_stop();
184
185 poz = playlist_get_length(current_playlist);
186 playlist_add_url(current_playlist, text);
187 sleep(1);
188 playlist_set_position(current_playlist, poz);
189 playback_initiate();
190 g_free(text);
191 return FALSE;
192 }
193
194 gboolean neighbours_press_callback(GtkWidget *love)
195 {
196 gchar *temp=g_strdup_printf("lastfm://user/%s/neighbours", login_data->username); 76 gchar *temp=g_strdup_printf("lastfm://user/%s/neighbours", login_data->username);
197 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),temp); 77 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),temp);
198 g_free(temp); 78 g_free(temp);
199 return FALSE; 79 }
80 if(g_strrstr(tr,"Personal")!=NULL)
81 {
82 gchar *temp=g_strdup_printf("lastfm://user/%s/personal", login_data->username);
83 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),temp);
84 g_free(temp);
85 }
86
87 inf = g_strsplit(tr," - ",2);
88 if(inf[0]==NULL || inf[1]==NULL)
89 return;
90 gchar* artist_markup=g_strdup_printf(_("<b>Artist:</b> %s") ,inf[0]);
91 gtk_label_set_markup(GTK_LABEL(artist_label),artist_markup);
92 g_free(artist_markup);
93
94 t = g_strsplit(inf[1], g_strrstr(inf[1],"("),2);
95 if(t[0]==NULL) return;
96 alb = g_strdup(mowgli_global_storage_get("lastfm_album"));
97
98 gchar* title_markup=g_strdup_printf(_("<b>Title:</b> %s") ,t[0]);
99 gtk_label_set_markup( GTK_LABEL(title_label),title_markup);
100 g_free(title_markup);
101
102 gchar* album_markup=g_strdup_printf(_("<b>Album:</b> %s") ,alb);
103 gtk_label_set_markup( GTK_LABEL(album_label),album_markup);
104 g_free(album_markup);
105
106 g_strfreev(inf);
107 g_strfreev(t);
108 g_free(alb);
109 g_free(tr);
110
111 return ;
112 }
113
114 static void show_login_error_dialog(void)
115 {
116 const gchar *markup =
117 _("<b><big>Couldn't find your lastfm login data.</big></b>\n\n"
118 "Check if your Scrobbler's plugin login settings are configured properly.\n");
119
120 GtkWidget *dialog =
121 gtk_message_dialog_new_with_markup(NULL,
122 GTK_DIALOG_DESTROY_WITH_PARENT,
123 GTK_MESSAGE_ERROR,
124 GTK_BUTTONS_OK,
125 _(markup));
126 gtk_dialog_run(GTK_DIALOG(dialog));
127 gtk_widget_destroy(dialog);
128 }
129
130
131
132 void init_last_fm(void)
133 {
134 login_data = g_new0(last_fm,1);
135 login_data->username = NULL;
136 login_data->session = NULL;
137 ConfigDb *cfg = NULL;
138
139 if ((cfg = bmp_cfg_db_open()) != NULL)
140 {
141 login_data->username=NULL;
142 bmp_cfg_db_get_string(cfg, "audioscrobbler","username",
143 &login_data->username);
144 if(login_data->username==NULL)
145 show_login_error_dialog();
146 g_free(cfg);
147 }
148
149 current_playlist = g_new0(Playlist,1);
150 current_playlist = playlist_get_active();
151 track_data * tr=g_new0(track_data,1);
152 tr->title =NULL;
153 hook_associate( "playlist set info" , change_track_data_cb ,tr);
154
155 }
156
157 /*event callback functions*/
158
159 gboolean love_press_callback(GtkWidget *love)
160 {
161 command("love");
162 return FALSE;
163 }
164
165 gboolean skip_press_callback(GtkWidget *skip)
166 {
167 command("skip");
168 return FALSE;
169 }
170 gboolean ban_press_callback(GtkWidget *ban)
171 {
172 command("ban");
173 return FALSE;
174 }
175
176
177 gboolean add_press_callback(GtkWidget *love)
178 {
179 gchar *text=NULL;
180 gint poz=0;
181 text = g_strdup(gtk_entry_get_text(GTK_ENTRY(lastfm_url_entry)));
182 if(playback_get_playing()==TRUE)
183 playback_stop();
184
185 poz = playlist_get_length(current_playlist);
186 playlist_add_url(current_playlist, text);
187 sleep(1);
188 playlist_set_position(current_playlist, poz);
189 playback_initiate();
190 g_free(text);
191 return FALSE;
192 }
193
194 gboolean neighbours_press_callback(GtkWidget *love)
195 {
196 gchar *temp=g_strdup_printf("lastfm://user/%s/neighbours", login_data->username);
197 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),temp);
198 g_free(temp);
199 return FALSE;
200 } 200 }
201 201
202 gboolean personal_press_callback(GtkWidget *love) 202 gboolean personal_press_callback(GtkWidget *love)
203 { 203 {
204 gchar *per=g_strdup_printf("lastfm://user/%s/personal", login_data->username); 204 gchar *per=g_strdup_printf("lastfm://user/%s/personal", login_data->username);
205 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),per); 205 gtk_entry_set_text(GTK_ENTRY(lastfm_url_entry),per);
206 g_free(per); 206 g_free(per);
207 return FALSE; 207 return FALSE;
208 } 208 }
209 209
210 gboolean delete_window_callback(GtkWidget *window) 210 gboolean delete_window_callback(GtkWidget *window)
211 { 211 {
212 gtk_widget_destroy(window); 212 gtk_widget_destroy(window);
213 window=NULL; 213 window=NULL;
214 return FALSE; 214 return FALSE;
215 } 215 }
216 static gboolean keypress_callback(GtkWidget * widget, GdkEventKey * event, gpointer data) 216 static gboolean keypress_callback(GtkWidget * widget, GdkEventKey * event, gpointer data)
217 { 217 {
218 switch (event->keyval) 218 switch (event->keyval)
219 { 219 {
220 case GDK_Escape: 220 case GDK_Escape:
221 gtk_widget_hide_all(widget); 221 gtk_widget_hide_all(widget);
222 break; 222 break;
223 default: 223 default:
224 return FALSE; 224 return FALSE;
225 } 225 }
226 return TRUE; 226 return TRUE;
227 } 227 }
228 228
229 229
230 GtkWidget *ui_lastfm_create(void) 230 GtkWidget *ui_lastfm_create(void)
231 { 231 {
232 GtkWidget *window; 232 GtkWidget *window;
233 GtkWidget *box1,*box2,*vboxw,*vbox1,*vbox2,*v_hbox1,*v_hbox2,*labelbox; 233 GtkWidget *box1,*box2,*vboxw,*vbox1,*vbox2,*v_hbox1,*v_hbox2,*labelbox;
234 GtkWidget *love,*ban,*skip,*add,*neighbours,*personal; 234 GtkWidget *love,*ban,*skip,*add,*neighbours,*personal;
235 235
236 window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 236 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
237 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); 237 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
238 gtk_window_set_title(GTK_WINDOW(window), N_("Audacious last.fm radio tuner")); 238 gtk_window_set_title(GTK_WINDOW(window), _("Audacious last.fm radio tuner"));
239 lastfm_label = gtk_label_new_with_mnemonic(N_("Station:")); 239 lastfm_label = gtk_label_new_with_mnemonic(_("Station:"));
240 title_label = gtk_label_new(NULL); 240 title_label = gtk_label_new(NULL);
241 artist_label = gtk_label_new(NULL); 241 artist_label = gtk_label_new(NULL);
242 album_label = gtk_label_new(NULL); 242 album_label = gtk_label_new(NULL);
243 lastfm_url_entry = gtk_entry_new(); 243 lastfm_url_entry = gtk_entry_new();
244 gtk_editable_set_editable (GTK_EDITABLE(lastfm_url_entry),TRUE); 244 gtk_editable_set_editable (GTK_EDITABLE(lastfm_url_entry),TRUE);
245 gchar* artist_markup=g_strdup("<b>Artist:</b>"); 245 gchar* artist_markup=g_strdup(_("<b>Artist:</b>"));
246 gtk_label_set_markup(GTK_LABEL(artist_label),artist_markup); 246 gtk_label_set_markup(GTK_LABEL(artist_label),artist_markup);
247 g_free(artist_markup); 247 g_free(artist_markup);
248 248
249 gchar* title_markup=g_strdup("<b>Title:</b>"); 249 gchar* title_markup=g_strdup(_("<b>Title:</b>"));
250 gtk_label_set_markup( GTK_LABEL(title_label),title_markup); 250 gtk_label_set_markup( GTK_LABEL(title_label),title_markup);
251 g_free(title_markup); 251 g_free(title_markup);
252 252
253 gchar* album_markup=g_strdup_printf("<b>Album:</b>"); 253 gchar* album_markup=g_strdup_printf(_("<b>Album:</b>"));
254 gtk_label_set_markup( GTK_LABEL(album_label),album_markup); 254 gtk_label_set_markup( GTK_LABEL(album_label),album_markup);
255 g_free(album_markup); 255 g_free(album_markup);
256 256
257 love = gtk_button_new_with_label (N_("Love")); 257 love = gtk_button_new_with_label (_("Love"));
258 ban = gtk_button_new_with_label (N_("Ban")); 258 ban = gtk_button_new_with_label (_("Ban"));
259 skip = gtk_button_new_with_label (N_("Skip")); 259 skip = gtk_button_new_with_label (_("Skip"));
260 add = gtk_button_new_with_label (N_("Tune in")); 260 add = gtk_button_new_with_label (_("Tune in"));
261 261
262 neighbours = gtk_button_new_with_label(N_("Neighbours' radio")); 262 neighbours = gtk_button_new_with_label(_("Neighbours' radio"));
263 personal = gtk_button_new_with_label(N_("Personal radio")); 263 personal = gtk_button_new_with_label(_("Personal radio"));
264 264
265 box1 = gtk_hbox_new(FALSE,1); 265 box1 = gtk_hbox_new(FALSE,1);
266 box2 = gtk_hbox_new(FALSE,1); 266 box2 = gtk_hbox_new(FALSE,1);
267 267
268 vboxw = gtk_vbox_new(FALSE,1); 268 vboxw = gtk_vbox_new(FALSE,1);
269 269
270 vbox1 = gtk_vbox_new(FALSE,1); 270 vbox1 = gtk_vbox_new(FALSE,1);
271 vbox2 = gtk_vbox_new(FALSE,1); 271 vbox2 = gtk_vbox_new(FALSE,1);
272 272
273 v_hbox1 = gtk_vbox_new(FALSE,1); 273 v_hbox1 = gtk_vbox_new(FALSE,1);
274 v_hbox2 = gtk_hbox_new(FALSE,1); 274 v_hbox2 = gtk_hbox_new(FALSE,1);
275 labelbox = gtk_vbox_new(FALSE,1); 275 labelbox = gtk_vbox_new(FALSE,1);
276 276
277 gtk_misc_set_alignment(GTK_MISC(artist_label),0,0); 277 gtk_misc_set_alignment(GTK_MISC(artist_label),0,0);
278 gtk_misc_set_alignment(GTK_MISC(title_label),0,0); 278 gtk_misc_set_alignment(GTK_MISC(title_label),0,0);
279 gtk_misc_set_alignment(GTK_MISC(album_label),0,0); 279 gtk_misc_set_alignment(GTK_MISC(album_label),0,0);
280 280
281 gtk_box_pack_start(GTK_BOX(vboxw),box1,FALSE,TRUE,1); 281 gtk_box_pack_start(GTK_BOX(vboxw),box1,FALSE,TRUE,1);
282 gtk_box_pack_end(GTK_BOX(vboxw),box2,TRUE,TRUE,1); 282 gtk_box_pack_end(GTK_BOX(vboxw),box2,TRUE,TRUE,1);
283 283
284 gtk_box_pack_start(GTK_BOX(box1),lastfm_label,FALSE,TRUE,1); 284 gtk_box_pack_start(GTK_BOX(box1),lastfm_label,FALSE,TRUE,1);
285 gtk_box_pack_start(GTK_BOX(box1),lastfm_url_entry,TRUE,TRUE,1); 285 gtk_box_pack_start(GTK_BOX(box1),lastfm_url_entry,TRUE,TRUE,1);
286 gtk_box_pack_start(GTK_BOX(box1),add,FALSE,TRUE,1); 286 gtk_box_pack_start(GTK_BOX(box1),add,FALSE,TRUE,1);
287 287
288 gtk_box_set_spacing(GTK_BOX(box1),2); 288 gtk_box_set_spacing(GTK_BOX(box1),2);
289 gtk_container_set_border_width(GTK_CONTAINER(box1),2); 289 gtk_container_set_border_width(GTK_CONTAINER(box1),2);
290 290
291 gtk_box_pack_start(GTK_BOX(box2),vbox1,FALSE,TRUE,1); 291 gtk_box_pack_start(GTK_BOX(box2),vbox1,FALSE,TRUE,1);
292 gtk_box_pack_start(GTK_BOX(box2),vbox2,TRUE,TRUE,1); 292 gtk_box_pack_start(GTK_BOX(box2),vbox2,TRUE,TRUE,1);
293 293
294 gtk_box_pack_start(GTK_BOX(vbox1),neighbours,FALSE,TRUE,3); 294 gtk_box_pack_start(GTK_BOX(vbox1),neighbours,FALSE,TRUE,3);
295 gtk_box_pack_start(GTK_BOX(vbox1),personal,FALSE,TRUE,3); 295 gtk_box_pack_start(GTK_BOX(vbox1),personal,FALSE,TRUE,3);
296 gtk_box_set_spacing(GTK_BOX(vbox1),2); 296 gtk_box_set_spacing(GTK_BOX(vbox1),2);
297 gtk_container_set_border_width(GTK_CONTAINER(vbox1),2); 297 gtk_container_set_border_width(GTK_CONTAINER(vbox1),2);
298 298
299 gtk_box_pack_start(GTK_BOX(vbox2),v_hbox1,TRUE,TRUE,1); 299 gtk_box_pack_start(GTK_BOX(vbox2),v_hbox1,TRUE,TRUE,1);
300 gtk_box_pack_start(GTK_BOX(vbox2),v_hbox2,TRUE,TRUE,1); 300 gtk_box_pack_start(GTK_BOX(vbox2),v_hbox2,TRUE,TRUE,1);
301 301
302 gtk_box_pack_start(GTK_BOX(v_hbox1),artist_label,TRUE,TRUE,1); 302 gtk_box_pack_start(GTK_BOX(v_hbox1),artist_label,TRUE,TRUE,1);
303 gtk_box_pack_start(GTK_BOX(v_hbox1),title_label,TRUE,TRUE,1); 303 gtk_box_pack_start(GTK_BOX(v_hbox1),title_label,TRUE,TRUE,1);
304 gtk_box_pack_start(GTK_BOX(v_hbox1),album_label,TRUE,TRUE,1); 304 gtk_box_pack_start(GTK_BOX(v_hbox1),album_label,TRUE,TRUE,1);
305 gtk_box_set_spacing(GTK_BOX(v_hbox1),2); 305 gtk_box_set_spacing(GTK_BOX(v_hbox1),2);
306 gtk_container_set_border_width(GTK_CONTAINER(v_hbox1),2); 306 gtk_container_set_border_width(GTK_CONTAINER(v_hbox1),2);
307 307
308 308
309 gtk_box_pack_start(GTK_BOX(v_hbox2),love,TRUE,TRUE,1); 309 gtk_box_pack_start(GTK_BOX(v_hbox2),love,TRUE,TRUE,1);
310 gtk_box_pack_start(GTK_BOX(v_hbox2),skip,TRUE,TRUE,1); 310 gtk_box_pack_start(GTK_BOX(v_hbox2),skip,TRUE,TRUE,1);
311 gtk_box_pack_start(GTK_BOX(v_hbox2),ban,TRUE,TRUE,1); 311 gtk_box_pack_start(GTK_BOX(v_hbox2),ban,TRUE,TRUE,1);
312 gtk_box_set_spacing(GTK_BOX(v_hbox1),2); 312 gtk_box_set_spacing(GTK_BOX(v_hbox1),2);
313 gtk_container_set_border_width(GTK_CONTAINER(v_hbox1),2); 313 gtk_container_set_border_width(GTK_CONTAINER(v_hbox1),2);
314 314
315 315
316 316
317 gtk_container_add (GTK_CONTAINER (window), vboxw); 317 gtk_container_add (GTK_CONTAINER (window), vboxw);
318 318
319 g_signal_connect (G_OBJECT (love), "button_press_event",G_CALLBACK (love_press_callback), NULL); 319 g_signal_connect (G_OBJECT (love), "button_press_event",G_CALLBACK (love_press_callback), NULL);
320 g_signal_connect (G_OBJECT (add), "button_press_event",G_CALLBACK (add_press_callback), NULL); 320 g_signal_connect (G_OBJECT (add), "button_press_event",G_CALLBACK (add_press_callback), NULL);
321 g_signal_connect (G_OBJECT (ban), "button_press_event",G_CALLBACK (ban_press_callback), NULL); 321 g_signal_connect (G_OBJECT (ban), "button_press_event",G_CALLBACK (ban_press_callback), NULL);
322 g_signal_connect (G_OBJECT (skip), "button_press_event",G_CALLBACK (skip_press_callback), NULL); 322 g_signal_connect (G_OBJECT (skip), "button_press_event",G_CALLBACK (skip_press_callback), NULL);
323 g_signal_connect (G_OBJECT (neighbours), "button_press_event",G_CALLBACK (neighbours_press_callback), NULL); 323 g_signal_connect (G_OBJECT (neighbours), "button_press_event",G_CALLBACK (neighbours_press_callback), NULL);
324 g_signal_connect (G_OBJECT (personal), "button_press_event",G_CALLBACK (personal_press_callback), NULL); 324 g_signal_connect (G_OBJECT (personal), "button_press_event",G_CALLBACK (personal_press_callback), NULL);
325 g_signal_connect (G_OBJECT (window), "delete_event",G_CALLBACK (gtk_widget_hide_all), window); 325 g_signal_connect (G_OBJECT (window), "delete_event",G_CALLBACK (gtk_widget_hide_all), window);
326 g_signal_connect (G_OBJECT (window), "key_press_event",G_CALLBACK(keypress_callback), NULL); 326 g_signal_connect (G_OBJECT (window), "key_press_event",G_CALLBACK(keypress_callback), NULL);
327 327
328 gtk_widget_set_size_request(GTK_WIDGET(window),400,124); 328 gtk_widget_set_size_request(GTK_WIDGET(window),400,124);
329 gtk_window_set_resizable(GTK_WINDOW(window),FALSE); 329 gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
330 gtk_widget_show_all(gui_window); 330 gtk_widget_show_all(gui_window);
331 return window; 331 return window;
332 } 332 }
333 #if 0 333 #if 0
334 static void no_lastfm_plugin_dialog(void) 334 static void no_lastfm_plugin_dialog(void)
335 { 335 {
336 const gchar *markup = 336 const gchar *markup =
337 N_("<b><big>The lastfm radio plugin could not be found.</big></b>\n\n" 337 N_("<b><big>The lastfm radio plugin could not be found.</big></b>\n\n"
338 "Check if the AudioScrobbler plugin was compiled in\n"); 338 "Check if the AudioScrobbler plugin was compiled in\n");
339 339
340 GtkWidget *dialog = 340 GtkWidget *dialog =
341 gtk_message_dialog_new_with_markup(NULL, 341 gtk_message_dialog_new_with_markup(NULL,
342 GTK_DIALOG_DESTROY_WITH_PARENT, 342 GTK_DIALOG_DESTROY_WITH_PARENT,
343 GTK_MESSAGE_ERROR, 343 GTK_MESSAGE_ERROR,
344 GTK_BUTTONS_OK, 344 GTK_BUTTONS_OK,
345 _(markup)); 345 _(markup));
346 gtk_dialog_run(GTK_DIALOG(dialog)); 346 gtk_dialog_run(GTK_DIALOG(dialog));
347 gtk_widget_destroy(dialog); 347 gtk_widget_destroy(dialog);
348 } 348 }
349 #endif 349 #endif
350 350
351 351
352 void ui_lastfm(void) 352 void ui_lastfm(void)
353 { 353 {
354 /*if(!mowgli_global_storage_get("lastfm_loaded")) 354 /*if(!mowgli_global_storage_get("lastfm_loaded"))
355 { 355 {
356 no_lastfm_plugin_dialog(); 356 no_lastfm_plugin_dialog();
357 return; 357 return;
358 } 358 }
359 */ 359 */
360 init_last_fm(); 360 init_last_fm();
361 if(!gui_window) 361 if(!gui_window)
362 { 362 {
363 if((gui_window = ui_lastfm_create())!=NULL); 363 if((gui_window = ui_lastfm_create())!=NULL);
364 gtk_widget_show_all(gui_window); 364 gtk_widget_show_all(gui_window);
365 #if 0 /*here should be set the artist, title and album labels at the first run, because it isn't captured by the hook*/ 365
366 gchar* current_title = playlist_get_songtitle(current_playlist,playlist_get_position(current_playlist)); 366 #if 0
367 if(current_title) 367 /*here should be set the artist, title and album labels at the first run, because it isn't captured by the hook*/
368 change_track_data_cb(current_title,NULL); 368 gchar* current_title = playlist_get_songtitle(current_playlist,playlist_get_position(current_playlist));
369 if(current_title)
370 change_track_data_cb(current_title,NULL);
369 #endif 371 #endif
370 } 372 }
371 else 373 else
372 gtk_widget_show_all(gui_window); 374 gtk_widget_show_all(gui_window);
373 375
374 } 376 }
375 377