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