comparison src/audacious/ui_fileinfo.c @ 3986:a77a1b3f493f

drop glade on fileinfo
author Tomasz Mon <desowin@gmail.com>
date Fri, 23 Nov 2007 20:32:25 +0100
parents 602ec8c40d0d
children ce1ce0a6cc74
comparison
equal deleted inserted replaced
3985:ba5af8e85857 3986:a77a1b3f493f
24 #endif 24 #endif
25 25
26 #include <glib.h> 26 #include <glib.h>
27 #include <glib/gi18n.h> 27 #include <glib/gi18n.h>
28 #include <gtk/gtk.h> 28 #include <gtk/gtk.h>
29 #include <glade/glade.h>
30 #include <string.h> 29 #include <string.h>
31 #include <stddef.h> 30 #include <stddef.h>
32 #include <stdio.h> 31 #include <stdio.h>
33 #include <sys/types.h> 32 #include <sys/types.h>
34 #include <dirent.h> 33 #include <dirent.h>
35 #include <unistd.h> 34 #include <unistd.h>
36 #include <errno.h> 35 #include <errno.h>
37 #include <sys/types.h> 36 #include <sys/types.h>
38 #include <sys/stat.h> 37 #include <sys/stat.h>
39 38
40 #include "glade.h"
41
42 #include "plugin.h" 39 #include "plugin.h"
43 #include "pluginenum.h" 40 #include "pluginenum.h"
44 #include "input.h" 41 #include "input.h"
45 #include "effect.h" 42 #include "effect.h"
46 #include "strings.h" 43 #include "strings.h"
61 #include "ui_fileinfo.h" 58 #include "ui_fileinfo.h"
62 #include "ui_playlist.h" 59 #include "ui_playlist.h"
63 60
64 GtkWidget *fileinfo_win; 61 GtkWidget *fileinfo_win;
65 62
63 GtkWidget *entry_location;
64 GtkWidget *entry_title;
65 GtkWidget *entry_artist;
66 GtkWidget *entry_album;
67 GtkWidget *entry_comment;
68 GtkWidget *entry_year;
69 GtkWidget *entry_track;
70 GtkWidget *entry_genre;
71
72 GtkWidget *image_artwork;
73
66 static void 74 static void
67 fileinfo_entry_set_text(const char *entry, const char *text) 75 fileinfo_entry_set_text(GtkWidget *widget, const char *text)
68 { 76 {
69 GladeXML *xml = g_object_get_data(G_OBJECT(fileinfo_win), "glade-xml"); 77 if (widget == NULL)
70 GtkWidget *widget = glade_xml_get_widget(xml, entry); 78 return;
71 79
72 if (xml == NULL || widget == NULL) 80 gtk_entry_set_text(GTK_ENTRY(widget), text);
73 return;
74
75 gtk_entry_set_text(GTK_ENTRY(widget), text);
76 } 81 }
77 82
78 static void 83 static void
79 fileinfo_entry_set_text_free(const char *entry, char *text) 84 fileinfo_entry_set_text_free(GtkWidget *widget, char *text)
80 { 85 {
81 GladeXML *xml = g_object_get_data(G_OBJECT(fileinfo_win), "glade-xml"); 86 if (widget == NULL)
82 GtkWidget *widget = glade_xml_get_widget(xml, entry); 87 return;
83 88
84 if (xml == NULL || widget == NULL) 89 gtk_entry_set_text(GTK_ENTRY(widget), text);
85 return; 90
86 91 g_free(text);
87 gtk_entry_set_text(GTK_ENTRY(widget), text);
88
89 g_free(text);
90 } 92 }
91 93
92 static void 94 static void
93 fileinfo_entry_set_image(const char *entry, const char *text) 95 fileinfo_entry_set_image(GtkWidget *widget, const char *text)
94 { 96 {
95 GladeXML *xml = g_object_get_data(G_OBJECT(fileinfo_win), "glade-xml");
96 GtkWidget *widget = glade_xml_get_widget(xml, entry);
97 GdkPixbuf *pixbuf; 97 GdkPixbuf *pixbuf;
98 int width, height; 98 int width, height;
99 double aspect; 99 double aspect;
100 GdkPixbuf *pixbuf2; 100 GdkPixbuf *pixbuf2;
101 101
102 if (xml == NULL || widget == NULL) 102 if (widget == NULL)
103 return; 103 return;
104 104
105 pixbuf = gdk_pixbuf_new_from_file(text, NULL); 105 pixbuf = gdk_pixbuf_new_from_file(text, NULL);
106 106
107 if (pixbuf == NULL) 107 if (pixbuf == NULL)
131 g_object_unref(G_OBJECT(pixbuf)); 131 g_object_unref(G_OBJECT(pixbuf));
132 } 132 }
133 133
134 void fileinfo_hide(gpointer unused) 134 void fileinfo_hide(gpointer unused)
135 { 135 {
136 gtk_widget_hide(fileinfo_win); 136 gtk_widget_hide(fileinfo_win);
137 137
138 /* Clear it out. */ 138 /* Clear it out. */
139 fileinfo_entry_set_text("entry_title", ""); 139 fileinfo_entry_set_text(entry_title, "");
140 fileinfo_entry_set_text("entry_artist", ""); 140 fileinfo_entry_set_text(entry_artist, "");
141 fileinfo_entry_set_text("entry_album", ""); 141 fileinfo_entry_set_text(entry_album, "");
142 fileinfo_entry_set_text("entry_comment", ""); 142 fileinfo_entry_set_text(entry_comment, "");
143 fileinfo_entry_set_text("entry_genre", ""); 143 fileinfo_entry_set_text(entry_genre, "");
144 fileinfo_entry_set_text("entry_year", ""); 144 fileinfo_entry_set_text(entry_year, "");
145 fileinfo_entry_set_text("entry_track", ""); 145 fileinfo_entry_set_text(entry_track, "");
146 fileinfo_entry_set_text("entry_location", ""); 146 fileinfo_entry_set_text(entry_location, "");
147 147
148 fileinfo_entry_set_image("image_artwork", DATA_DIR "/images/audio.png"); 148 fileinfo_entry_set_image(image_artwork, DATA_DIR "/images/audio.png");
149 } 149 }
150 150
151 void 151 void
152 create_fileinfo_window(void) 152 create_fileinfo_window(void)
153 { 153 {
154 const gchar *glade_file = DATA_DIR "/glade/fileinfo.glade"; 154 GtkWidget *hbox;
155 GladeXML *xml; 155 GtkWidget *vbox1;
156 GtkWidget *widget; 156 GtkWidget *vbox2;
157 157 GtkWidget *label_title;
158 xml = glade_xml_new_or_die(_("Track Information Window"), glade_file, NULL, NULL); 158 GtkWidget *label_artist;
159 159 GtkWidget *label_album;
160 glade_xml_signal_autoconnect(xml); 160 GtkWidget *label_comment;
161 161 GtkWidget *label_genre;
162 fileinfo_win = glade_xml_get_widget(xml, "fileinfo_win"); 162 GtkWidget *label_year;
163 g_object_set_data(G_OBJECT(fileinfo_win), "glade-xml", xml); 163 GtkWidget *label_track;
164 gtk_window_set_transient_for(GTK_WINDOW(fileinfo_win), GTK_WINDOW(mainwin)); 164 GtkWidget *label_location;
165 165 GtkWidget *table1;
166 widget = glade_xml_get_widget(xml, "image_artwork"); 166 GtkWidget *bbox_close;
167 gtk_image_set_from_file(GTK_IMAGE(widget), DATA_DIR "/images/audio.png"); 167 GtkWidget *btn_close;
168 168
169 widget = glade_xml_get_widget(xml, "btn_close"); 169 fileinfo_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
170 g_signal_connect(G_OBJECT(widget), "clicked", (GCallback) fileinfo_hide, NULL); 170 gtk_container_set_border_width(GTK_CONTAINER(fileinfo_win), 6);
171 gtk_window_set_title(GTK_WINDOW(fileinfo_win), _("Track Information"));
172 gtk_window_set_position(GTK_WINDOW(fileinfo_win), GTK_WIN_POS_CENTER);
173 gtk_window_set_resizable(GTK_WINDOW(fileinfo_win), FALSE);
174 gtk_window_set_type_hint(GTK_WINDOW(fileinfo_win), GDK_WINDOW_TYPE_HINT_DIALOG);
175 gtk_window_set_transient_for(GTK_WINDOW(fileinfo_win), GTK_WINDOW(mainwin));
176
177 hbox = gtk_hbox_new(FALSE, 0);
178 gtk_container_add(GTK_CONTAINER(fileinfo_win), hbox);
179
180 image_artwork = gtk_image_new();
181 gtk_box_pack_start(GTK_BOX(hbox), image_artwork, FALSE, FALSE, 0);
182 gtk_misc_set_alignment(GTK_MISC(image_artwork), 0.5, 0);
183 gtk_image_set_from_file(GTK_IMAGE(image_artwork), DATA_DIR "/images/audio.png");
184
185 vbox1 = gtk_vbox_new(FALSE, 0);
186 gtk_box_pack_start(GTK_BOX(hbox), vbox1, TRUE, TRUE, 0);
187
188 vbox2 = gtk_vbox_new(FALSE, 0);
189 gtk_container_add(GTK_CONTAINER(vbox1), vbox2);
190
191 label_title = gtk_label_new(_("<span size=\"small\">Title</span>"));
192 gtk_box_pack_start(GTK_BOX(vbox2), label_title, FALSE, FALSE, 0);
193 gtk_label_set_use_markup(GTK_LABEL(label_title), TRUE);
194 gtk_misc_set_alignment(GTK_MISC(label_title), 0, 0);
195
196 entry_title = gtk_entry_new();
197 gtk_container_add(GTK_CONTAINER(vbox2), entry_title);
198
199 label_artist = gtk_label_new(_("<span size=\"small\">Artist</span>"));
200 gtk_box_pack_start(GTK_BOX(vbox2), label_artist, FALSE, FALSE, 0);
201 gtk_label_set_use_markup(GTK_LABEL(label_artist), TRUE);
202 gtk_misc_set_alignment(GTK_MISC(label_artist), 0, 0.5);
203
204 entry_artist = gtk_entry_new();
205 gtk_container_add(GTK_CONTAINER(vbox2), entry_artist);
206
207 label_album = gtk_label_new(_("<span size=\"small\">Album</span>"));
208 gtk_box_pack_start(GTK_BOX(vbox2), label_album, FALSE, FALSE, 0);
209 gtk_label_set_use_markup(GTK_LABEL(label_album), TRUE);
210 gtk_misc_set_alignment(GTK_MISC(label_album), 0, 0.5);
211
212 entry_album = gtk_entry_new();
213 gtk_container_add(GTK_CONTAINER(vbox2), entry_album);
214
215 label_comment = gtk_label_new(_("<span size=\"small\">Comment</span>"));
216 gtk_box_pack_start(GTK_BOX(vbox2), label_comment, FALSE, FALSE, 0);
217 gtk_label_set_use_markup(GTK_LABEL(label_comment), TRUE);
218 gtk_misc_set_alignment(GTK_MISC(label_comment), 0, 0.5);
219
220 entry_comment = gtk_entry_new();
221 gtk_container_add (GTK_CONTAINER(vbox2), entry_comment);
222
223 label_genre = gtk_label_new(_("<span size=\"small\">Genre</span>"));
224 gtk_box_pack_start(GTK_BOX(vbox2), label_genre, FALSE, FALSE, 0);
225 gtk_label_set_use_markup(GTK_LABEL(label_genre), TRUE);
226 gtk_misc_set_alignment(GTK_MISC(label_genre), 0, 0.5);
227
228 entry_genre = gtk_entry_new();
229 gtk_container_add(GTK_CONTAINER(vbox2), entry_genre);
230
231 table1 = gtk_table_new(2, 2, FALSE);
232 gtk_container_add(GTK_CONTAINER(vbox2), table1);
233 gtk_table_set_col_spacings(GTK_TABLE(table1), 6);
234
235 label_year = gtk_label_new(_("<span size=\"small\">Year</span>"));
236 gtk_table_attach(GTK_TABLE(table1), label_year, 0, 1, 0, 1,
237 (GtkAttachOptions) (GTK_FILL),
238 (GtkAttachOptions) (0), 0, 0);
239 gtk_label_set_use_markup(GTK_LABEL(label_year), TRUE);
240 gtk_misc_set_alignment(GTK_MISC(label_year), 0, 0.5);
241
242 entry_year = gtk_entry_new();
243 gtk_table_attach(GTK_TABLE(table1), entry_year, 0, 1, 1, 2,
244 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
245 (GtkAttachOptions) (0), 0, 0);
246
247 label_track = gtk_label_new(_("<span size=\"small\">Track Number</span>"));
248 gtk_table_attach(GTK_TABLE(table1), label_track, 1, 2, 0, 1,
249 (GtkAttachOptions) (GTK_FILL),
250 (GtkAttachOptions) (0), 0, 0);
251 gtk_label_set_use_markup(GTK_LABEL(label_track), TRUE);
252 gtk_misc_set_alignment(GTK_MISC(label_track), 0, 0.5);
253
254 entry_track = gtk_entry_new();
255 gtk_table_attach(GTK_TABLE(table1), entry_track, 1, 2, 1, 2,
256 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
257 (GtkAttachOptions) (0), 0, 0);
258
259 label_location = gtk_label_new(_("<span size=\"small\">Location</span>"));
260 gtk_box_pack_start(GTK_BOX(vbox2), label_location, FALSE, FALSE, 0);
261 gtk_label_set_use_markup(GTK_LABEL(label_location), TRUE);
262 gtk_misc_set_alignment(GTK_MISC(label_location), 0, 0.5);
263
264 entry_location = gtk_entry_new();
265 gtk_container_add(GTK_CONTAINER(vbox2), entry_location);
266
267 bbox_close = gtk_hbutton_box_new();
268 gtk_box_pack_start(GTK_BOX(vbox1), bbox_close, FALSE, FALSE, 0);
269 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox_close), GTK_BUTTONBOX_END);
270
271 btn_close = gtk_button_new_from_stock("gtk-close");
272 gtk_container_add(GTK_CONTAINER(bbox_close), btn_close);
273 GTK_WIDGET_SET_FLAGS(btn_close, GTK_CAN_DEFAULT);
274 g_signal_connect(G_OBJECT(btn_close), "clicked", (GCallback) fileinfo_hide, NULL);
275
276 gtk_widget_show_all (hbox);
171 } 277 }
172 278
173 void 279 void
174 fileinfo_show_for_tuple(Tuple *tuple) 280 fileinfo_show_for_tuple(Tuple *tuple)
175 { 281 {
178 if (tuple == NULL) 284 if (tuple == NULL)
179 return; 285 return;
180 286
181 gtk_widget_realize(fileinfo_win); 287 gtk_widget_realize(fileinfo_win);
182 288
183 fileinfo_entry_set_text("entry_title", tuple_get_string(tuple, FIELD_TITLE, NULL)); 289 fileinfo_entry_set_text(entry_title, tuple_get_string(tuple, FIELD_TITLE, NULL));
184 fileinfo_entry_set_text("entry_artist", tuple_get_string(tuple, FIELD_ARTIST, NULL)); 290 fileinfo_entry_set_text(entry_artist, tuple_get_string(tuple, FIELD_ARTIST, NULL));
185 fileinfo_entry_set_text("entry_album", tuple_get_string(tuple, FIELD_ALBUM, NULL)); 291 fileinfo_entry_set_text(entry_album, tuple_get_string(tuple, FIELD_ALBUM, NULL));
186 fileinfo_entry_set_text("entry_comment", tuple_get_string(tuple, FIELD_COMMENT, NULL)); 292 fileinfo_entry_set_text(entry_comment, tuple_get_string(tuple, FIELD_COMMENT, NULL));
187 fileinfo_entry_set_text("entry_genre", tuple_get_string(tuple, FIELD_GENRE, NULL)); 293 fileinfo_entry_set_text(entry_genre, tuple_get_string(tuple, FIELD_GENRE, NULL));
188 294
189 tmp = g_strdup_printf("%s/%s", 295 tmp = g_strdup_printf("%s/%s",
190 tuple_get_string(tuple, FIELD_FILE_PATH, NULL), 296 tuple_get_string(tuple, FIELD_FILE_PATH, NULL),
191 tuple_get_string(tuple, FIELD_FILE_NAME, NULL)); 297 tuple_get_string(tuple, FIELD_FILE_NAME, NULL));
192 if(tmp){ 298 if(tmp){
193 fileinfo_entry_set_text_free("entry_location", str_to_utf8(tmp)); 299 fileinfo_entry_set_text_free(entry_location, str_to_utf8(tmp));
194 g_free(tmp); 300 g_free(tmp);
195 tmp = NULL; 301 tmp = NULL;
196 } 302 }
197 303
198 if (tuple_get_int(tuple, FIELD_YEAR, NULL)) 304 if (tuple_get_int(tuple, FIELD_YEAR, NULL))
199 fileinfo_entry_set_text_free("entry_year", 305 fileinfo_entry_set_text_free(entry_year,
200 g_strdup_printf("%d", tuple_get_int(tuple, FIELD_YEAR, NULL))); 306 g_strdup_printf("%d", tuple_get_int(tuple, FIELD_YEAR, NULL)));
201 307
202 if (tuple_get_int(tuple, FIELD_TRACK_NUMBER, NULL)) 308 if (tuple_get_int(tuple, FIELD_TRACK_NUMBER, NULL))
203 fileinfo_entry_set_text_free("entry_track", 309 fileinfo_entry_set_text_free(entry_track,
204 g_strdup_printf("%d", tuple_get_int(tuple, FIELD_TRACK_NUMBER, NULL))); 310 g_strdup_printf("%d", tuple_get_int(tuple, FIELD_TRACK_NUMBER, NULL)));
205 311
206 tmp = fileinfo_recursive_get_image( 312 tmp = fileinfo_recursive_get_image(
207 tuple_get_string(tuple, FIELD_FILE_PATH, NULL), 313 tuple_get_string(tuple, FIELD_FILE_PATH, NULL),
208 tuple_get_string(tuple, FIELD_FILE_NAME, NULL), 0); 314 tuple_get_string(tuple, FIELD_FILE_NAME, NULL), 0);
209 315
210 if(tmp) 316 if(tmp)
211 { 317 {
212 fileinfo_entry_set_image("image_artwork", tmp); 318 fileinfo_entry_set_image(image_artwork, tmp);
213 g_free(tmp); 319 g_free(tmp);
214 } 320 }
215 321
216 gtk_widget_show(fileinfo_win); 322 gtk_widget_show(fileinfo_win);
217 } 323 }