Mercurial > audlegacy
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 |