1 /* gmpc-metadata-browser2.c generated by valac 0.12.0, the Vala compiler
2  * generated from gmpc-metadata-browser2.vala, do not modify */
3 
4 /* Gnome Music Player Client (GMPC)
5  * Copyright (C) 2004-2011 Qball Cow <qball@gmpclient.org>
6  * Project homepage: http://gmpclient.org/
7 
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12 
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17 
18  * You should have received a copy of the GNU General Public License along
19  * with this program; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 */
22 
23 #include <glib.h>
24 #include <glib-object.h>
25 #include <gtk/gtk.h>
26 #include <gtktransition.h>
27 #include <stdlib.h>
28 #include <string.h>
29 #include <config.h>
30 #include "gmpc-extras.h"
31 #include <gdk/gdk.h>
32 #include <gmpc-mpddata-model.h>
33 #include <libmpd/libmpdclient.h>
34 #include <libmpd/libmpd.h>
35 #include <misc.h>
36 #include <plugin.h>
37 #include <config1.h>
38 #include <glib/gi18n-lib.h>
39 #include <metadata.h>
40 #include <libmpd/libmpd-internal.h>
41 #include <mpdinteraction.h>
42 #include <gmpc-metaimage.h>
43 #include <pango/pango.h>
44 #include <gmpc-meta-text-view.h>
45 #include <playlist3.h>
46 #include <advanced-search.h>
47 #include <gmpc-stats-label.h>
48 #include <main.h>
49 
50 
51 #define GMPC_BROWSERS_METADATA_TYPE_HITEM (gmpc_browsers_metadata_hitem_get_type ())
52 
53 #define GMPC_BROWSERS_METADATA_TYPE_HITEM_TYPE (gmpc_browsers_metadata_hitem_type_get_type ())
54 typedef struct _GmpcBrowsersMetadataHitem GmpcBrowsersMetadataHitem;
55 #define _gtk_tree_row_reference_free0(var) ((var == NULL) ? NULL : (var = (gtk_tree_row_reference_free (var), NULL)))
56 #define _g_free0(var) (var = (g_free (var), NULL))
57 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
58 #define __g_list_free__gmpc_browsers_metadata_hitem_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__gmpc_browsers_metadata_hitem_free0_ (var), NULL)))
59 #define _gtk_tree_path_free0(var) ((var == NULL) ? NULL : (var = (gtk_tree_path_free (var), NULL)))
60 typedef struct _Block6Data Block6Data;
61 #define _mpd_data_free0(var) ((var == NULL) ? NULL : (var = (mpd_data_free (var), NULL)))
62 #define _mpd_freeSong0(var) ((var == NULL) ? NULL : (var = (mpd_freeSong (var), NULL)))
63 #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
64 typedef struct _Block7Data Block7Data;
65 #define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
66 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
67 typedef struct _Block8Data Block8Data;
68 typedef struct _Block9Data Block9Data;
69 typedef struct _Block10Data Block10Data;
70 typedef struct _Block11Data Block11Data;
71 typedef struct _Block12Data Block12Data;
72 typedef struct _Block13Data Block13Data;
73 typedef struct _Block14Data Block14Data;
74 typedef struct _Block15Data Block15Data;
75 typedef struct _Block16Data Block16Data;
76 typedef struct _Block17Data Block17Data;
77 typedef struct _Block18Data Block18Data;
78 typedef struct _Block19Data Block19Data;
79 typedef struct _Block20Data Block20Data;
80 typedef struct _Block21Data Block21Data;
81 typedef struct _Block22Data Block22Data;
82 typedef struct _Block23Data Block23Data;
83 typedef struct _Block24Data Block24Data;
84 typedef struct _Block25Data Block25Data;
85 #define _gmpc_browsers_metadata_hitem_free0(var) ((var == NULL) ? NULL : (var = (gmpc_browsers_metadata_hitem_free (var), NULL)))
86 typedef struct _Block26Data Block26Data;
87 
88 typedef enum  {
89 	GMPC_BROWSERS_METADATA_HITEM_TYPE_BASE,
90 	GMPC_BROWSERS_METADATA_HITEM_TYPE_ARTIST,
91 	GMPC_BROWSERS_METADATA_HITEM_TYPE_ALBUM,
92 	GMPC_BROWSERS_METADATA_HITEM_TYPE_SONG
93 } GmpcBrowsersMetadataHitemType;
94 
95 struct _GmpcBrowsersMetadataHitem {
96 	GmpcBrowsersMetadataHitemType type;
97 	mpd_Song* song;
98 	gchar* search_string;
99 };
100 
101 struct _GmpcBrowsersMetadataPrivate {
102 	gint block_update;
103 	GtkTreeRowReference* rref;
104 	gchar* title_color;
105 	gchar* item_color;
106 	gboolean theme_colors;
107 	GdkColor background;
108 	GdkColor foreground;
109 	GtkPaned* paned;
110 	GtkBox* browser_box;
111 	GtkTreeView* tree_artist;
112 	GmpcMpdDataModel* model_artist;
113 	GtkTreeModelFilter* model_filter_artist;
114 	GtkEntry* artist_filter_entry;
115 	GtkTreeView* tree_album;
116 	GmpcMpdDataModel* model_albums;
117 	GtkTreeModelFilter* model_filter_album;
118 	GtkEntry* album_filter_entry;
119 	GtkTreeView* tree_songs;
120 	GmpcMpdDataModel* model_songs;
121 	GtkScrolledWindow* metadata_sw;
122 	GtkEventBox* metadata_box;
123 	GtkEventBox* header;
124 	guint update_timeout;
125 	gboolean selected;
126 	GList* history;
127 	GList* current;
128 };
129 
130 struct _Block6Data {
131 	int _ref_count_;
132 	GmpcBrowsersMetadata * self;
133 	GtkTreeView* tree;
134 };
135 
136 struct _Block7Data {
137 	int _ref_count_;
138 	GmpcBrowsersMetadata * self;
139 	GtkNotebook* notebook;
140 	mpd_Song* song;
141 };
142 
143 struct _Block8Data {
144 	int _ref_count_;
145 	Block7Data * _data7_;
146 	gint j;
147 };
148 
149 struct _Block9Data {
150 	int _ref_count_;
151 	Block7Data * _data7_;
152 	GmpcMetaTextView* text_view;
153 	gboolean text_view_queried;
154 	gint j;
155 };
156 
157 struct _Block10Data {
158 	int _ref_count_;
159 	Block7Data * _data7_;
160 	gboolean similar_songs_queried;
161 	GtkAlignment* similar_songs_box;
162 	gint j;
163 };
164 
165 struct _Block11Data {
166 	int _ref_count_;
167 	Block7Data * _data7_;
168 	GmpcMetaDataWidgetsSimilarArtists* similar_artist;
169 	gint j;
170 };
171 
172 struct _Block12Data {
173 	int _ref_count_;
174 	Block7Data * _data7_;
175 	gint j;
176 };
177 
178 struct _Block13Data {
179 	int _ref_count_;
180 	GmpcBrowsersMetadata * self;
181 	GmpcWidgetsSonglist* result_hbox;
182 	GtkToggleButton* show_button;
183 };
184 
185 struct _Block14Data {
186 	int _ref_count_;
187 	GmpcBrowsersMetadata * self;
188 	GtkNotebook* notebook;
189 	gchar* artist;
190 	gchar* album;
191 };
192 
193 struct _Block15Data {
194 	int _ref_count_;
195 	Block14Data * _data14_;
196 	gint j;
197 };
198 
199 struct _Block16Data {
200 	int _ref_count_;
201 	Block14Data * _data14_;
202 	GmpcWidgetsSonglist* sl;
203 	gint j;
204 	gboolean seen;
205 };
206 
207 struct _Block17Data {
208 	int _ref_count_;
209 	Block14Data * _data14_;
210 	gint j;
211 };
212 
213 struct _Block18Data {
214 	int _ref_count_;
215 	GmpcBrowsersMetadata * self;
216 	GtkHBox* hbox;
217 	GtkNotebook* notebook;
218 	gchar* artist;
219 };
220 
221 struct _Block19Data {
222 	int _ref_count_;
223 	Block18Data * _data18_;
224 	gint j;
225 };
226 
227 struct _Block20Data {
228 	int _ref_count_;
229 	Block18Data * _data18_;
230 	GmpcMetaDataWidgetsSimilarArtists* similar_artist;
231 	gint j;
232 };
233 
234 struct _Block21Data {
235 	int _ref_count_;
236 	Block18Data * _data18_;
237 	GmpcWidgetsSonglist* sl;
238 	gint j;
239 	gboolean seen;
240 };
241 
242 struct _Block22Data {
243 	int _ref_count_;
244 	Block18Data * _data18_;
245 	gint j;
246 };
247 
248 struct _Block23Data {
249 	int _ref_count_;
250 	Block18Data * _data18_;
251 	gint j;
252 };
253 
254 struct _Block24Data {
255 	int _ref_count_;
256 	Block23Data * _data23_;
257 	mpd_Song* but_song;
258 };
259 
260 struct _Block25Data {
261 	int _ref_count_;
262 	Block24Data * _data24_;
263 	PopupMenu* p;
264 };
265 
266 struct _Block26Data {
267 	int _ref_count_;
268 	GmpcBrowsersMetadata * self;
269 	gchar* artist;
270 	gchar* album;
271 };
272 
273 
274 static gpointer gmpc_browsers_metadata_parent_class = NULL;
275 static GmpcPluginBrowserIfaceIface* gmpc_browsers_metadata_gmpc_plugin_browser_iface_parent_iface = NULL;
276 
277 #define use_transition_mdb TRUE
278 #define some_unique_name_mdb VERSION
279 static GType gmpc_browsers_metadata_hitem_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
280 static GType gmpc_browsers_metadata_hitem_type_get_type (void) G_GNUC_UNUSED;
281 static GmpcBrowsersMetadataHitem* gmpc_browsers_metadata_hitem_dup (const GmpcBrowsersMetadataHitem* self);
282 static void gmpc_browsers_metadata_hitem_free (GmpcBrowsersMetadataHitem* self);
283 static void gmpc_browsers_metadata_hitem_copy (const GmpcBrowsersMetadataHitem* self, GmpcBrowsersMetadataHitem* dest);
284 static void gmpc_browsers_metadata_hitem_destroy (GmpcBrowsersMetadataHitem* self);
285 #define GMPC_BROWSERS_METADATA_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GMPC_BROWSERS_TYPE_METADATA, GmpcBrowsersMetadataPrivate))
286 enum  {
287 	GMPC_BROWSERS_METADATA_DUMMY_PROPERTY
288 };
289 static void _gmpc_browsers_metadata_hitem_free0_ (gpointer var);
290 static void _g_list_free__gmpc_browsers_metadata_hitem_free0_ (GList* self);
291 static void gmpc_browsers_metadata_show_metadata_search (GmpcBrowsersMetadata* self);
292 static gint* gmpc_browsers_metadata_real_get_version (GmpcPluginBase* base, int* result_length1);
293 static const gchar* gmpc_browsers_metadata_real_get_name (GmpcPluginBase* base);
294 static void gmpc_browsers_metadata_real_save_yourself (GmpcPluginBase* base);
295 static void gmpc_browsers_metadata_select_metadata_browser (GmpcBrowsersMetadata* self, GtkWidget* widget);
296 static void gmpc_browsers_metadata_select_metadata_browser_search (GmpcBrowsersMetadata* self, GtkWidget* widget);
297 static gint gmpc_browsers_metadata_real_browser_add_go_menu (GmpcPluginBrowserIface* base, GtkMenu* menu);
298 static void _gmpc_browsers_metadata_select_metadata_browser_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
299 static void _gmpc_browsers_metadata_select_metadata_browser_search_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
300 static void gmpc_browsers_metadata_browser_bg_style_changed (GmpcBrowsersMetadata* self, GtkWidget* bg, GtkStyle* style);
301 static void gmpc_browsers_metadata_change_color_style (GmpcBrowsersMetadata* self, GtkWidget* bg);
302 static gboolean gmpc_browsers_metadata_browser_button_press_event (GmpcBrowsersMetadata* self, GtkWidget* treel, GdkEventButton* event);
303 static void gmpc_browsers_metadata_browser_artist_entry_changed (GmpcBrowsersMetadata* self, GtkEditable* entry);
304 static gboolean gmpc_browsers_metadata_artist_browser_button_release_event (GmpcBrowsersMetadata* self, GtkWidget* treel, GdkEventButton* event);
305 static Block6Data* block6_data_ref (Block6Data* _data6_);
306 static void block6_data_unref (Block6Data* _data6_);
307 static void _lambda75_ (GtkMenuItem* source, Block6Data* _data6_);
308 static void __lambda75__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
309 static void _lambda76_ (GtkMenuItem* source, Block6Data* _data6_);
310 static void __lambda76__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
311 static gboolean gmpc_browsers_metadata_visible_func_artist (GmpcBrowsersMetadata* self, GtkTreeModel* model, GtkTreeIter* iter);
312 static gboolean gmpc_browsers_metadata_browser_artist_key_press_event (GmpcBrowsersMetadata* self, GtkWidget* widget, GdkEventKey* event);
313 static void gmpc_browsers_metadata_album_add_clicked (GmpcBrowsersMetadata* self, GtkWidget* item);
314 static gchar* gmpc_browsers_metadata_browser_get_selected_artist (GmpcBrowsersMetadata* self);
315 static gchar* gmpc_browsers_metadata_browser_get_selected_album (GmpcBrowsersMetadata* self);
316 static void gmpc_browsers_metadata_album_replace_clicked (GmpcBrowsersMetadata* self, GtkWidget* item);
317 static gboolean gmpc_browsers_metadata_album_browser_button_release_event (GmpcBrowsersMetadata* self, GtkWidget* tree, GdkEventButton* event);
318 static void _gmpc_browsers_metadata_album_add_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
319 static void _gmpc_browsers_metadata_album_replace_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
320 static gboolean gmpc_browsers_metadata_visible_func_album (GmpcBrowsersMetadata* self, GtkTreeModel* model, GtkTreeIter* iter);
321 static gboolean gmpc_browsers_metadata_browser_album_key_press_event (GmpcBrowsersMetadata* self, GtkWidget* widget, GdkEventKey* event);
322 static void gmpc_browsers_metadata_browser_album_entry_changed (GmpcBrowsersMetadata* self, GtkEditable* pentry);
323 static void gmpc_browsers_metadata_song_add_clicked (GmpcBrowsersMetadata* self, GtkWidget* item);
324 static mpd_Song* gmpc_browsers_metadata_browser_get_selected_song (GmpcBrowsersMetadata* self);
325 static void gmpc_browsers_metadata_song_replace_clicked (GmpcBrowsersMetadata* self, GtkWidget* item);
326 static gboolean gmpc_browsers_metadata_song_browser_button_release_event (GmpcBrowsersMetadata* self, GtkWidget* ptree, GdkEventButton* event);
327 static void _gmpc_browsers_metadata_song_add_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
328 static void _gmpc_browsers_metadata_song_replace_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
329 static gboolean gmpc_browsers_metadata_browser_button_release_event (GmpcBrowsersMetadata* self, GtkWidget* widget, GdkEventButton* event);
330 static void gmpc_browsers_metadata_history_previous (GmpcBrowsersMetadata* self);
331 static void gmpc_browsers_metadata_history_next (GmpcBrowsersMetadata* self);
332 static void gmpc_browsers_metadata_browser_init (GmpcBrowsersMetadata* self);
333 static void _gmpc_browsers_metadata_browser_bg_style_changed_gtk_widget_style_set (GtkWidget* _sender, GtkStyle* previous_style, gpointer self);
334 static void _lambda77_ (GtkEntry* source, GtkEntryIconPosition pos, GdkEvent* event, GmpcBrowsersMetadata* self);
335 static void __lambda77__gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self);
336 static void _gmpc_browsers_metadata_browser_artist_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self);
337 static gboolean _gmpc_browsers_metadata_visible_func_artist_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self);
338 static gboolean _gmpc_browsers_metadata_browser_button_press_event_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
339 static gboolean _gmpc_browsers_metadata_artist_browser_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
340 static gboolean _gmpc_browsers_metadata_browser_artist_key_press_event_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self);
341 static void gmpc_browsers_metadata_browser_artist_changed (GmpcBrowsersMetadata* self, GtkTreeSelection* sel);
342 static void _gmpc_browsers_metadata_browser_artist_changed_gtk_tree_selection_changed (GtkTreeSelection* _sender, gpointer self);
343 static void _lambda78_ (GtkEntry* source, GtkEntryIconPosition pos, GdkEvent* event, GmpcBrowsersMetadata* self);
344 static void __lambda78__gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self);
345 static void _gmpc_browsers_metadata_browser_album_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self);
346 static gboolean _gmpc_browsers_metadata_visible_func_album_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self);
347 static gboolean _gmpc_browsers_metadata_album_browser_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
348 static gboolean _gmpc_browsers_metadata_browser_album_key_press_event_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self);
349 static void gmpc_browsers_metadata_browser_album_changed (GmpcBrowsersMetadata* self, GtkTreeSelection* album_sel);
350 static void _gmpc_browsers_metadata_browser_album_changed_gtk_tree_selection_changed (GtkTreeSelection* _sender, gpointer self);
351 static gboolean _gmpc_browsers_metadata_song_browser_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
352 static void gmpc_browsers_metadata_browser_songs_changed (GmpcBrowsersMetadata* self, GtkTreeSelection* song_sel);
353 static void _gmpc_browsers_metadata_browser_songs_changed_gtk_tree_selection_changed (GtkTreeSelection* _sender, gpointer self);
354 static gboolean _misc_header_expose_event_gtk_widget_expose_event (GtkWidget* _sender, GdkEventExpose* event, gpointer self);
355 static gboolean _gmpc_browsers_metadata_browser_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
356 static void gmpc_browsers_metadata_reload_browsers (GmpcBrowsersMetadata* self);
357 static void gmpc_browsers_metadata_metadata_box_clear (GmpcBrowsersMetadata* self);
358 static void gmpc_browsers_metadata_metadata_box_update (GmpcBrowsersMetadata* self);
359 static void gmpc_browsers_metadata_add_selected_song (GmpcBrowsersMetadata* self, GtkButton* button);
360 static void gmpc_browsers_metadata_play_selected_song (GmpcBrowsersMetadata* self, GtkButton* button);
361 static void gmpc_browsers_metadata_replace_selected_song (GmpcBrowsersMetadata* self, GtkButton* button);
362 static void gmpc_browsers_metadata_add_entry (GmpcBrowsersMetadata* self, GtkTable* table, const gchar* entry_label, const gchar* value, GtkWidget* extra, gint* i, const gchar* image);
363 static Block7Data* block7_data_ref (Block7Data* _data7_);
364 static void block7_data_unref (Block7Data* _data7_);
365 static void gmpc_browsers_metadata_history_bc_header (GmpcBrowsersMetadata* self, GmpcBrowsersMetadataHitemType type, const gchar* artist, const gchar* album, const gchar* title);
366 static gchar* gmpc_browsers_metadata_get_extension (GmpcBrowsersMetadata* self, const gchar* path);
367 static void _gmpc_browsers_metadata_add_selected_song_gtk_button_clicked (GtkButton* _sender, gpointer self);
368 static void _gmpc_browsers_metadata_replace_selected_song_gtk_button_clicked (GtkButton* _sender, gpointer self);
369 static void _gmpc_browsers_metadata_play_selected_song_gtk_button_clicked (GtkButton* _sender, gpointer self);
370 static Block8Data* block8_data_ref (Block8Data* _data8_);
371 static void block8_data_unref (Block8Data* _data8_);
372 static void _lambda40_ (GtkButton* source, Block8Data* _data8_);
373 static void __lambda40__gtk_button_clicked (GtkButton* _sender, gpointer self);
374 static Block9Data* block9_data_ref (Block9Data* _data9_);
375 static void block9_data_unref (Block9Data* _data9_);
376 static void _lambda41_ (GtkButton* source, Block9Data* _data9_);
377 static void __lambda41__gtk_button_clicked (GtkButton* _sender, gpointer self);
378 static Block10Data* block10_data_ref (Block10Data* _data10_);
379 static void block10_data_unref (Block10Data* _data10_);
380 static void _lambda42_ (GtkButton* source, Block10Data* _data10_);
381 static void __lambda42__gtk_button_clicked (GtkButton* _sender, gpointer self);
382 static Block11Data* block11_data_ref (Block11Data* _data11_);
383 static void block11_data_unref (Block11Data* _data11_);
384 static void _lambda43_ (GtkButton* source, Block11Data* _data11_);
385 static void __lambda43__gtk_button_clicked (GtkButton* _sender, gpointer self);
386 static Block12Data* block12_data_ref (Block12Data* _data12_);
387 static void block12_data_unref (Block12Data* _data12_);
388 static void _lambda44_ (GtkButton* source, Block12Data* _data12_);
389 static void __lambda44__gtk_button_clicked (GtkButton* _sender, gpointer self);
390 static void _lambda45_ (GObject* source, GParamSpec* spec, Block7Data* _data7_);
391 static void __lambda45__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
392 static void gmpc_browsers_metadata_metadata_box_show_base (GmpcBrowsersMetadata* self);
393 static Block13Data* block13_data_ref (Block13Data* _data13_);
394 static void block13_data_unref (Block13Data* _data13_);
395 static void _lambda68_ (GtkEntry* source, GtkEntryIconPosition pos, GdkEvent* event, GmpcBrowsersMetadata* self);
396 static void __lambda68__gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self);
397 static void _lambda69_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
398 static void __lambda69__gmpc_widgets_songlist_artist_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
399 static void _lambda70_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
400 static void __lambda70__gmpc_widgets_songlist_album_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
401 static void _lambda71_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
402 static void __lambda71__gmpc_widgets_songlist_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
403 static void _lambda72_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
404 static void __lambda72__gmpc_widgets_songlist_play_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
405 static void _lambda73_ (GtkEntry* source, Block13Data* _data13_);
406 static void __lambda73__gtk_entry_activate (GtkEntry* _sender, gpointer self);
407 static void _lambda74_ (GtkToggleButton* source, Block13Data* _data13_);
408 static void __lambda74__gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self);
409 static void gmpc_browsers_metadata_metadata_box_show_album (GmpcBrowsersMetadata* self, const gchar* artist, const gchar* album);
410 static Block14Data* block14_data_ref (Block14Data* _data14_);
411 static void block14_data_unref (Block14Data* _data14_);
412 static Block15Data* block15_data_ref (Block15Data* _data15_);
413 static void block15_data_unref (Block15Data* _data15_);
414 static void _lambda46_ (GtkButton* source, Block15Data* _data15_);
415 static void __lambda46__gtk_button_clicked (GtkButton* _sender, gpointer self);
416 static Block16Data* block16_data_ref (Block16Data* _data16_);
417 static void block16_data_unref (Block16Data* _data16_);
418 static void _lambda47_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
419 static void __lambda47__gmpc_widgets_songlist_album_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
420 static void _lambda48_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
421 static void __lambda48__gmpc_widgets_songlist_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
422 static void _lambda49_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
423 static void __lambda49__gmpc_widgets_songlist_play_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
424 static void _lambda50_ (GtkButton* source, Block16Data* _data16_);
425 static void __lambda50__gtk_button_clicked (GtkButton* _sender, gpointer self);
426 static void _lambda51_ (GParamSpec* source, Block16Data* _data16_);
427 static void __lambda51__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
428 static Block17Data* block17_data_ref (Block17Data* _data17_);
429 static void block17_data_unref (Block17Data* _data17_);
430 static void _lambda52_ (GtkButton* source, Block17Data* _data17_);
431 static void __lambda52__gtk_button_clicked (GtkButton* _sender, gpointer self);
432 static void _lambda53_ (GObject* source, GParamSpec* spec, Block14Data* _data14_);
433 static void __lambda53__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
434 static void gmpc_browsers_metadata_metadata_box_show_artist (GmpcBrowsersMetadata* self, const gchar* artist);
435 static Block18Data* block18_data_ref (Block18Data* _data18_);
436 static void block18_data_unref (Block18Data* _data18_);
437 static Block19Data* block19_data_ref (Block19Data* _data19_);
438 static void block19_data_unref (Block19Data* _data19_);
439 static void _lambda54_ (GtkButton* source, Block19Data* _data19_);
440 static void __lambda54__gtk_button_clicked (GtkButton* _sender, gpointer self);
441 static Block20Data* block20_data_ref (Block20Data* _data20_);
442 static void block20_data_unref (Block20Data* _data20_);
443 static void _lambda55_ (GtkButton* source, Block20Data* _data20_);
444 static void __lambda55__gtk_button_clicked (GtkButton* _sender, gpointer self);
445 static Block21Data* block21_data_ref (Block21Data* _data21_);
446 static void block21_data_unref (Block21Data* _data21_);
447 static void _lambda56_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
448 static void __lambda56__gmpc_widgets_songlist_album_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
449 static void _lambda57_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
450 static void __lambda57__gmpc_widgets_songlist_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
451 static void _lambda58_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self);
452 static void __lambda58__gmpc_widgets_songlist_play_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self);
453 static void _lambda59_ (GtkButton* source, Block21Data* _data21_);
454 static void __lambda59__gtk_button_clicked (GtkButton* _sender, gpointer self);
455 static void _lambda60_ (GParamSpec* source, Block21Data* _data21_);
456 static void __lambda60__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
457 static Block22Data* block22_data_ref (Block22Data* _data22_);
458 static void block22_data_unref (Block22Data* _data22_);
459 static void _lambda61_ (GtkButton* source, Block22Data* _data22_);
460 static void __lambda61__gtk_button_clicked (GtkButton* _sender, gpointer self);
461 static Block23Data* block23_data_ref (Block23Data* _data23_);
462 static void block23_data_unref (Block23Data* _data23_);
463 static Block24Data* block24_data_ref (Block24Data* _data24_);
464 static void block24_data_unref (Block24Data* _data24_);
465 static gboolean _lambda62_ (GtkWidget* source, GdkEventButton* event, Block24Data* _data24_);
466 static Block25Data* block25_data_ref (Block25Data* _data25_);
467 static void block25_data_unref (Block25Data* _data25_);
468 static void _lambda63_ (GtkButton* source, Block25Data* _data25_);
469 static void __lambda63__gtk_button_clicked (GtkButton* _sender, gpointer self);
470 static void _lambda64_ (GtkButton* source, Block25Data* _data25_);
471 static void __lambda64__gtk_button_clicked (GtkButton* _sender, gpointer self);
472 static void _lambda65_ (GtkButton* source, Block25Data* _data25_);
473 static void __lambda65__gtk_button_clicked (GtkButton* _sender, gpointer self);
474 static gboolean __lambda62__gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
475 static void _lambda66_ (GtkButton* source, Block23Data* _data23_);
476 static void __lambda66__gtk_button_clicked (GtkButton* _sender, gpointer self);
477 static void _lambda67_ (GObject* source, GParamSpec* spec, Block18Data* _data18_);
478 static void __lambda67__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
479 static gboolean gmpc_browsers_metadata_metadata_box_update_real (GmpcBrowsersMetadata* self);
480 static gboolean _gmpc_browsers_metadata_metadata_box_update_real_gsource_func (gpointer self);
481 static void gmpc_browsers_metadata_history_add (GmpcBrowsersMetadata* self, GmpcBrowsersMetadataHitem* hi);
482 static void gmpc_browsers_metadata_real_browser_add (GmpcPluginBrowserIface* base, GtkWidget* category_tree);
483 static void gmpc_browsers_metadata_real_browser_selected (GmpcPluginBrowserIface* base, GtkContainer* container);
484 static void gmpc_browsers_metadata_real_browser_unselected (GmpcPluginBrowserIface* base, GtkContainer* container);
485 static void gmpc_browsers_metadata_con_changed (GmpcBrowsersMetadata* self, GmpcConnection* conn, MpdObj* server, gint connect);
486 static void gmpc_browsers_metadata_history_clear (GmpcBrowsersMetadata* self);
487 static void gmpc_browsers_metadata_status_changed (GmpcBrowsersMetadata* self, GmpcConnection* conn, MpdObj* server, ChangedStatusType what);
488 static void gmpc_browsers_metadata_show_hitem (GmpcBrowsersMetadata* self, GmpcBrowsersMetadataHitem* hi);
489 static void gmpc_browsers_metadata_history_show_list_clicked (GmpcBrowsersMetadata* self, GtkMenuItem* item);
490 static void gmpc_browsers_metadata_history_show_list (GmpcBrowsersMetadata* self);
491 static void _gmpc_browsers_metadata_history_show_list_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
492 static Block26Data* block26_data_ref (Block26Data* _data26_);
493 static void block26_data_unref (Block26Data* _data26_);
494 static GtkHBox* gmpc_browsers_metadata_history_buttons (GmpcBrowsersMetadata* self);
495 static void _lambda35_ (GtkButton* source, GmpcBrowsersMetadata* self);
496 static void __lambda35__gtk_button_clicked (GtkButton* _sender, gpointer self);
497 static void _lambda36_ (GtkButton* source, Block26Data* _data26_);
498 static void __lambda36__gtk_button_clicked (GtkButton* _sender, gpointer self);
499 static void _lambda37_ (GtkButton* source, Block26Data* _data26_);
500 static void __lambda37__gtk_button_clicked (GtkButton* _sender, gpointer self);
501 static void _gmpc_browsers_metadata_history_next_gtk_button_clicked (GtkButton* _sender, gpointer self);
502 static void _gmpc_browsers_metadata_history_show_list_gtk_button_clicked (GtkButton* _sender, gpointer self);
503 static void _gmpc_browsers_metadata_history_previous_gtk_button_clicked (GtkButton* _sender, gpointer self);
504 static void gmpc_browsers_metadata_real_set_enabled (GmpcPluginBase* base, gboolean state);
505 static GObject * gmpc_browsers_metadata_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
506 static void _gmpc_browsers_metadata_con_changed_gmpc_connection_connection_changed (GmpcConnection* _sender, MpdObj* mi, gint connect, gpointer self);
507 static void _gmpc_browsers_metadata_status_changed_gmpc_connection_status_changed (GmpcConnection* _sender, MpdObj* mi, ChangedStatusType what, gpointer self);
508 static void gmpc_browsers_metadata_finalize (GObject* obj);
509 
510 static const gint GMPC_BROWSERS_METADATA_version[3] = {0, 0, 0};
511 
512 /**
513      * History
514      */
gmpc_browsers_metadata_hitem_type_get_type(void)515 static GType gmpc_browsers_metadata_hitem_type_get_type (void) {
516 	static volatile gsize gmpc_browsers_metadata_hitem_type_type_id__volatile = 0;
517 	if (g_once_init_enter (&gmpc_browsers_metadata_hitem_type_type_id__volatile)) {
518 		static const GEnumValue values[] = {{GMPC_BROWSERS_METADATA_HITEM_TYPE_BASE, "GMPC_BROWSERS_METADATA_HITEM_TYPE_BASE", "base"}, {GMPC_BROWSERS_METADATA_HITEM_TYPE_ARTIST, "GMPC_BROWSERS_METADATA_HITEM_TYPE_ARTIST", "artist"}, {GMPC_BROWSERS_METADATA_HITEM_TYPE_ALBUM, "GMPC_BROWSERS_METADATA_HITEM_TYPE_ALBUM", "album"}, {GMPC_BROWSERS_METADATA_HITEM_TYPE_SONG, "GMPC_BROWSERS_METADATA_HITEM_TYPE_SONG", "song"}, {0, NULL, NULL}};
519 		GType gmpc_browsers_metadata_hitem_type_type_id;
520 		gmpc_browsers_metadata_hitem_type_type_id = g_enum_register_static ("GmpcBrowsersMetadataHitemType", values);
521 		g_once_init_leave (&gmpc_browsers_metadata_hitem_type_type_id__volatile, gmpc_browsers_metadata_hitem_type_type_id);
522 	}
523 	return gmpc_browsers_metadata_hitem_type_type_id__volatile;
524 }
525 
526 
_gmpc_browsers_metadata_hitem_free0_(gpointer var)527 static void _gmpc_browsers_metadata_hitem_free0_ (gpointer var) {
528 	(var == NULL) ? NULL : (var = (gmpc_browsers_metadata_hitem_free (var), NULL));
529 }
530 
531 
_g_list_free__gmpc_browsers_metadata_hitem_free0_(GList * self)532 static void _g_list_free__gmpc_browsers_metadata_hitem_free0_ (GList* self) {
533 	g_list_foreach (self, (GFunc) _gmpc_browsers_metadata_hitem_free0_, NULL);
534 	g_list_free (self);
535 }
536 
537 
gmpc_browsers_metadata_show_metadata_search(GmpcBrowsersMetadata * self)538 static void gmpc_browsers_metadata_show_metadata_search (GmpcBrowsersMetadata* self) {
539 	g_return_if_fail (self != NULL);
540 	gmpc_browsers_metadata_select_browser (self, NULL);
541 }
542 
543 
gmpc_browsers_metadata_real_get_version(GmpcPluginBase * base,int * result_length1)544 static gint* gmpc_browsers_metadata_real_get_version (GmpcPluginBase* base, int* result_length1) {
545 	GmpcBrowsersMetadata * self;
546 	gint* result = NULL;
547 	gint* _tmp0_;
548 	self = (GmpcBrowsersMetadata*) base;
549 	_tmp0_ = GMPC_BROWSERS_METADATA_version;
550 	*result_length1 = G_N_ELEMENTS (GMPC_BROWSERS_METADATA_version);
551 	result = _tmp0_;
552 	return result;
553 }
554 
555 
gmpc_browsers_metadata_real_get_name(GmpcPluginBase * base)556 static const gchar* gmpc_browsers_metadata_real_get_name (GmpcPluginBase* base) {
557 	GmpcBrowsersMetadata * self;
558 	const gchar* result = NULL;
559 	self = (GmpcBrowsersMetadata*) base;
560 	result = "Metadata Browser";
561 	return result;
562 }
563 
564 
gmpc_browsers_metadata_real_save_yourself(GmpcPluginBase * base)565 static void gmpc_browsers_metadata_real_save_yourself (GmpcPluginBase* base) {
566 	GmpcBrowsersMetadata * self;
567 	self = (GmpcBrowsersMetadata*) base;
568 	if (self->priv->paned != NULL) {
569 		gint _tmp0_;
570 		gint pos;
571 		const gchar* _tmp1_ = NULL;
572 		_tmp0_ = gtk_paned_get_position (self->priv->paned);
573 		pos = _tmp0_;
574 		_tmp1_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
575 		cfg_set_single_value_as_int (config, _tmp1_, "pane-pos", pos);
576 	}
577 	if (self->priv->model_artist != NULL) {
578 		gmpc_mpddata_model_set_mpd_data (self->priv->model_artist, NULL);
579 	}
580 	if (self->priv->model_albums != NULL) {
581 		gmpc_mpddata_model_set_mpd_data (self->priv->model_albums, NULL);
582 	}
583 	if (self->priv->rref != NULL) {
584 		GtkTreePath* _tmp2_ = NULL;
585 		GtkTreePath* path;
586 		_tmp2_ = gtk_tree_row_reference_get_path (self->priv->rref);
587 		path = _tmp2_;
588 		if (path != NULL) {
589 			gint* _tmp3_ = NULL;
590 			gint* indices;
591 			gint indices_length1;
592 			gint _indices_size_;
593 			const gchar* _tmp4_ = NULL;
594 			_tmp3_ = gtk_tree_path_get_indices (path);
595 			indices = _tmp3_;
596 			indices_length1 = -1;
597 			_indices_size_ = -1;
598 			_tmp4_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
599 			cfg_set_single_value_as_int (config, _tmp4_, "position", indices[0]);
600 		}
601 		_gtk_tree_path_free0 (path);
602 	}
603 }
604 
605 
606 /**
607      * Makes gmpc jump to the metadata browser
608      */
gmpc_browsers_metadata_select_metadata_browser(GmpcBrowsersMetadata * self,GtkWidget * widget)609 static void gmpc_browsers_metadata_select_metadata_browser (GmpcBrowsersMetadata* self, GtkWidget* widget) {
610 	g_return_if_fail (self != NULL);
611 	g_return_if_fail (widget != NULL);
612 	gmpc_browsers_metadata_select_browser (self, NULL);
613 }
614 
615 
616 /**
617      * Makes gmpc jump to the metadata browser
618      * and search
619      */
gmpc_browsers_metadata_select_metadata_browser_search(GmpcBrowsersMetadata * self,GtkWidget * widget)620 static void gmpc_browsers_metadata_select_metadata_browser_search (GmpcBrowsersMetadata* self, GtkWidget* widget) {
621 	g_return_if_fail (self != NULL);
622 	g_return_if_fail (widget != NULL);
623 	gmpc_browsers_metadata_select_browser (self, NULL);
624 	gmpc_browsers_metadata_set_base (self);
625 }
626 
627 
628 /**
629      * Gmpc.Plugin.BrowserIface.add_go_menu
630      */
_gmpc_browsers_metadata_select_metadata_browser_gtk_menu_item_activate(GtkMenuItem * _sender,gpointer self)631 static void _gmpc_browsers_metadata_select_metadata_browser_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
632 	gmpc_browsers_metadata_select_metadata_browser (self, _sender);
633 }
634 
635 
_gmpc_browsers_metadata_select_metadata_browser_search_gtk_menu_item_activate(GtkMenuItem * _sender,gpointer self)636 static void _gmpc_browsers_metadata_select_metadata_browser_search_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
637 	gmpc_browsers_metadata_select_metadata_browser_search (self, _sender);
638 }
639 
640 
gmpc_browsers_metadata_real_browser_add_go_menu(GmpcPluginBrowserIface * base,GtkMenu * menu)641 static gint gmpc_browsers_metadata_real_browser_add_go_menu (GmpcPluginBrowserIface* base, GtkMenu* menu) {
642 	GmpcBrowsersMetadata * self;
643 	gint result = 0;
644 	gboolean _tmp0_;
645 	self = (GmpcBrowsersMetadata*) base;
646 	g_return_val_if_fail (menu != NULL, 0);
647 	_tmp0_ = gmpc_plugin_base_get_enabled ((GmpcPluginBase*) self);
648 	if (_tmp0_) {
649 		const gchar* _tmp1_ = NULL;
650 		const gchar* _tmp2_ = NULL;
651 		GtkImageMenuItem* _tmp3_ = NULL;
652 		GtkImageMenuItem* item;
653 		GtkImage* _tmp4_ = NULL;
654 		GtkImage* _tmp5_;
655 		GtkAccelGroup* _tmp6_ = NULL;
656 		const gchar* _tmp7_ = NULL;
657 		GtkImageMenuItem* _tmp8_ = NULL;
658 		GtkImage* _tmp9_ = NULL;
659 		GtkImage* _tmp10_;
660 		GtkAccelGroup* _tmp11_ = NULL;
661 		_tmp1_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
662 		_tmp2_ = _ (_tmp1_);
663 		_tmp3_ = (GtkImageMenuItem*) gtk_image_menu_item_new_with_mnemonic (_tmp2_);
664 		item = g_object_ref_sink (_tmp3_);
665 		_tmp4_ = (GtkImage*) gtk_image_new_from_icon_name ("gmpc-metabrowser", GTK_ICON_SIZE_MENU);
666 		_tmp5_ = g_object_ref_sink (_tmp4_);
667 		gtk_image_menu_item_set_image (item, (GtkWidget*) _tmp5_);
668 		_g_object_unref0 (_tmp5_);
669 		g_signal_connect_object ((GtkMenuItem*) item, "activate", (GCallback) _gmpc_browsers_metadata_select_metadata_browser_gtk_menu_item_activate, self, 0);
670 		_tmp6_ = gtk_menu_get_accel_group (menu);
671 		gtk_widget_add_accelerator ((GtkWidget*) item, "activate", _tmp6_, (guint) 0xffc1, 0, GTK_ACCEL_VISIBLE);
672 		gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) item));
673 		_tmp7_ = _ ("Search metadata");
674 		_tmp8_ = (GtkImageMenuItem*) gtk_image_menu_item_new_with_mnemonic (_tmp7_);
675 		_g_object_unref0 (item);
676 		item = g_object_ref_sink (_tmp8_);
677 		_tmp9_ = (GtkImage*) gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU);
678 		_tmp10_ = g_object_ref_sink (_tmp9_);
679 		gtk_image_menu_item_set_image (item, (GtkWidget*) _tmp10_);
680 		_g_object_unref0 (_tmp10_);
681 		g_signal_connect_object ((GtkMenuItem*) item, "activate", (GCallback) _gmpc_browsers_metadata_select_metadata_browser_search_gtk_menu_item_activate, self, 0);
682 		_tmp11_ = gtk_menu_get_accel_group (menu);
683 		gtk_widget_add_accelerator ((GtkWidget*) item, "activate", _tmp11_, (guint) 0x04d, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
684 		gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) item));
685 		result = 2;
686 		_g_object_unref0 (item);
687 		return result;
688 	}
689 	result = 0;
690 	return result;
691 }
692 
693 
694 /**
695      * This builds the browser
696      */
gmpc_browsers_metadata_browser_bg_style_changed(GmpcBrowsersMetadata * self,GtkWidget * bg,GtkStyle * style)697 static void gmpc_browsers_metadata_browser_bg_style_changed (GmpcBrowsersMetadata* self, GtkWidget* bg, GtkStyle* style) {
698 	GtkStyle* _tmp0_ = NULL;
699 	GdkColor _tmp1_;
700 	g_return_if_fail (self != NULL);
701 	g_return_if_fail (bg != NULL);
702 	_tmp0_ = gtk_widget_get_style ((GtkWidget*) self->priv->metadata_sw);
703 	_tmp1_ = _tmp0_->base[GTK_STATE_NORMAL];
704 	gtk_widget_modify_bg ((GtkWidget*) self->priv->metadata_box, GTK_STATE_NORMAL, &_tmp1_);
705 	g_debug ("gmpc-metadata-browser2.vala:184: Change style signal");
706 	if (self->priv->theme_colors) {
707 		GtkStyle* _tmp2_ = NULL;
708 		GdkColor _tmp3_;
709 		gchar* _tmp4_ = NULL;
710 		GtkStyle* _tmp5_ = NULL;
711 		GdkColor _tmp6_;
712 		gchar* _tmp7_ = NULL;
713 		_tmp2_ = gtk_widget_get_style ((GtkWidget*) self->priv->paned);
714 		_tmp3_ = _tmp2_->text[GTK_STATE_PRELIGHT];
715 		_tmp4_ = gdk_color_to_string (&_tmp3_);
716 		_g_free0 (self->priv->title_color);
717 		self->priv->title_color = _tmp4_;
718 		_tmp5_ = gtk_widget_get_style ((GtkWidget*) self->priv->paned);
719 		_tmp6_ = _tmp5_->text[GTK_STATE_PRELIGHT];
720 		_tmp7_ = gdk_color_to_string (&_tmp6_);
721 		_g_free0 (self->priv->item_color);
722 		self->priv->item_color = _tmp7_;
723 	}
724 	gmpc_browsers_metadata_change_color_style (self, (GtkWidget*) self->priv->metadata_sw);
725 }
726 
727 
_g_object_ref0(gpointer self)728 static gpointer _g_object_ref0 (gpointer self) {
729 	return self ? g_object_ref (self) : NULL;
730 }
731 
732 
gmpc_browsers_metadata_browser_button_press_event(GmpcBrowsersMetadata * self,GtkWidget * treel,GdkEventButton * event)733 static gboolean gmpc_browsers_metadata_browser_button_press_event (GmpcBrowsersMetadata* self, GtkWidget* treel, GdkEventButton* event) {
734 	gboolean result = FALSE;
735 	GtkWidget* _tmp0_;
736 	GtkTreeView* _tmp1_;
737 	GtkTreeView* tree;
738 	GtkTreePath* path;
739 	GtkTreePath* _tmp2_ = NULL;
740 	gboolean _tmp3_;
741 	g_return_val_if_fail (self != NULL, FALSE);
742 	g_return_val_if_fail (treel != NULL, FALSE);
743 	_tmp0_ = treel;
744 	_tmp1_ = _g_object_ref0 (GTK_IS_TREE_VIEW (_tmp0_) ? ((GtkTreeView*) _tmp0_) : NULL);
745 	tree = _tmp1_;
746 	path = NULL;
747 	if ((*event).button != 1) {
748 		result = FALSE;
749 		_gtk_tree_path_free0 (path);
750 		_g_object_unref0 (tree);
751 		return result;
752 	}
753 	_tmp3_ = gtk_tree_view_get_path_at_pos (tree, (gint) (*event).x, (gint) (*event).y, &_tmp2_, NULL, NULL, NULL);
754 	_gtk_tree_path_free0 (path);
755 	path = _tmp2_;
756 	if (_tmp3_) {
757 		GtkTreeSelection* _tmp4_ = NULL;
758 		gboolean _tmp5_;
759 		_tmp4_ = gtk_tree_view_get_selection (tree);
760 		_tmp5_ = gtk_tree_selection_path_is_selected (_tmp4_, path);
761 		if (_tmp5_) {
762 			GtkTreeSelection* _tmp6_ = NULL;
763 			_tmp6_ = gtk_tree_view_get_selection (tree);
764 			gtk_tree_selection_unselect_path (_tmp6_, path);
765 			result = TRUE;
766 			_gtk_tree_path_free0 (path);
767 			_g_object_unref0 (tree);
768 			return result;
769 		}
770 	}
771 	result = FALSE;
772 	_gtk_tree_path_free0 (path);
773 	_g_object_unref0 (tree);
774 	return result;
775 }
776 
777 
778 /**
779      * Artist tree view functions */
gmpc_browsers_metadata_browser_artist_entry_changed(GmpcBrowsersMetadata * self,GtkEditable * entry)780 static void gmpc_browsers_metadata_browser_artist_entry_changed (GmpcBrowsersMetadata* self, GtkEditable* entry) {
781 	GtkEditable* _tmp0_;
782 	const gchar* _tmp1_ = NULL;
783 	gchar* _tmp2_;
784 	gchar* text;
785 	gint _tmp3_;
786 	g_return_if_fail (self != NULL);
787 	g_return_if_fail (entry != NULL);
788 	_tmp0_ = entry;
789 	_tmp1_ = gtk_entry_get_text (GTK_IS_ENTRY (_tmp0_) ? ((GtkEntry*) _tmp0_) : NULL);
790 	_tmp2_ = g_strdup (_tmp1_);
791 	text = _tmp2_;
792 	_tmp3_ = strlen (text);
793 	if (_tmp3_ > 0) {
794 		GtkEditable* _tmp4_;
795 		GtkEditable* _tmp5_;
796 		_tmp4_ = entry;
797 		gtk_widget_show (GTK_IS_WIDGET (_tmp4_) ? ((GtkWidget*) _tmp4_) : NULL);
798 		_tmp5_ = entry;
799 		gtk_widget_grab_focus (GTK_IS_WIDGET (_tmp5_) ? ((GtkWidget*) _tmp5_) : NULL);
800 	} else {
801 		GtkEditable* _tmp6_;
802 		_tmp6_ = entry;
803 		gtk_widget_hide (GTK_IS_WIDGET (_tmp6_) ? ((GtkWidget*) _tmp6_) : NULL);
804 		gtk_widget_grab_focus ((GtkWidget*) self->priv->tree_artist);
805 	}
806 	gtk_tree_model_filter_refilter (self->priv->model_filter_artist);
807 	_g_free0 (text);
808 }
809 
810 
block6_data_ref(Block6Data * _data6_)811 static Block6Data* block6_data_ref (Block6Data* _data6_) {
812 	g_atomic_int_inc (&_data6_->_ref_count_);
813 	return _data6_;
814 }
815 
816 
block6_data_unref(Block6Data * _data6_)817 static void block6_data_unref (Block6Data* _data6_) {
818 	if (g_atomic_int_dec_and_test (&_data6_->_ref_count_)) {
819 		_g_object_unref0 (_data6_->self);
820 		_g_object_unref0 (_data6_->tree);
821 		g_slice_free (Block6Data, _data6_);
822 	}
823 }
824 
825 
_lambda75_(GtkMenuItem * source,Block6Data * _data6_)826 static void _lambda75_ (GtkMenuItem* source, Block6Data* _data6_) {
827 	GmpcBrowsersMetadata * self;
828 	GtkTreeModel* model = NULL;
829 	GtkTreeIter iter = {0};
830 	GtkTreeSelection* _tmp0_ = NULL;
831 	GtkTreeModel* _tmp1_ = NULL;
832 	GtkTreeIter _tmp2_ = {0};
833 	gboolean _tmp3_;
834 	GtkTreeModel* _tmp4_;
835 	self = _data6_->self;
836 	g_return_if_fail (source != NULL);
837 	_tmp0_ = gtk_tree_view_get_selection (_data6_->tree);
838 	_tmp3_ = gtk_tree_selection_get_selected (_tmp0_, &_tmp1_, &_tmp2_);
839 	_g_object_unref0 (model);
840 	_tmp4_ = _g_object_ref0 (_tmp1_);
841 	model = _tmp4_;
842 	iter = _tmp2_;
843 	if (_tmp3_) {
844 		gchar* artist = NULL;
845 		gtk_tree_model_get (model, &iter, 7, &artist, -1);
846 		if (artist != NULL) {
847 			MpdData* _tmp5_ = NULL;
848 			MpdData* data;
849 			mpd_database_search_start (connection, TRUE);
850 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
851 			_tmp5_ = mpd_database_search_commit (connection);
852 			data = _tmp5_;
853 			data = misc_sort_mpddata_by_album_disc_track (data);
854 			if (data != NULL) {
855 				data = mpd_data_get_first (data);
856 				{
857 					gboolean _tmp6_;
858 					_tmp6_ = TRUE;
859 					while (TRUE) {
860 						if (!_tmp6_) {
861 							if (!(data != NULL)) {
862 								break;
863 							}
864 						}
865 						_tmp6_ = FALSE;
866 						mpd_playlist_queue_add (connection, data->song->file);
867 						data = mpd_data_get_next (data);
868 					}
869 				}
870 				mpd_playlist_queue_commit (connection);
871 			}
872 			_mpd_data_free0 (data);
873 		}
874 		_g_free0 (artist);
875 	}
876 	_g_object_unref0 (model);
877 }
878 
879 
__lambda75__gtk_menu_item_activate(GtkMenuItem * _sender,gpointer self)880 static void __lambda75__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
881 	_lambda75_ (_sender, self);
882 }
883 
884 
mpd_play_queue_add_artist(MpdObj * server,const gchar * artist)885 static void mpd_play_queue_add_artist (MpdObj* server, const gchar* artist) {
886 	MpdData* _tmp0_ = NULL;
887 	MpdData* data;
888 	g_return_if_fail (server != NULL);
889 	g_return_if_fail (artist != NULL);
890 	mpd_database_search_start (server, TRUE);
891 	mpd_database_search_add_constraint (server, MPD_TAG_ITEM_ARTIST, artist);
892 	_tmp0_ = mpd_database_search_commit (server);
893 	data = _tmp0_;
894 	if (data != NULL) {
895 		data = misc_sort_mpddata_by_album_disc_track (data);
896 		while (TRUE) {
897 			if (!(data != NULL)) {
898 				break;
899 			}
900 			mpd_playlist_queue_add (server, data->song->file);
901 			data = mpd_data_get_next (data);
902 		}
903 		mpd_playlist_queue_commit (server);
904 	}
905 	_mpd_data_free0 (data);
906 }
907 
908 
_lambda76_(GtkMenuItem * source,Block6Data * _data6_)909 static void _lambda76_ (GtkMenuItem* source, Block6Data* _data6_) {
910 	GmpcBrowsersMetadata * self;
911 	GtkTreeModel* model = NULL;
912 	GtkTreeIter iter = {0};
913 	GtkTreeSelection* _tmp0_ = NULL;
914 	GtkTreeModel* _tmp1_ = NULL;
915 	GtkTreeIter _tmp2_ = {0};
916 	gboolean _tmp3_;
917 	GtkTreeModel* _tmp4_;
918 	self = _data6_->self;
919 	g_return_if_fail (source != NULL);
920 	_tmp0_ = gtk_tree_view_get_selection (_data6_->tree);
921 	_tmp3_ = gtk_tree_selection_get_selected (_tmp0_, &_tmp1_, &_tmp2_);
922 	_g_object_unref0 (model);
923 	_tmp4_ = _g_object_ref0 (_tmp1_);
924 	model = _tmp4_;
925 	iter = _tmp2_;
926 	if (_tmp3_) {
927 		gchar* artist = NULL;
928 		gtk_tree_model_get (model, &iter, 7, &artist, -1);
929 		if (artist != NULL) {
930 			mpd_playlist_clear (connection);
931 			mpd_play_queue_add_artist (connection, artist);
932 			mpd_player_play (connection);
933 		}
934 		_g_free0 (artist);
935 	}
936 	_g_object_unref0 (model);
937 }
938 
939 
__lambda76__gtk_menu_item_activate(GtkMenuItem * _sender,gpointer self)940 static void __lambda76__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
941 	_lambda76_ (_sender, self);
942 }
943 
944 
gmpc_browsers_metadata_artist_browser_button_release_event(GmpcBrowsersMetadata * self,GtkWidget * treel,GdkEventButton * event)945 static gboolean gmpc_browsers_metadata_artist_browser_button_release_event (GmpcBrowsersMetadata* self, GtkWidget* treel, GdkEventButton* event) {
946 	gboolean result = FALSE;
947 	Block6Data* _data6_;
948 	GtkWidget* _tmp0_;
949 	GtkTreeView* _tmp1_;
950 	g_return_val_if_fail (self != NULL, FALSE);
951 	g_return_val_if_fail (treel != NULL, FALSE);
952 	_data6_ = g_slice_new0 (Block6Data);
953 	_data6_->_ref_count_ = 1;
954 	_data6_->self = g_object_ref (self);
955 	_tmp0_ = treel;
956 	_tmp1_ = _g_object_ref0 (GTK_IS_TREE_VIEW (_tmp0_) ? ((GtkTreeView*) _tmp0_) : NULL);
957 	_data6_->tree = _tmp1_;
958 	if ((*event).button == 3) {
959 		GtkTreeSelection* _tmp2_ = NULL;
960 		gint _tmp3_;
961 		_tmp2_ = gtk_tree_view_get_selection (_data6_->tree);
962 		_tmp3_ = gtk_tree_selection_count_selected_rows (_tmp2_);
963 		if (_tmp3_ > 0) {
964 			GtkMenu* _tmp4_ = NULL;
965 			GtkMenu* menu;
966 			GtkImageMenuItem* _tmp5_ = NULL;
967 			GtkImageMenuItem* item;
968 			GtkImageMenuItem* _tmp6_ = NULL;
969 			_tmp4_ = (GtkMenu*) gtk_menu_new ();
970 			menu = g_object_ref_sink (_tmp4_);
971 			_tmp5_ = (GtkImageMenuItem*) gtk_image_menu_item_new_from_stock ("gtk-add", NULL);
972 			item = g_object_ref_sink (_tmp5_);
973 			g_signal_connect_data ((GtkMenuItem*) item, "activate", (GCallback) __lambda75__gtk_menu_item_activate, block6_data_ref (_data6_), (GClosureNotify) block6_data_unref, 0);
974 			gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) item));
975 			_tmp6_ = (GtkImageMenuItem*) gtk_image_menu_item_new_from_stock ("gtk-media-play", NULL);
976 			_g_object_unref0 (item);
977 			item = g_object_ref_sink (_tmp6_);
978 			g_signal_connect_data ((GtkMenuItem*) item, "activate", (GCallback) __lambda76__gtk_menu_item_activate, block6_data_ref (_data6_), (GClosureNotify) block6_data_unref, 0);
979 			gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) item));
980 			gtk_menu_popup (menu, NULL, NULL, NULL, NULL, (*event).button, (*event).time);
981 			gtk_widget_show_all ((GtkWidget*) menu);
982 			result = TRUE;
983 			_g_object_unref0 (item);
984 			_g_object_unref0 (menu);
985 			block6_data_unref (_data6_);
986 			_data6_ = NULL;
987 			return result;
988 		}
989 	}
990 	result = FALSE;
991 	block6_data_unref (_data6_);
992 	_data6_ = NULL;
993 	return result;
994 }
995 
996 
string_get(const gchar * self,glong index)997 static gchar string_get (const gchar* self, glong index) {
998 	gchar result = '\0';
999 	g_return_val_if_fail (self != NULL, '\0');
1000 	result = ((gchar*) self)[index];
1001 	return result;
1002 }
1003 
1004 
string_index_of(const gchar * self,const gchar * needle,gint start_index)1005 static gint string_index_of (const gchar* self, const gchar* needle, gint start_index) {
1006 	gint result = 0;
1007 	gchar* _tmp0_ = NULL;
1008 	gchar* _result_;
1009 	g_return_val_if_fail (self != NULL, 0);
1010 	g_return_val_if_fail (needle != NULL, 0);
1011 	_tmp0_ = strstr (((gchar*) self) + start_index, (gchar*) needle);
1012 	_result_ = _tmp0_;
1013 	if (_result_ != NULL) {
1014 		result = (gint) (_result_ - ((gchar*) self));
1015 		return result;
1016 	} else {
1017 		result = -1;
1018 		return result;
1019 	}
1020 }
1021 
1022 
gmpc_browsers_metadata_visible_func_artist(GmpcBrowsersMetadata * self,GtkTreeModel * model,GtkTreeIter * iter)1023 static gboolean gmpc_browsers_metadata_visible_func_artist (GmpcBrowsersMetadata* self, GtkTreeModel* model, GtkTreeIter* iter) {
1024 	gboolean result = FALSE;
1025 	const gchar* _tmp0_ = NULL;
1026 	gchar* _tmp1_;
1027 	gchar* text;
1028 	gchar* str;
1029 	gboolean visible;
1030 	gchar _tmp2_;
1031 	gboolean _tmp3_ = FALSE;
1032 	g_return_val_if_fail (self != NULL, FALSE);
1033 	g_return_val_if_fail (model != NULL, FALSE);
1034 	_tmp0_ = gtk_entry_get_text (self->priv->artist_filter_entry);
1035 	_tmp1_ = g_strdup (_tmp0_);
1036 	text = _tmp1_;
1037 	str = NULL;
1038 	visible = FALSE;
1039 	_tmp2_ = string_get (text, (glong) 0);
1040 	if (_tmp2_ == '\0') {
1041 		result = TRUE;
1042 		_g_free0 (str);
1043 		_g_free0 (text);
1044 		return result;
1045 	}
1046 	gtk_tree_model_get (model, iter, 7, &str, -1, -1);
1047 	if (str != NULL) {
1048 		gchar* _tmp4_ = NULL;
1049 		gchar* _tmp5_;
1050 		gchar* _tmp6_ = NULL;
1051 		gchar* _tmp7_;
1052 		gchar* _tmp8_ = NULL;
1053 		gchar* _tmp9_;
1054 		gchar* _tmp10_ = NULL;
1055 		gchar* _tmp11_;
1056 		gint _tmp12_;
1057 		_tmp4_ = g_utf8_casefold (str, (gssize) (-1));
1058 		_tmp5_ = _tmp4_;
1059 		_tmp6_ = g_utf8_normalize (_tmp5_, (gssize) (-1), G_NORMALIZE_DEFAULT);
1060 		_tmp7_ = _tmp6_;
1061 		_tmp8_ = g_utf8_casefold (text, (gssize) (-1));
1062 		_tmp9_ = _tmp8_;
1063 		_tmp10_ = g_utf8_normalize (_tmp9_, (gssize) (-1), G_NORMALIZE_DEFAULT);
1064 		_tmp11_ = _tmp10_;
1065 		_tmp12_ = string_index_of (_tmp7_, _tmp11_, 0);
1066 		_tmp3_ = _tmp12_ >= 0;
1067 		_g_free0 (_tmp11_);
1068 		_g_free0 (_tmp9_);
1069 		_g_free0 (_tmp7_);
1070 		_g_free0 (_tmp5_);
1071 	} else {
1072 		_tmp3_ = FALSE;
1073 	}
1074 	if (_tmp3_) {
1075 		visible = TRUE;
1076 	}
1077 	result = visible;
1078 	_g_free0 (str);
1079 	_g_free0 (text);
1080 	return result;
1081 }
1082 
1083 
gmpc_browsers_metadata_browser_artist_key_press_event(GmpcBrowsersMetadata * self,GtkWidget * widget,GdkEventKey * event)1084 static gboolean gmpc_browsers_metadata_browser_artist_key_press_event (GmpcBrowsersMetadata* self, GtkWidget* widget, GdkEventKey* event) {
1085 	gboolean result = FALSE;
1086 	guint32 _tmp0_;
1087 	gunichar uc;
1088 	g_return_val_if_fail (self != NULL, FALSE);
1089 	g_return_val_if_fail (widget != NULL, FALSE);
1090 	_tmp0_ = gdk_keyval_to_unicode ((*event).keyval);
1091 	uc = (gunichar) _tmp0_;
1092 	if (uc > 0) {
1093 		gchar* _tmp1_;
1094 		gchar* outbuf;
1095 		gint _tmp2_;
1096 		gint i;
1097 		_tmp1_ = g_strdup ("       ");
1098 		outbuf = _tmp1_;
1099 		_tmp2_ = g_unichar_to_utf8 (uc, outbuf);
1100 		i = _tmp2_;
1101 		((gchar*) outbuf)[i] = '\0';
1102 		gtk_entry_set_text (self->priv->artist_filter_entry, outbuf);
1103 		gtk_widget_grab_focus ((GtkWidget*) self->priv->artist_filter_entry);
1104 		gtk_editable_set_position ((GtkEditable*) self->priv->artist_filter_entry, 1);
1105 		result = TRUE;
1106 		_g_free0 (outbuf);
1107 		return result;
1108 	}
1109 	result = FALSE;
1110 	return result;
1111 }
1112 
1113 
1114 /**
1115       * Album tree view
1116       */
gmpc_browsers_metadata_album_add_clicked(GmpcBrowsersMetadata * self,GtkWidget * item)1117 static void gmpc_browsers_metadata_album_add_clicked (GmpcBrowsersMetadata* self, GtkWidget* item) {
1118 	gchar* _tmp0_ = NULL;
1119 	gchar* artist;
1120 	g_return_if_fail (self != NULL);
1121 	g_return_if_fail (item != NULL);
1122 	_tmp0_ = gmpc_browsers_metadata_browser_get_selected_artist (self);
1123 	artist = _tmp0_;
1124 	if (artist != NULL) {
1125 		gchar* albumartist;
1126 		gchar* _tmp1_ = NULL;
1127 		gchar* album;
1128 		gboolean _tmp2_ = FALSE;
1129 		gboolean _tmp7_ = FALSE;
1130 		MpdData* _tmp9_ = NULL;
1131 		MpdData* data;
1132 		albumartist = NULL;
1133 		_tmp1_ = gmpc_browsers_metadata_browser_get_selected_album (self);
1134 		album = _tmp1_;
1135 		if (album != NULL) {
1136 			gboolean _tmp3_;
1137 			_tmp3_ = mpd_server_tag_supported (connection, MPD_TAG_ITEM_ALBUM_ARTIST);
1138 			_tmp2_ = _tmp3_;
1139 		} else {
1140 			_tmp2_ = FALSE;
1141 		}
1142 		if (_tmp2_) {
1143 			MpdData* _tmp4_ = NULL;
1144 			MpdData* ydata;
1145 			mpd_database_search_field_start (connection, MPD_TAG_ITEM_ALBUM_ARTIST);
1146 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM, album);
1147 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
1148 			_tmp4_ = mpd_database_search_commit (connection);
1149 			ydata = _tmp4_;
1150 			if (ydata != NULL) {
1151 				gint _tmp5_;
1152 				_tmp5_ = strlen (ydata->tag);
1153 				if (_tmp5_ > 0) {
1154 					gchar* _tmp6_;
1155 					_tmp6_ = g_strdup (ydata->tag);
1156 					_g_free0 (albumartist);
1157 					albumartist = _tmp6_;
1158 				}
1159 			}
1160 			_mpd_data_free0 (ydata);
1161 		}
1162 		mpd_database_search_start (connection, TRUE);
1163 		if (albumartist != NULL) {
1164 			gint _tmp8_;
1165 			_tmp8_ = strlen (albumartist);
1166 			_tmp7_ = _tmp8_ > 0;
1167 		} else {
1168 			_tmp7_ = FALSE;
1169 		}
1170 		if (_tmp7_) {
1171 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM_ARTIST, albumartist);
1172 		} else {
1173 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
1174 		}
1175 		if (album != NULL) {
1176 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM, album);
1177 		}
1178 		_tmp9_ = mpd_database_search_commit (connection);
1179 		data = _tmp9_;
1180 		data = misc_sort_mpddata_by_album_disc_track (data);
1181 		if (data != NULL) {
1182 			{
1183 				gboolean _tmp10_;
1184 				_tmp10_ = TRUE;
1185 				while (TRUE) {
1186 					if (!_tmp10_) {
1187 						if (!(data != NULL)) {
1188 							break;
1189 						}
1190 					}
1191 					_tmp10_ = FALSE;
1192 					mpd_playlist_queue_add (connection, data->song->file);
1193 					data = mpd_data_get_next (data);
1194 				}
1195 			}
1196 			mpd_playlist_queue_commit (connection);
1197 		}
1198 		_mpd_data_free0 (data);
1199 		_g_free0 (album);
1200 		_g_free0 (albumartist);
1201 	}
1202 	_g_free0 (artist);
1203 }
1204 
1205 
gmpc_browsers_metadata_album_replace_clicked(GmpcBrowsersMetadata * self,GtkWidget * item)1206 static void gmpc_browsers_metadata_album_replace_clicked (GmpcBrowsersMetadata* self, GtkWidget* item) {
1207 	g_return_if_fail (self != NULL);
1208 	g_return_if_fail (item != NULL);
1209 	mpd_playlist_clear (connection);
1210 	gmpc_browsers_metadata_album_add_clicked (self, item);
1211 	mpd_player_play (connection);
1212 }
1213 
1214 
_gmpc_browsers_metadata_album_add_clicked_gtk_menu_item_activate(GtkMenuItem * _sender,gpointer self)1215 static void _gmpc_browsers_metadata_album_add_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
1216 	gmpc_browsers_metadata_album_add_clicked (self, _sender);
1217 }
1218 
1219 
_gmpc_browsers_metadata_album_replace_clicked_gtk_menu_item_activate(GtkMenuItem * _sender,gpointer self)1220 static void _gmpc_browsers_metadata_album_replace_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
1221 	gmpc_browsers_metadata_album_replace_clicked (self, _sender);
1222 }
1223 
1224 
gmpc_browsers_metadata_album_browser_button_release_event(GmpcBrowsersMetadata * self,GtkWidget * tree,GdkEventButton * event)1225 static gboolean gmpc_browsers_metadata_album_browser_button_release_event (GmpcBrowsersMetadata* self, GtkWidget* tree, GdkEventButton* event) {
1226 	gboolean result = FALSE;
1227 	g_return_val_if_fail (self != NULL, FALSE);
1228 	g_return_val_if_fail (tree != NULL, FALSE);
1229 	if ((*event).button == 3) {
1230 		GtkWidget* _tmp0_;
1231 		GtkTreeSelection* _tmp1_ = NULL;
1232 		gint _tmp2_;
1233 		_tmp0_ = tree;
1234 		_tmp1_ = gtk_tree_view_get_selection (GTK_IS_TREE_VIEW (_tmp0_) ? ((GtkTreeView*) _tmp0_) : NULL);
1235 		_tmp2_ = gtk_tree_selection_count_selected_rows (_tmp1_);
1236 		if (_tmp2_ > 0) {
1237 			GtkMenu* _tmp3_ = NULL;
1238 			GtkMenu* menu;
1239 			GtkImageMenuItem* _tmp4_ = NULL;
1240 			GtkImageMenuItem* item;
1241 			GtkImageMenuItem* _tmp5_ = NULL;
1242 			_tmp3_ = (GtkMenu*) gtk_menu_new ();
1243 			menu = g_object_ref_sink (_tmp3_);
1244 			_tmp4_ = (GtkImageMenuItem*) gtk_image_menu_item_new_from_stock ("gtk-add", NULL);
1245 			item = g_object_ref_sink (_tmp4_);
1246 			g_signal_connect_object ((GtkMenuItem*) item, "activate", (GCallback) _gmpc_browsers_metadata_album_add_clicked_gtk_menu_item_activate, self, 0);
1247 			gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) item));
1248 			_tmp5_ = (GtkImageMenuItem*) gtk_image_menu_item_new_from_stock ("gtk-media-play", NULL);
1249 			_g_object_unref0 (item);
1250 			item = g_object_ref_sink (_tmp5_);
1251 			g_signal_connect_object ((GtkMenuItem*) item, "activate", (GCallback) _gmpc_browsers_metadata_album_replace_clicked_gtk_menu_item_activate, self, 0);
1252 			gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) item));
1253 			gtk_menu_popup (menu, NULL, NULL, NULL, NULL, (*event).button, (*event).time);
1254 			gtk_widget_show_all ((GtkWidget*) menu);
1255 			result = TRUE;
1256 			_g_object_unref0 (item);
1257 			_g_object_unref0 (menu);
1258 			return result;
1259 		}
1260 	}
1261 	result = FALSE;
1262 	return result;
1263 }
1264 
1265 
gmpc_browsers_metadata_visible_func_album(GmpcBrowsersMetadata * self,GtkTreeModel * model,GtkTreeIter * iter)1266 static gboolean gmpc_browsers_metadata_visible_func_album (GmpcBrowsersMetadata* self, GtkTreeModel* model, GtkTreeIter* iter) {
1267 	gboolean result = FALSE;
1268 	const gchar* _tmp0_ = NULL;
1269 	gchar* _tmp1_;
1270 	gchar* text;
1271 	gchar* str;
1272 	gboolean visible;
1273 	gchar _tmp2_;
1274 	gboolean _tmp3_ = FALSE;
1275 	g_return_val_if_fail (self != NULL, FALSE);
1276 	g_return_val_if_fail (model != NULL, FALSE);
1277 	_tmp0_ = gtk_entry_get_text (self->priv->album_filter_entry);
1278 	_tmp1_ = g_strdup (_tmp0_);
1279 	text = _tmp1_;
1280 	str = NULL;
1281 	visible = FALSE;
1282 	_tmp2_ = string_get (text, (glong) 0);
1283 	if (_tmp2_ == '\0') {
1284 		result = TRUE;
1285 		_g_free0 (str);
1286 		_g_free0 (text);
1287 		return result;
1288 	}
1289 	gtk_tree_model_get (model, iter, 6, &str, -1, -1);
1290 	if (str != NULL) {
1291 		gchar* _tmp4_ = NULL;
1292 		gchar* _tmp5_;
1293 		gchar* _tmp6_ = NULL;
1294 		gchar* _tmp7_;
1295 		gchar* _tmp8_ = NULL;
1296 		gchar* _tmp9_;
1297 		gchar* _tmp10_ = NULL;
1298 		gchar* _tmp11_;
1299 		gint _tmp12_;
1300 		_tmp4_ = g_utf8_casefold (str, (gssize) (-1));
1301 		_tmp5_ = _tmp4_;
1302 		_tmp6_ = g_utf8_normalize (_tmp5_, (gssize) (-1), G_NORMALIZE_DEFAULT);
1303 		_tmp7_ = _tmp6_;
1304 		_tmp8_ = g_utf8_casefold (text, (gssize) (-1));
1305 		_tmp9_ = _tmp8_;
1306 		_tmp10_ = g_utf8_normalize (_tmp9_, (gssize) (-1), G_NORMALIZE_DEFAULT);
1307 		_tmp11_ = _tmp10_;
1308 		_tmp12_ = string_index_of (_tmp7_, _tmp11_, 0);
1309 		_tmp3_ = _tmp12_ >= 0;
1310 		_g_free0 (_tmp11_);
1311 		_g_free0 (_tmp9_);
1312 		_g_free0 (_tmp7_);
1313 		_g_free0 (_tmp5_);
1314 	} else {
1315 		_tmp3_ = FALSE;
1316 	}
1317 	if (_tmp3_) {
1318 		visible = TRUE;
1319 	}
1320 	result = visible;
1321 	_g_free0 (str);
1322 	_g_free0 (text);
1323 	return result;
1324 }
1325 
1326 
gmpc_browsers_metadata_browser_album_key_press_event(GmpcBrowsersMetadata * self,GtkWidget * widget,GdkEventKey * event)1327 static gboolean gmpc_browsers_metadata_browser_album_key_press_event (GmpcBrowsersMetadata* self, GtkWidget* widget, GdkEventKey* event) {
1328 	gboolean result = FALSE;
1329 	guint32 _tmp0_;
1330 	gunichar uc;
1331 	g_return_val_if_fail (self != NULL, FALSE);
1332 	g_return_val_if_fail (widget != NULL, FALSE);
1333 	_tmp0_ = gdk_keyval_to_unicode ((*event).keyval);
1334 	uc = (gunichar) _tmp0_;
1335 	if (uc > 0) {
1336 		gchar* _tmp1_;
1337 		gchar* outbuf;
1338 		gint _tmp2_;
1339 		gint i;
1340 		_tmp1_ = g_strdup ("       ");
1341 		outbuf = _tmp1_;
1342 		_tmp2_ = g_unichar_to_utf8 (uc, outbuf);
1343 		i = _tmp2_;
1344 		((gchar*) outbuf)[i] = '\0';
1345 		gtk_entry_set_text (self->priv->album_filter_entry, outbuf);
1346 		gtk_widget_grab_focus ((GtkWidget*) self->priv->album_filter_entry);
1347 		gtk_editable_set_position ((GtkEditable*) self->priv->album_filter_entry, 1);
1348 		result = TRUE;
1349 		_g_free0 (outbuf);
1350 		return result;
1351 	}
1352 	result = FALSE;
1353 	return result;
1354 }
1355 
1356 
gmpc_browsers_metadata_browser_album_entry_changed(GmpcBrowsersMetadata * self,GtkEditable * pentry)1357 static void gmpc_browsers_metadata_browser_album_entry_changed (GmpcBrowsersMetadata* self, GtkEditable* pentry) {
1358 	GtkEditable* _tmp0_;
1359 	GtkEntry* _tmp1_;
1360 	GtkEntry* entry;
1361 	const gchar* _tmp2_ = NULL;
1362 	gchar* _tmp3_;
1363 	gchar* text;
1364 	gint _tmp4_;
1365 	g_return_if_fail (self != NULL);
1366 	g_return_if_fail (pentry != NULL);
1367 	_tmp0_ = pentry;
1368 	_tmp1_ = _g_object_ref0 (GTK_IS_ENTRY (_tmp0_) ? ((GtkEntry*) _tmp0_) : NULL);
1369 	entry = _tmp1_;
1370 	_tmp2_ = gtk_entry_get_text (entry);
1371 	_tmp3_ = g_strdup (_tmp2_);
1372 	text = _tmp3_;
1373 	_tmp4_ = strlen (text);
1374 	if (_tmp4_ > 0) {
1375 		gtk_widget_show ((GtkWidget*) entry);
1376 		gtk_widget_grab_focus ((GtkWidget*) entry);
1377 	} else {
1378 		gtk_widget_hide ((GtkWidget*) entry);
1379 		gtk_widget_grab_focus ((GtkWidget*) self->priv->tree_album);
1380 	}
1381 	gtk_tree_model_filter_refilter (self->priv->model_filter_album);
1382 	_g_free0 (text);
1383 	_g_object_unref0 (entry);
1384 }
1385 
1386 
1387 /**
1388       * Songs
1389       */
gmpc_browsers_metadata_song_add_clicked(GmpcBrowsersMetadata * self,GtkWidget * item)1390 static void gmpc_browsers_metadata_song_add_clicked (GmpcBrowsersMetadata* self, GtkWidget* item) {
1391 	mpd_Song* _tmp0_ = NULL;
1392 	mpd_Song* song;
1393 	g_return_if_fail (self != NULL);
1394 	g_return_if_fail (item != NULL);
1395 	_tmp0_ = gmpc_browsers_metadata_browser_get_selected_song (self);
1396 	song = _tmp0_;
1397 	if (song != NULL) {
1398 		mpd_playlist_add (connection, song->file);
1399 	}
1400 	_mpd_freeSong0 (song);
1401 }
1402 
1403 
gmpc_browsers_metadata_song_replace_clicked(GmpcBrowsersMetadata * self,GtkWidget * item)1404 static void gmpc_browsers_metadata_song_replace_clicked (GmpcBrowsersMetadata* self, GtkWidget* item) {
1405 	g_return_if_fail (self != NULL);
1406 	g_return_if_fail (item != NULL);
1407 	mpd_playlist_clear (connection);
1408 	gmpc_browsers_metadata_song_add_clicked (self, item);
1409 	mpd_player_play (connection);
1410 }
1411 
1412 
_gmpc_browsers_metadata_song_add_clicked_gtk_menu_item_activate(GtkMenuItem * _sender,gpointer self)1413 static void _gmpc_browsers_metadata_song_add_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
1414 	gmpc_browsers_metadata_song_add_clicked (self, _sender);
1415 }
1416 
1417 
_gmpc_browsers_metadata_song_replace_clicked_gtk_menu_item_activate(GtkMenuItem * _sender,gpointer self)1418 static void _gmpc_browsers_metadata_song_replace_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
1419 	gmpc_browsers_metadata_song_replace_clicked (self, _sender);
1420 }
1421 
1422 
gmpc_browsers_metadata_song_browser_button_release_event(GmpcBrowsersMetadata * self,GtkWidget * ptree,GdkEventButton * event)1423 static gboolean gmpc_browsers_metadata_song_browser_button_release_event (GmpcBrowsersMetadata* self, GtkWidget* ptree, GdkEventButton* event) {
1424 	gboolean result = FALSE;
1425 	GtkWidget* _tmp0_;
1426 	GtkTreeView* _tmp1_;
1427 	GtkTreeView* tree;
1428 	g_return_val_if_fail (self != NULL, FALSE);
1429 	g_return_val_if_fail (ptree != NULL, FALSE);
1430 	_tmp0_ = ptree;
1431 	_tmp1_ = _g_object_ref0 (GTK_IS_TREE_VIEW (_tmp0_) ? ((GtkTreeView*) _tmp0_) : NULL);
1432 	tree = _tmp1_;
1433 	if ((*event).button == 3) {
1434 		GtkTreeSelection* _tmp2_ = NULL;
1435 		gint _tmp3_;
1436 		_tmp2_ = gtk_tree_view_get_selection (tree);
1437 		_tmp3_ = gtk_tree_selection_count_selected_rows (_tmp2_);
1438 		if (_tmp3_ > 0) {
1439 			GtkMenu* _tmp4_ = NULL;
1440 			GtkMenu* menu;
1441 			GtkImageMenuItem* _tmp5_ = NULL;
1442 			GtkImageMenuItem* item;
1443 			GtkImageMenuItem* _tmp6_ = NULL;
1444 			_tmp4_ = (GtkMenu*) gtk_menu_new ();
1445 			menu = g_object_ref_sink (_tmp4_);
1446 			_tmp5_ = (GtkImageMenuItem*) gtk_image_menu_item_new_from_stock ("gtk-add", NULL);
1447 			item = g_object_ref_sink (_tmp5_);
1448 			g_signal_connect_object ((GtkMenuItem*) item, "activate", (GCallback) _gmpc_browsers_metadata_song_add_clicked_gtk_menu_item_activate, self, 0);
1449 			gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) item));
1450 			_tmp6_ = (GtkImageMenuItem*) gtk_image_menu_item_new_from_stock ("gtk-media-play", NULL);
1451 			_g_object_unref0 (item);
1452 			item = g_object_ref_sink (_tmp6_);
1453 			g_signal_connect_object ((GtkMenuItem*) item, "activate", (GCallback) _gmpc_browsers_metadata_song_replace_clicked_gtk_menu_item_activate, self, 0);
1454 			gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) item));
1455 			gtk_menu_popup (menu, NULL, NULL, NULL, NULL, (*event).button, (*event).time);
1456 			gtk_widget_show_all ((GtkWidget*) menu);
1457 			result = TRUE;
1458 			_g_object_unref0 (item);
1459 			_g_object_unref0 (menu);
1460 			_g_object_unref0 (tree);
1461 			return result;
1462 		}
1463 	}
1464 	result = FALSE;
1465 	_g_object_unref0 (tree);
1466 	return result;
1467 }
1468 
1469 
gmpc_browsers_metadata_browser_button_release_event(GmpcBrowsersMetadata * self,GtkWidget * widget,GdkEventButton * event)1470 static gboolean gmpc_browsers_metadata_browser_button_release_event (GmpcBrowsersMetadata* self, GtkWidget* widget, GdkEventButton* event) {
1471 	gboolean result = FALSE;
1472 	g_return_val_if_fail (self != NULL, FALSE);
1473 	g_return_val_if_fail (widget != NULL, FALSE);
1474 	if ((*event).button == 8) {
1475 		gmpc_browsers_metadata_history_previous (self);
1476 		result = TRUE;
1477 		return result;
1478 	} else {
1479 		if ((*event).button == 9) {
1480 			gmpc_browsers_metadata_history_next (self);
1481 			result = TRUE;
1482 			return result;
1483 		}
1484 	}
1485 	result = FALSE;
1486 	return result;
1487 }
1488 
1489 
_gmpc_browsers_metadata_browser_bg_style_changed_gtk_widget_style_set(GtkWidget * _sender,GtkStyle * previous_style,gpointer self)1490 static void _gmpc_browsers_metadata_browser_bg_style_changed_gtk_widget_style_set (GtkWidget* _sender, GtkStyle* previous_style, gpointer self) {
1491 	gmpc_browsers_metadata_browser_bg_style_changed (self, _sender, previous_style);
1492 }
1493 
1494 
_lambda77_(GtkEntry * source,GtkEntryIconPosition pos,GdkEvent * event,GmpcBrowsersMetadata * self)1495 static void _lambda77_ (GtkEntry* source, GtkEntryIconPosition pos, GdkEvent* event, GmpcBrowsersMetadata* self) {
1496 	g_return_if_fail (source != NULL);
1497 	g_return_if_fail (event != NULL);
1498 	if (pos == GTK_ENTRY_ICON_SECONDARY) {
1499 		gtk_entry_set_text (source, "");
1500 	}
1501 }
1502 
1503 
__lambda77__gtk_entry_icon_press(GtkEntry * _sender,GtkEntryIconPosition p0,GdkEvent * p1,gpointer self)1504 static void __lambda77__gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self) {
1505 	_lambda77_ (_sender, p0, p1, self);
1506 }
1507 
1508 
_gmpc_browsers_metadata_browser_artist_entry_changed_gtk_editable_changed(GtkEditable * _sender,gpointer self)1509 static void _gmpc_browsers_metadata_browser_artist_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self) {
1510 	gmpc_browsers_metadata_browser_artist_entry_changed (self, _sender);
1511 }
1512 
1513 
_gmpc_browsers_metadata_visible_func_artist_gtk_tree_model_filter_visible_func(GtkTreeModel * model,GtkTreeIter * iter,gpointer self)1514 static gboolean _gmpc_browsers_metadata_visible_func_artist_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self) {
1515 	gboolean result;
1516 	result = gmpc_browsers_metadata_visible_func_artist (self, model, iter);
1517 	return result;
1518 }
1519 
1520 
_gmpc_browsers_metadata_browser_button_press_event_gtk_widget_button_press_event(GtkWidget * _sender,GdkEventButton * event,gpointer self)1521 static gboolean _gmpc_browsers_metadata_browser_button_press_event_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
1522 	gboolean result;
1523 	result = gmpc_browsers_metadata_browser_button_press_event (self, _sender, event);
1524 	return result;
1525 }
1526 
1527 
_gmpc_browsers_metadata_artist_browser_button_release_event_gtk_widget_button_release_event(GtkWidget * _sender,GdkEventButton * event,gpointer self)1528 static gboolean _gmpc_browsers_metadata_artist_browser_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
1529 	gboolean result;
1530 	result = gmpc_browsers_metadata_artist_browser_button_release_event (self, _sender, event);
1531 	return result;
1532 }
1533 
1534 
_gmpc_browsers_metadata_browser_artist_key_press_event_gtk_widget_key_press_event(GtkWidget * _sender,GdkEventKey * event,gpointer self)1535 static gboolean _gmpc_browsers_metadata_browser_artist_key_press_event_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) {
1536 	gboolean result;
1537 	result = gmpc_browsers_metadata_browser_artist_key_press_event (self, _sender, event);
1538 	return result;
1539 }
1540 
1541 
_gmpc_browsers_metadata_browser_artist_changed_gtk_tree_selection_changed(GtkTreeSelection * _sender,gpointer self)1542 static void _gmpc_browsers_metadata_browser_artist_changed_gtk_tree_selection_changed (GtkTreeSelection* _sender, gpointer self) {
1543 	gmpc_browsers_metadata_browser_artist_changed (self, _sender);
1544 }
1545 
1546 
_lambda78_(GtkEntry * source,GtkEntryIconPosition pos,GdkEvent * event,GmpcBrowsersMetadata * self)1547 static void _lambda78_ (GtkEntry* source, GtkEntryIconPosition pos, GdkEvent* event, GmpcBrowsersMetadata* self) {
1548 	g_return_if_fail (source != NULL);
1549 	g_return_if_fail (event != NULL);
1550 	if (pos == GTK_ENTRY_ICON_SECONDARY) {
1551 		gtk_entry_set_text (source, "");
1552 	}
1553 }
1554 
1555 
__lambda78__gtk_entry_icon_press(GtkEntry * _sender,GtkEntryIconPosition p0,GdkEvent * p1,gpointer self)1556 static void __lambda78__gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self) {
1557 	_lambda78_ (_sender, p0, p1, self);
1558 }
1559 
1560 
_gmpc_browsers_metadata_browser_album_entry_changed_gtk_editable_changed(GtkEditable * _sender,gpointer self)1561 static void _gmpc_browsers_metadata_browser_album_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self) {
1562 	gmpc_browsers_metadata_browser_album_entry_changed (self, _sender);
1563 }
1564 
1565 
_gmpc_browsers_metadata_visible_func_album_gtk_tree_model_filter_visible_func(GtkTreeModel * model,GtkTreeIter * iter,gpointer self)1566 static gboolean _gmpc_browsers_metadata_visible_func_album_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self) {
1567 	gboolean result;
1568 	result = gmpc_browsers_metadata_visible_func_album (self, model, iter);
1569 	return result;
1570 }
1571 
1572 
_gmpc_browsers_metadata_album_browser_button_release_event_gtk_widget_button_release_event(GtkWidget * _sender,GdkEventButton * event,gpointer self)1573 static gboolean _gmpc_browsers_metadata_album_browser_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
1574 	gboolean result;
1575 	result = gmpc_browsers_metadata_album_browser_button_release_event (self, _sender, event);
1576 	return result;
1577 }
1578 
1579 
_gmpc_browsers_metadata_browser_album_key_press_event_gtk_widget_key_press_event(GtkWidget * _sender,GdkEventKey * event,gpointer self)1580 static gboolean _gmpc_browsers_metadata_browser_album_key_press_event_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) {
1581 	gboolean result;
1582 	result = gmpc_browsers_metadata_browser_album_key_press_event (self, _sender, event);
1583 	return result;
1584 }
1585 
1586 
_gmpc_browsers_metadata_browser_album_changed_gtk_tree_selection_changed(GtkTreeSelection * _sender,gpointer self)1587 static void _gmpc_browsers_metadata_browser_album_changed_gtk_tree_selection_changed (GtkTreeSelection* _sender, gpointer self) {
1588 	gmpc_browsers_metadata_browser_album_changed (self, _sender);
1589 }
1590 
1591 
_gmpc_browsers_metadata_song_browser_button_release_event_gtk_widget_button_release_event(GtkWidget * _sender,GdkEventButton * event,gpointer self)1592 static gboolean _gmpc_browsers_metadata_song_browser_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
1593 	gboolean result;
1594 	result = gmpc_browsers_metadata_song_browser_button_release_event (self, _sender, event);
1595 	return result;
1596 }
1597 
1598 
_gmpc_browsers_metadata_browser_songs_changed_gtk_tree_selection_changed(GtkTreeSelection * _sender,gpointer self)1599 static void _gmpc_browsers_metadata_browser_songs_changed_gtk_tree_selection_changed (GtkTreeSelection* _sender, gpointer self) {
1600 	gmpc_browsers_metadata_browser_songs_changed (self, _sender);
1601 }
1602 
1603 
_misc_header_expose_event_gtk_widget_expose_event(GtkWidget * _sender,GdkEventExpose * event,gpointer self)1604 static gboolean _misc_header_expose_event_gtk_widget_expose_event (GtkWidget* _sender, GdkEventExpose* event, gpointer self) {
1605 	gboolean result;
1606 	result = misc_header_expose_event (_sender, event);
1607 	return result;
1608 }
1609 
1610 
_gmpc_browsers_metadata_browser_button_release_event_gtk_widget_button_release_event(GtkWidget * _sender,GdkEventButton * event,gpointer self)1611 static gboolean _gmpc_browsers_metadata_browser_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
1612 	gboolean result;
1613 	result = gmpc_browsers_metadata_browser_button_release_event (self, _sender, event);
1614 	return result;
1615 }
1616 
1617 
gmpc_browsers_metadata_browser_init(GmpcBrowsersMetadata * self)1618 static void gmpc_browsers_metadata_browser_init (GmpcBrowsersMetadata* self) {
1619 	gint _tmp54_;
1620 	g_return_if_fail (self != NULL);
1621 	if (self->priv->paned == NULL) {
1622 		GtkHPaned* _tmp0_ = NULL;
1623 		GtkVBox* _tmp1_ = NULL;
1624 		GtkVBox* _tmp2_ = NULL;
1625 		GtkVBox* box;
1626 		GtkEntry* _tmp3_ = NULL;
1627 		GtkScrolledWindow* _tmp4_ = NULL;
1628 		GtkScrolledWindow* sw;
1629 		GmpcMpdDataModel* _tmp5_ = NULL;
1630 		GtkTreeModelFilter* _tmp6_ = NULL;
1631 		GtkTreeView* _tmp7_ = NULL;
1632 		GmpcMpdDataTreeviewTooltip* _tmp8_ = NULL;
1633 		GmpcMpdDataTreeviewTooltip* _tmp9_;
1634 		GtkTreeViewColumn* _tmp10_ = NULL;
1635 		GtkTreeViewColumn* column;
1636 		gint _tmp11_;
1637 		GtkCellRendererText* _tmp13_ = NULL;
1638 		GtkCellRendererText* trenderer;
1639 		const gchar* _tmp14_ = NULL;
1640 		GtkTreeSelection* _tmp15_ = NULL;
1641 		GtkVBox* _tmp16_ = NULL;
1642 		GtkEntry* _tmp17_ = NULL;
1643 		GtkScrolledWindow* _tmp18_ = NULL;
1644 		GmpcMpdDataModel* _tmp19_ = NULL;
1645 		GtkTreeModelFilter* _tmp20_ = NULL;
1646 		GtkTreeView* _tmp21_ = NULL;
1647 		GmpcMpdDataTreeviewTooltip* _tmp22_ = NULL;
1648 		GmpcMpdDataTreeviewTooltip* _tmp23_;
1649 		GtkTreeViewColumn* _tmp24_ = NULL;
1650 		gint _tmp25_;
1651 		GtkTreeViewColumn* _tmp27_ = NULL;
1652 		GtkCellRendererText* _tmp28_ = NULL;
1653 		const gchar* _tmp29_ = NULL;
1654 		GtkTreeViewColumn* _tmp30_ = NULL;
1655 		GtkCellRendererText* _tmp31_ = NULL;
1656 		const gchar* _tmp32_ = NULL;
1657 		GtkTreeSelection* _tmp33_ = NULL;
1658 		GtkScrolledWindow* _tmp34_ = NULL;
1659 		GmpcMpdDataModel* _tmp35_ = NULL;
1660 		GtkTreeView* _tmp36_ = NULL;
1661 		GtkTreeViewColumn* _tmp37_ = NULL;
1662 		gint _tmp38_;
1663 		GtkCellRendererText* _tmp40_ = NULL;
1664 		const gchar* _tmp41_ = NULL;
1665 		GtkTreeViewColumn* _tmp42_ = NULL;
1666 		GtkCellRendererText* _tmp43_ = NULL;
1667 		const gchar* _tmp44_ = NULL;
1668 		GtkTreeSelection* _tmp45_ = NULL;
1669 		GtkScrolledWindow* _tmp46_ = NULL;
1670 		GtkEventBox* _tmp47_ = NULL;
1671 		GtkEventBox* _tmp48_;
1672 		GtkAdjustment* _tmp49_ = NULL;
1673 		GtkEventBox* _tmp50_;
1674 		GtkAdjustment* _tmp51_ = NULL;
1675 		GtkVBox* _tmp52_ = NULL;
1676 		GtkVBox* vb;
1677 		GtkEventBox* _tmp53_ = NULL;
1678 		_tmp0_ = (GtkHPaned*) gtk_hpaned_new ();
1679 		_g_object_unref0 (self->priv->paned);
1680 		self->priv->paned = (GtkPaned*) g_object_ref_sink (_tmp0_);
1681 		gmpc_paned_size_group_add_paned (paned_size_group, self->priv->paned);
1682 		g_signal_connect_object ((GtkWidget*) self->priv->paned, "style-set", (GCallback) _gmpc_browsers_metadata_browser_bg_style_changed_gtk_widget_style_set, self, 0);
1683 		_tmp1_ = (GtkVBox*) gtk_vbox_new (TRUE, 6);
1684 		_g_object_unref0 (self->priv->browser_box);
1685 		self->priv->browser_box = (GtkBox*) g_object_ref_sink (_tmp1_);
1686 		gtk_paned_add1 (self->priv->paned, (GtkWidget*) self->priv->browser_box);
1687 		_tmp2_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
1688 		box = g_object_ref_sink (_tmp2_);
1689 		gtk_box_pack_start (self->priv->browser_box, (GtkWidget*) box, TRUE, TRUE, (guint) 0);
1690 		_tmp3_ = (GtkEntry*) gtk_entry_new ();
1691 		_g_object_unref0 (self->priv->artist_filter_entry);
1692 		self->priv->artist_filter_entry = g_object_ref_sink (_tmp3_);
1693 		gtk_entry_set_icon_from_stock (self->priv->artist_filter_entry, GTK_ENTRY_ICON_SECONDARY, "gtk-clear");
1694 		g_signal_connect_object (self->priv->artist_filter_entry, "icon-press", (GCallback) __lambda77__gtk_entry_icon_press, self, 0);
1695 		gtk_widget_set_no_show_all ((GtkWidget*) self->priv->artist_filter_entry, TRUE);
1696 		g_signal_connect_object ((GtkEditable*) self->priv->artist_filter_entry, "changed", (GCallback) _gmpc_browsers_metadata_browser_artist_entry_changed_gtk_editable_changed, self, 0);
1697 		gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) self->priv->artist_filter_entry, FALSE, FALSE, (guint) 0);
1698 		_tmp4_ = (GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL);
1699 		sw = g_object_ref_sink (_tmp4_);
1700 		gtk_scrolled_window_set_policy (sw, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1701 		gtk_scrolled_window_set_shadow_type (sw, GTK_SHADOW_ETCHED_IN);
1702 		gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) sw, TRUE, TRUE, (guint) 0);
1703 		_tmp5_ = gmpc_mpddata_model_new ();
1704 		_g_object_unref0 (self->priv->model_artist);
1705 		self->priv->model_artist = _tmp5_;
1706 		_tmp6_ = (GtkTreeModelFilter*) gtk_tree_model_filter_new ((GtkTreeModel*) self->priv->model_artist, NULL);
1707 		_g_object_unref0 (self->priv->model_filter_artist);
1708 		self->priv->model_filter_artist = _tmp6_;
1709 		gtk_tree_model_filter_set_visible_func (self->priv->model_filter_artist, _gmpc_browsers_metadata_visible_func_artist_gtk_tree_model_filter_visible_func, g_object_ref (self), g_object_unref);
1710 		_tmp7_ = (GtkTreeView*) gtk_tree_view_new_with_model ((GtkTreeModel*) self->priv->model_filter_artist);
1711 		_g_object_unref0 (self->priv->tree_artist);
1712 		self->priv->tree_artist = g_object_ref_sink (_tmp7_);
1713 		gtk_tree_view_set_rules_hint (self->priv->tree_artist, TRUE);
1714 		_tmp8_ = gmpc_mpd_data_treeview_tooltip_new (self->priv->tree_artist, META_ARTIST_ART);
1715 		_tmp9_ = g_object_ref_sink (_tmp8_);
1716 		_g_object_unref0 (_tmp9_);
1717 		gtk_tree_view_set_enable_search (self->priv->tree_artist, FALSE);
1718 		g_signal_connect_object ((GtkWidget*) self->priv->tree_artist, "button-press-event", (GCallback) _gmpc_browsers_metadata_browser_button_press_event_gtk_widget_button_press_event, self, 0);
1719 		g_signal_connect_object ((GtkWidget*) self->priv->tree_artist, "button-release-event", (GCallback) _gmpc_browsers_metadata_artist_browser_button_release_event_gtk_widget_button_release_event, self, 0);
1720 		g_signal_connect_object ((GtkWidget*) self->priv->tree_artist, "key-press-event", (GCallback) _gmpc_browsers_metadata_browser_artist_key_press_event_gtk_widget_key_press_event, self, 0);
1721 		gtk_container_add ((GtkContainer*) sw, (GtkWidget*) self->priv->tree_artist);
1722 		_tmp10_ = gtk_tree_view_column_new ();
1723 		column = g_object_ref_sink (_tmp10_);
1724 		_tmp11_ = cfg_get_single_value_as_int_with_default (config, "tag2-plugin", "show-image-column", 1);
1725 		if (_tmp11_ == 1) {
1726 			GtkCellRendererPixbuf* _tmp12_ = NULL;
1727 			GtkCellRendererPixbuf* prenderer;
1728 			_tmp12_ = (GtkCellRendererPixbuf*) gtk_cell_renderer_pixbuf_new ();
1729 			prenderer = g_object_ref_sink (_tmp12_);
1730 			g_object_set ((GObject*) prenderer, "height", self->priv->model_artist->icon_size, NULL);
1731 			gtk_cell_layout_pack_start ((GtkCellLayout*) column, (GtkCellRenderer*) prenderer, FALSE);
1732 			gtk_cell_layout_add_attribute ((GtkCellLayout*) column, (GtkCellRenderer*) prenderer, "pixbuf", 27);
1733 			_g_object_unref0 (prenderer);
1734 		}
1735 		_tmp13_ = (GtkCellRendererText*) gtk_cell_renderer_text_new ();
1736 		trenderer = g_object_ref_sink (_tmp13_);
1737 		gtk_cell_layout_pack_start ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, TRUE);
1738 		gtk_cell_layout_add_attribute ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, "text", 7);
1739 		gtk_tree_view_append_column (self->priv->tree_artist, column);
1740 		_tmp14_ = _ ("Artist");
1741 		gtk_tree_view_column_set_title (column, _tmp14_);
1742 		_tmp15_ = gtk_tree_view_get_selection (self->priv->tree_artist);
1743 		g_signal_connect_object (_tmp15_, "changed", (GCallback) _gmpc_browsers_metadata_browser_artist_changed_gtk_tree_selection_changed, self, 0);
1744 		gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
1745 		gtk_tree_view_set_fixed_height_mode (self->priv->tree_artist, TRUE);
1746 		_tmp16_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
1747 		_g_object_unref0 (box);
1748 		box = g_object_ref_sink (_tmp16_);
1749 		gtk_box_pack_start (self->priv->browser_box, (GtkWidget*) box, TRUE, TRUE, (guint) 0);
1750 		_tmp17_ = (GtkEntry*) gtk_entry_new ();
1751 		_g_object_unref0 (self->priv->album_filter_entry);
1752 		self->priv->album_filter_entry = g_object_ref_sink (_tmp17_);
1753 		gtk_entry_set_icon_from_stock (self->priv->album_filter_entry, GTK_ENTRY_ICON_SECONDARY, "gtk-clear");
1754 		g_signal_connect_object (self->priv->album_filter_entry, "icon-press", (GCallback) __lambda78__gtk_entry_icon_press, self, 0);
1755 		gtk_widget_set_no_show_all ((GtkWidget*) self->priv->album_filter_entry, TRUE);
1756 		g_signal_connect_object ((GtkEditable*) self->priv->album_filter_entry, "changed", (GCallback) _gmpc_browsers_metadata_browser_album_entry_changed_gtk_editable_changed, self, 0);
1757 		gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) self->priv->album_filter_entry, FALSE, FALSE, (guint) 0);
1758 		_tmp18_ = (GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL);
1759 		_g_object_unref0 (sw);
1760 		sw = g_object_ref_sink (_tmp18_);
1761 		gtk_scrolled_window_set_policy (sw, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1762 		gtk_scrolled_window_set_shadow_type (sw, GTK_SHADOW_ETCHED_IN);
1763 		gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) sw, TRUE, TRUE, (guint) 0);
1764 		_tmp19_ = gmpc_mpddata_model_new ();
1765 		_g_object_unref0 (self->priv->model_albums);
1766 		self->priv->model_albums = _tmp19_;
1767 		_tmp20_ = (GtkTreeModelFilter*) gtk_tree_model_filter_new ((GtkTreeModel*) self->priv->model_albums, NULL);
1768 		_g_object_unref0 (self->priv->model_filter_album);
1769 		self->priv->model_filter_album = _tmp20_;
1770 		gtk_tree_model_filter_set_visible_func (self->priv->model_filter_album, _gmpc_browsers_metadata_visible_func_album_gtk_tree_model_filter_visible_func, g_object_ref (self), g_object_unref);
1771 		_tmp21_ = (GtkTreeView*) gtk_tree_view_new_with_model ((GtkTreeModel*) self->priv->model_filter_album);
1772 		_g_object_unref0 (self->priv->tree_album);
1773 		self->priv->tree_album = g_object_ref_sink (_tmp21_);
1774 		gtk_tree_view_set_rules_hint (self->priv->tree_album, TRUE);
1775 		gtk_tree_view_set_enable_search (self->priv->tree_album, FALSE);
1776 		_tmp22_ = gmpc_mpd_data_treeview_tooltip_new (self->priv->tree_album, META_ALBUM_ART);
1777 		_tmp23_ = g_object_ref_sink (_tmp22_);
1778 		_g_object_unref0 (_tmp23_);
1779 		g_signal_connect_object ((GtkWidget*) self->priv->tree_album, "button-press-event", (GCallback) _gmpc_browsers_metadata_browser_button_press_event_gtk_widget_button_press_event, self, 0);
1780 		g_signal_connect_object ((GtkWidget*) self->priv->tree_album, "button-release-event", (GCallback) _gmpc_browsers_metadata_album_browser_button_release_event_gtk_widget_button_release_event, self, 0);
1781 		g_signal_connect_object ((GtkWidget*) self->priv->tree_album, "key-press-event", (GCallback) _gmpc_browsers_metadata_browser_album_key_press_event_gtk_widget_key_press_event, self, 0);
1782 		gtk_container_add ((GtkContainer*) sw, (GtkWidget*) self->priv->tree_album);
1783 		_tmp24_ = gtk_tree_view_column_new ();
1784 		_g_object_unref0 (column);
1785 		column = g_object_ref_sink (_tmp24_);
1786 		_tmp25_ = cfg_get_single_value_as_int_with_default (config, "tag2-plugin", "show-image-column", 1);
1787 		if (_tmp25_ == 1) {
1788 			GtkCellRendererPixbuf* _tmp26_ = NULL;
1789 			GtkCellRendererPixbuf* prenderer;
1790 			_tmp26_ = (GtkCellRendererPixbuf*) gtk_cell_renderer_pixbuf_new ();
1791 			prenderer = g_object_ref_sink (_tmp26_);
1792 			g_object_set ((GObject*) prenderer, "height", self->priv->model_albums->icon_size, NULL);
1793 			gtk_cell_layout_pack_start ((GtkCellLayout*) column, (GtkCellRenderer*) prenderer, FALSE);
1794 			gtk_cell_layout_add_attribute ((GtkCellLayout*) column, (GtkCellRenderer*) prenderer, "pixbuf", 27);
1795 			_g_object_unref0 (prenderer);
1796 		}
1797 		gtk_tree_view_append_column (self->priv->tree_album, column);
1798 		_tmp27_ = gtk_tree_view_column_new ();
1799 		_g_object_unref0 (column);
1800 		column = g_object_ref_sink (_tmp27_);
1801 		_tmp28_ = (GtkCellRendererText*) gtk_cell_renderer_text_new ();
1802 		_g_object_unref0 (trenderer);
1803 		trenderer = g_object_ref_sink (_tmp28_);
1804 		gtk_cell_layout_pack_start ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, TRUE);
1805 		gtk_cell_layout_add_attribute ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, "text", 14);
1806 		gtk_tree_view_append_column (self->priv->tree_album, column);
1807 		_tmp29_ = _ ("Year");
1808 		gtk_tree_view_column_set_title (column, _tmp29_);
1809 		_tmp30_ = gtk_tree_view_column_new ();
1810 		_g_object_unref0 (column);
1811 		column = g_object_ref_sink (_tmp30_);
1812 		_tmp31_ = (GtkCellRendererText*) gtk_cell_renderer_text_new ();
1813 		_g_object_unref0 (trenderer);
1814 		trenderer = g_object_ref_sink (_tmp31_);
1815 		gtk_cell_layout_pack_start ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, TRUE);
1816 		gtk_cell_layout_add_attribute ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, "text", 6);
1817 		gtk_tree_view_append_column (self->priv->tree_album, column);
1818 		_tmp32_ = _ ("Album");
1819 		gtk_tree_view_column_set_title (column, _tmp32_);
1820 		_tmp33_ = gtk_tree_view_get_selection (self->priv->tree_album);
1821 		g_signal_connect_object (_tmp33_, "changed", (GCallback) _gmpc_browsers_metadata_browser_album_changed_gtk_tree_selection_changed, self, 0);
1822 		_tmp34_ = (GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL);
1823 		_g_object_unref0 (sw);
1824 		sw = g_object_ref_sink (_tmp34_);
1825 		gtk_scrolled_window_set_policy (sw, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1826 		gtk_scrolled_window_set_shadow_type (sw, GTK_SHADOW_ETCHED_IN);
1827 		gtk_box_pack_start (self->priv->browser_box, (GtkWidget*) sw, TRUE, TRUE, (guint) 0);
1828 		_tmp35_ = gmpc_mpddata_model_new ();
1829 		_g_object_unref0 (self->priv->model_songs);
1830 		self->priv->model_songs = _tmp35_;
1831 		_tmp36_ = (GtkTreeView*) gtk_tree_view_new_with_model ((GtkTreeModel*) self->priv->model_songs);
1832 		_g_object_unref0 (self->priv->tree_songs);
1833 		self->priv->tree_songs = g_object_ref_sink (_tmp36_);
1834 		gtk_tree_view_set_rules_hint (self->priv->tree_songs, TRUE);
1835 		g_signal_connect_object ((GtkWidget*) self->priv->tree_songs, "button-press-event", (GCallback) _gmpc_browsers_metadata_browser_button_press_event_gtk_widget_button_press_event, self, 0);
1836 		g_signal_connect_object ((GtkWidget*) self->priv->tree_songs, "button-release-event", (GCallback) _gmpc_browsers_metadata_song_browser_button_release_event_gtk_widget_button_release_event, self, 0);
1837 		gtk_container_add ((GtkContainer*) sw, (GtkWidget*) self->priv->tree_songs);
1838 		_tmp37_ = gtk_tree_view_column_new ();
1839 		_g_object_unref0 (column);
1840 		column = g_object_ref_sink (_tmp37_);
1841 		_tmp38_ = cfg_get_single_value_as_int_with_default (config, "tag2-plugin", "show-image-column", 1);
1842 		if (_tmp38_ == 1) {
1843 			GtkCellRendererPixbuf* _tmp39_ = NULL;
1844 			GtkCellRendererPixbuf* prenderer;
1845 			_tmp39_ = (GtkCellRendererPixbuf*) gtk_cell_renderer_pixbuf_new ();
1846 			prenderer = g_object_ref_sink (_tmp39_);
1847 			gtk_cell_layout_pack_start ((GtkCellLayout*) column, (GtkCellRenderer*) prenderer, FALSE);
1848 			gtk_cell_layout_add_attribute ((GtkCellLayout*) column, (GtkCellRenderer*) prenderer, "icon-name", 23);
1849 			_g_object_unref0 (prenderer);
1850 		}
1851 		_tmp40_ = (GtkCellRendererText*) gtk_cell_renderer_text_new ();
1852 		_g_object_unref0 (trenderer);
1853 		trenderer = g_object_ref_sink (_tmp40_);
1854 		gtk_cell_layout_pack_start ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, FALSE);
1855 		gtk_cell_layout_add_attribute ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, "text", 10);
1856 		_tmp41_ = _ ("Track");
1857 		gtk_tree_view_column_set_title (column, _tmp41_);
1858 		gtk_tree_view_append_column (self->priv->tree_songs, column);
1859 		_tmp42_ = gtk_tree_view_column_new ();
1860 		_g_object_unref0 (column);
1861 		column = g_object_ref_sink (_tmp42_);
1862 		_tmp43_ = (GtkCellRendererText*) gtk_cell_renderer_text_new ();
1863 		_g_object_unref0 (trenderer);
1864 		trenderer = g_object_ref_sink (_tmp43_);
1865 		gtk_cell_layout_pack_start ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, TRUE);
1866 		gtk_cell_layout_add_attribute ((GtkCellLayout*) column, (GtkCellRenderer*) trenderer, "text", 7);
1867 		gtk_tree_view_append_column (self->priv->tree_songs, column);
1868 		gtk_tree_view_set_search_column (self->priv->tree_songs, 7);
1869 		_tmp44_ = _ ("Songs");
1870 		gtk_tree_view_column_set_title (column, _tmp44_);
1871 		_tmp45_ = gtk_tree_view_get_selection (self->priv->tree_songs);
1872 		g_signal_connect_object (_tmp45_, "changed", (GCallback) _gmpc_browsers_metadata_browser_songs_changed_gtk_tree_selection_changed, self, 0);
1873 		_tmp46_ = (GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL);
1874 		_g_object_unref0 (self->priv->metadata_sw);
1875 		self->priv->metadata_sw = g_object_ref_sink (_tmp46_);
1876 		gtk_scrolled_window_set_policy (self->priv->metadata_sw, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1877 		gtk_scrolled_window_set_shadow_type (self->priv->metadata_sw, GTK_SHADOW_ETCHED_IN);
1878 		_tmp47_ = (GtkEventBox*) gtk_event_box_new ();
1879 		_g_object_unref0 (self->priv->metadata_box);
1880 		self->priv->metadata_box = g_object_ref_sink (_tmp47_);
1881 		gtk_event_box_set_visible_window (self->priv->metadata_box, TRUE);
1882 		gtk_scrolled_window_add_with_viewport (self->priv->metadata_sw, (GtkWidget*) self->priv->metadata_box);
1883 		_tmp48_ = self->priv->metadata_box;
1884 		_tmp49_ = gtk_scrolled_window_get_hadjustment (self->priv->metadata_sw);
1885 		gtk_container_set_focus_hadjustment (GTK_IS_CONTAINER (_tmp48_) ? ((GtkContainer*) _tmp48_) : NULL, _tmp49_);
1886 		_tmp50_ = self->priv->metadata_box;
1887 		_tmp51_ = gtk_scrolled_window_get_vadjustment (self->priv->metadata_sw);
1888 		gtk_container_set_focus_vadjustment (GTK_IS_CONTAINER (_tmp50_) ? ((GtkContainer*) _tmp50_) : NULL, _tmp51_);
1889 		_tmp52_ = (GtkVBox*) gtk_vbox_new (FALSE, 0);
1890 		vb = g_object_ref_sink (_tmp52_);
1891 		gtk_box_pack_end ((GtkBox*) vb, (GtkWidget*) self->priv->metadata_sw, TRUE, TRUE, (guint) 0);
1892 		_tmp53_ = (GtkEventBox*) gtk_event_box_new ();
1893 		_g_object_unref0 (self->priv->header);
1894 		self->priv->header = g_object_ref_sink (_tmp53_);
1895 		gtk_widget_set_app_paintable ((GtkWidget*) self->priv->header, TRUE);
1896 		gtk_event_box_set_visible_window (self->priv->header, TRUE);
1897 		g_signal_connect ((GtkWidget*) self->priv->header, "expose-event", (GCallback) _misc_header_expose_event_gtk_widget_expose_event, NULL);
1898 		gtk_box_pack_start ((GtkBox*) vb, (GtkWidget*) self->priv->header, FALSE, FALSE, (guint) 0);
1899 		gtk_widget_show ((GtkWidget*) self->priv->header);
1900 		gtk_paned_add2 (self->priv->paned, (GtkWidget*) vb);
1901 		g_signal_connect_object ((GtkWidget*) self->priv->paned, "button-release-event", (GCallback) _gmpc_browsers_metadata_browser_button_release_event_gtk_widget_button_release_event, self, 0);
1902 		gmpc_browsers_metadata_reload_browsers (self);
1903 		_g_object_unref0 (vb);
1904 		_g_object_unref0 (trenderer);
1905 		_g_object_unref0 (column);
1906 		_g_object_unref0 (sw);
1907 		_g_object_unref0 (box);
1908 	}
1909 	gtk_widget_show_all ((GtkWidget*) self->priv->paned);
1910 	_tmp54_ = cfg_get_single_value_as_int_with_default (config, "metadata browser", "show-browsers", 1);
1911 	if (_tmp54_ == 0) {
1912 		gtk_widget_hide ((GtkWidget*) self->priv->browser_box);
1913 	}
1914 }
1915 
1916 
gmpc_browsers_metadata_reload_browsers(GmpcBrowsersMetadata * self)1917 static void gmpc_browsers_metadata_reload_browsers (GmpcBrowsersMetadata* self) {
1918 	MpdData* _tmp0_ = NULL;
1919 	MpdData* data;
1920 	MpdData* _tmp1_;
1921 	g_return_if_fail (self != NULL);
1922 	if (self->priv->paned == NULL) {
1923 		return;
1924 	}
1925 	gmpc_mpddata_model_set_mpd_data (self->priv->model_songs, NULL);
1926 	gmpc_mpddata_model_set_mpd_data (self->priv->model_albums, NULL);
1927 	gmpc_mpddata_model_set_mpd_data (self->priv->model_artist, NULL);
1928 	gtk_entry_set_text (self->priv->artist_filter_entry, "");
1929 	gtk_entry_set_text (self->priv->album_filter_entry, "");
1930 	mpd_database_search_field_start (connection, MPD_TAG_ITEM_ARTIST);
1931 	_tmp0_ = mpd_database_search_commit (connection);
1932 	data = _tmp0_;
1933 	data = misc_sort_mpddata_by_album_disc_track (data);
1934 	_tmp1_ = data;
1935 	data = NULL;
1936 	gmpc_mpddata_model_set_mpd_data (self->priv->model_artist, _tmp1_);
1937 	_mpd_data_free0 (data);
1938 }
1939 
1940 
gmpc_browsers_metadata_browser_get_selected_artist(GmpcBrowsersMetadata * self)1941 static gchar* gmpc_browsers_metadata_browser_get_selected_artist (GmpcBrowsersMetadata* self) {
1942 	gchar* result = NULL;
1943 	GtkTreeIter iter = {0};
1944 	GtkTreeSelection* _tmp0_ = NULL;
1945 	GtkTreeSelection* _tmp1_;
1946 	GtkTreeSelection* sel;
1947 	GtkTreeModel* model;
1948 	GtkTreeModel* _tmp2_ = NULL;
1949 	GtkTreeIter _tmp3_ = {0};
1950 	gboolean _tmp4_;
1951 	GtkTreeModel* _tmp5_;
1952 	g_return_val_if_fail (self != NULL, NULL);
1953 	_tmp0_ = gtk_tree_view_get_selection (self->priv->tree_artist);
1954 	_tmp1_ = _g_object_ref0 (_tmp0_);
1955 	sel = _tmp1_;
1956 	model = NULL;
1957 	_tmp4_ = gtk_tree_selection_get_selected (sel, &_tmp2_, &_tmp3_);
1958 	_g_object_unref0 (model);
1959 	_tmp5_ = _g_object_ref0 (_tmp2_);
1960 	model = _tmp5_;
1961 	iter = _tmp3_;
1962 	if (_tmp4_) {
1963 		gchar* artist;
1964 		artist = NULL;
1965 		gtk_tree_model_get (model, &iter, 7, &artist, -1, -1);
1966 		result = artist;
1967 		_g_object_unref0 (model);
1968 		_g_object_unref0 (sel);
1969 		return result;
1970 	}
1971 	result = NULL;
1972 	_g_object_unref0 (model);
1973 	_g_object_unref0 (sel);
1974 	return result;
1975 }
1976 
1977 
gmpc_browsers_metadata_browser_get_selected_album(GmpcBrowsersMetadata * self)1978 static gchar* gmpc_browsers_metadata_browser_get_selected_album (GmpcBrowsersMetadata* self) {
1979 	gchar* result = NULL;
1980 	GtkTreeIter iter = {0};
1981 	GtkTreeSelection* _tmp0_ = NULL;
1982 	GtkTreeSelection* _tmp1_;
1983 	GtkTreeSelection* sel;
1984 	GtkTreeModel* model;
1985 	GtkTreeModel* _tmp2_ = NULL;
1986 	GtkTreeIter _tmp3_ = {0};
1987 	gboolean _tmp4_;
1988 	GtkTreeModel* _tmp5_;
1989 	g_return_val_if_fail (self != NULL, NULL);
1990 	_tmp0_ = gtk_tree_view_get_selection (self->priv->tree_album);
1991 	_tmp1_ = _g_object_ref0 (_tmp0_);
1992 	sel = _tmp1_;
1993 	model = NULL;
1994 	_tmp4_ = gtk_tree_selection_get_selected (sel, &_tmp2_, &_tmp3_);
1995 	_g_object_unref0 (model);
1996 	_tmp5_ = _g_object_ref0 (_tmp2_);
1997 	model = _tmp5_;
1998 	iter = _tmp3_;
1999 	if (_tmp4_) {
2000 		gchar* album;
2001 		album = NULL;
2002 		gtk_tree_model_get (model, &iter, 6, &album, -1, -1);
2003 		result = album;
2004 		_g_object_unref0 (model);
2005 		_g_object_unref0 (sel);
2006 		return result;
2007 	}
2008 	result = NULL;
2009 	_g_object_unref0 (model);
2010 	_g_object_unref0 (sel);
2011 	return result;
2012 }
2013 
2014 
_mpd_songDup0(gpointer self)2015 static gpointer _mpd_songDup0 (gpointer self) {
2016 	return self ? mpd_songDup (self) : NULL;
2017 }
2018 
2019 
gmpc_browsers_metadata_browser_get_selected_song(GmpcBrowsersMetadata * self)2020 static mpd_Song* gmpc_browsers_metadata_browser_get_selected_song (GmpcBrowsersMetadata* self) {
2021 	mpd_Song* result = NULL;
2022 	GtkTreeIter iter = {0};
2023 	GtkTreeSelection* _tmp0_ = NULL;
2024 	GtkTreeSelection* _tmp1_;
2025 	GtkTreeSelection* sel;
2026 	GtkTreeModel* model = NULL;
2027 	GtkTreeModel* _tmp2_ = NULL;
2028 	GtkTreeIter _tmp3_ = {0};
2029 	gboolean _tmp4_;
2030 	GtkTreeModel* _tmp5_;
2031 	g_return_val_if_fail (self != NULL, NULL);
2032 	_tmp0_ = gtk_tree_view_get_selection (self->priv->tree_songs);
2033 	_tmp1_ = _g_object_ref0 (_tmp0_);
2034 	sel = _tmp1_;
2035 	_tmp4_ = gtk_tree_selection_get_selected (sel, &_tmp2_, &_tmp3_);
2036 	_g_object_unref0 (model);
2037 	_tmp5_ = _g_object_ref0 (_tmp2_);
2038 	model = _tmp5_;
2039 	iter = _tmp3_;
2040 	if (_tmp4_) {
2041 		const mpd_Song* songs;
2042 		mpd_Song* _tmp6_;
2043 		songs = NULL;
2044 		gtk_tree_model_get ((GtkTreeModel*) self->priv->model_songs, &iter, 0, &songs, -1, -1);
2045 		_tmp6_ = _mpd_songDup0 (songs);
2046 		result = _tmp6_;
2047 		_g_object_unref0 (model);
2048 		_g_object_unref0 (sel);
2049 		return result;
2050 	}
2051 	result = NULL;
2052 	_g_object_unref0 (model);
2053 	_g_object_unref0 (sel);
2054 	return result;
2055 }
2056 
2057 
gmpc_browsers_metadata_browser_artist_changed(GmpcBrowsersMetadata * self,GtkTreeSelection * sel)2058 static void gmpc_browsers_metadata_browser_artist_changed (GmpcBrowsersMetadata* self, GtkTreeSelection* sel) {
2059 	gchar* _tmp0_ = NULL;
2060 	gchar* artist;
2061 	g_return_if_fail (self != NULL);
2062 	g_return_if_fail (sel != NULL);
2063 	gmpc_mpddata_model_set_mpd_data (self->priv->model_albums, NULL);
2064 	gmpc_mpddata_model_set_mpd_data (self->priv->model_songs, NULL);
2065 	gmpc_browsers_metadata_metadata_box_clear (self);
2066 	_tmp0_ = gmpc_browsers_metadata_browser_get_selected_artist (self);
2067 	artist = _tmp0_;
2068 	if (artist != NULL) {
2069 		MpdData* _tmp1_ = NULL;
2070 		MpdData* data;
2071 		MpdData* list;
2072 		MpdData* _tmp2_ = NULL;
2073 		MpdData* iter;
2074 		MpdData* _tmp13_;
2075 		MpdData* _tmp14_ = NULL;
2076 		MpdData* _tmp15_;
2077 		mpd_database_search_field_start (connection, MPD_TAG_ITEM_ALBUM);
2078 		mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
2079 		_tmp1_ = mpd_database_search_commit (connection);
2080 		data = _tmp1_;
2081 		data = misc_sort_mpddata_by_album_disc_track (data);
2082 		gmpc_mpddata_model_set_request_artist (self->priv->model_albums, artist);
2083 		list = NULL;
2084 		_tmp2_ = mpd_data_get_first (data);
2085 		iter = _tmp2_;
2086 		if (iter != NULL) {
2087 			{
2088 				gboolean _tmp3_;
2089 				_tmp3_ = TRUE;
2090 				while (TRUE) {
2091 					mpd_Song* _tmp4_ = NULL;
2092 					gchar* _tmp5_;
2093 					gchar* _tmp6_;
2094 					MpdData* _tmp7_ = NULL;
2095 					MpdData* ydata;
2096 					if (!_tmp3_) {
2097 						if (!(iter != NULL)) {
2098 							break;
2099 						}
2100 					}
2101 					_tmp3_ = FALSE;
2102 					list = mpd_new_data_struct_append (list);
2103 					list->type = MPD_DATA_TYPE_SONG;
2104 					_tmp4_ = mpd_newSong ();
2105 					_mpd_freeSong0 (list->song);
2106 					list->song = _tmp4_;
2107 					_tmp5_ = g_strdup (artist);
2108 					_g_free0 (list->song->artist);
2109 					list->song->artist = _tmp5_;
2110 					_tmp6_ = g_strdup (iter->tag);
2111 					_g_free0 (list->song->album);
2112 					list->song->album = _tmp6_;
2113 					mpd_database_search_field_start (connection, MPD_TAG_ITEM_DATE);
2114 					mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
2115 					mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM, iter->tag);
2116 					_tmp7_ = mpd_database_search_commit (connection);
2117 					ydata = _tmp7_;
2118 					if (ydata != NULL) {
2119 						MpdData* _tmp8_ = NULL;
2120 						MpdData* yi;
2121 						_tmp8_ = mpd_data_get_first (ydata);
2122 						yi = _tmp8_;
2123 						while (TRUE) {
2124 							gboolean _tmp9_ = FALSE;
2125 							gboolean _tmp10_ = FALSE;
2126 							if (list->song->date == NULL) {
2127 								_tmp9_ = yi != NULL;
2128 							} else {
2129 								_tmp9_ = FALSE;
2130 							}
2131 							if (!_tmp9_) {
2132 								break;
2133 							}
2134 							if (yi->tag != NULL) {
2135 								gint _tmp11_;
2136 								_tmp11_ = strlen (yi->tag);
2137 								_tmp10_ = _tmp11_ > 0;
2138 							} else {
2139 								_tmp10_ = FALSE;
2140 							}
2141 							if (_tmp10_) {
2142 								gchar* _tmp12_;
2143 								_tmp12_ = g_strdup (yi->tag);
2144 								_g_free0 (list->song->date);
2145 								list->song->date = _tmp12_;
2146 							}
2147 							yi = mpd_data_get_next_real (yi, FALSE);
2148 						}
2149 					}
2150 					iter = mpd_data_get_next_real (iter, FALSE);
2151 					_mpd_data_free0 (ydata);
2152 				}
2153 			}
2154 		}
2155 		list = misc_sort_mpddata_by_album_disc_track (list);
2156 		_tmp13_ = list;
2157 		list = NULL;
2158 		gmpc_mpddata_model_set_mpd_data (self->priv->model_albums, _tmp13_);
2159 		mpd_database_search_start (connection, TRUE);
2160 		mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
2161 		_tmp14_ = mpd_database_search_commit (connection);
2162 		_mpd_data_free0 (data);
2163 		data = _tmp14_;
2164 		data = misc_sort_mpddata_by_album_disc_track (data);
2165 		_tmp15_ = data;
2166 		data = NULL;
2167 		gmpc_mpddata_model_set_mpd_data (self->priv->model_songs, _tmp15_);
2168 		_mpd_data_free0 (list);
2169 		_mpd_data_free0 (data);
2170 	}
2171 	gmpc_browsers_metadata_metadata_box_update (self);
2172 	_g_free0 (artist);
2173 }
2174 
2175 
gmpc_browsers_metadata_browser_album_changed(GmpcBrowsersMetadata * self,GtkTreeSelection * album_sel)2176 static void gmpc_browsers_metadata_browser_album_changed (GmpcBrowsersMetadata* self, GtkTreeSelection* album_sel) {
2177 	gchar* _tmp0_ = NULL;
2178 	gchar* artist;
2179 	g_return_if_fail (self != NULL);
2180 	g_return_if_fail (album_sel != NULL);
2181 	gmpc_mpddata_model_set_mpd_data (self->priv->model_songs, NULL);
2182 	gmpc_browsers_metadata_metadata_box_clear (self);
2183 	_tmp0_ = gmpc_browsers_metadata_browser_get_selected_artist (self);
2184 	artist = _tmp0_;
2185 	if (artist != NULL) {
2186 		gchar* _tmp1_ = NULL;
2187 		gchar* album;
2188 		gchar* albumartist;
2189 		gboolean _tmp2_ = FALSE;
2190 		gboolean _tmp7_ = FALSE;
2191 		MpdData* _tmp9_ = NULL;
2192 		MpdData* data;
2193 		MpdData* _tmp10_;
2194 		_tmp1_ = gmpc_browsers_metadata_browser_get_selected_album (self);
2195 		album = _tmp1_;
2196 		albumartist = NULL;
2197 		if (album != NULL) {
2198 			gboolean _tmp3_;
2199 			_tmp3_ = mpd_server_tag_supported (connection, MPD_TAG_ITEM_ALBUM_ARTIST);
2200 			_tmp2_ = _tmp3_;
2201 		} else {
2202 			_tmp2_ = FALSE;
2203 		}
2204 		if (_tmp2_) {
2205 			MpdData* _tmp4_ = NULL;
2206 			MpdData* ydata;
2207 			mpd_database_search_field_start (connection, MPD_TAG_ITEM_ALBUM_ARTIST);
2208 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM, album);
2209 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
2210 			_tmp4_ = mpd_database_search_commit (connection);
2211 			ydata = _tmp4_;
2212 			if (ydata != NULL) {
2213 				gint _tmp5_;
2214 				_tmp5_ = strlen (ydata->tag);
2215 				if (_tmp5_ > 0) {
2216 					gchar* _tmp6_;
2217 					_tmp6_ = g_strdup (ydata->tag);
2218 					_g_free0 (albumartist);
2219 					albumartist = _tmp6_;
2220 				}
2221 			}
2222 			_mpd_data_free0 (ydata);
2223 		}
2224 		mpd_database_search_start (connection, TRUE);
2225 		if (albumartist != NULL) {
2226 			gint _tmp8_;
2227 			_tmp8_ = strlen (albumartist);
2228 			_tmp7_ = _tmp8_ > 0;
2229 		} else {
2230 			_tmp7_ = FALSE;
2231 		}
2232 		if (_tmp7_) {
2233 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM_ARTIST, albumartist);
2234 		} else {
2235 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
2236 		}
2237 		if (album != NULL) {
2238 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM, album);
2239 		}
2240 		_tmp9_ = mpd_database_search_commit (connection);
2241 		data = _tmp9_;
2242 		data = misc_sort_mpddata_by_album_disc_track (data);
2243 		_tmp10_ = data;
2244 		data = NULL;
2245 		gmpc_mpddata_model_set_mpd_data (self->priv->model_songs, _tmp10_);
2246 		_mpd_data_free0 (data);
2247 		_g_free0 (albumartist);
2248 		_g_free0 (album);
2249 	}
2250 	gmpc_browsers_metadata_metadata_box_update (self);
2251 	_g_free0 (artist);
2252 }
2253 
2254 
gmpc_browsers_metadata_browser_songs_changed(GmpcBrowsersMetadata * self,GtkTreeSelection * song_sel)2255 static void gmpc_browsers_metadata_browser_songs_changed (GmpcBrowsersMetadata* self, GtkTreeSelection* song_sel) {
2256 	g_return_if_fail (self != NULL);
2257 	g_return_if_fail (song_sel != NULL);
2258 	gmpc_browsers_metadata_metadata_box_clear (self);
2259 	gmpc_browsers_metadata_metadata_box_update (self);
2260 }
2261 
2262 
2263 /**
2264      * Metadata box
2265      */
gmpc_browsers_metadata_add_selected_song(GmpcBrowsersMetadata * self,GtkButton * button)2266 static void gmpc_browsers_metadata_add_selected_song (GmpcBrowsersMetadata* self, GtkButton* button) {
2267 	gchar* _tmp0_ = NULL;
2268 	gchar* artist;
2269 	gchar* _tmp1_ = NULL;
2270 	gchar* album;
2271 	mpd_Song* _tmp2_ = NULL;
2272 	mpd_Song* song;
2273 	g_return_if_fail (self != NULL);
2274 	g_return_if_fail (button != NULL);
2275 	_tmp0_ = gmpc_browsers_metadata_browser_get_selected_artist (self);
2276 	artist = _tmp0_;
2277 	_tmp1_ = gmpc_browsers_metadata_browser_get_selected_album (self);
2278 	album = _tmp1_;
2279 	_tmp2_ = gmpc_browsers_metadata_browser_get_selected_song (self);
2280 	song = _tmp2_;
2281 	if (song != NULL) {
2282 		mpd_playlist_add (connection, song->file);
2283 		_mpd_freeSong0 (song);
2284 		_g_free0 (album);
2285 		_g_free0 (artist);
2286 		return;
2287 	}
2288 	if (artist != NULL) {
2289 		gchar* albumartist;
2290 		gboolean _tmp3_ = FALSE;
2291 		gboolean _tmp8_ = FALSE;
2292 		MpdData* _tmp10_ = NULL;
2293 		MpdData* data;
2294 		albumartist = NULL;
2295 		if (album != NULL) {
2296 			gboolean _tmp4_;
2297 			_tmp4_ = mpd_server_tag_supported (connection, MPD_TAG_ITEM_ALBUM_ARTIST);
2298 			_tmp3_ = _tmp4_;
2299 		} else {
2300 			_tmp3_ = FALSE;
2301 		}
2302 		if (_tmp3_) {
2303 			MpdData* _tmp5_ = NULL;
2304 			MpdData* ydata;
2305 			mpd_database_search_field_start (connection, MPD_TAG_ITEM_ALBUM_ARTIST);
2306 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM, album);
2307 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
2308 			_tmp5_ = mpd_database_search_commit (connection);
2309 			ydata = _tmp5_;
2310 			if (ydata != NULL) {
2311 				gint _tmp6_;
2312 				_tmp6_ = strlen (ydata->tag);
2313 				if (_tmp6_ > 0) {
2314 					gchar* _tmp7_;
2315 					_tmp7_ = g_strdup (ydata->tag);
2316 					_g_free0 (albumartist);
2317 					albumartist = _tmp7_;
2318 				}
2319 			}
2320 			_mpd_data_free0 (ydata);
2321 		}
2322 		mpd_database_search_start (connection, TRUE);
2323 		if (albumartist != NULL) {
2324 			gint _tmp9_;
2325 			_tmp9_ = strlen (albumartist);
2326 			_tmp8_ = _tmp9_ > 0;
2327 		} else {
2328 			_tmp8_ = FALSE;
2329 		}
2330 		if (_tmp8_) {
2331 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM_ARTIST, albumartist);
2332 		} else {
2333 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, artist);
2334 		}
2335 		if (album != NULL) {
2336 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM, album);
2337 		}
2338 		_tmp10_ = mpd_database_search_commit (connection);
2339 		data = _tmp10_;
2340 		if (data != NULL) {
2341 			data = misc_sort_mpddata_by_album_disc_track (data);
2342 			while (TRUE) {
2343 				if (!(data != NULL)) {
2344 					break;
2345 				}
2346 				mpd_playlist_queue_add (connection, data->song->file);
2347 				data = mpd_data_get_next (data);
2348 			}
2349 			mpd_playlist_queue_commit (connection);
2350 		}
2351 		_mpd_data_free0 (data);
2352 		_g_free0 (albumartist);
2353 	}
2354 	_mpd_freeSong0 (song);
2355 	_g_free0 (album);
2356 	_g_free0 (artist);
2357 }
2358 
2359 
gmpc_browsers_metadata_play_selected_song(GmpcBrowsersMetadata * self,GtkButton * button)2360 static void gmpc_browsers_metadata_play_selected_song (GmpcBrowsersMetadata* self, GtkButton* button) {
2361 	mpd_Song* _tmp0_ = NULL;
2362 	mpd_Song* song;
2363 	g_return_if_fail (self != NULL);
2364 	g_return_if_fail (button != NULL);
2365 	_tmp0_ = gmpc_browsers_metadata_browser_get_selected_song (self);
2366 	song = _tmp0_;
2367 	if (song != NULL) {
2368 		play_path (song->file);
2369 	}
2370 	_mpd_freeSong0 (song);
2371 }
2372 
2373 
gmpc_browsers_metadata_replace_selected_song(GmpcBrowsersMetadata * self,GtkButton * button)2374 static void gmpc_browsers_metadata_replace_selected_song (GmpcBrowsersMetadata* self, GtkButton* button) {
2375 	g_return_if_fail (self != NULL);
2376 	g_return_if_fail (button != NULL);
2377 	mpd_playlist_clear (connection);
2378 	gmpc_browsers_metadata_add_selected_song (self, button);
2379 	mpd_player_play (connection);
2380 }
2381 
2382 
gmpc_browsers_metadata_metadata_box_clear(GmpcBrowsersMetadata * self)2383 static void gmpc_browsers_metadata_metadata_box_clear (GmpcBrowsersMetadata* self) {
2384 	GList* _tmp0_ = NULL;
2385 	GList* list;
2386 	g_return_if_fail (self != NULL);
2387 	_tmp0_ = gtk_container_get_children ((GtkContainer*) self->priv->metadata_box);
2388 	list = _tmp0_;
2389 	{
2390 		GList* child_collection;
2391 		GList* child_it;
2392 		child_collection = list;
2393 		for (child_it = child_collection; child_it != NULL; child_it = child_it->next) {
2394 			GtkWidget* _tmp1_;
2395 			GtkWidget* child;
2396 			_tmp1_ = _g_object_ref0 ((GtkWidget*) child_it->data);
2397 			child = _tmp1_;
2398 			{
2399 				gtk_object_destroy ((GtkObject*) child);
2400 				_g_object_unref0 (child);
2401 			}
2402 		}
2403 	}
2404 	_g_list_free0 (list);
2405 }
2406 
2407 
2408 /**
2409       * Add a row to a gtk table
2410       * <b>$label:</b> $value
2411       * then increments i
2412       */
gmpc_browsers_metadata_add_entry(GmpcBrowsersMetadata * self,GtkTable * table,const gchar * entry_label,const gchar * value,GtkWidget * extra,gint * i,const gchar * image)2413 static void gmpc_browsers_metadata_add_entry (GmpcBrowsersMetadata* self, GtkTable* table, const gchar* entry_label, const gchar* value, GtkWidget* extra, gint* i, const gchar* image) {
2414 	gint j;
2415 	gboolean _tmp0_ = FALSE;
2416 	GtkHBox* _tmp1_ = NULL;
2417 	GtkHBox* box;
2418 	GtkLabel* _tmp2_ = NULL;
2419 	GtkLabel* label;
2420 	gchar* _tmp3_ = NULL;
2421 	gchar* _tmp4_;
2422 	g_return_if_fail (self != NULL);
2423 	g_return_if_fail (table != NULL);
2424 	g_return_if_fail (entry_label != NULL);
2425 	j = 0;
2426 	if (value == NULL) {
2427 		_tmp0_ = extra == NULL;
2428 	} else {
2429 		_tmp0_ = FALSE;
2430 	}
2431 	if (_tmp0_) {
2432 		return;
2433 	}
2434 	_tmp1_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
2435 	box = g_object_ref_sink (_tmp1_);
2436 	_tmp2_ = (GtkLabel*) gtk_label_new ("");
2437 	label = g_object_ref_sink (_tmp2_);
2438 	gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.0f);
2439 	_tmp3_ = g_markup_printf_escaped ("<b>%s:</b>", entry_label);
2440 	_tmp4_ = _tmp3_;
2441 	gtk_label_set_markup (label, _tmp4_);
2442 	_g_free0 (_tmp4_);
2443 	if (image != NULL) {
2444 		GtkAlignment* _tmp5_ = NULL;
2445 		GtkAlignment* ali;
2446 		GtkImage* _tmp6_ = NULL;
2447 		GtkImage* wimage;
2448 		_tmp5_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.f, 0.f, 0.f);
2449 		ali = g_object_ref_sink (_tmp5_);
2450 		_tmp6_ = (GtkImage*) gtk_image_new_from_icon_name (image, GTK_ICON_SIZE_MENU);
2451 		wimage = g_object_ref_sink (_tmp6_);
2452 		gtk_container_add ((GtkContainer*) ali, (GtkWidget*) wimage);
2453 		gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
2454 		_g_object_unref0 (wimage);
2455 		_g_object_unref0 (ali);
2456 	}
2457 	gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) label, TRUE, TRUE, (guint) 0);
2458 	gtk_table_attach (table, (GtkWidget*) box, (guint) j, (guint) (j + 1), (guint) (*i), (guint) ((*i) + 1), GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, (guint) 0, (guint) 0);
2459 	j++;
2460 	if (value != NULL) {
2461 		GtkLabel* _tmp7_ = NULL;
2462 		GtkLabel* pt_label;
2463 		_tmp7_ = (GtkLabel*) gtk_label_new (value);
2464 		pt_label = g_object_ref_sink (_tmp7_);
2465 		gtk_label_set_selectable (pt_label, TRUE);
2466 		gtk_misc_set_alignment ((GtkMisc*) pt_label, 0.0f, 0.0f);
2467 		gtk_label_set_line_wrap (pt_label, TRUE);
2468 		gtk_table_attach (table, (GtkWidget*) pt_label, (guint) j, (guint) (j + 1), (guint) (*i), (guint) ((*i) + 1), GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, (guint) 0, (guint) 0);
2469 		j++;
2470 		_g_object_unref0 (pt_label);
2471 	}
2472 	if (extra != NULL) {
2473 		gtk_table_attach (table, extra, (guint) j, (guint) (j + 1), (guint) (*i), (guint) ((*i) + 1), GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, (guint) 0, (guint) 0);
2474 		j++;
2475 	}
2476 	(*i)++;
2477 	_g_object_unref0 (label);
2478 	_g_object_unref0 (box);
2479 }
2480 
2481 
block7_data_ref(Block7Data * _data7_)2482 static Block7Data* block7_data_ref (Block7Data* _data7_) {
2483 	g_atomic_int_inc (&_data7_->_ref_count_);
2484 	return _data7_;
2485 }
2486 
2487 
block7_data_unref(Block7Data * _data7_)2488 static void block7_data_unref (Block7Data* _data7_) {
2489 	if (g_atomic_int_dec_and_test (&_data7_->_ref_count_)) {
2490 		_g_object_unref0 (_data7_->self);
2491 		_g_object_unref0 (_data7_->notebook);
2492 		_mpd_freeSong0 (_data7_->song);
2493 		g_slice_free (Block7Data, _data7_);
2494 	}
2495 }
2496 
2497 
_gmpc_browsers_metadata_add_selected_song_gtk_button_clicked(GtkButton * _sender,gpointer self)2498 static void _gmpc_browsers_metadata_add_selected_song_gtk_button_clicked (GtkButton* _sender, gpointer self) {
2499 	gmpc_browsers_metadata_add_selected_song (self, _sender);
2500 }
2501 
2502 
_gmpc_browsers_metadata_replace_selected_song_gtk_button_clicked(GtkButton * _sender,gpointer self)2503 static void _gmpc_browsers_metadata_replace_selected_song_gtk_button_clicked (GtkButton* _sender, gpointer self) {
2504 	gmpc_browsers_metadata_replace_selected_song (self, _sender);
2505 }
2506 
2507 
_gmpc_browsers_metadata_play_selected_song_gtk_button_clicked(GtkButton * _sender,gpointer self)2508 static void _gmpc_browsers_metadata_play_selected_song_gtk_button_clicked (GtkButton* _sender, gpointer self) {
2509 	gmpc_browsers_metadata_play_selected_song (self, _sender);
2510 }
2511 
2512 
block8_data_ref(Block8Data * _data8_)2513 static Block8Data* block8_data_ref (Block8Data* _data8_) {
2514 	g_atomic_int_inc (&_data8_->_ref_count_);
2515 	return _data8_;
2516 }
2517 
2518 
block8_data_unref(Block8Data * _data8_)2519 static void block8_data_unref (Block8Data* _data8_) {
2520 	if (g_atomic_int_dec_and_test (&_data8_->_ref_count_)) {
2521 		block7_data_unref (_data8_->_data7_);
2522 		_data8_->_data7_ = NULL;
2523 		g_slice_free (Block8Data, _data8_);
2524 	}
2525 }
2526 
2527 
_lambda40_(GtkButton * source,Block8Data * _data8_)2528 static void _lambda40_ (GtkButton* source, Block8Data* _data8_) {
2529 	Block7Data* _data7_;
2530 	GmpcBrowsersMetadata * self;
2531 	_data7_ = _data8_->_data7_;
2532 	self = _data7_->self;
2533 	g_return_if_fail (source != NULL);
2534 	g_debug ("gmpc-metadata-browser2.vala:1166: notebook page %i clicked", _data8_->j);
2535 	gtk_notebook_set_current_page (_data7_->notebook, _data8_->j);
2536 }
2537 
2538 
__lambda40__gtk_button_clicked(GtkButton * _sender,gpointer self)2539 static void __lambda40__gtk_button_clicked (GtkButton* _sender, gpointer self) {
2540 	_lambda40_ (_sender, self);
2541 }
2542 
2543 
block9_data_ref(Block9Data * _data9_)2544 static Block9Data* block9_data_ref (Block9Data* _data9_) {
2545 	g_atomic_int_inc (&_data9_->_ref_count_);
2546 	return _data9_;
2547 }
2548 
2549 
block9_data_unref(Block9Data * _data9_)2550 static void block9_data_unref (Block9Data* _data9_) {
2551 	if (g_atomic_int_dec_and_test (&_data9_->_ref_count_)) {
2552 		block7_data_unref (_data9_->_data7_);
2553 		_data9_->_data7_ = NULL;
2554 		_g_object_unref0 (_data9_->text_view);
2555 		g_slice_free (Block9Data, _data9_);
2556 	}
2557 }
2558 
2559 
_lambda41_(GtkButton * source,Block9Data * _data9_)2560 static void _lambda41_ (GtkButton* source, Block9Data* _data9_) {
2561 	Block7Data* _data7_;
2562 	GmpcBrowsersMetadata * self;
2563 	_data7_ = _data9_->_data7_;
2564 	self = _data7_->self;
2565 	g_return_if_fail (source != NULL);
2566 	g_debug ("gmpc-metadata-browser2.vala:1191: notebook page %i clicked", _data9_->j);
2567 	gtk_notebook_set_current_page (_data7_->notebook, _data9_->j);
2568 	if (!_data9_->text_view_queried) {
2569 		gmpc_meta_text_view_query_text_from_song (_data9_->text_view, _data7_->song);
2570 		_data9_->text_view_queried = TRUE;
2571 		gmpc_browsers_metadata_change_color_style (self, (GtkWidget*) _data9_->text_view);
2572 	}
2573 }
2574 
2575 
__lambda41__gtk_button_clicked(GtkButton * _sender,gpointer self)2576 static void __lambda41__gtk_button_clicked (GtkButton* _sender, gpointer self) {
2577 	_lambda41_ (_sender, self);
2578 }
2579 
2580 
block10_data_ref(Block10Data * _data10_)2581 static Block10Data* block10_data_ref (Block10Data* _data10_) {
2582 	g_atomic_int_inc (&_data10_->_ref_count_);
2583 	return _data10_;
2584 }
2585 
2586 
block10_data_unref(Block10Data * _data10_)2587 static void block10_data_unref (Block10Data* _data10_) {
2588 	if (g_atomic_int_dec_and_test (&_data10_->_ref_count_)) {
2589 		block7_data_unref (_data10_->_data7_);
2590 		_data10_->_data7_ = NULL;
2591 		_g_object_unref0 (_data10_->similar_songs_box);
2592 		g_slice_free (Block10Data, _data10_);
2593 	}
2594 }
2595 
2596 
_lambda42_(GtkButton * source,Block10Data * _data10_)2597 static void _lambda42_ (GtkButton* source, Block10Data* _data10_) {
2598 	Block7Data* _data7_;
2599 	GmpcBrowsersMetadata * self;
2600 	_data7_ = _data10_->_data7_;
2601 	self = _data7_->self;
2602 	g_return_if_fail (source != NULL);
2603 	g_debug ("gmpc-metadata-browser2.vala:1222: notebook page %i clicked", _data10_->j);
2604 	gtk_notebook_set_current_page (_data7_->notebook, _data10_->j);
2605 	if (!_data10_->similar_songs_queried) {
2606 		GmpcMetaDataWidgetsSimilarSongs* _tmp0_ = NULL;
2607 		GmpcMetaDataWidgetsSimilarSongs* similar_songs;
2608 		_tmp0_ = gmpc_meta_data_widgets_similar_songs_new (_data7_->song);
2609 		similar_songs = g_object_ref_sink (_tmp0_);
2610 		gmpc_meta_data_widgets_similar_songs_update (similar_songs);
2611 		_data10_->similar_songs_queried = TRUE;
2612 		gtk_container_add ((GtkContainer*) _data10_->similar_songs_box, (GtkWidget*) similar_songs);
2613 		gmpc_browsers_metadata_change_color_style (self, (GtkWidget*) _data10_->similar_songs_box);
2614 		gtk_widget_show_all ((GtkWidget*) _data10_->similar_songs_box);
2615 		_g_object_unref0 (similar_songs);
2616 	}
2617 }
2618 
2619 
__lambda42__gtk_button_clicked(GtkButton * _sender,gpointer self)2620 static void __lambda42__gtk_button_clicked (GtkButton* _sender, gpointer self) {
2621 	_lambda42_ (_sender, self);
2622 }
2623 
2624 
block11_data_ref(Block11Data * _data11_)2625 static Block11Data* block11_data_ref (Block11Data* _data11_) {
2626 	g_atomic_int_inc (&_data11_->_ref_count_);
2627 	return _data11_;
2628 }
2629 
2630 
block11_data_unref(Block11Data * _data11_)2631 static void block11_data_unref (Block11Data* _data11_) {
2632 	if (g_atomic_int_dec_and_test (&_data11_->_ref_count_)) {
2633 		block7_data_unref (_data11_->_data7_);
2634 		_data11_->_data7_ = NULL;
2635 		_g_object_unref0 (_data11_->similar_artist);
2636 		g_slice_free (Block11Data, _data11_);
2637 	}
2638 }
2639 
2640 
_lambda43_(GtkButton * source,Block11Data * _data11_)2641 static void _lambda43_ (GtkButton* source, Block11Data* _data11_) {
2642 	Block7Data* _data7_;
2643 	GmpcBrowsersMetadata * self;
2644 	_data7_ = _data11_->_data7_;
2645 	self = _data7_->self;
2646 	g_return_if_fail (source != NULL);
2647 	g_debug ("gmpc-metadata-browser2.vala:1256: notebook page %i clicked", _data11_->j);
2648 	gtk_notebook_set_current_page (_data7_->notebook, _data11_->j);
2649 	gmpc_meta_data_widgets_similar_artists_first_show (_data11_->similar_artist);
2650 }
2651 
2652 
__lambda43__gtk_button_clicked(GtkButton * _sender,gpointer self)2653 static void __lambda43__gtk_button_clicked (GtkButton* _sender, gpointer self) {
2654 	_lambda43_ (_sender, self);
2655 }
2656 
2657 
block12_data_ref(Block12Data * _data12_)2658 static Block12Data* block12_data_ref (Block12Data* _data12_) {
2659 	g_atomic_int_inc (&_data12_->_ref_count_);
2660 	return _data12_;
2661 }
2662 
2663 
block12_data_unref(Block12Data * _data12_)2664 static void block12_data_unref (Block12Data* _data12_) {
2665 	if (g_atomic_int_dec_and_test (&_data12_->_ref_count_)) {
2666 		block7_data_unref (_data12_->_data7_);
2667 		_data12_->_data7_ = NULL;
2668 		g_slice_free (Block12Data, _data12_);
2669 	}
2670 }
2671 
2672 
_lambda44_(GtkButton * source,Block12Data * _data12_)2673 static void _lambda44_ (GtkButton* source, Block12Data* _data12_) {
2674 	Block7Data* _data7_;
2675 	GmpcBrowsersMetadata * self;
2676 	_data7_ = _data12_->_data7_;
2677 	self = _data7_->self;
2678 	g_return_if_fail (source != NULL);
2679 	g_debug ("gmpc-metadata-browser2.vala:1273: notebook page %i clicked", _data12_->j);
2680 	gtk_notebook_set_current_page (_data7_->notebook, _data12_->j);
2681 }
2682 
2683 
__lambda44__gtk_button_clicked(GtkButton * _sender,gpointer self)2684 static void __lambda44__gtk_button_clicked (GtkButton* _sender, gpointer self) {
2685 	_lambda44_ (_sender, self);
2686 }
2687 
2688 
_lambda45_(GObject * source,GParamSpec * spec,Block7Data * _data7_)2689 static void _lambda45_ (GObject* source, GParamSpec* spec, Block7Data* _data7_) {
2690 	GmpcBrowsersMetadata * self;
2691 	gint _tmp0_;
2692 	gint page;
2693 	self = _data7_->self;
2694 	g_return_if_fail (source != NULL);
2695 	g_return_if_fail (spec != NULL);
2696 	_tmp0_ = gtk_notebook_get_current_page (_data7_->notebook);
2697 	page = _tmp0_;
2698 	cfg_set_single_value_as_int (config, "MetaData", "song-last-page", (gint) page);
2699 }
2700 
2701 
__lambda45__g_object_notify(GObject * _sender,GParamSpec * pspec,gpointer self)2702 static void __lambda45__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
2703 	_lambda45_ (_sender, pspec, self);
2704 }
2705 
2706 
gmpc_browsers_metadata_metadata_box_show_song(GmpcBrowsersMetadata * self,const mpd_Song * song,gboolean show_controls)2707 GtkWidget* gmpc_browsers_metadata_metadata_box_show_song (GmpcBrowsersMetadata* self, const mpd_Song* song, gboolean show_controls) {
2708 	GtkWidget* result = NULL;
2709 	Block7Data* _data7_;
2710 	GtkVBox* _tmp0_ = NULL;
2711 	GtkVBox* master_box;
2712 	GtkVBox* _tmp1_ = NULL;
2713 	GtkVBox* vbox;
2714 	GtkHBox* _tmp2_ = NULL;
2715 	GtkHBox* hbox;
2716 	GtkAlignment* _tmp3_ = NULL;
2717 	GtkAlignment* ali;
2718 	gint meta_size;
2719 	gint _tmp4_;
2720 	gint _tmp5_;
2721 	gint _tmp6_;
2722 	GmpcMetaImage* _tmp7_ = NULL;
2723 	GmpcMetaImage* album_image;
2724 	GtkAlignment* _tmp8_ = NULL;
2725 	GmpcMetaImage* _tmp9_ = NULL;
2726 	GmpcMetaImage* artist_image;
2727 	GtkTable* _tmp10_ = NULL;
2728 	GtkTable* info_box;
2729 	gint i;
2730 	GtkVBox* _tmp49_ = NULL;
2731 	GtkVBox* control_hbox;
2732 	GtkButton* _tmp50_ = NULL;
2733 	GtkButton* abutton;
2734 	const gchar* _tmp51_ = NULL;
2735 	GValue _tmp52_ = {0};
2736 	const gchar* _tmp53_ = NULL;
2737 	GtkButton* _tmp54_ = NULL;
2738 	const gchar* _tmp55_ = NULL;
2739 	GValue _tmp56_ = {0};
2740 	GtkImage* _tmp57_ = NULL;
2741 	GtkImage* _tmp58_;
2742 	GtkButton* _tmp59_ = NULL;
2743 	const gchar* _tmp60_ = NULL;
2744 	GValue _tmp61_ = {0};
2745 	GtkHBox* _tmp62_ = NULL;
2746 	GtkHBox* hboxje;
2747 	GtkNotebook* _tmp63_ = NULL;
2748 	GSList* group;
2749 	gint _tmp64_;
2750 	gint _tmp71_;
2751 	gint _tmp80_;
2752 	gboolean _tmp89_ = FALSE;
2753 	gint _tmp90_;
2754 	gint _tmp98_;
2755 	GtkAlignment* _tmp109_ = NULL;
2756 	GtkHBox* _tmp110_ = NULL;
2757 	GtkHBox* bottom_hbox;
2758 	GtkVBox* _tmp111_ = NULL;
2759 	GtkVBox* metadata_vbox;
2760 	GtkHSeparator* _tmp112_ = NULL;
2761 	GtkHSeparator* sep;
2762 	GtkHSeparator* _tmp113_ = NULL;
2763 	GError * _inner_error_ = NULL;
2764 	g_return_val_if_fail (self != NULL, NULL);
2765 	g_return_val_if_fail (song != NULL, NULL);
2766 	_data7_ = g_slice_new0 (Block7Data);
2767 	_data7_->_ref_count_ = 1;
2768 	_data7_->self = g_object_ref (self);
2769 	_data7_->song = _mpd_songDup0 (song);
2770 	_tmp0_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
2771 	master_box = g_object_ref_sink (_tmp0_);
2772 	_tmp1_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
2773 	vbox = g_object_ref_sink (_tmp1_);
2774 	gtk_container_set_border_width ((GtkContainer*) vbox, (guint) 8);
2775 	gmpc_browsers_metadata_history_bc_header (self, GMPC_BROWSERS_METADATA_HITEM_TYPE_SONG, _data7_->song->artist, _data7_->song->album, _data7_->song->title);
2776 	_tmp2_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
2777 	hbox = g_object_ref_sink (_tmp2_);
2778 	_tmp3_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.f, 0.f, 0.f);
2779 	ali = g_object_ref_sink (_tmp3_);
2780 	meta_size = (gint) (((GtkWidget*) self->priv->metadata_box)->allocation.width * 0.20);
2781 	_tmp4_ = MIN (meta_size, (gint) (((GtkWidget*) self->priv->metadata_sw)->allocation.height * 0.30));
2782 	meta_size = _tmp4_;
2783 	_tmp5_ = MAX (100, meta_size);
2784 	_tmp6_ = MIN (_tmp5_, 250);
2785 	meta_size = _tmp6_;
2786 	_tmp7_ = gmpc_metaimage_new_size (META_ALBUM_ART, meta_size);
2787 	album_image = g_object_ref_sink (_tmp7_);
2788 	gmpc_metaimage_set_scale_up (album_image, TRUE);
2789 	gmpc_metaimage_set_squared (album_image, FALSE);
2790 	gtk_container_add ((GtkContainer*) ali, (GtkWidget*) album_image);
2791 	gmpc_metaimage_update_cover_from_song (album_image, _data7_->song);
2792 	gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
2793 	_tmp8_ = (GtkAlignment*) gtk_alignment_new (1.f, 0.f, 0.f, 0.f);
2794 	_g_object_unref0 (ali);
2795 	ali = g_object_ref_sink (_tmp8_);
2796 	_tmp9_ = gmpc_metaimage_new_size (META_ARTIST_ART, meta_size);
2797 	artist_image = g_object_ref_sink (_tmp9_);
2798 	gmpc_metaimage_set_no_cover_icon (artist_image, "no-artist");
2799 	gmpc_metaimage_set_loading_cover_icon (artist_image, "fetching-artist");
2800 	gmpc_metaimage_set_scale_up (artist_image, TRUE);
2801 	gmpc_metaimage_set_hide_on_na (artist_image, TRUE);
2802 	gmpc_metaimage_set_squared (artist_image, FALSE);
2803 	gmpc_metaimage_update_cover_from_song (artist_image, _data7_->song);
2804 	gtk_container_add ((GtkContainer*) ali, (GtkWidget*) artist_image);
2805 	gtk_box_pack_end ((GtkBox*) hbox, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
2806 	_tmp10_ = (GtkTable*) gtk_table_new ((guint) 4, (guint) 2, FALSE);
2807 	info_box = g_object_ref_sink (_tmp10_);
2808 	gtk_table_set_row_spacings (info_box, (guint) 3);
2809 	gtk_table_set_col_spacings (info_box, (guint) 8);
2810 	i = 0;
2811 	if (_data7_->song->title != NULL) {
2812 		GtkHBox* _tmp11_ = NULL;
2813 		GtkHBox* box;
2814 		gint _tmp12_;
2815 		GtkLabel* _tmp15_ = NULL;
2816 		GtkLabel* label;
2817 		gchar* _tmp16_ = NULL;
2818 		gchar* _tmp17_;
2819 		_tmp11_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
2820 		box = g_object_ref_sink (_tmp11_);
2821 		_tmp12_ = cfg_get_single_value_as_int_with_default (config, "Interface", "hide-favorites-icon", 0);
2822 		if (_tmp12_ == 0) {
2823 			GmpcFavoritesButton* _tmp13_ = NULL;
2824 			GmpcFavoritesButton* fav_button;
2825 			GtkAlignment* _tmp14_ = NULL;
2826 			_tmp13_ = gmpc_favorites_button_new ();
2827 			fav_button = g_object_ref_sink (_tmp13_);
2828 			gmpc_favorites_button_set_song (fav_button, _data7_->song);
2829 			_tmp14_ = (GtkAlignment*) gtk_alignment_new (0.0f, 0.5f, 0.f, 0.f);
2830 			_g_object_unref0 (ali);
2831 			ali = g_object_ref_sink (_tmp14_);
2832 			gtk_container_add ((GtkContainer*) ali, (GtkWidget*) fav_button);
2833 			gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
2834 			_g_object_unref0 (fav_button);
2835 		}
2836 		_tmp15_ = (GtkLabel*) gtk_label_new (_data7_->song->title);
2837 		label = g_object_ref_sink (_tmp15_);
2838 		gtk_label_set_selectable (label, TRUE);
2839 		_tmp16_ = g_markup_printf_escaped ("<span color='%s' size='%i' weight='bold'>%s</span>", self->priv->title_color, PANGO_SCALE * 20, _data7_->song->title);
2840 		_tmp17_ = _tmp16_;
2841 		gtk_label_set_markup (label, _tmp17_);
2842 		_g_free0 (_tmp17_);
2843 		gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
2844 		gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
2845 		gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) label, TRUE, TRUE, (guint) 0);
2846 		gtk_table_attach (info_box, (GtkWidget*) box, (guint) 0, (guint) 2, (guint) i, (guint) (i + 1), GTK_FILL, GTK_FILL, (guint) 0, (guint) 0);
2847 		i++;
2848 		_g_object_unref0 (label);
2849 		_g_object_unref0 (box);
2850 	} else {
2851 		if (_data7_->song->name != NULL) {
2852 			GtkLabel* _tmp18_ = NULL;
2853 			GtkLabel* label;
2854 			gchar* _tmp19_ = NULL;
2855 			gchar* _tmp20_;
2856 			_tmp18_ = (GtkLabel*) gtk_label_new (_data7_->song->name);
2857 			label = g_object_ref_sink (_tmp18_);
2858 			gtk_label_set_selectable (label, TRUE);
2859 			_tmp19_ = g_markup_printf_escaped ("<span color='%s' size='%i' weight='bold'>%s</span>", self->priv->title_color, PANGO_SCALE * 20, _data7_->song->name);
2860 			_tmp20_ = _tmp19_;
2861 			gtk_label_set_markup (label, _tmp20_);
2862 			_g_free0 (_tmp20_);
2863 			gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
2864 			gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
2865 			gtk_table_attach (info_box, (GtkWidget*) label, (guint) 0, (guint) 2, (guint) i, (guint) (i + 1), GTK_FILL, GTK_FILL, (guint) 0, (guint) 0);
2866 			i++;
2867 			_g_object_unref0 (label);
2868 		} else {
2869 			if (_data7_->song->file != NULL) {
2870 				gchar* _tmp21_ = NULL;
2871 				gchar* filename;
2872 				GtkLabel* _tmp22_ = NULL;
2873 				GtkLabel* label;
2874 				GRegex* _tmp23_ = NULL;
2875 				GRegex* regex_a;
2876 				gchar* _tmp24_ = NULL;
2877 				gchar* _tmp25_;
2878 				GRegex* _tmp26_ = NULL;
2879 				GRegex* regex_b;
2880 				gchar* _tmp27_ = NULL;
2881 				gchar* _tmp28_;
2882 				gchar* _tmp29_ = NULL;
2883 				gchar* _tmp30_;
2884 				_tmp21_ = g_path_get_basename (_data7_->song->file);
2885 				filename = _tmp21_;
2886 				_tmp22_ = (GtkLabel*) gtk_label_new (_data7_->song->name);
2887 				label = g_object_ref_sink (_tmp22_);
2888 				gtk_label_set_selectable (label, TRUE);
2889 				_tmp23_ = g_regex_new ("\\.[0-9a-zA-Z]*$", 0, 0, &_inner_error_);
2890 				regex_a = _tmp23_;
2891 				if (_inner_error_ != NULL) {
2892 					if (_inner_error_->domain == G_REGEX_ERROR) {
2893 						goto __catch10_g_regex_error;
2894 					}
2895 					_g_object_unref0 (label);
2896 					_g_free0 (filename);
2897 					_g_object_unref0 (info_box);
2898 					_g_object_unref0 (artist_image);
2899 					_g_object_unref0 (album_image);
2900 					_g_object_unref0 (ali);
2901 					_g_object_unref0 (hbox);
2902 					_g_object_unref0 (vbox);
2903 					_g_object_unref0 (master_box);
2904 					block7_data_unref (_data7_);
2905 					_data7_ = NULL;
2906 					g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2907 					g_clear_error (&_inner_error_);
2908 					return NULL;
2909 				}
2910 				_tmp24_ = g_regex_replace_literal (regex_a, filename, (gssize) (-1), 0, "", 0, &_inner_error_);
2911 				_tmp25_ = _tmp24_;
2912 				if (_inner_error_ != NULL) {
2913 					_g_regex_unref0 (regex_a);
2914 					if (_inner_error_->domain == G_REGEX_ERROR) {
2915 						goto __catch10_g_regex_error;
2916 					}
2917 					_g_regex_unref0 (regex_a);
2918 					_g_object_unref0 (label);
2919 					_g_free0 (filename);
2920 					_g_object_unref0 (info_box);
2921 					_g_object_unref0 (artist_image);
2922 					_g_object_unref0 (album_image);
2923 					_g_object_unref0 (ali);
2924 					_g_object_unref0 (hbox);
2925 					_g_object_unref0 (vbox);
2926 					_g_object_unref0 (master_box);
2927 					block7_data_unref (_data7_);
2928 					_data7_ = NULL;
2929 					g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2930 					g_clear_error (&_inner_error_);
2931 					return NULL;
2932 				}
2933 				_g_free0 (filename);
2934 				filename = _tmp25_;
2935 				_g_regex_unref0 (regex_a);
2936 				goto __finally10;
2937 				__catch10_g_regex_error:
2938 				{
2939 					GError * e;
2940 					e = _inner_error_;
2941 					_inner_error_ = NULL;
2942 					g_error ("gmpc-metadata-browser2.vala:1042: %s", e->message);
2943 					_g_error_free0 (e);
2944 				}
2945 				__finally10:
2946 				if (_inner_error_ != NULL) {
2947 					_g_object_unref0 (label);
2948 					_g_free0 (filename);
2949 					_g_object_unref0 (info_box);
2950 					_g_object_unref0 (artist_image);
2951 					_g_object_unref0 (album_image);
2952 					_g_object_unref0 (ali);
2953 					_g_object_unref0 (hbox);
2954 					_g_object_unref0 (vbox);
2955 					_g_object_unref0 (master_box);
2956 					block7_data_unref (_data7_);
2957 					_data7_ = NULL;
2958 					g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2959 					g_clear_error (&_inner_error_);
2960 					return NULL;
2961 				}
2962 				_tmp26_ = g_regex_new ("_", 0, 0, &_inner_error_);
2963 				regex_b = _tmp26_;
2964 				if (_inner_error_ != NULL) {
2965 					if (_inner_error_->domain == G_REGEX_ERROR) {
2966 						goto __catch11_g_regex_error;
2967 					}
2968 					_g_object_unref0 (label);
2969 					_g_free0 (filename);
2970 					_g_object_unref0 (info_box);
2971 					_g_object_unref0 (artist_image);
2972 					_g_object_unref0 (album_image);
2973 					_g_object_unref0 (ali);
2974 					_g_object_unref0 (hbox);
2975 					_g_object_unref0 (vbox);
2976 					_g_object_unref0 (master_box);
2977 					block7_data_unref (_data7_);
2978 					_data7_ = NULL;
2979 					g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2980 					g_clear_error (&_inner_error_);
2981 					return NULL;
2982 				}
2983 				_tmp27_ = g_regex_replace_literal (regex_b, filename, (gssize) (-1), 0, " ", 0, &_inner_error_);
2984 				_tmp28_ = _tmp27_;
2985 				if (_inner_error_ != NULL) {
2986 					_g_regex_unref0 (regex_b);
2987 					if (_inner_error_->domain == G_REGEX_ERROR) {
2988 						goto __catch11_g_regex_error;
2989 					}
2990 					_g_regex_unref0 (regex_b);
2991 					_g_object_unref0 (label);
2992 					_g_free0 (filename);
2993 					_g_object_unref0 (info_box);
2994 					_g_object_unref0 (artist_image);
2995 					_g_object_unref0 (album_image);
2996 					_g_object_unref0 (ali);
2997 					_g_object_unref0 (hbox);
2998 					_g_object_unref0 (vbox);
2999 					_g_object_unref0 (master_box);
3000 					block7_data_unref (_data7_);
3001 					_data7_ = NULL;
3002 					g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
3003 					g_clear_error (&_inner_error_);
3004 					return NULL;
3005 				}
3006 				_g_free0 (filename);
3007 				filename = _tmp28_;
3008 				_g_regex_unref0 (regex_b);
3009 				goto __finally11;
3010 				__catch11_g_regex_error:
3011 				{
3012 					GError * e;
3013 					e = _inner_error_;
3014 					_inner_error_ = NULL;
3015 					g_error ("gmpc-metadata-browser2.vala:1048: %s", e->message);
3016 					_g_error_free0 (e);
3017 				}
3018 				__finally11:
3019 				if (_inner_error_ != NULL) {
3020 					_g_object_unref0 (label);
3021 					_g_free0 (filename);
3022 					_g_object_unref0 (info_box);
3023 					_g_object_unref0 (artist_image);
3024 					_g_object_unref0 (album_image);
3025 					_g_object_unref0 (ali);
3026 					_g_object_unref0 (hbox);
3027 					_g_object_unref0 (vbox);
3028 					_g_object_unref0 (master_box);
3029 					block7_data_unref (_data7_);
3030 					_data7_ = NULL;
3031 					g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
3032 					g_clear_error (&_inner_error_);
3033 					return NULL;
3034 				}
3035 				_tmp29_ = g_markup_printf_escaped ("<span color='%s' size='%i' weight='bold'>%s</span>", self->priv->title_color, PANGO_SCALE * 20, filename);
3036 				_tmp30_ = _tmp29_;
3037 				gtk_label_set_markup (label, _tmp30_);
3038 				_g_free0 (_tmp30_);
3039 				gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
3040 				gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
3041 				gtk_table_attach (info_box, (GtkWidget*) label, (guint) 0, (guint) 2, (guint) i, (guint) (i + 1), GTK_FILL, GTK_FILL, (guint) 0, (guint) 0);
3042 				i++;
3043 				_g_object_unref0 (label);
3044 				_g_free0 (filename);
3045 			}
3046 		}
3047 	}
3048 	if (_data7_->song->artist != NULL) {
3049 		const gchar* _tmp31_ = NULL;
3050 		_tmp31_ = _ ("Artist");
3051 		gmpc_browsers_metadata_add_entry (self, info_box, _tmp31_, _data7_->song->artist, NULL, &i, "media-artist");
3052 	}
3053 	if (_data7_->song->album != NULL) {
3054 		const gchar* _tmp32_ = NULL;
3055 		_tmp32_ = _ ("Album");
3056 		gmpc_browsers_metadata_add_entry (self, info_box, _tmp32_, _data7_->song->album, NULL, &i, "media-album");
3057 	}
3058 	if (_data7_->song->genre != NULL) {
3059 		const gchar* _tmp33_ = NULL;
3060 		_tmp33_ = _ ("Genre");
3061 		gmpc_browsers_metadata_add_entry (self, info_box, _tmp33_, _data7_->song->genre, NULL, &i, "media-genre");
3062 	}
3063 	if (_data7_->song->date != NULL) {
3064 		const gchar* _tmp34_ = NULL;
3065 		_tmp34_ = _ ("Date");
3066 		gmpc_browsers_metadata_add_entry (self, info_box, _tmp34_, _data7_->song->date, NULL, &i, "media-date");
3067 	}
3068 	if (_data7_->song->file != NULL) {
3069 		gchar* extension;
3070 		gchar* _tmp35_ = NULL;
3071 		gchar* _tmp37_ = NULL;
3072 		gchar* directory;
3073 		extension = NULL;
3074 		_tmp35_ = gmpc_browsers_metadata_get_extension (self, _data7_->song->file);
3075 		_g_free0 (extension);
3076 		extension = _tmp35_;
3077 		if (extension != NULL) {
3078 			const gchar* _tmp36_ = NULL;
3079 			_tmp36_ = _ ("Codec");
3080 			gmpc_browsers_metadata_add_entry (self, info_box, _tmp36_, extension, NULL, &i, "media-codec");
3081 		}
3082 		_tmp37_ = g_path_get_dirname (_data7_->song->file);
3083 		directory = _tmp37_;
3084 		if (directory != NULL) {
3085 			const gchar* _tmp38_ = NULL;
3086 			_tmp38_ = _ ("Directory");
3087 			gmpc_browsers_metadata_add_entry (self, info_box, _tmp38_, directory, NULL, &i, "gtk-open");
3088 		}
3089 		_g_free0 (directory);
3090 		_g_free0 (extension);
3091 	}
3092 	if (_data7_->song->time > 0) {
3093 		const gchar* _tmp39_ = NULL;
3094 		gchar* _tmp40_ = NULL;
3095 		gchar* _tmp41_;
3096 		_tmp39_ = _ ("Length");
3097 		_tmp40_ = format_time_real ((gulong) _data7_->song->time, "");
3098 		_tmp41_ = _tmp40_;
3099 		gmpc_browsers_metadata_add_entry (self, info_box, _tmp39_, _tmp41_, NULL, &i, "media-track-length");
3100 		_g_free0 (_tmp41_);
3101 	}
3102 	if (_data7_->song->track != NULL) {
3103 		GtkLabel* _tmp42_ = NULL;
3104 		GtkLabel* label;
3105 		gchar* _tmp43_ = NULL;
3106 		gchar* _tmp46_ = NULL;
3107 		gchar* _tmp47_;
3108 		const gchar* _tmp48_ = NULL;
3109 		_tmp42_ = (GtkLabel*) gtk_label_new ("");
3110 		label = g_object_ref_sink (_tmp42_);
3111 		gtk_label_set_selectable (label, TRUE);
3112 		gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
3113 		if (_data7_->song->disc != NULL) {
3114 			gchar* _tmp44_ = NULL;
3115 			_tmp44_ = g_strdup_printf ("[%s]", _data7_->song->disc);
3116 			_g_free0 (_tmp43_);
3117 			_tmp43_ = _tmp44_;
3118 		} else {
3119 			gchar* _tmp45_;
3120 			_tmp45_ = g_strdup ("");
3121 			_g_free0 (_tmp43_);
3122 			_tmp43_ = _tmp45_;
3123 		}
3124 		_tmp46_ = g_markup_printf_escaped ("%s %s", _data7_->song->track, _tmp43_);
3125 		_tmp47_ = _tmp46_;
3126 		gtk_label_set_markup (label, _tmp47_);
3127 		_g_free0 (_tmp47_);
3128 		gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
3129 		_tmp48_ = _ ("Track");
3130 		gmpc_browsers_metadata_add_entry (self, info_box, _tmp48_, NULL, (GtkWidget*) label, &i, "media-num-tracks");
3131 		_g_free0 (_tmp43_);
3132 		_g_object_unref0 (label);
3133 	}
3134 	_tmp49_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
3135 	control_hbox = g_object_ref_sink (_tmp49_);
3136 	_tmp50_ = (GtkButton*) gtk_button_new_from_stock ("gtk-add");
3137 	abutton = g_object_ref_sink (_tmp50_);
3138 	_tmp51_ = _ ("Add the item to the play queue");
3139 	gtk_widget_set_tooltip_text ((GtkWidget*) abutton, _tmp51_);
3140 	g_value_init (&_tmp52_, G_TYPE_FLOAT);
3141 	g_value_set_float (&_tmp52_, 0.0f);
3142 	g_object_set_property ((GObject*) abutton, "xalign", &_tmp52_);
3143 	G_IS_VALUE (&_tmp52_) ? (g_value_unset (&_tmp52_), NULL) : NULL;
3144 	gtk_button_set_relief (abutton, GTK_RELIEF_NONE);
3145 	g_signal_connect_object (abutton, "clicked", (GCallback) _gmpc_browsers_metadata_add_selected_song_gtk_button_clicked, self, 0);
3146 	gtk_box_pack_start ((GtkBox*) control_hbox, (GtkWidget*) abutton, FALSE, FALSE, (guint) 0);
3147 	_tmp53_ = _ ("_Clear and play");
3148 	_tmp54_ = (GtkButton*) gtk_button_new_with_mnemonic (_tmp53_);
3149 	_g_object_unref0 (abutton);
3150 	abutton = g_object_ref_sink (_tmp54_);
3151 	_tmp55_ = _ ("Replace the current play queue with this item");
3152 	gtk_widget_set_tooltip_text ((GtkWidget*) abutton, _tmp55_);
3153 	g_value_init (&_tmp56_, G_TYPE_FLOAT);
3154 	g_value_set_float (&_tmp56_, 0.0f);
3155 	g_object_set_property ((GObject*) abutton, "xalign", &_tmp56_);
3156 	G_IS_VALUE (&_tmp56_) ? (g_value_unset (&_tmp56_), NULL) : NULL;
3157 	_tmp57_ = (GtkImage*) gtk_image_new_from_stock ("gtk-redo", GTK_ICON_SIZE_BUTTON);
3158 	_tmp58_ = g_object_ref_sink (_tmp57_);
3159 	gtk_button_set_image (abutton, (GtkWidget*) _tmp58_);
3160 	_g_object_unref0 (_tmp58_);
3161 	gtk_button_set_relief (abutton, GTK_RELIEF_NONE);
3162 	g_signal_connect_object (abutton, "clicked", (GCallback) _gmpc_browsers_metadata_replace_selected_song_gtk_button_clicked, self, 0);
3163 	gtk_box_pack_start ((GtkBox*) control_hbox, (GtkWidget*) abutton, FALSE, FALSE, (guint) 0);
3164 	_tmp59_ = (GtkButton*) gtk_button_new_from_stock ("gtk-media-play");
3165 	_g_object_unref0 (abutton);
3166 	abutton = g_object_ref_sink (_tmp59_);
3167 	_tmp60_ = _ ("Play this song");
3168 	gtk_widget_set_tooltip_text ((GtkWidget*) abutton, _tmp60_);
3169 	g_value_init (&_tmp61_, G_TYPE_FLOAT);
3170 	g_value_set_float (&_tmp61_, 0.0f);
3171 	g_object_set_property ((GObject*) abutton, "xalign", &_tmp61_);
3172 	G_IS_VALUE (&_tmp61_) ? (g_value_unset (&_tmp61_), NULL) : NULL;
3173 	gtk_button_set_relief (abutton, GTK_RELIEF_NONE);
3174 	g_signal_connect_object (abutton, "clicked", (GCallback) _gmpc_browsers_metadata_play_selected_song_gtk_button_clicked, self, 0);
3175 	gtk_box_pack_start ((GtkBox*) control_hbox, (GtkWidget*) abutton, FALSE, FALSE, (guint) 0);
3176 	i++;
3177 	gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) info_box, TRUE, TRUE, (guint) 0);
3178 	gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) control_hbox, FALSE, FALSE, (guint) 0);
3179 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) hbox, FALSE, FALSE, (guint) 0);
3180 	_tmp62_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
3181 	hboxje = g_object_ref_sink (_tmp62_);
3182 	_tmp63_ = (GtkNotebook*) gtk_notebook_new ();
3183 	_data7_->notebook = g_object_ref_sink (_tmp63_);
3184 	gtk_notebook_set_show_border (_data7_->notebook, FALSE);
3185 	gtk_notebook_set_show_tabs (_data7_->notebook, FALSE);
3186 	i = 0;
3187 	group = NULL;
3188 	_tmp64_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-lyrics", 1);
3189 	if (_tmp64_ == 1) {
3190 		Block8Data* _data8_;
3191 		GtkAlignment* _tmp65_ = NULL;
3192 		GtkAlignment* alib;
3193 		GmpcMetaTextView* _tmp66_ = NULL;
3194 		GmpcMetaTextView* text_view;
3195 		GtkLabel* _tmp67_ = NULL;
3196 		GtkLabel* _tmp68_;
3197 		GtkRadioButton* _tmp69_ = NULL;
3198 		GtkRadioButton* button;
3199 		GSList* _tmp70_ = NULL;
3200 		_data8_ = g_slice_new0 (Block8Data);
3201 		_data8_->_ref_count_ = 1;
3202 		_data8_->_data7_ = block7_data_ref (_data7_);
3203 		_tmp65_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.f, 1.f, 0.f);
3204 		alib = g_object_ref_sink (_tmp65_);
3205 		_tmp66_ = gmpc_meta_text_view_new (META_SONG_TXT);
3206 		text_view = g_object_ref_sink (_tmp66_);
3207 		gtk_text_view_set_left_margin ((GtkTextView*) text_view, 8);
3208 		gmpc_meta_text_view_query_text_from_song (text_view, _data7_->song);
3209 		gtk_container_add ((GtkContainer*) alib, (GtkWidget*) text_view);
3210 		_tmp67_ = (GtkLabel*) gtk_label_new ("Lyrics");
3211 		_tmp68_ = g_object_ref_sink (_tmp67_);
3212 		gtk_notebook_append_page (_data7_->notebook, (GtkWidget*) alib, (GtkWidget*) _tmp68_);
3213 		_g_object_unref0 (_tmp68_);
3214 		_tmp69_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, "Lyrics");
3215 		button = g_object_ref_sink (_tmp69_);
3216 		_tmp70_ = gtk_radio_button_get_group (button);
3217 		group = _tmp70_;
3218 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) button, FALSE, FALSE, (guint) 0);
3219 		_data8_->j = i;
3220 		g_signal_connect_data ((GtkButton*) button, "clicked", (GCallback) __lambda40__gtk_button_clicked, block8_data_ref (_data8_), (GClosureNotify) block8_data_unref, 0);
3221 		i++;
3222 		gtk_widget_show ((GtkWidget*) alib);
3223 		_g_object_unref0 (button);
3224 		_g_object_unref0 (text_view);
3225 		_g_object_unref0 (alib);
3226 		block8_data_unref (_data8_);
3227 		_data8_ = NULL;
3228 	}
3229 	_tmp71_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-guitar-tabs", 1);
3230 	if (_tmp71_ == 1) {
3231 		Block9Data* _data9_;
3232 		GtkAlignment* _tmp72_ = NULL;
3233 		GtkAlignment* alib;
3234 		GmpcMetaTextView* _tmp73_ = NULL;
3235 		const gchar* _tmp74_ = NULL;
3236 		GtkLabel* _tmp75_ = NULL;
3237 		GtkLabel* _tmp76_;
3238 		const gchar* _tmp77_ = NULL;
3239 		GtkRadioButton* _tmp78_ = NULL;
3240 		GtkRadioButton* button;
3241 		GSList* _tmp79_ = NULL;
3242 		_data9_ = g_slice_new0 (Block9Data);
3243 		_data9_->_ref_count_ = 1;
3244 		_data9_->_data7_ = block7_data_ref (_data7_);
3245 		_tmp72_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.f, 1.f, 0.f);
3246 		alib = g_object_ref_sink (_tmp72_);
3247 		_tmp73_ = gmpc_meta_text_view_new (META_SONG_GUITAR_TAB);
3248 		_data9_->text_view = g_object_ref_sink (_tmp73_);
3249 		_data9_->text_view->use_monospace = TRUE;
3250 		gtk_text_view_set_left_margin ((GtkTextView*) _data9_->text_view, 8);
3251 		_data9_->text_view_queried = FALSE;
3252 		gtk_container_add ((GtkContainer*) alib, (GtkWidget*) _data9_->text_view);
3253 		_tmp74_ = _ ("Guitar Tabs");
3254 		_tmp75_ = (GtkLabel*) gtk_label_new (_tmp74_);
3255 		_tmp76_ = g_object_ref_sink (_tmp75_);
3256 		gtk_notebook_append_page (_data7_->notebook, (GtkWidget*) alib, (GtkWidget*) _tmp76_);
3257 		_g_object_unref0 (_tmp76_);
3258 		_tmp77_ = _ ("Guitar Tabs");
3259 		_tmp78_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp77_);
3260 		button = g_object_ref_sink (_tmp78_);
3261 		_tmp79_ = gtk_radio_button_get_group (button);
3262 		group = _tmp79_;
3263 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) button, FALSE, FALSE, (guint) 0);
3264 		_data9_->j = i;
3265 		g_signal_connect_data ((GtkButton*) button, "clicked", (GCallback) __lambda41__gtk_button_clicked, block9_data_ref (_data9_), (GClosureNotify) block9_data_unref, 0);
3266 		if (i == 0) {
3267 			gmpc_meta_text_view_query_text_from_song (_data9_->text_view, _data7_->song);
3268 			_data9_->text_view_queried = TRUE;
3269 		}
3270 		gtk_widget_show ((GtkWidget*) alib);
3271 		i++;
3272 		_g_object_unref0 (button);
3273 		_g_object_unref0 (alib);
3274 		block9_data_unref (_data9_);
3275 		_data9_ = NULL;
3276 	}
3277 	_tmp80_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-similar-songs", 1);
3278 	if (_tmp80_ == 1) {
3279 		Block10Data* _data10_;
3280 		GtkAlignment* _tmp81_ = NULL;
3281 		const gchar* _tmp82_ = NULL;
3282 		GtkLabel* _tmp83_ = NULL;
3283 		GtkLabel* _tmp84_;
3284 		const gchar* _tmp85_ = NULL;
3285 		GtkRadioButton* _tmp86_ = NULL;
3286 		GtkRadioButton* button;
3287 		GSList* _tmp87_ = NULL;
3288 		_data10_ = g_slice_new0 (Block10Data);
3289 		_data10_->_ref_count_ = 1;
3290 		_data10_->_data7_ = block7_data_ref (_data7_);
3291 		_data10_->similar_songs_queried = FALSE;
3292 		_tmp81_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.f, 0.f, 0.f);
3293 		_data10_->similar_songs_box = g_object_ref_sink (_tmp81_);
3294 		_tmp82_ = _ ("Similar Songs");
3295 		_tmp83_ = (GtkLabel*) gtk_label_new (_tmp82_);
3296 		_tmp84_ = g_object_ref_sink (_tmp83_);
3297 		gtk_notebook_append_page (_data7_->notebook, (GtkWidget*) _data10_->similar_songs_box, (GtkWidget*) _tmp84_);
3298 		_g_object_unref0 (_tmp84_);
3299 		_tmp85_ = _ ("Similar Songs");
3300 		_tmp86_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp85_);
3301 		button = g_object_ref_sink (_tmp86_);
3302 		_tmp87_ = gtk_radio_button_get_group (button);
3303 		group = _tmp87_;
3304 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) button, FALSE, FALSE, (guint) 0);
3305 		_data10_->j = i;
3306 		g_signal_connect_data ((GtkButton*) button, "clicked", (GCallback) __lambda42__gtk_button_clicked, block10_data_ref (_data10_), (GClosureNotify) block10_data_unref, 0);
3307 		if (i == 0) {
3308 			GmpcMetaDataWidgetsSimilarSongs* _tmp88_ = NULL;
3309 			GmpcMetaDataWidgetsSimilarSongs* similar_songs;
3310 			_tmp88_ = gmpc_meta_data_widgets_similar_songs_new (_data7_->song);
3311 			similar_songs = g_object_ref_sink (_tmp88_);
3312 			gmpc_meta_data_widgets_similar_songs_update (similar_songs);
3313 			_data10_->similar_songs_queried = TRUE;
3314 			gtk_container_add ((GtkContainer*) _data10_->similar_songs_box, (GtkWidget*) similar_songs);
3315 			gtk_widget_show_all ((GtkWidget*) _data10_->similar_songs_box);
3316 			_g_object_unref0 (similar_songs);
3317 		}
3318 		gtk_widget_show ((GtkWidget*) _data10_->similar_songs_box);
3319 		i++;
3320 		_g_object_unref0 (button);
3321 		block10_data_unref (_data10_);
3322 		_data10_ = NULL;
3323 	}
3324 	_tmp90_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-similar-artist", 1);
3325 	if (_tmp90_ == 1) {
3326 		_tmp89_ = _data7_->song->artist != NULL;
3327 	} else {
3328 		_tmp89_ = FALSE;
3329 	}
3330 	if (_tmp89_) {
3331 		Block11Data* _data11_;
3332 		GmpcMetaDataWidgetsSimilarArtists* _tmp91_ = NULL;
3333 		const gchar* _tmp92_ = NULL;
3334 		GtkLabel* _tmp93_ = NULL;
3335 		GtkLabel* _tmp94_;
3336 		const gchar* _tmp95_ = NULL;
3337 		GtkRadioButton* _tmp96_ = NULL;
3338 		GtkRadioButton* button;
3339 		GSList* _tmp97_ = NULL;
3340 		_data11_ = g_slice_new0 (Block11Data);
3341 		_data11_->_ref_count_ = 1;
3342 		_data11_->_data7_ = block7_data_ref (_data7_);
3343 		_tmp91_ = gmpc_meta_data_widgets_similar_artists_new (connection, _data7_->song);
3344 		_data11_->similar_artist = g_object_ref_sink (_tmp91_);
3345 		_tmp92_ = _ ("Similar Artist");
3346 		_tmp93_ = (GtkLabel*) gtk_label_new (_tmp92_);
3347 		_tmp94_ = g_object_ref_sink (_tmp93_);
3348 		gtk_notebook_append_page (_data7_->notebook, (GtkWidget*) _data11_->similar_artist, (GtkWidget*) _tmp94_);
3349 		_g_object_unref0 (_tmp94_);
3350 		_tmp95_ = _ ("Similar Artist");
3351 		_tmp96_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp95_);
3352 		button = g_object_ref_sink (_tmp96_);
3353 		_tmp97_ = gtk_radio_button_get_group (button);
3354 		group = _tmp97_;
3355 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) button, FALSE, FALSE, (guint) 0);
3356 		_data11_->j = i;
3357 		g_signal_connect_data ((GtkButton*) button, "clicked", (GCallback) __lambda43__gtk_button_clicked, block11_data_ref (_data11_), (GClosureNotify) block11_data_unref, 0);
3358 		gtk_widget_show ((GtkWidget*) _data11_->similar_artist);
3359 		i++;
3360 		_g_object_unref0 (button);
3361 		block11_data_unref (_data11_);
3362 		_data11_ = NULL;
3363 	}
3364 	_tmp98_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-web-links", 1);
3365 	if (_tmp98_ == 1) {
3366 		Block12Data* _data12_;
3367 		GmpcMetaDataWidgetsSongLinks* _tmp99_ = NULL;
3368 		GmpcMetaDataWidgetsSongLinks* song_links;
3369 		const gchar* _tmp100_ = NULL;
3370 		GtkLabel* _tmp101_ = NULL;
3371 		GtkLabel* _tmp102_;
3372 		const gchar* _tmp103_ = NULL;
3373 		GtkRadioButton* _tmp104_ = NULL;
3374 		GtkRadioButton* button;
3375 		GSList* _tmp105_ = NULL;
3376 		_data12_ = g_slice_new0 (Block12Data);
3377 		_data12_->_ref_count_ = 1;
3378 		_data12_->_data7_ = block7_data_ref (_data7_);
3379 		_tmp99_ = gmpc_meta_data_widgets_song_links_new (GMPC_META_DATA_WIDGETS_SONG_LINKS_TYPE_SONG, _data7_->song);
3380 		song_links = g_object_ref_sink (_tmp99_);
3381 		_tmp100_ = _ ("Web Links");
3382 		_tmp101_ = (GtkLabel*) gtk_label_new (_tmp100_);
3383 		_tmp102_ = g_object_ref_sink (_tmp101_);
3384 		gtk_notebook_append_page (_data7_->notebook, (GtkWidget*) song_links, (GtkWidget*) _tmp102_);
3385 		_g_object_unref0 (_tmp102_);
3386 		_tmp103_ = _ ("Web Links");
3387 		_tmp104_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp103_);
3388 		button = g_object_ref_sink (_tmp104_);
3389 		_tmp105_ = gtk_radio_button_get_group (button);
3390 		group = _tmp105_;
3391 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) button, FALSE, FALSE, (guint) 0);
3392 		_data12_->j = i;
3393 		g_signal_connect_data ((GtkButton*) button, "clicked", (GCallback) __lambda44__gtk_button_clicked, block12_data_ref (_data12_), (GClosureNotify) block12_data_unref, 0);
3394 		gtk_widget_show ((GtkWidget*) song_links);
3395 		i++;
3396 		_g_object_unref0 (button);
3397 		_g_object_unref0 (song_links);
3398 		block12_data_unref (_data12_);
3399 		_data12_ = NULL;
3400 	}
3401 	g_signal_connect_data ((GObject*) _data7_->notebook, "notify::page", (GCallback) __lambda45__g_object_notify, block7_data_ref (_data7_), (GClosureNotify) block7_data_unref, 0);
3402 	if (i > 0) {
3403 		gint _tmp106_;
3404 		gint page;
3405 		_tmp106_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "song-last-page", 0);
3406 		page = _tmp106_;
3407 		if (page > i) {
3408 			gtk_notebook_set_current_page (_data7_->notebook, 0);
3409 		} else {
3410 			gconstpointer _tmp107_ = NULL;
3411 			GtkRadioButton* _tmp108_;
3412 			GtkRadioButton* w;
3413 			_tmp107_ = g_slist_nth_data (group, (guint) ((i - page) - 1));
3414 			_tmp108_ = _g_object_ref0 ((GtkRadioButton*) _tmp107_);
3415 			w = _tmp108_;
3416 			gtk_toggle_button_set_active ((GtkToggleButton*) w, TRUE);
3417 			gtk_notebook_set_current_page (_data7_->notebook, page);
3418 			_g_object_unref0 (w);
3419 		}
3420 	}
3421 	_tmp109_ = (GtkAlignment*) gtk_alignment_new (0.0f, 0.5f, 0.f, 0.f);
3422 	_g_object_unref0 (ali);
3423 	ali = g_object_ref_sink (_tmp109_);
3424 	gtk_container_add ((GtkContainer*) ali, (GtkWidget*) hboxje);
3425 	_tmp110_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
3426 	bottom_hbox = g_object_ref_sink (_tmp110_);
3427 	_tmp111_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
3428 	metadata_vbox = g_object_ref_sink (_tmp111_);
3429 	_tmp112_ = (GtkHSeparator*) gtk_hseparator_new ();
3430 	sep = g_object_ref_sink (_tmp112_);
3431 	gtk_widget_set_size_request ((GtkWidget*) sep, -1, 1);
3432 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) sep, FALSE, FALSE, (guint) 0);
3433 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
3434 	_tmp113_ = (GtkHSeparator*) gtk_hseparator_new ();
3435 	_g_object_unref0 (sep);
3436 	sep = g_object_ref_sink (_tmp113_);
3437 	gtk_widget_set_size_request ((GtkWidget*) sep, -1, 1);
3438 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) sep, FALSE, FALSE, (guint) 0);
3439 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) _data7_->notebook, FALSE, FALSE, (guint) 0);
3440 	gtk_box_pack_start ((GtkBox*) bottom_hbox, (GtkWidget*) metadata_vbox, TRUE, TRUE, (guint) 0);
3441 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) bottom_hbox, TRUE, TRUE, (guint) 0);
3442 	gtk_box_pack_start ((GtkBox*) master_box, (GtkWidget*) vbox, FALSE, FALSE, (guint) 0);
3443 	result = (GtkWidget*) master_box;
3444 	_g_object_unref0 (sep);
3445 	_g_object_unref0 (metadata_vbox);
3446 	_g_object_unref0 (bottom_hbox);
3447 	_g_object_unref0 (hboxje);
3448 	_g_object_unref0 (abutton);
3449 	_g_object_unref0 (control_hbox);
3450 	_g_object_unref0 (info_box);
3451 	_g_object_unref0 (artist_image);
3452 	_g_object_unref0 (album_image);
3453 	_g_object_unref0 (ali);
3454 	_g_object_unref0 (hbox);
3455 	_g_object_unref0 (vbox);
3456 	block7_data_unref (_data7_);
3457 	_data7_ = NULL;
3458 	return result;
3459 }
3460 
3461 
block13_data_ref(Block13Data * _data13_)3462 static Block13Data* block13_data_ref (Block13Data* _data13_) {
3463 	g_atomic_int_inc (&_data13_->_ref_count_);
3464 	return _data13_;
3465 }
3466 
3467 
block13_data_unref(Block13Data * _data13_)3468 static void block13_data_unref (Block13Data* _data13_) {
3469 	if (g_atomic_int_dec_and_test (&_data13_->_ref_count_)) {
3470 		_g_object_unref0 (_data13_->self);
3471 		_g_object_unref0 (_data13_->show_button);
3472 		_g_object_unref0 (_data13_->result_hbox);
3473 		g_slice_free (Block13Data, _data13_);
3474 	}
3475 }
3476 
3477 
_lambda68_(GtkEntry * source,GtkEntryIconPosition pos,GdkEvent * event,GmpcBrowsersMetadata * self)3478 static void _lambda68_ (GtkEntry* source, GtkEntryIconPosition pos, GdkEvent* event, GmpcBrowsersMetadata* self) {
3479 	g_return_if_fail (source != NULL);
3480 	g_return_if_fail (event != NULL);
3481 	gtk_entry_set_text (source, "");
3482 }
3483 
3484 
__lambda68__gtk_entry_icon_press(GtkEntry * _sender,GtkEntryIconPosition p0,GdkEvent * p1,gpointer self)3485 static void __lambda68__gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self) {
3486 	_lambda68_ (_sender, p0, p1, self);
3487 }
3488 
3489 
_lambda69_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)3490 static void _lambda69_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
3491 	g_return_if_fail (source != NULL);
3492 	g_return_if_fail (song != NULL);
3493 	if (song->artist != NULL) {
3494 		gmpc_browsers_metadata_set_artist (self, song->artist);
3495 	}
3496 }
3497 
3498 
__lambda69__gmpc_widgets_songlist_artist_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)3499 static void __lambda69__gmpc_widgets_songlist_artist_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
3500 	_lambda69_ (_sender, song, self);
3501 }
3502 
3503 
_lambda70_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)3504 static void _lambda70_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
3505 	gboolean _tmp0_ = FALSE;
3506 	g_return_if_fail (source != NULL);
3507 	g_return_if_fail (song != NULL);
3508 	if (song->artist != NULL) {
3509 		_tmp0_ = song->album != NULL;
3510 	} else {
3511 		_tmp0_ = FALSE;
3512 	}
3513 	if (_tmp0_) {
3514 		gmpc_browsers_metadata_set_album (self, song->artist, song->album);
3515 	}
3516 }
3517 
3518 
__lambda70__gmpc_widgets_songlist_album_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)3519 static void __lambda70__gmpc_widgets_songlist_album_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
3520 	_lambda70_ (_sender, song, self);
3521 }
3522 
3523 
_lambda71_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)3524 static void _lambda71_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
3525 	g_return_if_fail (source != NULL);
3526 	g_return_if_fail (song != NULL);
3527 	gmpc_browsers_metadata_set_song (self, song);
3528 }
3529 
3530 
__lambda71__gmpc_widgets_songlist_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)3531 static void __lambda71__gmpc_widgets_songlist_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
3532 	_lambda71_ (_sender, song, self);
3533 }
3534 
3535 
_lambda72_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)3536 static void _lambda72_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
3537 	g_return_if_fail (source != NULL);
3538 	g_return_if_fail (song != NULL);
3539 	if (song->file != NULL) {
3540 		play_path (song->file);
3541 	}
3542 }
3543 
3544 
__lambda72__gmpc_widgets_songlist_play_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)3545 static void __lambda72__gmpc_widgets_songlist_play_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
3546 	_lambda72_ (_sender, song, self);
3547 }
3548 
3549 
_lambda73_(GtkEntry * source,Block13Data * _data13_)3550 static void _lambda73_ (GtkEntry* source, Block13Data* _data13_) {
3551 	GmpcBrowsersMetadata * self;
3552 	const gchar* _tmp0_ = NULL;
3553 	gchar* _tmp1_;
3554 	gchar* value;
3555 	gchar* _tmp2_;
3556 	MpdData* _tmp3_ = NULL;
3557 	MpdData* list;
3558 	MpdData* _tmp4_;
3559 	self = _data13_->self;
3560 	g_return_if_fail (source != NULL);
3561 	_tmp0_ = gtk_entry_get_text (source);
3562 	_tmp1_ = g_strdup (_tmp0_);
3563 	value = _tmp1_;
3564 	_tmp2_ = g_strdup (value);
3565 	_g_free0 ((*((GmpcBrowsersMetadataHitem*) self->priv->current->data)).search_string);
3566 	(*((GmpcBrowsersMetadataHitem*) self->priv->current->data)).search_string = _tmp2_;
3567 	_tmp3_ = advanced_search (value, FALSE);
3568 	list = _tmp3_;
3569 	_tmp4_ = list;
3570 	list = NULL;
3571 	gmpc_widgets_songlist_set_from_data (_data13_->result_hbox, _tmp4_, TRUE, TRUE);
3572 	gtk_widget_show_all ((GtkWidget*) _data13_->result_hbox);
3573 	_mpd_data_free0 (list);
3574 	_g_free0 (value);
3575 }
3576 
3577 
__lambda73__gtk_entry_activate(GtkEntry * _sender,gpointer self)3578 static void __lambda73__gtk_entry_activate (GtkEntry* _sender, gpointer self) {
3579 	_lambda73_ (_sender, self);
3580 }
3581 
3582 
_lambda74_(GtkToggleButton * source,Block13Data * _data13_)3583 static void _lambda74_ (GtkToggleButton* source, Block13Data* _data13_) {
3584 	GmpcBrowsersMetadata * self;
3585 	gboolean _tmp0_;
3586 	gboolean state;
3587 	self = _data13_->self;
3588 	g_return_if_fail (source != NULL);
3589 	_tmp0_ = gtk_toggle_button_get_active (_data13_->show_button);
3590 	state = _tmp0_;
3591 	if (state == TRUE) {
3592 		const gchar* _tmp1_ = NULL;
3593 		gtk_widget_hide ((GtkWidget*) self->priv->browser_box);
3594 		_tmp1_ = _ ("Show sidebar");
3595 		gtk_button_set_label ((GtkButton*) _data13_->show_button, _tmp1_);
3596 	} else {
3597 		const gchar* _tmp2_ = NULL;
3598 		gtk_widget_show ((GtkWidget*) self->priv->browser_box);
3599 		_tmp2_ = _ ("Hide sidebar");
3600 		gtk_button_set_label ((GtkButton*) _data13_->show_button, _tmp2_);
3601 	}
3602 	cfg_set_single_value_as_int (config, "metadata browser", "show-browsers", (gint) (!state));
3603 }
3604 
3605 
__lambda74__gtk_toggle_button_toggled(GtkToggleButton * _sender,gpointer self)3606 static void __lambda74__gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) {
3607 	_lambda74_ (_sender, self);
3608 }
3609 
3610 
gmpc_browsers_metadata_metadata_box_show_base(GmpcBrowsersMetadata * self)3611 static void gmpc_browsers_metadata_metadata_box_show_base (GmpcBrowsersMetadata* self) {
3612 	Block13Data* _data13_;
3613 	GtkEntry* MetadataBoxShowBaseEntry;
3614 	GtkVBox* _tmp0_ = NULL;
3615 	GtkVBox* master_box;
3616 	GtkVBox* _tmp1_ = NULL;
3617 	GtkVBox* vbox;
3618 	GtkHBox* _tmp2_ = NULL;
3619 	GtkHBox* hbox;
3620 	GtkLabel* _tmp3_ = NULL;
3621 	GtkLabel* label;
3622 	const gchar* _tmp4_ = NULL;
3623 	GtkEntry* _tmp5_ = NULL;
3624 	GtkAccelGroup* _tmp6_ = NULL;
3625 	GmpcWidgetsSonglist* _tmp7_ = NULL;
3626 	const gchar* _tmp9_ = NULL;
3627 	GtkToggleButton* _tmp10_ = NULL;
3628 	gint _tmp11_;
3629 	GtkAlignment* _tmp13_ = NULL;
3630 	GtkAlignment* ali;
3631 	g_return_if_fail (self != NULL);
3632 	_data13_ = g_slice_new0 (Block13Data);
3633 	_data13_->_ref_count_ = 1;
3634 	_data13_->self = g_object_ref (self);
3635 	MetadataBoxShowBaseEntry = NULL;
3636 	_tmp0_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
3637 	master_box = g_object_ref_sink (_tmp0_);
3638 	_tmp1_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
3639 	vbox = g_object_ref_sink (_tmp1_);
3640 	gtk_container_set_border_width ((GtkContainer*) vbox, (guint) 8);
3641 	gmpc_browsers_metadata_history_bc_header (self, GMPC_BROWSERS_METADATA_HITEM_TYPE_BASE, NULL, NULL, NULL);
3642 	_tmp2_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
3643 	hbox = g_object_ref_sink (_tmp2_);
3644 	_tmp3_ = (GtkLabel*) gtk_label_new ("");
3645 	label = g_object_ref_sink (_tmp3_);
3646 	_tmp4_ = _ ("<b>Search:</b>");
3647 	gtk_label_set_markup (label, _tmp4_);
3648 	gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) label, FALSE, FALSE, (guint) 0);
3649 	_tmp5_ = (GtkEntry*) gtk_entry_new ();
3650 	_g_object_unref0 (MetadataBoxShowBaseEntry);
3651 	MetadataBoxShowBaseEntry = g_object_ref_sink (_tmp5_);
3652 	_tmp6_ = playlist3_get_accel_group ();
3653 	gtk_widget_add_accelerator ((GtkWidget*) MetadataBoxShowBaseEntry, "grab-focus", _tmp6_, (guint) 0x046, GDK_CONTROL_MASK, 0);
3654 	gtk_entry_set_icon_from_stock (MetadataBoxShowBaseEntry, GTK_ENTRY_ICON_SECONDARY, "gtk-clear");
3655 	g_signal_connect_object (MetadataBoxShowBaseEntry, "icon-press", (GCallback) __lambda68__gtk_entry_icon_press, self, 0);
3656 	gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) MetadataBoxShowBaseEntry, TRUE, TRUE, (guint) 0);
3657 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) hbox, FALSE, FALSE, (guint) 0);
3658 	_tmp7_ = gmpc_widgets_songlist_new ();
3659 	_data13_->result_hbox = g_object_ref_sink (_tmp7_);
3660 	g_signal_connect_object (_data13_->result_hbox, "artist-song-clicked", (GCallback) __lambda69__gmpc_widgets_songlist_artist_song_clicked, self, 0);
3661 	g_signal_connect_object (_data13_->result_hbox, "album-song-clicked", (GCallback) __lambda70__gmpc_widgets_songlist_album_song_clicked, self, 0);
3662 	g_signal_connect_object (_data13_->result_hbox, "song-clicked", (GCallback) __lambda71__gmpc_widgets_songlist_song_clicked, self, 0);
3663 	g_signal_connect_object (_data13_->result_hbox, "play-song-clicked", (GCallback) __lambda72__gmpc_widgets_songlist_play_song_clicked, self, 0);
3664 	g_signal_connect_data (MetadataBoxShowBaseEntry, "activate", (GCallback) __lambda73__gtk_entry_activate, block13_data_ref (_data13_), (GClosureNotify) block13_data_unref, 0);
3665 	gtk_widget_show ((GtkWidget*) _data13_->result_hbox);
3666 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) _data13_->result_hbox, FALSE, FALSE, (guint) 0);
3667 	if (self->priv->current != NULL) {
3668 		gboolean _tmp8_ = FALSE;
3669 		if ((*((GmpcBrowsersMetadataHitem*) self->priv->current->data)).type == GMPC_BROWSERS_METADATA_HITEM_TYPE_BASE) {
3670 			_tmp8_ = (*((GmpcBrowsersMetadataHitem*) self->priv->current->data)).search_string != NULL;
3671 		} else {
3672 			_tmp8_ = FALSE;
3673 		}
3674 		if (_tmp8_) {
3675 			gtk_entry_set_text (MetadataBoxShowBaseEntry, (*((GmpcBrowsersMetadataHitem*) self->priv->current->data)).search_string);
3676 			g_signal_emit_by_name (MetadataBoxShowBaseEntry, "activate");
3677 		}
3678 	}
3679 	_tmp9_ = _ ("Hide sidebar");
3680 	_tmp10_ = (GtkToggleButton*) gtk_toggle_button_new_with_label (_tmp9_);
3681 	_data13_->show_button = g_object_ref_sink (_tmp10_);
3682 	_tmp11_ = cfg_get_single_value_as_int_with_default (config, "metadata browser", "show-browsers", 1);
3683 	if (_tmp11_ == 0) {
3684 		const gchar* _tmp12_ = NULL;
3685 		_tmp12_ = _ ("Show sidebar");
3686 		gtk_button_set_label ((GtkButton*) _data13_->show_button, _tmp12_);
3687 		gtk_toggle_button_set_active (_data13_->show_button, TRUE);
3688 	}
3689 	g_signal_connect_data (_data13_->show_button, "toggled", (GCallback) __lambda74__gtk_toggle_button_toggled, block13_data_ref (_data13_), (GClosureNotify) block13_data_unref, 0);
3690 	_tmp13_ = (GtkAlignment*) gtk_alignment_new (0.0f, 0.5f, 0.f, 0.f);
3691 	ali = g_object_ref_sink (_tmp13_);
3692 	gtk_container_add ((GtkContainer*) ali, (GtkWidget*) _data13_->show_button);
3693 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
3694 	gtk_box_pack_start ((GtkBox*) master_box, (GtkWidget*) vbox, FALSE, FALSE, (guint) 0);
3695 	gtk_container_add ((GtkContainer*) self->priv->metadata_box, (GtkWidget*) master_box);
3696 	gmpc_browsers_metadata_change_color_style (self, (GtkWidget*) self->priv->metadata_sw);
3697 	gtk_widget_show_all ((GtkWidget*) self->priv->metadata_sw);
3698 	gtk_widget_grab_focus ((GtkWidget*) MetadataBoxShowBaseEntry);
3699 	_g_object_unref0 (ali);
3700 	_g_object_unref0 (label);
3701 	_g_object_unref0 (hbox);
3702 	_g_object_unref0 (vbox);
3703 	_g_object_unref0 (master_box);
3704 	_g_object_unref0 (MetadataBoxShowBaseEntry);
3705 	block13_data_unref (_data13_);
3706 	_data13_ = NULL;
3707 }
3708 
3709 
block14_data_ref(Block14Data * _data14_)3710 static Block14Data* block14_data_ref (Block14Data* _data14_) {
3711 	g_atomic_int_inc (&_data14_->_ref_count_);
3712 	return _data14_;
3713 }
3714 
3715 
block14_data_unref(Block14Data * _data14_)3716 static void block14_data_unref (Block14Data* _data14_) {
3717 	if (g_atomic_int_dec_and_test (&_data14_->_ref_count_)) {
3718 		_g_object_unref0 (_data14_->self);
3719 		_g_object_unref0 (_data14_->notebook);
3720 		_g_free0 (_data14_->artist);
3721 		_g_free0 (_data14_->album);
3722 		g_slice_free (Block14Data, _data14_);
3723 	}
3724 }
3725 
3726 
block15_data_ref(Block15Data * _data15_)3727 static Block15Data* block15_data_ref (Block15Data* _data15_) {
3728 	g_atomic_int_inc (&_data15_->_ref_count_);
3729 	return _data15_;
3730 }
3731 
3732 
block15_data_unref(Block15Data * _data15_)3733 static void block15_data_unref (Block15Data* _data15_) {
3734 	if (g_atomic_int_dec_and_test (&_data15_->_ref_count_)) {
3735 		block14_data_unref (_data15_->_data14_);
3736 		_data15_->_data14_ = NULL;
3737 		g_slice_free (Block15Data, _data15_);
3738 	}
3739 }
3740 
3741 
_lambda46_(GtkButton * source,Block15Data * _data15_)3742 static void _lambda46_ (GtkButton* source, Block15Data* _data15_) {
3743 	Block14Data* _data14_;
3744 	GmpcBrowsersMetadata * self;
3745 	_data14_ = _data15_->_data14_;
3746 	self = _data14_->self;
3747 	g_return_if_fail (source != NULL);
3748 	g_debug ("gmpc-metadata-browser2.vala:1557: notebook page %i clicked", _data15_->j);
3749 	gtk_notebook_set_current_page (_data14_->notebook, _data15_->j);
3750 }
3751 
3752 
__lambda46__gtk_button_clicked(GtkButton * _sender,gpointer self)3753 static void __lambda46__gtk_button_clicked (GtkButton* _sender, gpointer self) {
3754 	_lambda46_ (_sender, self);
3755 }
3756 
3757 
block16_data_ref(Block16Data * _data16_)3758 static Block16Data* block16_data_ref (Block16Data* _data16_) {
3759 	g_atomic_int_inc (&_data16_->_ref_count_);
3760 	return _data16_;
3761 }
3762 
3763 
block16_data_unref(Block16Data * _data16_)3764 static void block16_data_unref (Block16Data* _data16_) {
3765 	if (g_atomic_int_dec_and_test (&_data16_->_ref_count_)) {
3766 		block14_data_unref (_data16_->_data14_);
3767 		_data16_->_data14_ = NULL;
3768 		_g_object_unref0 (_data16_->sl);
3769 		g_slice_free (Block16Data, _data16_);
3770 	}
3771 }
3772 
3773 
_lambda47_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)3774 static void _lambda47_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
3775 	gboolean _tmp0_ = FALSE;
3776 	g_return_if_fail (source != NULL);
3777 	g_return_if_fail (song != NULL);
3778 	if (song->artist != NULL) {
3779 		_tmp0_ = song->album != NULL;
3780 	} else {
3781 		_tmp0_ = FALSE;
3782 	}
3783 	if (_tmp0_) {
3784 		gmpc_browsers_metadata_set_album (self, song->artist, song->album);
3785 	}
3786 }
3787 
3788 
__lambda47__gmpc_widgets_songlist_album_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)3789 static void __lambda47__gmpc_widgets_songlist_album_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
3790 	_lambda47_ (_sender, song, self);
3791 }
3792 
3793 
_lambda48_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)3794 static void _lambda48_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
3795 	g_return_if_fail (source != NULL);
3796 	g_return_if_fail (song != NULL);
3797 	gmpc_browsers_metadata_set_song (self, song);
3798 }
3799 
3800 
__lambda48__gmpc_widgets_songlist_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)3801 static void __lambda48__gmpc_widgets_songlist_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
3802 	_lambda48_ (_sender, song, self);
3803 }
3804 
3805 
_lambda49_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)3806 static void _lambda49_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
3807 	g_return_if_fail (source != NULL);
3808 	g_return_if_fail (song != NULL);
3809 	if (song->file != NULL) {
3810 		play_path (song->file);
3811 	}
3812 }
3813 
3814 
__lambda49__gmpc_widgets_songlist_play_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)3815 static void __lambda49__gmpc_widgets_songlist_play_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
3816 	_lambda49_ (_sender, song, self);
3817 }
3818 
3819 
_lambda50_(GtkButton * source,Block16Data * _data16_)3820 static void _lambda50_ (GtkButton* source, Block16Data* _data16_) {
3821 	Block14Data* _data14_;
3822 	GmpcBrowsersMetadata * self;
3823 	_data14_ = _data16_->_data14_;
3824 	self = _data14_->self;
3825 	g_return_if_fail (source != NULL);
3826 	gtk_notebook_set_current_page (_data14_->notebook, _data16_->j);
3827 }
3828 
3829 
__lambda50__gtk_button_clicked(GtkButton * _sender,gpointer self)3830 static void __lambda50__gtk_button_clicked (GtkButton* _sender, gpointer self) {
3831 	_lambda50_ (_sender, self);
3832 }
3833 
3834 
_lambda51_(GParamSpec * source,Block16Data * _data16_)3835 static void _lambda51_ (GParamSpec* source, Block16Data* _data16_) {
3836 	Block14Data* _data14_;
3837 	GmpcBrowsersMetadata * self;
3838 	gint _tmp0_;
3839 	_data14_ = _data16_->_data14_;
3840 	self = _data14_->self;
3841 	g_return_if_fail (source != NULL);
3842 	g_object_get (_data14_->notebook, "page", &_tmp0_, NULL);
3843 	if (_tmp0_ != _data16_->j) {
3844 		return;
3845 	}
3846 	g_debug ("gmpc-metadata-browser2.vala:1598: notebook page %i clicked", _data16_->j);
3847 	if (!_data16_->seen) {
3848 		gchar* albumartist;
3849 		gboolean _tmp1_;
3850 		gboolean _tmp5_ = FALSE;
3851 		MpdData* _tmp7_ = NULL;
3852 		MpdData* data;
3853 		MpdData* _tmp8_;
3854 		albumartist = NULL;
3855 		_tmp1_ = mpd_server_tag_supported (connection, MPD_TAG_ITEM_ALBUM_ARTIST);
3856 		if (_tmp1_) {
3857 			MpdData* _tmp2_ = NULL;
3858 			MpdData* ydata;
3859 			mpd_database_search_field_start (connection, MPD_TAG_ITEM_ALBUM_ARTIST);
3860 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM, _data14_->album);
3861 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, _data14_->artist);
3862 			_tmp2_ = mpd_database_search_commit (connection);
3863 			ydata = _tmp2_;
3864 			if (ydata != NULL) {
3865 				gint _tmp3_;
3866 				_tmp3_ = strlen (ydata->tag);
3867 				if (_tmp3_ > 0) {
3868 					gchar* _tmp4_;
3869 					_tmp4_ = g_strdup (ydata->tag);
3870 					_g_free0 (albumartist);
3871 					albumartist = _tmp4_;
3872 				}
3873 			}
3874 			_mpd_data_free0 (ydata);
3875 		}
3876 		mpd_database_search_start (connection, TRUE);
3877 		if (albumartist != NULL) {
3878 			gint _tmp6_;
3879 			_tmp6_ = strlen (albumartist);
3880 			_tmp5_ = _tmp6_ > 0;
3881 		} else {
3882 			_tmp5_ = FALSE;
3883 		}
3884 		if (_tmp5_) {
3885 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM_ARTIST, albumartist);
3886 		} else {
3887 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, _data14_->artist);
3888 		}
3889 		if (_data14_->album != NULL) {
3890 			mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ALBUM, _data14_->album);
3891 		}
3892 		_tmp7_ = mpd_database_search_commit (connection);
3893 		data = _tmp7_;
3894 		data = misc_sort_mpddata_by_album_disc_track (data);
3895 		_tmp8_ = data;
3896 		data = NULL;
3897 		gmpc_widgets_songlist_set_from_data (_data16_->sl, _tmp8_, FALSE, FALSE);
3898 		_data16_->seen = TRUE;
3899 		_mpd_data_free0 (data);
3900 		_g_free0 (albumartist);
3901 	}
3902 }
3903 
3904 
__lambda51__g_object_notify(GObject * _sender,GParamSpec * pspec,gpointer self)3905 static void __lambda51__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
3906 	_lambda51_ (pspec, self);
3907 }
3908 
3909 
block17_data_ref(Block17Data * _data17_)3910 static Block17Data* block17_data_ref (Block17Data* _data17_) {
3911 	g_atomic_int_inc (&_data17_->_ref_count_);
3912 	return _data17_;
3913 }
3914 
3915 
block17_data_unref(Block17Data * _data17_)3916 static void block17_data_unref (Block17Data* _data17_) {
3917 	if (g_atomic_int_dec_and_test (&_data17_->_ref_count_)) {
3918 		block14_data_unref (_data17_->_data14_);
3919 		_data17_->_data14_ = NULL;
3920 		g_slice_free (Block17Data, _data17_);
3921 	}
3922 }
3923 
3924 
_lambda52_(GtkButton * source,Block17Data * _data17_)3925 static void _lambda52_ (GtkButton* source, Block17Data* _data17_) {
3926 	Block14Data* _data14_;
3927 	GmpcBrowsersMetadata * self;
3928 	_data14_ = _data17_->_data14_;
3929 	self = _data14_->self;
3930 	g_return_if_fail (source != NULL);
3931 	g_debug ("gmpc-metadata-browser2.vala:1643: notebook page %i clicked", _data17_->j);
3932 	gtk_notebook_set_current_page (_data14_->notebook, _data17_->j);
3933 }
3934 
3935 
__lambda52__gtk_button_clicked(GtkButton * _sender,gpointer self)3936 static void __lambda52__gtk_button_clicked (GtkButton* _sender, gpointer self) {
3937 	_lambda52_ (_sender, self);
3938 }
3939 
3940 
_lambda53_(GObject * source,GParamSpec * spec,Block14Data * _data14_)3941 static void _lambda53_ (GObject* source, GParamSpec* spec, Block14Data* _data14_) {
3942 	GmpcBrowsersMetadata * self;
3943 	gint _tmp0_;
3944 	gint page;
3945 	self = _data14_->self;
3946 	g_return_if_fail (source != NULL);
3947 	g_return_if_fail (spec != NULL);
3948 	_tmp0_ = gtk_notebook_get_current_page (_data14_->notebook);
3949 	page = _tmp0_;
3950 	cfg_set_single_value_as_int (config, "MetaData", "album-last-page", (gint) page);
3951 }
3952 
3953 
__lambda53__g_object_notify(GObject * _sender,GParamSpec * pspec,gpointer self)3954 static void __lambda53__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
3955 	_lambda53_ (_sender, pspec, self);
3956 }
3957 
3958 
gmpc_browsers_metadata_metadata_box_show_album(GmpcBrowsersMetadata * self,const gchar * artist,const gchar * album)3959 static void gmpc_browsers_metadata_metadata_box_show_album (GmpcBrowsersMetadata* self, const gchar* artist, const gchar* album) {
3960 	Block14Data* _data14_;
3961 	GtkVBox* _tmp0_ = NULL;
3962 	GtkVBox* master_box;
3963 	GtkVBox* _tmp1_ = NULL;
3964 	GtkVBox* vbox;
3965 	GtkHBox* _tmp2_ = NULL;
3966 	GtkHBox* hbox;
3967 	GtkAlignment* _tmp3_ = NULL;
3968 	GtkAlignment* ali;
3969 	gint meta_size;
3970 	gint _tmp4_;
3971 	gint _tmp5_;
3972 	gint _tmp6_;
3973 	GmpcMetaImage* _tmp7_ = NULL;
3974 	GmpcMetaImage* artist_image;
3975 	mpd_Song* _tmp8_ = NULL;
3976 	mpd_Song* song;
3977 	gchar* _tmp9_;
3978 	gchar* _tmp10_;
3979 	GtkTable* _tmp11_ = NULL;
3980 	GtkTable* info_box;
3981 	gint i;
3982 	const gchar* _tmp12_ = NULL;
3983 	GtkLabel* _tmp14_ = NULL;
3984 	GtkLabel* label;
3985 	const gchar* _tmp15_ = NULL;
3986 	const gchar* _tmp16_ = NULL;
3987 	GtkLabel* _tmp18_ = NULL;
3988 	const gchar* _tmp19_ = NULL;
3989 	GmpcStatsLabel* _tmp20_ = NULL;
3990 	GmpcStatsLabel* pt_label;
3991 	const gchar* _tmp21_ = NULL;
3992 	GmpcStatsLabel* _tmp22_ = NULL;
3993 	const gchar* _tmp23_ = NULL;
3994 	GmpcStatsLabel* _tmp24_ = NULL;
3995 	const gchar* _tmp25_ = NULL;
3996 	GmpcStatsLabel* _tmp26_ = NULL;
3997 	const gchar* _tmp27_ = NULL;
3998 	GtkVBox* _tmp28_ = NULL;
3999 	GtkVBox* control_hbox;
4000 	GtkButton* _tmp29_ = NULL;
4001 	GtkButton* button;
4002 	const gchar* _tmp30_ = NULL;
4003 	GValue _tmp31_ = {0};
4004 	GtkButton* _tmp32_ = NULL;
4005 	const gchar* _tmp33_ = NULL;
4006 	GValue _tmp34_ = {0};
4007 	GtkHSeparator* _tmp35_ = NULL;
4008 	GtkHSeparator* sep;
4009 	GtkHBox* _tmp36_ = NULL;
4010 	GtkHBox* hboxje;
4011 	GtkNotebook* _tmp37_ = NULL;
4012 	GSList* group;
4013 	gint _tmp38_;
4014 	gint _tmp55_;
4015 	GtkAlignment* _tmp66_ = NULL;
4016 	GtkHBox* _tmp67_ = NULL;
4017 	GtkHBox* bottom_hbox;
4018 	GtkVBox* _tmp68_ = NULL;
4019 	GtkVBox* metadata_vbox;
4020 	GtkHSeparator* _tmp69_ = NULL;
4021 	g_return_if_fail (self != NULL);
4022 	g_return_if_fail (artist != NULL);
4023 	g_return_if_fail (album != NULL);
4024 	_data14_ = g_slice_new0 (Block14Data);
4025 	_data14_->_ref_count_ = 1;
4026 	_data14_->self = g_object_ref (self);
4027 	_data14_->artist = g_strdup (artist);
4028 	_data14_->album = g_strdup (album);
4029 	_tmp0_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
4030 	master_box = g_object_ref_sink (_tmp0_);
4031 	_tmp1_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
4032 	vbox = g_object_ref_sink (_tmp1_);
4033 	gtk_container_set_border_width ((GtkContainer*) vbox, (guint) 8);
4034 	gmpc_browsers_metadata_history_bc_header (self, GMPC_BROWSERS_METADATA_HITEM_TYPE_ALBUM, _data14_->artist, _data14_->album, NULL);
4035 	_tmp2_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
4036 	hbox = g_object_ref_sink (_tmp2_);
4037 	_tmp3_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.f, 0.f, 0.f);
4038 	ali = g_object_ref_sink (_tmp3_);
4039 	meta_size = (gint) (((GtkWidget*) self->priv->metadata_box)->allocation.width * 0.20);
4040 	_tmp4_ = MIN (meta_size, (gint) (((GtkWidget*) self->priv->metadata_sw)->allocation.height * 0.30));
4041 	meta_size = _tmp4_;
4042 	_tmp5_ = MAX (100, meta_size);
4043 	_tmp6_ = MIN (_tmp5_, 250);
4044 	meta_size = _tmp6_;
4045 	_tmp7_ = gmpc_metaimage_new_size (META_ALBUM_ART, meta_size);
4046 	artist_image = g_object_ref_sink (_tmp7_);
4047 	gmpc_metaimage_set_squared (artist_image, FALSE);
4048 	_tmp8_ = mpd_newSong ();
4049 	song = _tmp8_;
4050 	_tmp9_ = g_strdup (_data14_->artist);
4051 	_g_free0 (song->artist);
4052 	song->artist = _tmp9_;
4053 	_tmp10_ = g_strdup (_data14_->album);
4054 	_g_free0 (song->album);
4055 	song->album = _tmp10_;
4056 	gmpc_metaimage_update_cover_from_song (artist_image, song);
4057 	gtk_container_add ((GtkContainer*) ali, (GtkWidget*) artist_image);
4058 	gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
4059 	_tmp11_ = (GtkTable*) gtk_table_new ((guint) 4, (guint) 2, FALSE);
4060 	info_box = g_object_ref_sink (_tmp11_);
4061 	gtk_table_set_row_spacings (info_box, (guint) 3);
4062 	gtk_table_set_col_spacings (info_box, (guint) 8);
4063 	gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) info_box, TRUE, TRUE, (guint) 0);
4064 	i = 0;
4065 	if (_data14_->artist != NULL) {
4066 		_tmp12_ = _data14_->artist;
4067 	} else {
4068 		const gchar* _tmp13_ = NULL;
4069 		_tmp13_ = _ ("Unknown");
4070 		_tmp12_ = _tmp13_;
4071 	}
4072 	_tmp14_ = (GtkLabel*) gtk_label_new (_tmp12_);
4073 	label = g_object_ref_sink (_tmp14_);
4074 	gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
4075 	gtk_label_set_line_wrap (label, TRUE);
4076 	_tmp15_ = _ ("Artist");
4077 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp15_, NULL, (GtkWidget*) label, &i, "media-artist");
4078 	if (_data14_->album != NULL) {
4079 		_tmp16_ = _data14_->album;
4080 	} else {
4081 		const gchar* _tmp17_ = NULL;
4082 		_tmp17_ = _ ("Unknown");
4083 		_tmp16_ = _tmp17_;
4084 	}
4085 	_tmp18_ = (GtkLabel*) gtk_label_new (_tmp16_);
4086 	_g_object_unref0 (label);
4087 	label = g_object_ref_sink (_tmp18_);
4088 	gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
4089 	gtk_label_set_line_wrap (label, TRUE);
4090 	_tmp19_ = _ ("Album");
4091 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp19_, NULL, (GtkWidget*) label, &i, "media-album");
4092 	_tmp20_ = gmpc_stats_label_new (ALBUM_GENRES_SONGS, song);
4093 	pt_label = g_object_ref_sink (_tmp20_);
4094 	gtk_label_set_selectable ((GtkLabel*) pt_label, TRUE);
4095 	gtk_misc_set_alignment ((GtkMisc*) pt_label, 0.0f, 0.5f);
4096 	gtk_label_set_line_wrap ((GtkLabel*) pt_label, TRUE);
4097 	_tmp21_ = _ ("Genres");
4098 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp21_, NULL, (GtkWidget*) pt_label, &i, "media-genre");
4099 	_tmp22_ = gmpc_stats_label_new (ALBUM_DATES_SONGS, song);
4100 	_g_object_unref0 (pt_label);
4101 	pt_label = g_object_ref_sink (_tmp22_);
4102 	gtk_label_set_selectable ((GtkLabel*) pt_label, TRUE);
4103 	gtk_label_set_line_wrap ((GtkLabel*) pt_label, TRUE);
4104 	gtk_misc_set_alignment ((GtkMisc*) pt_label, 0.0f, 0.5f);
4105 	_tmp23_ = _ ("Dates");
4106 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp23_, NULL, (GtkWidget*) pt_label, &i, "media-date");
4107 	_tmp24_ = gmpc_stats_label_new (ALBUM_NUM_SONGS, song);
4108 	_g_object_unref0 (pt_label);
4109 	pt_label = g_object_ref_sink (_tmp24_);
4110 	gtk_label_set_selectable ((GtkLabel*) pt_label, TRUE);
4111 	gtk_label_set_line_wrap ((GtkLabel*) pt_label, TRUE);
4112 	gtk_misc_set_alignment ((GtkMisc*) pt_label, 0.0f, 0.5f);
4113 	_tmp25_ = _ ("Songs");
4114 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp25_, NULL, (GtkWidget*) pt_label, &i, "media-num-tracks");
4115 	_tmp26_ = gmpc_stats_label_new (ALBUM_PLAYTIME_SONGS, song);
4116 	_g_object_unref0 (pt_label);
4117 	pt_label = g_object_ref_sink (_tmp26_);
4118 	gtk_label_set_selectable ((GtkLabel*) pt_label, TRUE);
4119 	gtk_label_set_line_wrap ((GtkLabel*) pt_label, TRUE);
4120 	gtk_misc_set_alignment ((GtkMisc*) pt_label, 0.0f, 0.5f);
4121 	_tmp27_ = _ ("Playtime");
4122 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp27_, NULL, (GtkWidget*) pt_label, &i, "media-track-length");
4123 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) hbox, FALSE, FALSE, (guint) 0);
4124 	_tmp28_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
4125 	control_hbox = g_object_ref_sink (_tmp28_);
4126 	_tmp29_ = (GtkButton*) gtk_button_new_from_stock ("gtk-add");
4127 	button = g_object_ref_sink (_tmp29_);
4128 	_tmp30_ = _ ("Add the item to the play queue");
4129 	gtk_widget_set_tooltip_text ((GtkWidget*) button, _tmp30_);
4130 	g_value_init (&_tmp31_, G_TYPE_FLOAT);
4131 	g_value_set_float (&_tmp31_, 0.0f);
4132 	g_object_set_property ((GObject*) button, "xalign", &_tmp31_);
4133 	G_IS_VALUE (&_tmp31_) ? (g_value_unset (&_tmp31_), NULL) : NULL;
4134 	gtk_button_set_relief (button, GTK_RELIEF_NONE);
4135 	g_signal_connect_object (button, "clicked", (GCallback) _gmpc_browsers_metadata_add_selected_song_gtk_button_clicked, self, 0);
4136 	gtk_box_pack_start ((GtkBox*) control_hbox, (GtkWidget*) button, FALSE, FALSE, (guint) 0);
4137 	_tmp32_ = (GtkButton*) gtk_button_new_from_stock ("gtk-media-play");
4138 	_g_object_unref0 (button);
4139 	button = g_object_ref_sink (_tmp32_);
4140 	_tmp33_ = _ ("Replace the current play queue with this item and play");
4141 	gtk_widget_set_tooltip_text ((GtkWidget*) button, _tmp33_);
4142 	g_value_init (&_tmp34_, G_TYPE_FLOAT);
4143 	g_value_set_float (&_tmp34_, 0.0f);
4144 	g_object_set_property ((GObject*) button, "xalign", &_tmp34_);
4145 	G_IS_VALUE (&_tmp34_) ? (g_value_unset (&_tmp34_), NULL) : NULL;
4146 	gtk_button_set_relief (button, GTK_RELIEF_NONE);
4147 	g_signal_connect_object (button, "clicked", (GCallback) _gmpc_browsers_metadata_replace_selected_song_gtk_button_clicked, self, 0);
4148 	gtk_box_pack_start ((GtkBox*) control_hbox, (GtkWidget*) button, FALSE, FALSE, (guint) 0);
4149 	gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) control_hbox, FALSE, FALSE, (guint) 0);
4150 	_tmp35_ = (GtkHSeparator*) gtk_hseparator_new ();
4151 	sep = g_object_ref_sink (_tmp35_);
4152 	gtk_widget_set_size_request ((GtkWidget*) sep, -1, 4);
4153 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) sep, FALSE, FALSE, (guint) 0);
4154 	_tmp36_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
4155 	hboxje = g_object_ref_sink (_tmp36_);
4156 	_tmp37_ = (GtkNotebook*) gtk_notebook_new ();
4157 	_data14_->notebook = g_object_ref_sink (_tmp37_);
4158 	gtk_notebook_set_show_border (_data14_->notebook, FALSE);
4159 	gtk_notebook_set_show_tabs (_data14_->notebook, FALSE);
4160 	i = 0;
4161 	group = NULL;
4162 	_tmp38_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-album-information", 1);
4163 	if (_tmp38_ == 1) {
4164 		Block15Data* _data15_;
4165 		GtkAlignment* _tmp39_ = NULL;
4166 		GtkAlignment* alib;
4167 		GmpcMetaTextView* _tmp40_ = NULL;
4168 		GmpcMetaTextView* text_view;
4169 		const gchar* _tmp41_ = NULL;
4170 		GtkLabel* _tmp42_ = NULL;
4171 		GtkLabel* _tmp43_;
4172 		const gchar* _tmp44_ = NULL;
4173 		GtkRadioButton* _tmp45_ = NULL;
4174 		GtkRadioButton* rbutton;
4175 		GSList* _tmp46_ = NULL;
4176 		_data15_ = g_slice_new0 (Block15Data);
4177 		_data15_->_ref_count_ = 1;
4178 		_data15_->_data14_ = block14_data_ref (_data14_);
4179 		_tmp39_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.f, 1.f, 0.f);
4180 		alib = g_object_ref_sink (_tmp39_);
4181 		_tmp40_ = gmpc_meta_text_view_new (META_ALBUM_TXT);
4182 		text_view = g_object_ref_sink (_tmp40_);
4183 		gtk_text_view_set_left_margin ((GtkTextView*) text_view, 8);
4184 		gmpc_meta_text_view_query_text_from_song (text_view, song);
4185 		gtk_container_add ((GtkContainer*) alib, (GtkWidget*) text_view);
4186 		_tmp41_ = _ ("Album information");
4187 		_tmp42_ = (GtkLabel*) gtk_label_new (_tmp41_);
4188 		_tmp43_ = g_object_ref_sink (_tmp42_);
4189 		gtk_notebook_append_page (_data14_->notebook, (GtkWidget*) alib, (GtkWidget*) _tmp43_);
4190 		_g_object_unref0 (_tmp43_);
4191 		_tmp44_ = _ ("Album information");
4192 		_tmp45_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp44_);
4193 		rbutton = g_object_ref_sink (_tmp45_);
4194 		_tmp46_ = gtk_radio_button_get_group (rbutton);
4195 		group = _tmp46_;
4196 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) rbutton, FALSE, FALSE, (guint) 0);
4197 		_data15_->j = i;
4198 		g_signal_connect_data ((GtkButton*) rbutton, "clicked", (GCallback) __lambda46__gtk_button_clicked, block15_data_ref (_data15_), (GClosureNotify) block15_data_unref, 0);
4199 		i++;
4200 		gtk_widget_show ((GtkWidget*) alib);
4201 		_g_object_unref0 (rbutton);
4202 		_g_object_unref0 (text_view);
4203 		_g_object_unref0 (alib);
4204 		block15_data_unref (_data15_);
4205 		_data15_ = NULL;
4206 	}
4207 	{
4208 		Block16Data* _data16_;
4209 		GtkVBox* _tmp47_ = NULL;
4210 		GtkVBox* slhbox;
4211 		GmpcWidgetsSonglist* _tmp48_ = NULL;
4212 		const gchar* _tmp49_ = NULL;
4213 		GtkLabel* _tmp50_ = NULL;
4214 		GtkLabel* _tmp51_;
4215 		const gchar* _tmp52_ = NULL;
4216 		GtkRadioButton* _tmp53_ = NULL;
4217 		GtkRadioButton* rbutton;
4218 		GSList* _tmp54_ = NULL;
4219 		_data16_ = g_slice_new0 (Block16Data);
4220 		_data16_->_ref_count_ = 1;
4221 		_data16_->_data14_ = block14_data_ref (_data14_);
4222 		_tmp47_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
4223 		slhbox = g_object_ref_sink (_tmp47_);
4224 		_tmp48_ = gmpc_widgets_songlist_new ();
4225 		_data16_->sl = g_object_ref_sink (_tmp48_);
4226 		gtk_box_pack_start ((GtkBox*) slhbox, (GtkWidget*) _data16_->sl, FALSE, FALSE, (guint) 0);
4227 		g_signal_connect_object (_data16_->sl, "album-song-clicked", (GCallback) __lambda47__gmpc_widgets_songlist_album_song_clicked, self, 0);
4228 		g_signal_connect_object (_data16_->sl, "song-clicked", (GCallback) __lambda48__gmpc_widgets_songlist_song_clicked, self, 0);
4229 		g_signal_connect_object (_data16_->sl, "play-song-clicked", (GCallback) __lambda49__gmpc_widgets_songlist_play_song_clicked, self, 0);
4230 		_tmp49_ = _ ("Song list");
4231 		_tmp50_ = (GtkLabel*) gtk_label_new (_tmp49_);
4232 		_tmp51_ = g_object_ref_sink (_tmp50_);
4233 		gtk_notebook_append_page (_data14_->notebook, (GtkWidget*) slhbox, (GtkWidget*) _tmp51_);
4234 		_g_object_unref0 (_tmp51_);
4235 		_tmp52_ = _ ("Song list");
4236 		_tmp53_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp52_);
4237 		rbutton = g_object_ref_sink (_tmp53_);
4238 		_tmp54_ = gtk_radio_button_get_group (rbutton);
4239 		group = _tmp54_;
4240 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) rbutton, FALSE, FALSE, (guint) 0);
4241 		_data16_->j = i;
4242 		_data16_->seen = FALSE;
4243 		g_signal_connect_data ((GtkButton*) rbutton, "clicked", (GCallback) __lambda50__gtk_button_clicked, block16_data_ref (_data16_), (GClosureNotify) block16_data_unref, 0);
4244 		g_signal_connect_data ((GObject*) _data14_->notebook, "notify::page", (GCallback) __lambda51__g_object_notify, block16_data_ref (_data16_), (GClosureNotify) block16_data_unref, 0);
4245 		gtk_widget_show ((GtkWidget*) slhbox);
4246 		i++;
4247 		_g_object_unref0 (rbutton);
4248 		_g_object_unref0 (slhbox);
4249 		block16_data_unref (_data16_);
4250 		_data16_ = NULL;
4251 	}
4252 	_tmp55_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-web-links", 1);
4253 	if (_tmp55_ == 1) {
4254 		Block17Data* _data17_;
4255 		GmpcMetaDataWidgetsSongLinks* _tmp56_ = NULL;
4256 		GmpcMetaDataWidgetsSongLinks* song_links;
4257 		const gchar* _tmp57_ = NULL;
4258 		GtkLabel* _tmp58_ = NULL;
4259 		GtkLabel* _tmp59_;
4260 		const gchar* _tmp60_ = NULL;
4261 		GtkRadioButton* _tmp61_ = NULL;
4262 		GtkRadioButton* rbutton;
4263 		GSList* _tmp62_ = NULL;
4264 		_data17_ = g_slice_new0 (Block17Data);
4265 		_data17_->_ref_count_ = 1;
4266 		_data17_->_data14_ = block14_data_ref (_data14_);
4267 		_tmp56_ = gmpc_meta_data_widgets_song_links_new (GMPC_META_DATA_WIDGETS_SONG_LINKS_TYPE_ALBUM, song);
4268 		song_links = g_object_ref_sink (_tmp56_);
4269 		_tmp57_ = _ ("Web Links");
4270 		_tmp58_ = (GtkLabel*) gtk_label_new (_tmp57_);
4271 		_tmp59_ = g_object_ref_sink (_tmp58_);
4272 		gtk_notebook_append_page (_data14_->notebook, (GtkWidget*) song_links, (GtkWidget*) _tmp59_);
4273 		_g_object_unref0 (_tmp59_);
4274 		_tmp60_ = _ ("Web Links");
4275 		_tmp61_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp60_);
4276 		rbutton = g_object_ref_sink (_tmp61_);
4277 		_tmp62_ = gtk_radio_button_get_group (rbutton);
4278 		group = _tmp62_;
4279 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) rbutton, FALSE, FALSE, (guint) 0);
4280 		_data17_->j = i;
4281 		g_signal_connect_data ((GtkButton*) rbutton, "clicked", (GCallback) __lambda52__gtk_button_clicked, block17_data_ref (_data17_), (GClosureNotify) block17_data_unref, 0);
4282 		gtk_widget_show ((GtkWidget*) song_links);
4283 		i++;
4284 		_g_object_unref0 (rbutton);
4285 		_g_object_unref0 (song_links);
4286 		block17_data_unref (_data17_);
4287 		_data17_ = NULL;
4288 	}
4289 	g_signal_connect_data ((GObject*) _data14_->notebook, "notify::page", (GCallback) __lambda53__g_object_notify, block14_data_ref (_data14_), (GClosureNotify) block14_data_unref, 0);
4290 	if (i > 0) {
4291 		gint _tmp63_;
4292 		gint page;
4293 		_tmp63_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "album-last-page", 0);
4294 		page = _tmp63_;
4295 		if (page > i) {
4296 			gtk_notebook_set_current_page (_data14_->notebook, 0);
4297 		} else {
4298 			gconstpointer _tmp64_ = NULL;
4299 			GtkRadioButton* _tmp65_;
4300 			GtkRadioButton* w;
4301 			_tmp64_ = g_slist_nth_data (group, (guint) ((i - page) - 1));
4302 			_tmp65_ = _g_object_ref0 ((GtkRadioButton*) _tmp64_);
4303 			w = _tmp65_;
4304 			gtk_toggle_button_set_active ((GtkToggleButton*) w, TRUE);
4305 			gtk_notebook_set_current_page (_data14_->notebook, page);
4306 			_g_object_unref0 (w);
4307 		}
4308 	}
4309 	_tmp66_ = (GtkAlignment*) gtk_alignment_new (0.0f, 0.5f, 0.f, 0.f);
4310 	_g_object_unref0 (ali);
4311 	ali = g_object_ref_sink (_tmp66_);
4312 	gtk_container_add ((GtkContainer*) ali, (GtkWidget*) hboxje);
4313 	_tmp67_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
4314 	bottom_hbox = g_object_ref_sink (_tmp67_);
4315 	_tmp68_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
4316 	metadata_vbox = g_object_ref_sink (_tmp68_);
4317 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
4318 	_tmp69_ = (GtkHSeparator*) gtk_hseparator_new ();
4319 	_g_object_unref0 (sep);
4320 	sep = g_object_ref_sink (_tmp69_);
4321 	gtk_widget_set_size_request ((GtkWidget*) sep, -1, 1);
4322 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) sep, FALSE, FALSE, (guint) 0);
4323 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) _data14_->notebook, FALSE, FALSE, (guint) 0);
4324 	gtk_box_pack_start ((GtkBox*) bottom_hbox, (GtkWidget*) metadata_vbox, TRUE, TRUE, (guint) 0);
4325 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) bottom_hbox, TRUE, TRUE, (guint) 0);
4326 	gtk_box_pack_start ((GtkBox*) master_box, (GtkWidget*) vbox, FALSE, FALSE, (guint) 0);
4327 	gtk_container_add ((GtkContainer*) self->priv->metadata_box, (GtkWidget*) master_box);
4328 	gmpc_browsers_metadata_change_color_style (self, (GtkWidget*) self->priv->metadata_sw);
4329 	gtk_widget_show_all ((GtkWidget*) self->priv->metadata_sw);
4330 	_g_object_unref0 (metadata_vbox);
4331 	_g_object_unref0 (bottom_hbox);
4332 	_g_object_unref0 (hboxje);
4333 	_g_object_unref0 (sep);
4334 	_g_object_unref0 (button);
4335 	_g_object_unref0 (control_hbox);
4336 	_g_object_unref0 (pt_label);
4337 	_g_object_unref0 (label);
4338 	_g_object_unref0 (info_box);
4339 	_mpd_freeSong0 (song);
4340 	_g_object_unref0 (artist_image);
4341 	_g_object_unref0 (ali);
4342 	_g_object_unref0 (hbox);
4343 	_g_object_unref0 (vbox);
4344 	_g_object_unref0 (master_box);
4345 	block14_data_unref (_data14_);
4346 	_data14_ = NULL;
4347 }
4348 
4349 
4350 /**
4351      * This fills the view for artist
4352      * <artist name>
4353      * <image> | <array with info>
4354      *           < buttonss>
4355      *
4356      * <artist info text>
4357      *
4358      * <similar artists>
4359      * <links>
4360      */
block18_data_ref(Block18Data * _data18_)4361 static Block18Data* block18_data_ref (Block18Data* _data18_) {
4362 	g_atomic_int_inc (&_data18_->_ref_count_);
4363 	return _data18_;
4364 }
4365 
4366 
block18_data_unref(Block18Data * _data18_)4367 static void block18_data_unref (Block18Data* _data18_) {
4368 	if (g_atomic_int_dec_and_test (&_data18_->_ref_count_)) {
4369 		_g_object_unref0 (_data18_->self);
4370 		_g_object_unref0 (_data18_->notebook);
4371 		_g_object_unref0 (_data18_->hbox);
4372 		_g_free0 (_data18_->artist);
4373 		g_slice_free (Block18Data, _data18_);
4374 	}
4375 }
4376 
4377 
block19_data_ref(Block19Data * _data19_)4378 static Block19Data* block19_data_ref (Block19Data* _data19_) {
4379 	g_atomic_int_inc (&_data19_->_ref_count_);
4380 	return _data19_;
4381 }
4382 
4383 
block19_data_unref(Block19Data * _data19_)4384 static void block19_data_unref (Block19Data* _data19_) {
4385 	if (g_atomic_int_dec_and_test (&_data19_->_ref_count_)) {
4386 		block18_data_unref (_data19_->_data18_);
4387 		_data19_->_data18_ = NULL;
4388 		g_slice_free (Block19Data, _data19_);
4389 	}
4390 }
4391 
4392 
_lambda54_(GtkButton * source,Block19Data * _data19_)4393 static void _lambda54_ (GtkButton* source, Block19Data* _data19_) {
4394 	Block18Data* _data18_;
4395 	GmpcBrowsersMetadata * self;
4396 	GtkButton* _tmp0_;
4397 	gboolean _tmp1_;
4398 	_data18_ = _data19_->_data18_;
4399 	self = _data18_->self;
4400 	g_return_if_fail (source != NULL);
4401 	_tmp0_ = source;
4402 	_tmp1_ = gtk_toggle_button_get_active ((GtkToggleButton*) (GTK_IS_CHECK_BUTTON (_tmp0_) ? ((GtkCheckButton*) _tmp0_) : NULL));
4403 	if (_tmp1_) {
4404 		g_debug ("gmpc-metadata-browser2.vala:1822: notebook page %i clicked", _data19_->j);
4405 		gtk_notebook_set_current_page (_data18_->notebook, _data19_->j);
4406 	}
4407 }
4408 
4409 
__lambda54__gtk_button_clicked(GtkButton * _sender,gpointer self)4410 static void __lambda54__gtk_button_clicked (GtkButton* _sender, gpointer self) {
4411 	_lambda54_ (_sender, self);
4412 }
4413 
4414 
block20_data_ref(Block20Data * _data20_)4415 static Block20Data* block20_data_ref (Block20Data* _data20_) {
4416 	g_atomic_int_inc (&_data20_->_ref_count_);
4417 	return _data20_;
4418 }
4419 
4420 
block20_data_unref(Block20Data * _data20_)4421 static void block20_data_unref (Block20Data* _data20_) {
4422 	if (g_atomic_int_dec_and_test (&_data20_->_ref_count_)) {
4423 		block18_data_unref (_data20_->_data18_);
4424 		_data20_->_data18_ = NULL;
4425 		_g_object_unref0 (_data20_->similar_artist);
4426 		g_slice_free (Block20Data, _data20_);
4427 	}
4428 }
4429 
4430 
_lambda55_(GtkButton * source,Block20Data * _data20_)4431 static void _lambda55_ (GtkButton* source, Block20Data* _data20_) {
4432 	Block18Data* _data18_;
4433 	GmpcBrowsersMetadata * self;
4434 	GtkButton* _tmp0_;
4435 	gboolean _tmp1_;
4436 	_data18_ = _data20_->_data18_;
4437 	self = _data18_->self;
4438 	g_return_if_fail (source != NULL);
4439 	_tmp0_ = source;
4440 	_tmp1_ = gtk_toggle_button_get_active ((GtkToggleButton*) (GTK_IS_CHECK_BUTTON (_tmp0_) ? ((GtkCheckButton*) _tmp0_) : NULL));
4441 	if (_tmp1_) {
4442 		g_debug ("gmpc-metadata-browser2.vala:1845: notebook page %i clicked", _data20_->j);
4443 		gmpc_meta_data_widgets_similar_artists_first_show (_data20_->similar_artist);
4444 		gtk_notebook_set_current_page (_data18_->notebook, _data20_->j);
4445 	}
4446 }
4447 
4448 
__lambda55__gtk_button_clicked(GtkButton * _sender,gpointer self)4449 static void __lambda55__gtk_button_clicked (GtkButton* _sender, gpointer self) {
4450 	_lambda55_ (_sender, self);
4451 }
4452 
4453 
block21_data_ref(Block21Data * _data21_)4454 static Block21Data* block21_data_ref (Block21Data* _data21_) {
4455 	g_atomic_int_inc (&_data21_->_ref_count_);
4456 	return _data21_;
4457 }
4458 
4459 
block21_data_unref(Block21Data * _data21_)4460 static void block21_data_unref (Block21Data* _data21_) {
4461 	if (g_atomic_int_dec_and_test (&_data21_->_ref_count_)) {
4462 		block18_data_unref (_data21_->_data18_);
4463 		_data21_->_data18_ = NULL;
4464 		_g_object_unref0 (_data21_->sl);
4465 		g_slice_free (Block21Data, _data21_);
4466 	}
4467 }
4468 
4469 
_lambda56_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)4470 static void _lambda56_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
4471 	gboolean _tmp0_ = FALSE;
4472 	g_return_if_fail (source != NULL);
4473 	g_return_if_fail (song != NULL);
4474 	if (song->artist != NULL) {
4475 		_tmp0_ = song->album != NULL;
4476 	} else {
4477 		_tmp0_ = FALSE;
4478 	}
4479 	if (_tmp0_) {
4480 		gmpc_browsers_metadata_set_album (self, song->artist, song->album);
4481 	}
4482 }
4483 
4484 
__lambda56__gmpc_widgets_songlist_album_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)4485 static void __lambda56__gmpc_widgets_songlist_album_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
4486 	_lambda56_ (_sender, song, self);
4487 }
4488 
4489 
_lambda57_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)4490 static void _lambda57_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
4491 	g_return_if_fail (source != NULL);
4492 	g_return_if_fail (song != NULL);
4493 	gmpc_browsers_metadata_set_song (self, song);
4494 }
4495 
4496 
__lambda57__gmpc_widgets_songlist_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)4497 static void __lambda57__gmpc_widgets_songlist_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
4498 	_lambda57_ (_sender, song, self);
4499 }
4500 
4501 
_lambda58_(GmpcWidgetsSonglist * source,const mpd_Song * song,GmpcBrowsersMetadata * self)4502 static void _lambda58_ (GmpcWidgetsSonglist* source, const mpd_Song* song, GmpcBrowsersMetadata* self) {
4503 	g_return_if_fail (source != NULL);
4504 	g_return_if_fail (song != NULL);
4505 	if (song->file != NULL) {
4506 		play_path (song->file);
4507 	}
4508 }
4509 
4510 
__lambda58__gmpc_widgets_songlist_play_song_clicked(GmpcWidgetsSonglist * _sender,const mpd_Song * song,gpointer self)4511 static void __lambda58__gmpc_widgets_songlist_play_song_clicked (GmpcWidgetsSonglist* _sender, const mpd_Song* song, gpointer self) {
4512 	_lambda58_ (_sender, song, self);
4513 }
4514 
4515 
_lambda59_(GtkButton * source,Block21Data * _data21_)4516 static void _lambda59_ (GtkButton* source, Block21Data* _data21_) {
4517 	Block18Data* _data18_;
4518 	GmpcBrowsersMetadata * self;
4519 	_data18_ = _data21_->_data18_;
4520 	self = _data18_->self;
4521 	g_return_if_fail (source != NULL);
4522 	gtk_notebook_set_current_page (_data18_->notebook, _data21_->j);
4523 }
4524 
4525 
__lambda59__gtk_button_clicked(GtkButton * _sender,gpointer self)4526 static void __lambda59__gtk_button_clicked (GtkButton* _sender, gpointer self) {
4527 	_lambda59_ (_sender, self);
4528 }
4529 
4530 
_lambda60_(GParamSpec * source,Block21Data * _data21_)4531 static void _lambda60_ (GParamSpec* source, Block21Data* _data21_) {
4532 	Block18Data* _data18_;
4533 	GmpcBrowsersMetadata * self;
4534 	gint _tmp0_;
4535 	_data18_ = _data21_->_data18_;
4536 	self = _data18_->self;
4537 	g_return_if_fail (source != NULL);
4538 	g_object_get (_data18_->notebook, "page", &_tmp0_, NULL);
4539 	if (_tmp0_ != _data21_->j) {
4540 		return;
4541 	}
4542 	g_debug ("gmpc-metadata-browser2.vala:1888: notebook page %i clicked", _data21_->j);
4543 	if (!_data21_->seen) {
4544 		MpdData* _tmp1_ = NULL;
4545 		MpdData* data;
4546 		MpdData* _tmp2_;
4547 		mpd_database_search_start (connection, TRUE);
4548 		mpd_database_search_add_constraint (connection, MPD_TAG_ITEM_ARTIST, _data18_->artist);
4549 		_tmp1_ = mpd_database_search_commit (connection);
4550 		data = _tmp1_;
4551 		data = misc_sort_mpddata_by_album_disc_track (data);
4552 		_tmp2_ = data;
4553 		data = NULL;
4554 		gmpc_widgets_songlist_set_from_data (_data21_->sl, _tmp2_, TRUE, FALSE);
4555 		_data21_->seen = TRUE;
4556 		_mpd_data_free0 (data);
4557 	}
4558 }
4559 
4560 
__lambda60__g_object_notify(GObject * _sender,GParamSpec * pspec,gpointer self)4561 static void __lambda60__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
4562 	_lambda60_ (pspec, self);
4563 }
4564 
4565 
block22_data_ref(Block22Data * _data22_)4566 static Block22Data* block22_data_ref (Block22Data* _data22_) {
4567 	g_atomic_int_inc (&_data22_->_ref_count_);
4568 	return _data22_;
4569 }
4570 
4571 
block22_data_unref(Block22Data * _data22_)4572 static void block22_data_unref (Block22Data* _data22_) {
4573 	if (g_atomic_int_dec_and_test (&_data22_->_ref_count_)) {
4574 		block18_data_unref (_data22_->_data18_);
4575 		_data22_->_data18_ = NULL;
4576 		g_slice_free (Block22Data, _data22_);
4577 	}
4578 }
4579 
4580 
_lambda61_(GtkButton * source,Block22Data * _data22_)4581 static void _lambda61_ (GtkButton* source, Block22Data* _data22_) {
4582 	Block18Data* _data18_;
4583 	GmpcBrowsersMetadata * self;
4584 	GtkButton* _tmp0_;
4585 	gboolean _tmp1_;
4586 	_data18_ = _data22_->_data18_;
4587 	self = _data18_->self;
4588 	g_return_if_fail (source != NULL);
4589 	_tmp0_ = source;
4590 	_tmp1_ = gtk_toggle_button_get_active ((GtkToggleButton*) (GTK_IS_CHECK_BUTTON (_tmp0_) ? ((GtkCheckButton*) _tmp0_) : NULL));
4591 	if (_tmp1_) {
4592 		g_debug ("gmpc-metadata-browser2.vala:1915: notebook page %i clicked", _data22_->j);
4593 		gtk_notebook_set_current_page (_data18_->notebook, _data22_->j);
4594 	}
4595 }
4596 
4597 
__lambda61__gtk_button_clicked(GtkButton * _sender,gpointer self)4598 static void __lambda61__gtk_button_clicked (GtkButton* _sender, gpointer self) {
4599 	_lambda61_ (_sender, self);
4600 }
4601 
4602 
block23_data_ref(Block23Data * _data23_)4603 static Block23Data* block23_data_ref (Block23Data* _data23_) {
4604 	g_atomic_int_inc (&_data23_->_ref_count_);
4605 	return _data23_;
4606 }
4607 
4608 
block23_data_unref(Block23Data * _data23_)4609 static void block23_data_unref (Block23Data* _data23_) {
4610 	if (g_atomic_int_dec_and_test (&_data23_->_ref_count_)) {
4611 		block18_data_unref (_data23_->_data18_);
4612 		_data23_->_data18_ = NULL;
4613 		g_slice_free (Block23Data, _data23_);
4614 	}
4615 }
4616 
4617 
block24_data_ref(Block24Data * _data24_)4618 static Block24Data* block24_data_ref (Block24Data* _data24_) {
4619 	g_atomic_int_inc (&_data24_->_ref_count_);
4620 	return _data24_;
4621 }
4622 
4623 
block24_data_unref(Block24Data * _data24_)4624 static void block24_data_unref (Block24Data* _data24_) {
4625 	if (g_atomic_int_dec_and_test (&_data24_->_ref_count_)) {
4626 		block23_data_unref (_data24_->_data23_);
4627 		_data24_->_data23_ = NULL;
4628 		_mpd_freeSong0 (_data24_->but_song);
4629 		g_slice_free (Block24Data, _data24_);
4630 	}
4631 }
4632 
4633 
block25_data_ref(Block25Data * _data25_)4634 static Block25Data* block25_data_ref (Block25Data* _data25_) {
4635 	g_atomic_int_inc (&_data25_->_ref_count_);
4636 	return _data25_;
4637 }
4638 
4639 
block25_data_unref(Block25Data * _data25_)4640 static void block25_data_unref (Block25Data* _data25_) {
4641 	if (g_atomic_int_dec_and_test (&_data25_->_ref_count_)) {
4642 		block24_data_unref (_data25_->_data24_);
4643 		_data25_->_data24_ = NULL;
4644 		_g_object_unref0 (_data25_->p);
4645 		g_slice_free (Block25Data, _data25_);
4646 	}
4647 }
4648 
4649 
_lambda63_(GtkButton * source,Block25Data * _data25_)4650 static void _lambda63_ (GtkButton* source, Block25Data* _data25_) {
4651 	Block24Data* _data24_;
4652 	Block23Data* _data23_;
4653 	Block18Data* _data18_;
4654 	GmpcBrowsersMetadata * self;
4655 	_data24_ = _data25_->_data24_;
4656 	_data23_ = _data24_->_data23_;
4657 	_data18_ = _data23_->_data18_;
4658 	self = _data18_->self;
4659 	g_return_if_fail (source != NULL);
4660 	gmpc_browsers_metadata_set_album (self, _data24_->but_song->artist, _data24_->but_song->album);
4661 	gtk_object_destroy ((GtkObject*) _data25_->p);
4662 }
4663 
4664 
__lambda63__gtk_button_clicked(GtkButton * _sender,gpointer self)4665 static void __lambda63__gtk_button_clicked (GtkButton* _sender, gpointer self) {
4666 	_lambda63_ (_sender, self);
4667 }
4668 
4669 
mpd_play_queue_add_album(MpdObj * server,const gchar * artist,const gchar * album,const gchar * album_artist)4670 static void mpd_play_queue_add_album (MpdObj* server, const gchar* artist, const gchar* album, const gchar* album_artist) {
4671 	MpdData* _tmp0_ = NULL;
4672 	MpdData* data;
4673 	g_return_if_fail (server != NULL);
4674 	mpd_database_search_start (server, TRUE);
4675 	if (album_artist != NULL) {
4676 		mpd_database_search_add_constraint (server, MPD_TAG_ITEM_ALBUM_ARTIST, album_artist);
4677 	} else {
4678 		mpd_database_search_add_constraint (server, MPD_TAG_ITEM_ARTIST, artist);
4679 	}
4680 	mpd_database_search_add_constraint (server, MPD_TAG_ITEM_ALBUM, album);
4681 	_tmp0_ = mpd_database_search_commit (server);
4682 	data = _tmp0_;
4683 	if (data != NULL) {
4684 		data = misc_sort_mpddata_by_album_disc_track (data);
4685 		while (TRUE) {
4686 			if (!(data != NULL)) {
4687 				break;
4688 			}
4689 			mpd_playlist_queue_add (server, data->song->file);
4690 			data = mpd_data_get_next (data);
4691 		}
4692 		mpd_playlist_queue_commit (server);
4693 	}
4694 	_mpd_data_free0 (data);
4695 }
4696 
4697 
_lambda64_(GtkButton * source,Block25Data * _data25_)4698 static void _lambda64_ (GtkButton* source, Block25Data* _data25_) {
4699 	Block24Data* _data24_;
4700 	Block23Data* _data23_;
4701 	Block18Data* _data18_;
4702 	GmpcBrowsersMetadata * self;
4703 	_data24_ = _data25_->_data24_;
4704 	_data23_ = _data24_->_data23_;
4705 	_data18_ = _data23_->_data18_;
4706 	self = _data18_->self;
4707 	g_return_if_fail (source != NULL);
4708 	mpd_playlist_clear (connection);
4709 	mpd_play_queue_add_album (connection, _data24_->but_song->artist, _data24_->but_song->album, NULL);
4710 	mpd_player_play (connection);
4711 	gtk_object_destroy ((GtkObject*) _data25_->p);
4712 }
4713 
4714 
__lambda64__gtk_button_clicked(GtkButton * _sender,gpointer self)4715 static void __lambda64__gtk_button_clicked (GtkButton* _sender, gpointer self) {
4716 	_lambda64_ (_sender, self);
4717 }
4718 
4719 
_lambda65_(GtkButton * source,Block25Data * _data25_)4720 static void _lambda65_ (GtkButton* source, Block25Data* _data25_) {
4721 	Block24Data* _data24_;
4722 	Block23Data* _data23_;
4723 	Block18Data* _data18_;
4724 	GmpcBrowsersMetadata * self;
4725 	_data24_ = _data25_->_data24_;
4726 	_data23_ = _data24_->_data23_;
4727 	_data18_ = _data23_->_data18_;
4728 	self = _data18_->self;
4729 	g_return_if_fail (source != NULL);
4730 	mpd_play_queue_add_album (connection, _data24_->but_song->artist, _data24_->but_song->album, NULL);
4731 	gtk_object_destroy ((GtkObject*) _data25_->p);
4732 }
4733 
4734 
__lambda65__gtk_button_clicked(GtkButton * _sender,gpointer self)4735 static void __lambda65__gtk_button_clicked (GtkButton* _sender, gpointer self) {
4736 	_lambda65_ (_sender, self);
4737 }
4738 
4739 
_lambda62_(GtkWidget * source,GdkEventButton * event,Block24Data * _data24_)4740 static gboolean _lambda62_ (GtkWidget* source, GdkEventButton* event, Block24Data* _data24_) {
4741 	Block23Data* _data23_;
4742 	Block18Data* _data18_;
4743 	GmpcBrowsersMetadata * self;
4744 	gboolean result = FALSE;
4745 	_data23_ = _data24_->_data23_;
4746 	_data18_ = _data23_->_data18_;
4747 	self = _data18_->self;
4748 	g_return_val_if_fail (source != NULL, FALSE);
4749 	if ((*event).button == 2) {
4750 		gmpc_browsers_metadata_set_album (self, _data24_->but_song->artist, _data24_->but_song->album);
4751 		result = TRUE;
4752 		return result;
4753 	} else {
4754 		if ((*event).button == 1) {
4755 			Block25Data* _data25_;
4756 			PopupMenu* _tmp0_ = NULL;
4757 			GtkHBox* _tmp1_ = NULL;
4758 			GtkButton* _tmp2_ = NULL;
4759 			GtkButton* open;
4760 			const gchar* _tmp3_ = NULL;
4761 			GtkImage* _tmp4_ = NULL;
4762 			GtkImage* _tmp5_;
4763 			GtkButton* _tmp6_ = NULL;
4764 			GtkButton* play;
4765 			GtkImage* _tmp7_ = NULL;
4766 			GtkImage* _tmp8_;
4767 			const gchar* _tmp9_ = NULL;
4768 			GtkButton* _tmp10_ = NULL;
4769 			GtkButton* add;
4770 			GtkImage* _tmp11_ = NULL;
4771 			GtkImage* _tmp12_;
4772 			const gchar* _tmp13_ = NULL;
4773 			_data25_ = g_slice_new0 (Block25Data);
4774 			_data25_->_ref_count_ = 1;
4775 			_data25_->_data24_ = block24_data_ref (_data24_);
4776 			_tmp0_ = popup_menu_new ();
4777 			_data25_->p = g_object_ref_sink (_tmp0_);
4778 			_tmp1_ = (GtkHBox*) gtk_hbox_new (FALSE, 0);
4779 			_g_object_unref0 (_data18_->hbox);
4780 			_data18_->hbox = g_object_ref_sink (_tmp1_);
4781 			_tmp2_ = (GtkButton*) gtk_button_new ();
4782 			open = g_object_ref_sink (_tmp2_);
4783 			_tmp3_ = _ ("Open");
4784 			gtk_widget_set_tooltip_text ((GtkWidget*) open, _tmp3_);
4785 			_tmp4_ = (GtkImage*) gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_DND);
4786 			_tmp5_ = g_object_ref_sink (_tmp4_);
4787 			gtk_container_add ((GtkContainer*) open, (GtkWidget*) _tmp5_);
4788 			_g_object_unref0 (_tmp5_);
4789 			gtk_box_pack_start ((GtkBox*) _data18_->hbox, (GtkWidget*) open, FALSE, FALSE, (guint) 0);
4790 			g_signal_connect_data (open, "clicked", (GCallback) __lambda63__gtk_button_clicked, block25_data_ref (_data25_), (GClosureNotify) block25_data_unref, 0);
4791 			_tmp6_ = (GtkButton*) gtk_button_new ();
4792 			play = g_object_ref_sink (_tmp6_);
4793 			_tmp7_ = (GtkImage*) gtk_image_new_from_stock ("gtk-media-play", GTK_ICON_SIZE_DND);
4794 			_tmp8_ = g_object_ref_sink (_tmp7_);
4795 			gtk_container_add ((GtkContainer*) play, (GtkWidget*) _tmp8_);
4796 			_g_object_unref0 (_tmp8_);
4797 			_tmp9_ = _ ("Play album");
4798 			gtk_widget_set_tooltip_text ((GtkWidget*) play, _tmp9_);
4799 			gtk_box_pack_start ((GtkBox*) _data18_->hbox, (GtkWidget*) play, FALSE, FALSE, (guint) 0);
4800 			g_signal_connect_data (play, "clicked", (GCallback) __lambda64__gtk_button_clicked, block25_data_ref (_data25_), (GClosureNotify) block25_data_unref, 0);
4801 			_tmp10_ = (GtkButton*) gtk_button_new ();
4802 			add = g_object_ref_sink (_tmp10_);
4803 			_tmp11_ = (GtkImage*) gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_DND);
4804 			_tmp12_ = g_object_ref_sink (_tmp11_);
4805 			gtk_container_add ((GtkContainer*) add, (GtkWidget*) _tmp12_);
4806 			_g_object_unref0 (_tmp12_);
4807 			_tmp13_ = _ ("Add album to play-queue");
4808 			gtk_widget_set_tooltip_text ((GtkWidget*) add, _tmp13_);
4809 			gtk_box_pack_start ((GtkBox*) _data18_->hbox, (GtkWidget*) add, FALSE, FALSE, (guint) 0);
4810 			g_signal_connect_data (add, "clicked", (GCallback) __lambda65__gtk_button_clicked, block25_data_ref (_data25_), (GClosureNotify) block25_data_unref, 0);
4811 			gtk_container_add ((GtkContainer*) _data25_->p, (GtkWidget*) _data18_->hbox);
4812 			gtk_widget_show_all ((GtkWidget*) _data18_->hbox);
4813 			popup_menu_popup (_data25_->p, event);
4814 			result = TRUE;
4815 			_g_object_unref0 (add);
4816 			_g_object_unref0 (play);
4817 			_g_object_unref0 (open);
4818 			block25_data_unref (_data25_);
4819 			_data25_ = NULL;
4820 			return result;
4821 		}
4822 	}
4823 	result = FALSE;
4824 	return result;
4825 }
4826 
4827 
__lambda62__gtk_widget_button_release_event(GtkWidget * _sender,GdkEventButton * event,gpointer self)4828 static gboolean __lambda62__gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
4829 	gboolean result;
4830 	result = _lambda62_ (_sender, event, self);
4831 	return result;
4832 }
4833 
4834 
_lambda66_(GtkButton * source,Block23Data * _data23_)4835 static void _lambda66_ (GtkButton* source, Block23Data* _data23_) {
4836 	Block18Data* _data18_;
4837 	GmpcBrowsersMetadata * self;
4838 	GtkButton* _tmp0_;
4839 	gboolean _tmp1_;
4840 	_data18_ = _data23_->_data18_;
4841 	self = _data18_->self;
4842 	g_return_if_fail (source != NULL);
4843 	_tmp0_ = source;
4844 	_tmp1_ = gtk_toggle_button_get_active ((GtkToggleButton*) (GTK_IS_CHECK_BUTTON (_tmp0_) ? ((GtkCheckButton*) _tmp0_) : NULL));
4845 	if (_tmp1_) {
4846 		g_debug ("gmpc-metadata-browser2.vala:2044: notebook page %i clicked", _data23_->j);
4847 		gtk_notebook_set_current_page (_data18_->notebook, _data23_->j);
4848 	}
4849 }
4850 
4851 
__lambda66__gtk_button_clicked(GtkButton * _sender,gpointer self)4852 static void __lambda66__gtk_button_clicked (GtkButton* _sender, gpointer self) {
4853 	_lambda66_ (_sender, self);
4854 }
4855 
4856 
_lambda67_(GObject * source,GParamSpec * spec,Block18Data * _data18_)4857 static void _lambda67_ (GObject* source, GParamSpec* spec, Block18Data* _data18_) {
4858 	GmpcBrowsersMetadata * self;
4859 	gint _tmp0_;
4860 	gint page;
4861 	self = _data18_->self;
4862 	g_return_if_fail (source != NULL);
4863 	g_return_if_fail (spec != NULL);
4864 	_tmp0_ = gtk_notebook_get_current_page (_data18_->notebook);
4865 	page = _tmp0_;
4866 	cfg_set_single_value_as_int (config, "MetaData", "artist-last-page", (gint) page);
4867 }
4868 
4869 
__lambda67__g_object_notify(GObject * _sender,GParamSpec * pspec,gpointer self)4870 static void __lambda67__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
4871 	_lambda67_ (_sender, pspec, self);
4872 }
4873 
4874 
gmpc_browsers_metadata_metadata_box_show_artist(GmpcBrowsersMetadata * self,const gchar * artist)4875 static void gmpc_browsers_metadata_metadata_box_show_artist (GmpcBrowsersMetadata* self, const gchar* artist) {
4876 	Block18Data* _data18_;
4877 	GtkVBox* _tmp0_ = NULL;
4878 	GtkVBox* master_box;
4879 	GtkVBox* _tmp1_ = NULL;
4880 	GtkVBox* vbox;
4881 	gint i;
4882 	mpd_Song* _tmp2_ = NULL;
4883 	mpd_Song* song;
4884 	gchar* _tmp3_;
4885 	GtkHBox* _tmp4_ = NULL;
4886 	GtkAlignment* _tmp5_ = NULL;
4887 	GtkAlignment* ali;
4888 	gint meta_size;
4889 	gint _tmp6_;
4890 	gint _tmp7_;
4891 	gint _tmp8_;
4892 	GmpcMetaImage* _tmp9_ = NULL;
4893 	GmpcMetaImage* artist_image;
4894 	GtkTable* _tmp10_ = NULL;
4895 	GtkTable* info_box;
4896 	const gchar* _tmp11_ = NULL;
4897 	GtkLabel* _tmp13_ = NULL;
4898 	GtkLabel* label;
4899 	const gchar* _tmp14_ = NULL;
4900 	GmpcStatsLabel* _tmp15_ = NULL;
4901 	GmpcStatsLabel* pt_label;
4902 	const gchar* _tmp16_ = NULL;
4903 	GmpcStatsLabel* _tmp17_ = NULL;
4904 	const gchar* _tmp18_ = NULL;
4905 	GmpcStatsLabel* _tmp19_ = NULL;
4906 	const gchar* _tmp20_ = NULL;
4907 	GmpcStatsLabel* _tmp21_ = NULL;
4908 	const gchar* _tmp22_ = NULL;
4909 	GtkVBox* _tmp23_ = NULL;
4910 	GtkVBox* hbox_2;
4911 	GtkButton* _tmp24_ = NULL;
4912 	GtkButton* button;
4913 	const gchar* _tmp25_ = NULL;
4914 	GValue _tmp26_ = {0};
4915 	GtkButton* _tmp27_ = NULL;
4916 	const gchar* _tmp28_ = NULL;
4917 	GValue _tmp29_ = {0};
4918 	GtkHBox* _tmp30_ = NULL;
4919 	GtkHBox* hboxje;
4920 	GtkHSeparator* _tmp31_ = NULL;
4921 	GtkHSeparator* sep;
4922 	GtkNotebook* _tmp32_ = NULL;
4923 	GSList* group;
4924 	gint _tmp33_;
4925 	gint _tmp42_;
4926 	gint _tmp58_;
4927 	GtkAlignment* _tmp101_ = NULL;
4928 	GtkVBox* _tmp102_ = NULL;
4929 	GtkVBox* metadata_vbox;
4930 	GtkHSeparator* _tmp103_ = NULL;
4931 	g_return_if_fail (self != NULL);
4932 	g_return_if_fail (artist != NULL);
4933 	_data18_ = g_slice_new0 (Block18Data);
4934 	_data18_->_ref_count_ = 1;
4935 	_data18_->self = g_object_ref (self);
4936 	_data18_->artist = g_strdup (artist);
4937 	_tmp0_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
4938 	master_box = g_object_ref_sink (_tmp0_);
4939 	_tmp1_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
4940 	vbox = g_object_ref_sink (_tmp1_);
4941 	i = 0;
4942 	gtk_container_set_border_width ((GtkContainer*) vbox, (guint) 8);
4943 	gmpc_browsers_metadata_history_bc_header (self, GMPC_BROWSERS_METADATA_HITEM_TYPE_ARTIST, _data18_->artist, NULL, NULL);
4944 	_tmp2_ = mpd_newSong ();
4945 	song = _tmp2_;
4946 	_tmp3_ = g_strdup (_data18_->artist);
4947 	_g_free0 (song->artist);
4948 	song->artist = _tmp3_;
4949 	_tmp4_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
4950 	_data18_->hbox = g_object_ref_sink (_tmp4_);
4951 	_tmp5_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.f, 0.f, 0.f);
4952 	ali = g_object_ref_sink (_tmp5_);
4953 	meta_size = (gint) (((GtkWidget*) self->priv->metadata_box)->allocation.width * 0.20);
4954 	_tmp6_ = MIN (meta_size, (gint) (((GtkWidget*) self->priv->metadata_sw)->allocation.height * 0.30));
4955 	meta_size = _tmp6_;
4956 	_tmp7_ = MAX (100, meta_size);
4957 	_tmp8_ = MIN (_tmp7_, 250);
4958 	meta_size = _tmp8_;
4959 	_tmp9_ = gmpc_metaimage_new_size (META_ARTIST_ART, meta_size);
4960 	artist_image = g_object_ref_sink (_tmp9_);
4961 	gmpc_metaimage_set_no_cover_icon (artist_image, "no-artist");
4962 	gmpc_metaimage_set_loading_cover_icon (artist_image, "fetching-artist");
4963 	gmpc_metaimage_set_squared (artist_image, FALSE);
4964 	gmpc_metaimage_update_cover_from_song (artist_image, song);
4965 	gtk_container_add ((GtkContainer*) ali, (GtkWidget*) artist_image);
4966 	gtk_box_pack_start ((GtkBox*) _data18_->hbox, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
4967 	_tmp10_ = (GtkTable*) gtk_table_new ((guint) 4, (guint) 2, FALSE);
4968 	info_box = g_object_ref_sink (_tmp10_);
4969 	gtk_table_set_row_spacings (info_box, (guint) 3);
4970 	gtk_table_set_col_spacings (info_box, (guint) 8);
4971 	gtk_box_pack_start ((GtkBox*) _data18_->hbox, (GtkWidget*) info_box, TRUE, TRUE, (guint) 0);
4972 	if (_data18_->artist != NULL) {
4973 		_tmp11_ = _data18_->artist;
4974 	} else {
4975 		const gchar* _tmp12_ = NULL;
4976 		_tmp12_ = _ ("Unknown");
4977 		_tmp11_ = _tmp12_;
4978 	}
4979 	_tmp13_ = (GtkLabel*) gtk_label_new (_tmp11_);
4980 	label = g_object_ref_sink (_tmp13_);
4981 	gtk_label_set_selectable (label, TRUE);
4982 	gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
4983 	_tmp14_ = _ ("Artist");
4984 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp14_, NULL, (GtkWidget*) label, &i, "media-artist");
4985 	_tmp15_ = gmpc_stats_label_new (ARTIST_GENRES_SONGS, song);
4986 	pt_label = g_object_ref_sink (_tmp15_);
4987 	gtk_label_set_selectable ((GtkLabel*) pt_label, TRUE);
4988 	gtk_misc_set_alignment ((GtkMisc*) pt_label, 0.0f, 0.5f);
4989 	gtk_label_set_line_wrap ((GtkLabel*) pt_label, TRUE);
4990 	_tmp16_ = _ ("Genres");
4991 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp16_, NULL, (GtkWidget*) pt_label, &i, "media-genre");
4992 	_tmp17_ = gmpc_stats_label_new (ARTIST_DATES_SONGS, song);
4993 	_g_object_unref0 (pt_label);
4994 	pt_label = g_object_ref_sink (_tmp17_);
4995 	gtk_label_set_selectable ((GtkLabel*) pt_label, TRUE);
4996 	gtk_label_set_line_wrap ((GtkLabel*) pt_label, TRUE);
4997 	gtk_misc_set_alignment ((GtkMisc*) pt_label, 0.0f, 0.5f);
4998 	_tmp18_ = _ ("Dates");
4999 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp18_, NULL, (GtkWidget*) pt_label, &i, "media-date");
5000 	_tmp19_ = gmpc_stats_label_new (ARTIST_NUM_SONGS, song);
5001 	_g_object_unref0 (pt_label);
5002 	pt_label = g_object_ref_sink (_tmp19_);
5003 	gtk_label_set_selectable ((GtkLabel*) pt_label, TRUE);
5004 	gtk_label_set_line_wrap ((GtkLabel*) pt_label, TRUE);
5005 	gtk_misc_set_alignment ((GtkMisc*) pt_label, 0.0f, 0.5f);
5006 	_tmp20_ = _ ("Songs");
5007 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp20_, NULL, (GtkWidget*) pt_label, &i, "media-num-tracks");
5008 	_tmp21_ = gmpc_stats_label_new (ARTIST_PLAYTIME_SONGS, song);
5009 	_g_object_unref0 (pt_label);
5010 	pt_label = g_object_ref_sink (_tmp21_);
5011 	gtk_label_set_selectable ((GtkLabel*) pt_label, TRUE);
5012 	gtk_label_set_line_wrap ((GtkLabel*) pt_label, TRUE);
5013 	gtk_misc_set_alignment ((GtkMisc*) pt_label, 0.0f, 0.5f);
5014 	_tmp22_ = _ ("Playtime");
5015 	gmpc_browsers_metadata_add_entry (self, info_box, _tmp22_, NULL, (GtkWidget*) pt_label, &i, "media-track-length");
5016 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) _data18_->hbox, TRUE, TRUE, (guint) 0);
5017 	_tmp23_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
5018 	hbox_2 = g_object_ref_sink (_tmp23_);
5019 	_tmp24_ = (GtkButton*) gtk_button_new_from_stock ("gtk-add");
5020 	button = g_object_ref_sink (_tmp24_);
5021 	_tmp25_ = _ ("Add the item to the play queue");
5022 	gtk_widget_set_tooltip_text ((GtkWidget*) button, _tmp25_);
5023 	g_value_init (&_tmp26_, G_TYPE_FLOAT);
5024 	g_value_set_float (&_tmp26_, 0.0f);
5025 	g_object_set_property ((GObject*) button, "xalign", &_tmp26_);
5026 	G_IS_VALUE (&_tmp26_) ? (g_value_unset (&_tmp26_), NULL) : NULL;
5027 	gtk_button_set_relief (button, GTK_RELIEF_NONE);
5028 	g_signal_connect_object (button, "clicked", (GCallback) _gmpc_browsers_metadata_add_selected_song_gtk_button_clicked, self, 0);
5029 	gtk_box_pack_start ((GtkBox*) hbox_2, (GtkWidget*) button, FALSE, FALSE, (guint) 0);
5030 	_tmp27_ = (GtkButton*) gtk_button_new_from_stock ("gtk-media-play");
5031 	_g_object_unref0 (button);
5032 	button = g_object_ref_sink (_tmp27_);
5033 	_tmp28_ = _ ("Replace the current play queue with this item and play");
5034 	gtk_widget_set_tooltip_text ((GtkWidget*) button, _tmp28_);
5035 	g_value_init (&_tmp29_, G_TYPE_FLOAT);
5036 	g_value_set_float (&_tmp29_, 0.0f);
5037 	g_object_set_property ((GObject*) button, "xalign", &_tmp29_);
5038 	G_IS_VALUE (&_tmp29_) ? (g_value_unset (&_tmp29_), NULL) : NULL;
5039 	gtk_button_set_relief (button, GTK_RELIEF_NONE);
5040 	g_signal_connect_object (button, "clicked", (GCallback) _gmpc_browsers_metadata_replace_selected_song_gtk_button_clicked, self, 0);
5041 	gtk_box_pack_start ((GtkBox*) hbox_2, (GtkWidget*) button, FALSE, FALSE, (guint) 0);
5042 	gtk_box_pack_start ((GtkBox*) _data18_->hbox, (GtkWidget*) hbox_2, FALSE, FALSE, (guint) 0);
5043 	_tmp30_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
5044 	hboxje = g_object_ref_sink (_tmp30_);
5045 	_tmp31_ = (GtkHSeparator*) gtk_hseparator_new ();
5046 	sep = g_object_ref_sink (_tmp31_);
5047 	gtk_widget_set_size_request ((GtkWidget*) sep, -1, 4);
5048 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) sep, FALSE, FALSE, (guint) 0);
5049 	_tmp32_ = (GtkNotebook*) gtk_notebook_new ();
5050 	_data18_->notebook = g_object_ref_sink (_tmp32_);
5051 	gtk_notebook_set_show_border (_data18_->notebook, FALSE);
5052 	gtk_notebook_set_show_tabs (_data18_->notebook, FALSE);
5053 	i = 0;
5054 	group = NULL;
5055 	_tmp33_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-artist-information", 1);
5056 	if (_tmp33_ == 1) {
5057 		Block19Data* _data19_;
5058 		GtkAlignment* _tmp34_ = NULL;
5059 		GtkAlignment* alib;
5060 		GmpcMetaTextView* _tmp35_ = NULL;
5061 		GmpcMetaTextView* text_view;
5062 		const gchar* _tmp36_ = NULL;
5063 		GtkLabel* _tmp37_ = NULL;
5064 		GtkLabel* _tmp38_;
5065 		const gchar* _tmp39_ = NULL;
5066 		GtkRadioButton* _tmp40_ = NULL;
5067 		GtkRadioButton* button_sai;
5068 		GSList* _tmp41_ = NULL;
5069 		_data19_ = g_slice_new0 (Block19Data);
5070 		_data19_->_ref_count_ = 1;
5071 		_data19_->_data18_ = block18_data_ref (_data18_);
5072 		_tmp34_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.f, 1.f, 0.f);
5073 		alib = g_object_ref_sink (_tmp34_);
5074 		_tmp35_ = gmpc_meta_text_view_new (META_ARTIST_TXT);
5075 		text_view = g_object_ref_sink (_tmp35_);
5076 		gtk_text_view_set_left_margin ((GtkTextView*) text_view, 8);
5077 		gmpc_meta_text_view_query_text_from_song (text_view, song);
5078 		gtk_container_add ((GtkContainer*) alib, (GtkWidget*) text_view);
5079 		_tmp36_ = _ ("Artist information");
5080 		_tmp37_ = (GtkLabel*) gtk_label_new (_tmp36_);
5081 		_tmp38_ = g_object_ref_sink (_tmp37_);
5082 		gtk_notebook_append_page (_data18_->notebook, (GtkWidget*) alib, (GtkWidget*) _tmp38_);
5083 		_g_object_unref0 (_tmp38_);
5084 		_tmp39_ = _ ("Artist information");
5085 		_tmp40_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp39_);
5086 		button_sai = g_object_ref_sink (_tmp40_);
5087 		_tmp41_ = gtk_radio_button_get_group (button_sai);
5088 		group = _tmp41_;
5089 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) button_sai, FALSE, FALSE, (guint) 0);
5090 		_data19_->j = i;
5091 		g_signal_connect_data ((GtkButton*) button_sai, "clicked", (GCallback) __lambda54__gtk_button_clicked, block19_data_ref (_data19_), (GClosureNotify) block19_data_unref, 0);
5092 		i++;
5093 		gtk_widget_show ((GtkWidget*) alib);
5094 		_g_object_unref0 (button_sai);
5095 		_g_object_unref0 (text_view);
5096 		_g_object_unref0 (alib);
5097 		block19_data_unref (_data19_);
5098 		_data19_ = NULL;
5099 	}
5100 	_tmp42_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-similar-artist", 1);
5101 	if (_tmp42_ == 1) {
5102 		Block20Data* _data20_;
5103 		GmpcMetaDataWidgetsSimilarArtists* _tmp43_ = NULL;
5104 		const gchar* _tmp44_ = NULL;
5105 		GtkLabel* _tmp45_ = NULL;
5106 		GtkLabel* _tmp46_;
5107 		const gchar* _tmp47_ = NULL;
5108 		GtkRadioButton* _tmp48_ = NULL;
5109 		GtkRadioButton* button_sa;
5110 		GSList* _tmp49_ = NULL;
5111 		_data20_ = g_slice_new0 (Block20Data);
5112 		_data20_->_ref_count_ = 1;
5113 		_data20_->_data18_ = block18_data_ref (_data18_);
5114 		_tmp43_ = gmpc_meta_data_widgets_similar_artists_new (connection, song);
5115 		_data20_->similar_artist = g_object_ref_sink (_tmp43_);
5116 		_tmp44_ = _ ("Similar Artist");
5117 		_tmp45_ = (GtkLabel*) gtk_label_new (_tmp44_);
5118 		_tmp46_ = g_object_ref_sink (_tmp45_);
5119 		gtk_notebook_append_page (_data18_->notebook, (GtkWidget*) _data20_->similar_artist, (GtkWidget*) _tmp46_);
5120 		_g_object_unref0 (_tmp46_);
5121 		_tmp47_ = _ ("Similar Artist");
5122 		_tmp48_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp47_);
5123 		button_sa = g_object_ref_sink (_tmp48_);
5124 		_tmp49_ = gtk_radio_button_get_group (button_sa);
5125 		group = _tmp49_;
5126 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) button_sa, FALSE, FALSE, (guint) 0);
5127 		_data20_->j = i;
5128 		g_signal_connect_data ((GtkButton*) button_sa, "clicked", (GCallback) __lambda55__gtk_button_clicked, block20_data_ref (_data20_), (GClosureNotify) block20_data_unref, 0);
5129 		gtk_widget_show ((GtkWidget*) _data20_->similar_artist);
5130 		i++;
5131 		_g_object_unref0 (button_sa);
5132 		block20_data_unref (_data20_);
5133 		_data20_ = NULL;
5134 	}
5135 	{
5136 		Block21Data* _data21_;
5137 		GtkVBox* _tmp50_ = NULL;
5138 		GtkVBox* slhbox;
5139 		GmpcWidgetsSonglist* _tmp51_ = NULL;
5140 		const gchar* _tmp52_ = NULL;
5141 		GtkLabel* _tmp53_ = NULL;
5142 		GtkLabel* _tmp54_;
5143 		const gchar* _tmp55_ = NULL;
5144 		GtkRadioButton* _tmp56_ = NULL;
5145 		GtkRadioButton* rbutton;
5146 		GSList* _tmp57_ = NULL;
5147 		_data21_ = g_slice_new0 (Block21Data);
5148 		_data21_->_ref_count_ = 1;
5149 		_data21_->_data18_ = block18_data_ref (_data18_);
5150 		_tmp50_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
5151 		slhbox = g_object_ref_sink (_tmp50_);
5152 		_tmp51_ = gmpc_widgets_songlist_new ();
5153 		_data21_->sl = g_object_ref_sink (_tmp51_);
5154 		gtk_box_pack_start ((GtkBox*) slhbox, (GtkWidget*) _data21_->sl, FALSE, FALSE, (guint) 0);
5155 		g_signal_connect_object (_data21_->sl, "album-song-clicked", (GCallback) __lambda56__gmpc_widgets_songlist_album_song_clicked, self, 0);
5156 		g_signal_connect_object (_data21_->sl, "song-clicked", (GCallback) __lambda57__gmpc_widgets_songlist_song_clicked, self, 0);
5157 		g_signal_connect_object (_data21_->sl, "play-song-clicked", (GCallback) __lambda58__gmpc_widgets_songlist_play_song_clicked, self, 0);
5158 		_tmp52_ = _ ("Song list");
5159 		_tmp53_ = (GtkLabel*) gtk_label_new (_tmp52_);
5160 		_tmp54_ = g_object_ref_sink (_tmp53_);
5161 		gtk_notebook_append_page (_data18_->notebook, (GtkWidget*) slhbox, (GtkWidget*) _tmp54_);
5162 		_g_object_unref0 (_tmp54_);
5163 		_tmp55_ = _ ("Song list");
5164 		_tmp56_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp55_);
5165 		rbutton = g_object_ref_sink (_tmp56_);
5166 		_tmp57_ = gtk_radio_button_get_group (rbutton);
5167 		group = _tmp57_;
5168 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) rbutton, FALSE, FALSE, (guint) 0);
5169 		_data21_->j = i;
5170 		_data21_->seen = FALSE;
5171 		g_signal_connect_data ((GtkButton*) rbutton, "clicked", (GCallback) __lambda59__gtk_button_clicked, block21_data_ref (_data21_), (GClosureNotify) block21_data_unref, 0);
5172 		g_signal_connect_data ((GObject*) _data18_->notebook, "notify::page", (GCallback) __lambda60__g_object_notify, block21_data_ref (_data21_), (GClosureNotify) block21_data_unref, 0);
5173 		gtk_widget_show ((GtkWidget*) slhbox);
5174 		i++;
5175 		_g_object_unref0 (rbutton);
5176 		_g_object_unref0 (slhbox);
5177 		block21_data_unref (_data21_);
5178 		_data21_ = NULL;
5179 	}
5180 	_tmp58_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "show-web-links", 1);
5181 	if (_tmp58_ == 1) {
5182 		Block22Data* _data22_;
5183 		GmpcMetaDataWidgetsSongLinks* _tmp59_ = NULL;
5184 		GmpcMetaDataWidgetsSongLinks* song_links;
5185 		const gchar* _tmp60_ = NULL;
5186 		GtkLabel* _tmp61_ = NULL;
5187 		GtkLabel* _tmp62_;
5188 		const gchar* _tmp63_ = NULL;
5189 		GtkRadioButton* _tmp64_ = NULL;
5190 		GtkRadioButton* button_sl;
5191 		GSList* _tmp65_ = NULL;
5192 		_data22_ = g_slice_new0 (Block22Data);
5193 		_data22_->_ref_count_ = 1;
5194 		_data22_->_data18_ = block18_data_ref (_data18_);
5195 		_tmp59_ = gmpc_meta_data_widgets_song_links_new (GMPC_META_DATA_WIDGETS_SONG_LINKS_TYPE_ARTIST, song);
5196 		song_links = g_object_ref_sink (_tmp59_);
5197 		_tmp60_ = _ ("Web Links");
5198 		_tmp61_ = (GtkLabel*) gtk_label_new (_tmp60_);
5199 		_tmp62_ = g_object_ref_sink (_tmp61_);
5200 		gtk_notebook_append_page (_data18_->notebook, (GtkWidget*) song_links, (GtkWidget*) _tmp62_);
5201 		_g_object_unref0 (_tmp62_);
5202 		_tmp63_ = _ ("Web Links");
5203 		_tmp64_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp63_);
5204 		button_sl = g_object_ref_sink (_tmp64_);
5205 		_tmp65_ = gtk_radio_button_get_group (button_sl);
5206 		group = _tmp65_;
5207 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) button_sl, FALSE, FALSE, (guint) 0);
5208 		_data22_->j = i;
5209 		g_signal_connect_data ((GtkButton*) button_sl, "clicked", (GCallback) __lambda61__gtk_button_clicked, block22_data_ref (_data22_), (GClosureNotify) block22_data_unref, 0);
5210 		gtk_widget_show ((GtkWidget*) song_links);
5211 		i++;
5212 		_g_object_unref0 (button_sl);
5213 		_g_object_unref0 (song_links);
5214 		block22_data_unref (_data22_);
5215 		_data22_ = NULL;
5216 	}
5217 	if (song->artist != NULL) {
5218 		Block23Data* _data23_;
5219 		gint albums;
5220 		GtkVBox* _tmp66_ = NULL;
5221 		GtkVBox* album_hbox;
5222 		GmpcWidgetsQtable* _tmp67_ = NULL;
5223 		GmpcWidgetsQtable* album_view;
5224 		GtkTreeIter titer = {0};
5225 		GtkTreeIter _tmp68_ = {0};
5226 		gboolean _tmp69_;
5227 		const gchar* _tmp92_ = NULL;
5228 		GtkLabel* _tmp93_ = NULL;
5229 		GtkLabel* _tmp94_;
5230 		const gchar* _tmp95_ = NULL;
5231 		GtkRadioButton* _tmp96_ = NULL;
5232 		GtkRadioButton* button_sl;
5233 		GSList* _tmp97_ = NULL;
5234 		_data23_ = g_slice_new0 (Block23Data);
5235 		_data23_->_ref_count_ = 1;
5236 		_data23_->_data18_ = block18_data_ref (_data18_);
5237 		albums = 0;
5238 		_tmp66_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
5239 		album_hbox = g_object_ref_sink (_tmp66_);
5240 		_tmp67_ = gmpc_widgets_qtable_new ();
5241 		album_view = g_object_ref_sink (_tmp67_);
5242 		gtk_box_pack_start ((GtkBox*) album_hbox, (GtkWidget*) album_view, FALSE, TRUE, (guint) 0);
5243 		_tmp69_ = gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->model_albums, &_tmp68_);
5244 		titer = _tmp68_;
5245 		if (_tmp69_) {
5246 			{
5247 				gboolean _tmp70_;
5248 				_tmp70_ = TRUE;
5249 				while (TRUE) {
5250 					const mpd_Song* asong;
5251 					if (!_tmp70_) {
5252 						gboolean _tmp71_;
5253 						_tmp71_ = gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->model_albums, &titer);
5254 						if (!_tmp71_) {
5255 							break;
5256 						}
5257 					}
5258 					_tmp70_ = FALSE;
5259 					asong = NULL;
5260 					gtk_tree_model_get ((GtkTreeModel*) self->priv->model_albums, &titer, 0, &asong, -1);
5261 					if (song != NULL) {
5262 						Block24Data* _data24_;
5263 						mpd_Song* _tmp72_;
5264 						GtkVBox* _tmp73_ = NULL;
5265 						GtkVBox* but_hbox;
5266 						GmpcMetaImage* _tmp74_ = NULL;
5267 						GmpcMetaImage* image;
5268 						GtkLabel* _tmp75_ = NULL;
5269 						GtkLabel* but_label;
5270 						gchar* _tmp76_;
5271 						gchar* strlabel;
5272 						gboolean _tmp77_ = FALSE;
5273 						gchar* _tmp87_;
5274 						GtkLabel* _tmp91_;
5275 						_data24_ = g_slice_new0 (Block24Data);
5276 						_data24_->_ref_count_ = 1;
5277 						_data24_->_data23_ = block23_data_ref (_data23_);
5278 						_tmp72_ = _mpd_songDup0 (asong);
5279 						_data24_->but_song = _tmp72_;
5280 						_tmp73_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
5281 						but_hbox = g_object_ref_sink (_tmp73_);
5282 						_tmp74_ = gmpc_metaimage_new_size (META_ALBUM_ART, 175);
5283 						image = g_object_ref_sink (_tmp74_);
5284 						gmpc_metaimage_set_squared (image, TRUE);
5285 						gmpc_metaimage_set_scale_up (image, TRUE);
5286 						gtk_widget_set_has_tooltip ((GtkWidget*) image, FALSE);
5287 						gmpc_metaimage_update_cover_from_song_delayed (image, _data24_->but_song);
5288 						gtk_box_pack_start ((GtkBox*) but_hbox, (GtkWidget*) image, FALSE, FALSE, (guint) 0);
5289 						_tmp75_ = (GtkLabel*) gtk_label_new (_data24_->but_song->album);
5290 						but_label = g_object_ref_sink (_tmp75_);
5291 						gtk_label_set_selectable (but_label, TRUE);
5292 						gtk_misc_set_alignment ((GtkMisc*) but_label, 0.5f, 0.0f);
5293 						_tmp76_ = g_strdup ("<b>");
5294 						strlabel = _tmp76_;
5295 						if (_data24_->but_song->date != NULL) {
5296 							gint _tmp78_;
5297 							_tmp78_ = strlen (_data24_->but_song->date);
5298 							_tmp77_ = _tmp78_ > 0;
5299 						} else {
5300 							_tmp77_ = FALSE;
5301 						}
5302 						if (_tmp77_) {
5303 							gchar* _tmp79_ = NULL;
5304 							gchar* _tmp80_;
5305 							gchar* _tmp81_;
5306 							_tmp79_ = g_markup_printf_escaped ("%s - ", _data24_->but_song->date);
5307 							_tmp80_ = _tmp79_;
5308 							_tmp81_ = g_strconcat (strlabel, _tmp80_, NULL);
5309 							_g_free0 (strlabel);
5310 							strlabel = _tmp81_;
5311 							_g_free0 (_tmp80_);
5312 						}
5313 						if (_data24_->but_song->album != NULL) {
5314 							gchar* _tmp82_ = NULL;
5315 							gchar* _tmp83_;
5316 							gchar* _tmp84_;
5317 							_tmp82_ = g_markup_escape_text (_data24_->but_song->album, (gssize) (-1));
5318 							_tmp83_ = _tmp82_;
5319 							_tmp84_ = g_strconcat (strlabel, _tmp83_, NULL);
5320 							_g_free0 (strlabel);
5321 							strlabel = _tmp84_;
5322 							_g_free0 (_tmp83_);
5323 						} else {
5324 							const gchar* _tmp85_ = NULL;
5325 							gchar* _tmp86_;
5326 							_tmp85_ = _ ("No Album");
5327 							_tmp86_ = g_strconcat (strlabel, _tmp85_, NULL);
5328 							_g_free0 (strlabel);
5329 							strlabel = _tmp86_;
5330 						}
5331 						_tmp87_ = g_strconcat (strlabel, "</b>", NULL);
5332 						_g_free0 (strlabel);
5333 						strlabel = _tmp87_;
5334 						if (_data24_->but_song->artist != NULL) {
5335 							gchar* _tmp88_ = NULL;
5336 							gchar* _tmp89_;
5337 							gchar* _tmp90_;
5338 							_tmp88_ = g_markup_printf_escaped ("\n%s", _data24_->but_song->artist);
5339 							_tmp89_ = _tmp88_;
5340 							_tmp90_ = g_strconcat (strlabel, _tmp89_, NULL);
5341 							_g_free0 (strlabel);
5342 							strlabel = _tmp90_;
5343 							_g_free0 (_tmp89_);
5344 						}
5345 						gtk_label_set_markup (but_label, strlabel);
5346 						_tmp91_ = but_label;
5347 						gtk_misc_set_alignment (GTK_IS_MISC (_tmp91_) ? ((GtkMisc*) _tmp91_) : NULL, 0.0f, 0.0f);
5348 						gtk_label_set_ellipsize (but_label, PANGO_ELLIPSIZE_END);
5349 						gtk_box_pack_start ((GtkBox*) but_hbox, (GtkWidget*) but_label, TRUE, TRUE, (guint) 0);
5350 						g_signal_connect_data ((GtkWidget*) image, "button-release-event", (GCallback) __lambda62__gtk_widget_button_release_event, block24_data_ref (_data24_), (GClosureNotify) block24_data_unref, 0);
5351 						albums++;
5352 						gtk_container_add ((GtkContainer*) album_view, (GtkWidget*) but_hbox);
5353 						_g_free0 (strlabel);
5354 						_g_object_unref0 (but_label);
5355 						_g_object_unref0 (image);
5356 						_g_object_unref0 (but_hbox);
5357 						block24_data_unref (_data24_);
5358 						_data24_ = NULL;
5359 					}
5360 				}
5361 			}
5362 		}
5363 		_tmp92_ = _ ("Albums");
5364 		_tmp93_ = (GtkLabel*) gtk_label_new (_tmp92_);
5365 		_tmp94_ = g_object_ref_sink (_tmp93_);
5366 		gtk_notebook_append_page (_data18_->notebook, (GtkWidget*) album_hbox, (GtkWidget*) _tmp94_);
5367 		_g_object_unref0 (_tmp94_);
5368 		_tmp95_ = _ ("Albums");
5369 		_tmp96_ = (GtkRadioButton*) gtk_radio_button_new_with_label (group, _tmp95_);
5370 		button_sl = g_object_ref_sink (_tmp96_);
5371 		_tmp97_ = gtk_radio_button_get_group (button_sl);
5372 		group = _tmp97_;
5373 		gtk_box_pack_start ((GtkBox*) hboxje, (GtkWidget*) button_sl, FALSE, FALSE, (guint) 0);
5374 		_data23_->j = i;
5375 		g_signal_connect_data ((GtkButton*) button_sl, "clicked", (GCallback) __lambda66__gtk_button_clicked, block23_data_ref (_data23_), (GClosureNotify) block23_data_unref, 0);
5376 		gtk_widget_show ((GtkWidget*) album_hbox);
5377 		i++;
5378 		_g_object_unref0 (button_sl);
5379 		_g_object_unref0 (album_view);
5380 		_g_object_unref0 (album_hbox);
5381 		block23_data_unref (_data23_);
5382 		_data23_ = NULL;
5383 	}
5384 	g_signal_connect_data ((GObject*) _data18_->notebook, "notify::page", (GCallback) __lambda67__g_object_notify, block18_data_ref (_data18_), (GClosureNotify) block18_data_unref, 0);
5385 	if (i > 0) {
5386 		gint _tmp98_;
5387 		gint page;
5388 		_tmp98_ = cfg_get_single_value_as_int_with_default (config, "MetaData", "artist-last-page", 0);
5389 		page = _tmp98_;
5390 		if (page > i) {
5391 			gtk_notebook_set_current_page (_data18_->notebook, 0);
5392 		} else {
5393 			gconstpointer _tmp99_ = NULL;
5394 			GtkRadioButton* _tmp100_;
5395 			GtkRadioButton* w;
5396 			_tmp99_ = g_slist_nth_data (group, (guint) ((i - page) - 1));
5397 			_tmp100_ = _g_object_ref0 ((GtkRadioButton*) _tmp99_);
5398 			w = _tmp100_;
5399 			gtk_toggle_button_set_active ((GtkToggleButton*) w, TRUE);
5400 			gtk_notebook_set_current_page (_data18_->notebook, page);
5401 			_g_object_unref0 (w);
5402 		}
5403 	}
5404 	_tmp101_ = (GtkAlignment*) gtk_alignment_new (0.0f, 0.5f, 0.f, 0.f);
5405 	_g_object_unref0 (ali);
5406 	ali = g_object_ref_sink (_tmp101_);
5407 	gtk_container_add ((GtkContainer*) ali, (GtkWidget*) hboxje);
5408 	_tmp102_ = (GtkVBox*) gtk_vbox_new (FALSE, 6);
5409 	metadata_vbox = g_object_ref_sink (_tmp102_);
5410 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) ali, FALSE, FALSE, (guint) 0);
5411 	_tmp103_ = (GtkHSeparator*) gtk_hseparator_new ();
5412 	_g_object_unref0 (sep);
5413 	sep = g_object_ref_sink (_tmp103_);
5414 	gtk_widget_set_size_request ((GtkWidget*) sep, -1, 1);
5415 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) sep, FALSE, FALSE, (guint) 0);
5416 	gtk_box_pack_start ((GtkBox*) metadata_vbox, (GtkWidget*) _data18_->notebook, FALSE, FALSE, (guint) 0);
5417 	gtk_box_pack_start ((GtkBox*) vbox, (GtkWidget*) metadata_vbox, TRUE, TRUE, (guint) 0);
5418 	gtk_box_pack_start ((GtkBox*) master_box, (GtkWidget*) vbox, FALSE, FALSE, (guint) 0);
5419 	gtk_container_add ((GtkContainer*) self->priv->metadata_box, (GtkWidget*) master_box);
5420 	gmpc_browsers_metadata_change_color_style (self, (GtkWidget*) self->priv->metadata_sw);
5421 	gtk_widget_show_all ((GtkWidget*) self->priv->metadata_box);
5422 	_g_object_unref0 (metadata_vbox);
5423 	_g_object_unref0 (sep);
5424 	_g_object_unref0 (hboxje);
5425 	_g_object_unref0 (button);
5426 	_g_object_unref0 (hbox_2);
5427 	_g_object_unref0 (pt_label);
5428 	_g_object_unref0 (label);
5429 	_g_object_unref0 (info_box);
5430 	_g_object_unref0 (artist_image);
5431 	_g_object_unref0 (ali);
5432 	_mpd_freeSong0 (song);
5433 	_g_object_unref0 (vbox);
5434 	_g_object_unref0 (master_box);
5435 	block18_data_unref (_data18_);
5436 	_data18_ = NULL;
5437 }
5438 
5439 
_gmpc_browsers_metadata_metadata_box_update_real_gsource_func(gpointer self)5440 static gboolean _gmpc_browsers_metadata_metadata_box_update_real_gsource_func (gpointer self) {
5441 	gboolean result;
5442 	result = gmpc_browsers_metadata_metadata_box_update_real (self);
5443 	return result;
5444 }
5445 
5446 
gmpc_browsers_metadata_metadata_box_update(GmpcBrowsersMetadata * self)5447 static void gmpc_browsers_metadata_metadata_box_update (GmpcBrowsersMetadata* self) {
5448 	guint _tmp0_;
5449 	g_return_if_fail (self != NULL);
5450 	if (self->priv->update_timeout > 0) {
5451 		g_source_remove (self->priv->update_timeout);
5452 	}
5453 	_tmp0_ = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, _gmpc_browsers_metadata_metadata_box_update_real_gsource_func, g_object_ref (self), g_object_unref);
5454 	self->priv->update_timeout = _tmp0_;
5455 }
5456 
5457 
gmpc_browsers_metadata_metadata_box_update_real(GmpcBrowsersMetadata * self)5458 static gboolean gmpc_browsers_metadata_metadata_box_update_real (GmpcBrowsersMetadata* self) {
5459 	gboolean result = FALSE;
5460 	gchar* _tmp0_ = NULL;
5461 	gchar* artist;
5462 	gchar* _tmp1_ = NULL;
5463 	gchar* album;
5464 	mpd_Song* _tmp2_ = NULL;
5465 	mpd_Song* song;
5466 	g_return_val_if_fail (self != NULL, FALSE);
5467 	if (self->priv->block_update > 0) {
5468 		self->priv->update_timeout = (guint) 0;
5469 		result = FALSE;
5470 		return result;
5471 	}
5472 	_tmp0_ = gmpc_browsers_metadata_browser_get_selected_artist (self);
5473 	artist = _tmp0_;
5474 	_tmp1_ = gmpc_browsers_metadata_browser_get_selected_album (self);
5475 	album = _tmp1_;
5476 	_tmp2_ = gmpc_browsers_metadata_browser_get_selected_song (self);
5477 	song = _tmp2_;
5478 	if (song != NULL) {
5479 		GmpcBrowsersMetadataHitem item = {0};
5480 		mpd_Song* _tmp3_;
5481 		GtkWidget* _tmp4_ = NULL;
5482 		GtkWidget* view;
5483 		memset (&item, 0, sizeof (GmpcBrowsersMetadataHitem));
5484 		_tmp3_ = _mpd_songDup0 (song);
5485 		_mpd_freeSong0 (item.song);
5486 		item.song = _tmp3_;
5487 		item.type = GMPC_BROWSERS_METADATA_HITEM_TYPE_SONG;
5488 		gmpc_browsers_metadata_history_add (self, &item);
5489 		_tmp4_ = gmpc_browsers_metadata_metadata_box_show_song (self, song, TRUE);
5490 		view = _tmp4_;
5491 		gtk_container_add ((GtkContainer*) self->priv->metadata_box, view);
5492 		gmpc_browsers_metadata_change_color_style (self, (GtkWidget*) self->priv->metadata_sw);
5493 		gtk_widget_show_all ((GtkWidget*) self->priv->metadata_box);
5494 		_g_object_unref0 (view);
5495 		gmpc_browsers_metadata_hitem_destroy (&item);
5496 	} else {
5497 		gboolean _tmp5_ = FALSE;
5498 		if (album != NULL) {
5499 			_tmp5_ = artist != NULL;
5500 		} else {
5501 			_tmp5_ = FALSE;
5502 		}
5503 		if (_tmp5_) {
5504 			GmpcBrowsersMetadataHitem item = {0};
5505 			mpd_Song* _tmp6_ = NULL;
5506 			gchar* _tmp7_;
5507 			gchar* _tmp8_;
5508 			memset (&item, 0, sizeof (GmpcBrowsersMetadataHitem));
5509 			_tmp6_ = mpd_newSong ();
5510 			_mpd_freeSong0 (item.song);
5511 			item.song = _tmp6_;
5512 			_tmp7_ = g_strdup (artist);
5513 			_g_free0 (item.song->artist);
5514 			item.song->artist = _tmp7_;
5515 			_tmp8_ = g_strdup (album);
5516 			_g_free0 (item.song->album);
5517 			item.song->album = _tmp8_;
5518 			item.type = GMPC_BROWSERS_METADATA_HITEM_TYPE_ALBUM;
5519 			gmpc_browsers_metadata_history_add (self, &item);
5520 			gmpc_browsers_metadata_metadata_box_show_album (self, artist, album);
5521 			gmpc_browsers_metadata_hitem_destroy (&item);
5522 		} else {
5523 			if (artist != NULL) {
5524 				GmpcBrowsersMetadataHitem item = {0};
5525 				mpd_Song* _tmp9_ = NULL;
5526 				gchar* _tmp10_;
5527 				memset (&item, 0, sizeof (GmpcBrowsersMetadataHitem));
5528 				_tmp9_ = mpd_newSong ();
5529 				_mpd_freeSong0 (item.song);
5530 				item.song = _tmp9_;
5531 				_tmp10_ = g_strdup (artist);
5532 				_g_free0 (item.song->artist);
5533 				item.song->artist = _tmp10_;
5534 				item.type = GMPC_BROWSERS_METADATA_HITEM_TYPE_ARTIST;
5535 				gmpc_browsers_metadata_history_add (self, &item);
5536 				gmpc_browsers_metadata_metadata_box_show_artist (self, artist);
5537 				gmpc_browsers_metadata_hitem_destroy (&item);
5538 			} else {
5539 				GmpcBrowsersMetadataHitem item = {0};
5540 				memset (&item, 0, sizeof (GmpcBrowsersMetadataHitem));
5541 				_g_free0 (item.search_string);
5542 				item.search_string = NULL;
5543 				item.type = GMPC_BROWSERS_METADATA_HITEM_TYPE_BASE;
5544 				gmpc_browsers_metadata_history_add (self, &item);
5545 				gmpc_browsers_metadata_metadata_box_show_base (self);
5546 				gmpc_browsers_metadata_hitem_destroy (&item);
5547 			}
5548 		}
5549 	}
5550 	self->priv->update_timeout = (guint) 0;
5551 	result = FALSE;
5552 	_mpd_freeSong0 (song);
5553 	_g_free0 (album);
5554 	_g_free0 (artist);
5555 	return result;
5556 }
5557 
5558 
5559 /**
5560      * Browser Interface bindings
5561      */
gmpc_browsers_metadata_real_browser_add(GmpcPluginBrowserIface * base,GtkWidget * category_tree)5562 static void gmpc_browsers_metadata_real_browser_add (GmpcPluginBrowserIface* base, GtkWidget* category_tree) {
5563 	GmpcBrowsersMetadata * self;
5564 	GtkTreeView* _tmp0_;
5565 	GtkTreeView* tree;
5566 	GtkTreeModel* _tmp1_ = NULL;
5567 	GtkListStore* _tmp2_;
5568 	GtkListStore* store;
5569 	GtkTreeModel* _tmp3_ = NULL;
5570 	GtkTreeModel* _tmp4_;
5571 	GtkTreeModel* model;
5572 	GtkTreeIter iter = {0};
5573 	const gchar* _tmp5_ = NULL;
5574 	gint _tmp6_;
5575 	GtkTreeIter _tmp7_ = {0};
5576 	const gchar* _tmp8_ = NULL;
5577 	const gchar* _tmp9_ = NULL;
5578 	GtkTreePath* _tmp10_ = NULL;
5579 	GtkTreePath* _tmp11_;
5580 	GtkTreeRowReference* _tmp12_ = NULL;
5581 	self = (GmpcBrowsersMetadata*) base;
5582 	g_return_if_fail (category_tree != NULL);
5583 	_tmp0_ = _g_object_ref0 (GTK_TREE_VIEW (category_tree));
5584 	tree = _tmp0_;
5585 	_tmp1_ = gtk_tree_view_get_model (tree);
5586 	_tmp2_ = _g_object_ref0 (GTK_LIST_STORE (_tmp1_));
5587 	store = _tmp2_;
5588 	_tmp3_ = gtk_tree_view_get_model (tree);
5589 	_tmp4_ = _g_object_ref0 (_tmp3_);
5590 	model = _tmp4_;
5591 	_tmp5_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
5592 	_tmp6_ = cfg_get_single_value_as_int_with_default (config, _tmp5_, "position", 100);
5593 	playlist3_insert_browser (&_tmp7_, _tmp6_);
5594 	iter = _tmp7_;
5595 	_tmp8_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
5596 	_tmp9_ = _ (_tmp8_);
5597 	gtk_list_store_set (store, &iter, 0, ((GmpcPluginBase*) self)->id, 1, _tmp9_, 3, "gmpc-metabrowser", -1);
5598 	_tmp10_ = gtk_tree_model_get_path (model, &iter);
5599 	_tmp11_ = _tmp10_;
5600 	_tmp12_ = gtk_tree_row_reference_new (model, _tmp11_);
5601 	_gtk_tree_row_reference_free0 (self->priv->rref);
5602 	self->priv->rref = _tmp12_;
5603 	_gtk_tree_path_free0 (_tmp11_);
5604 	_g_object_unref0 (model);
5605 	_g_object_unref0 (store);
5606 	_g_object_unref0 (tree);
5607 }
5608 
5609 
gmpc_browsers_metadata_real_browser_selected(GmpcPluginBrowserIface * base,GtkContainer * container)5610 static void gmpc_browsers_metadata_real_browser_selected (GmpcPluginBrowserIface* base, GtkContainer* container) {
5611 	GmpcBrowsersMetadata * self;
5612 	gchar* artist = NULL;
5613 	gchar* _tmp0_ = NULL;
5614 	self = (GmpcBrowsersMetadata*) base;
5615 	g_return_if_fail (container != NULL);
5616 	self->priv->selected = TRUE;
5617 	gmpc_browsers_metadata_browser_init (self);
5618 	gtk_container_add (container, (GtkWidget*) self->priv->paned);
5619 	_tmp0_ = gmpc_browsers_metadata_browser_get_selected_artist (self);
5620 	_g_free0 (artist);
5621 	artist = _tmp0_;
5622 	if (artist == NULL) {
5623 		gmpc_browsers_metadata_metadata_box_clear (self);
5624 		gmpc_browsers_metadata_metadata_box_update (self);
5625 	}
5626 	_g_free0 (artist);
5627 }
5628 
5629 
gmpc_browsers_metadata_real_browser_unselected(GmpcPluginBrowserIface * base,GtkContainer * container)5630 static void gmpc_browsers_metadata_real_browser_unselected (GmpcPluginBrowserIface* base, GtkContainer* container) {
5631 	GmpcBrowsersMetadata * self;
5632 	self = (GmpcBrowsersMetadata*) base;
5633 	g_return_if_fail (container != NULL);
5634 	self->priv->selected = FALSE;
5635 	gtk_container_remove (container, (GtkWidget*) self->priv->paned);
5636 }
5637 
5638 
gmpc_browsers_metadata_con_changed(GmpcBrowsersMetadata * self,GmpcConnection * conn,MpdObj * server,gint connect)5639 static void gmpc_browsers_metadata_con_changed (GmpcBrowsersMetadata* self, GmpcConnection* conn, MpdObj* server, gint connect) {
5640 	g_return_if_fail (self != NULL);
5641 	g_return_if_fail (conn != NULL);
5642 	g_return_if_fail (server != NULL);
5643 	if (self->priv->paned == NULL) {
5644 		return;
5645 	}
5646 	gmpc_browsers_metadata_history_clear (self);
5647 	gmpc_browsers_metadata_reload_browsers (self);
5648 	gmpc_browsers_metadata_metadata_box_clear (self);
5649 	gmpc_browsers_metadata_metadata_box_update (self);
5650 }
5651 
5652 
gmpc_browsers_metadata_status_changed(GmpcBrowsersMetadata * self,GmpcConnection * conn,MpdObj * server,ChangedStatusType what)5653 static void gmpc_browsers_metadata_status_changed (GmpcBrowsersMetadata* self, GmpcConnection* conn, MpdObj* server, ChangedStatusType what) {
5654 	g_return_if_fail (self != NULL);
5655 	g_return_if_fail (conn != NULL);
5656 	g_return_if_fail (server != NULL);
5657 	if (self->priv->paned == NULL) {
5658 		return;
5659 	}
5660 	if ((what & MPD_CST_DATABASE) != 0) {
5661 		gmpc_browsers_metadata_reload_browsers (self);
5662 		if (self->priv->current != NULL) {
5663 			gmpc_browsers_metadata_show_hitem (self, (GmpcBrowsersMetadataHitem*) self->priv->current->data);
5664 		}
5665 	}
5666 }
5667 
5668 
gmpc_browsers_metadata_show_hitem(GmpcBrowsersMetadata * self,GmpcBrowsersMetadataHitem * hi)5669 static void gmpc_browsers_metadata_show_hitem (GmpcBrowsersMetadata* self, GmpcBrowsersMetadataHitem* hi) {
5670 	g_return_if_fail (self != NULL);
5671 	switch ((*hi).type) {
5672 		case GMPC_BROWSERS_METADATA_HITEM_TYPE_BASE:
5673 		{
5674 			gmpc_browsers_metadata_set_base (self);
5675 			break;
5676 		}
5677 		case GMPC_BROWSERS_METADATA_HITEM_TYPE_ARTIST:
5678 		{
5679 			gmpc_browsers_metadata_set_artist (self, (*hi).song->artist);
5680 			break;
5681 		}
5682 		case GMPC_BROWSERS_METADATA_HITEM_TYPE_ALBUM:
5683 		{
5684 			gmpc_browsers_metadata_set_album (self, (*hi).song->artist, (*hi).song->album);
5685 			break;
5686 		}
5687 		case GMPC_BROWSERS_METADATA_HITEM_TYPE_SONG:
5688 		{
5689 			gmpc_browsers_metadata_set_song (self, (*hi).song);
5690 			break;
5691 		}
5692 		default:
5693 		{
5694 			gmpc_browsers_metadata_metadata_box_clear (self);
5695 			break;
5696 		}
5697 	}
5698 }
5699 
5700 
gmpc_browsers_metadata_history_previous(GmpcBrowsersMetadata * self)5701 static void gmpc_browsers_metadata_history_previous (GmpcBrowsersMetadata* self) {
5702 	gboolean _tmp0_ = FALSE;
5703 	g_return_if_fail (self != NULL);
5704 	if (self->priv->history == NULL) {
5705 		_tmp0_ = TRUE;
5706 	} else {
5707 		_tmp0_ = self->priv->current == NULL;
5708 	}
5709 	if (_tmp0_) {
5710 		return;
5711 	}
5712 	if (self->priv->current->next == NULL) {
5713 		return;
5714 	}
5715 	self->priv->current = self->priv->current->next;
5716 	if (self->priv->current != NULL) {
5717 		gmpc_browsers_metadata_show_hitem (self, (GmpcBrowsersMetadataHitem*) self->priv->current->data);
5718 	} else {
5719 		gmpc_browsers_metadata_metadata_box_clear (self);
5720 	}
5721 }
5722 
5723 
gmpc_browsers_metadata_history_next(GmpcBrowsersMetadata * self)5724 static void gmpc_browsers_metadata_history_next (GmpcBrowsersMetadata* self) {
5725 	gboolean _tmp0_ = FALSE;
5726 	g_return_if_fail (self != NULL);
5727 	if (self->priv->history == NULL) {
5728 		_tmp0_ = TRUE;
5729 	} else {
5730 		_tmp0_ = self->priv->current == NULL;
5731 	}
5732 	if (_tmp0_) {
5733 		return;
5734 	}
5735 	if (self->priv->current->prev == NULL) {
5736 		return;
5737 	}
5738 	self->priv->current = self->priv->current->prev;
5739 	if (self->priv->current != NULL) {
5740 		gmpc_browsers_metadata_show_hitem (self, (GmpcBrowsersMetadataHitem*) self->priv->current->data);
5741 	} else {
5742 		gmpc_browsers_metadata_metadata_box_clear (self);
5743 	}
5744 }
5745 
5746 
gmpc_browsers_metadata_history_show_list_clicked(GmpcBrowsersMetadata * self,GtkMenuItem * item)5747 static void gmpc_browsers_metadata_history_show_list_clicked (GmpcBrowsersMetadata* self, GtkMenuItem* item) {
5748 	gconstpointer _tmp0_ = NULL;
5749 	GList* a;
5750 	g_return_if_fail (self != NULL);
5751 	g_return_if_fail (item != NULL);
5752 	_tmp0_ = g_object_get_data ((GObject*) item, "current");
5753 	a = (GList*) ((GList*) _tmp0_);
5754 	if (a != NULL) {
5755 		self->priv->current = a;
5756 		gmpc_browsers_metadata_show_hitem (self, (GmpcBrowsersMetadataHitem*) self->priv->current->data);
5757 	}
5758 }
5759 
5760 
_gmpc_browsers_metadata_hitem_dup0(gpointer self)5761 static gpointer _gmpc_browsers_metadata_hitem_dup0 (gpointer self) {
5762 	return self ? gmpc_browsers_metadata_hitem_dup (self) : NULL;
5763 }
5764 
5765 
_gmpc_browsers_metadata_history_show_list_clicked_gtk_menu_item_activate(GtkMenuItem * _sender,gpointer self)5766 static void _gmpc_browsers_metadata_history_show_list_clicked_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
5767 	gmpc_browsers_metadata_history_show_list_clicked (self, _sender);
5768 }
5769 
5770 
gmpc_browsers_metadata_history_show_list(GmpcBrowsersMetadata * self)5771 static void gmpc_browsers_metadata_history_show_list (GmpcBrowsersMetadata* self) {
5772 	GtkMenu* _tmp0_ = NULL;
5773 	GtkMenu* menu;
5774 	GList* _tmp1_ = NULL;
5775 	GList* iter;
5776 	guint32 _tmp18_;
5777 	g_return_if_fail (self != NULL);
5778 	_tmp0_ = (GtkMenu*) gtk_menu_new ();
5779 	menu = g_object_ref_sink (_tmp0_);
5780 	_tmp1_ = g_list_last (self->priv->history);
5781 	iter = _tmp1_;
5782 	while (TRUE) {
5783 		GmpcBrowsersMetadataHitem* _tmp2_;
5784 		GmpcBrowsersMetadataHitem* i;
5785 		gchar* _tmp3_;
5786 		gchar* label;
5787 		GtkCheckMenuItem* _tmp16_ = NULL;
5788 		GtkCheckMenuItem* item;
5789 		gboolean _tmp17_ = FALSE;
5790 		if (!(iter != NULL)) {
5791 			break;
5792 		}
5793 		_tmp2_ = _gmpc_browsers_metadata_hitem_dup0 ((GmpcBrowsersMetadataHitem*) iter->data);
5794 		i = _tmp2_;
5795 		_tmp3_ = g_strdup ("");
5796 		label = _tmp3_;
5797 		if ((*i).type == GMPC_BROWSERS_METADATA_HITEM_TYPE_ARTIST) {
5798 			gchar* _tmp4_;
5799 			_tmp4_ = g_strdup ((*i).song->artist);
5800 			_g_free0 (label);
5801 			label = _tmp4_;
5802 		} else {
5803 			if ((*i).type == GMPC_BROWSERS_METADATA_HITEM_TYPE_ALBUM) {
5804 				gchar* _tmp5_ = NULL;
5805 				_tmp5_ = g_strdup_printf ("%s - %s", (*i).song->artist, (*i).song->album);
5806 				_g_free0 (label);
5807 				label = _tmp5_;
5808 			} else {
5809 				if ((*i).type == GMPC_BROWSERS_METADATA_HITEM_TYPE_SONG) {
5810 					if ((*i).song->title != NULL) {
5811 						gchar* _tmp6_;
5812 						_tmp6_ = g_strdup ((*i).song->title);
5813 						_g_free0 (label);
5814 						label = _tmp6_;
5815 					} else {
5816 						const gchar* _tmp7_ = NULL;
5817 						gchar* _tmp8_;
5818 						_tmp7_ = _ ("Unknown");
5819 						_tmp8_ = g_strdup (_tmp7_);
5820 						_g_free0 (label);
5821 						label = _tmp8_;
5822 					}
5823 				} else {
5824 					if ((*i).type == GMPC_BROWSERS_METADATA_HITEM_TYPE_BASE) {
5825 						const gchar* _tmp9_ = NULL;
5826 						gchar* _tmp10_;
5827 						_tmp9_ = _ ("Metadata Browser");
5828 						_tmp10_ = g_strdup (_tmp9_);
5829 						_g_free0 (label);
5830 						label = _tmp10_;
5831 						if ((*i).search_string != NULL) {
5832 							gchar* _tmp11_;
5833 							gchar* _tmp12_;
5834 							gchar* _tmp13_;
5835 							gchar* _tmp14_;
5836 							gchar* _tmp15_;
5837 							_tmp11_ = g_strconcat (" (", (*i).search_string, NULL);
5838 							_tmp12_ = _tmp11_;
5839 							_tmp13_ = g_strconcat (_tmp12_, ")", NULL);
5840 							_tmp14_ = _tmp13_;
5841 							_tmp15_ = g_strconcat (label, _tmp14_, NULL);
5842 							_g_free0 (label);
5843 							label = _tmp15_;
5844 							_g_free0 (_tmp14_);
5845 							_g_free0 (_tmp12_);
5846 						}
5847 					}
5848 				}
5849 			}
5850 		}
5851 		_tmp16_ = (GtkCheckMenuItem*) gtk_check_menu_item_new_with_label (label);
5852 		item = g_object_ref_sink (_tmp16_);
5853 		gtk_check_menu_item_set_draw_as_radio (item, TRUE);
5854 		if (self->priv->current != NULL) {
5855 			_tmp17_ = self->priv->current == iter;
5856 		} else {
5857 			_tmp17_ = FALSE;
5858 		}
5859 		if (_tmp17_) {
5860 			gtk_check_menu_item_set_active (item, TRUE);
5861 		}
5862 		g_signal_connect_object ((GtkMenuItem*) item, "activate", (GCallback) _gmpc_browsers_metadata_history_show_list_clicked_gtk_menu_item_activate, self, 0);
5863 		g_object_set_data_full ((GObject*) item, "current", (void*) iter, NULL);
5864 		gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) item));
5865 		iter = iter->prev;
5866 		_g_object_unref0 (item);
5867 		_g_free0 (label);
5868 		_gmpc_browsers_metadata_hitem_free0 (i);
5869 	}
5870 	gtk_widget_show_all ((GtkWidget*) menu);
5871 	_tmp18_ = gtk_get_current_event_time ();
5872 	gtk_menu_popup (menu, NULL, NULL, NULL, NULL, (guint) 0, _tmp18_);
5873 	_g_object_unref0 (menu);
5874 }
5875 
5876 
block26_data_ref(Block26Data * _data26_)5877 static Block26Data* block26_data_ref (Block26Data* _data26_) {
5878 	g_atomic_int_inc (&_data26_->_ref_count_);
5879 	return _data26_;
5880 }
5881 
5882 
block26_data_unref(Block26Data * _data26_)5883 static void block26_data_unref (Block26Data* _data26_) {
5884 	if (g_atomic_int_dec_and_test (&_data26_->_ref_count_)) {
5885 		_g_object_unref0 (_data26_->self);
5886 		_g_free0 (_data26_->artist);
5887 		_g_free0 (_data26_->album);
5888 		g_slice_free (Block26Data, _data26_);
5889 	}
5890 }
5891 
5892 
_lambda35_(GtkButton * source,GmpcBrowsersMetadata * self)5893 static void _lambda35_ (GtkButton* source, GmpcBrowsersMetadata* self) {
5894 	g_return_if_fail (source != NULL);
5895 	gmpc_browsers_metadata_set_base (self);
5896 }
5897 
5898 
__lambda35__gtk_button_clicked(GtkButton * _sender,gpointer self)5899 static void __lambda35__gtk_button_clicked (GtkButton* _sender, gpointer self) {
5900 	_lambda35_ (_sender, self);
5901 }
5902 
5903 
_lambda36_(GtkButton * source,Block26Data * _data26_)5904 static void _lambda36_ (GtkButton* source, Block26Data* _data26_) {
5905 	GmpcBrowsersMetadata * self;
5906 	self = _data26_->self;
5907 	g_return_if_fail (source != NULL);
5908 	gmpc_browsers_metadata_set_artist (self, _data26_->artist);
5909 }
5910 
5911 
__lambda36__gtk_button_clicked(GtkButton * _sender,gpointer self)5912 static void __lambda36__gtk_button_clicked (GtkButton* _sender, gpointer self) {
5913 	_lambda36_ (_sender, self);
5914 }
5915 
5916 
_lambda37_(GtkButton * source,Block26Data * _data26_)5917 static void _lambda37_ (GtkButton* source, Block26Data* _data26_) {
5918 	GmpcBrowsersMetadata * self;
5919 	self = _data26_->self;
5920 	g_return_if_fail (source != NULL);
5921 	gmpc_browsers_metadata_set_album (self, _data26_->artist, _data26_->album);
5922 }
5923 
5924 
__lambda37__gtk_button_clicked(GtkButton * _sender,gpointer self)5925 static void __lambda37__gtk_button_clicked (GtkButton* _sender, gpointer self) {
5926 	_lambda37_ (_sender, self);
5927 }
5928 
5929 
gmpc_browsers_metadata_history_bc_header(GmpcBrowsersMetadata * self,GmpcBrowsersMetadataHitemType type,const gchar * artist,const gchar * album,const gchar * title)5930 static void gmpc_browsers_metadata_history_bc_header (GmpcBrowsersMetadata* self, GmpcBrowsersMetadataHitemType type, const gchar* artist, const gchar* album, const gchar* title) {
5931 	Block26Data* _data26_;
5932 	GList* _tmp0_ = NULL;
5933 	GtkHBox* _tmp1_ = NULL;
5934 	GtkHBox* hist_box;
5935 	GtkAlignment* _tmp2_ = NULL;
5936 	GtkAlignment* bc_ali;
5937 	GtkHBox* _tmp3_ = NULL;
5938 	GtkHBox* bc_box;
5939 	gboolean _tmp4_ = FALSE;
5940 	gboolean _tmp5_ = FALSE;
5941 	g_return_if_fail (self != NULL);
5942 	_data26_ = g_slice_new0 (Block26Data);
5943 	_data26_->_ref_count_ = 1;
5944 	_data26_->self = g_object_ref (self);
5945 	_data26_->artist = g_strdup (artist);
5946 	_data26_->album = g_strdup (album);
5947 	_tmp0_ = gtk_container_get_children ((GtkContainer*) self->priv->header);
5948 	{
5949 		GList* child_collection;
5950 		GList* child_it;
5951 		child_collection = _tmp0_;
5952 		for (child_it = child_collection; child_it != NULL; child_it = child_it->next) {
5953 			GtkWidget* child;
5954 			child = (GtkWidget*) child_it->data;
5955 			{
5956 				gtk_object_destroy ((GtkObject*) child);
5957 			}
5958 		}
5959 		_g_list_free0 (child_collection);
5960 	}
5961 	_tmp1_ = gmpc_browsers_metadata_history_buttons (self);
5962 	hist_box = _tmp1_;
5963 	gtk_container_add ((GtkContainer*) self->priv->header, (GtkWidget*) hist_box);
5964 	_tmp2_ = (GtkAlignment*) gtk_alignment_new (0.f, 0.5f, 0.f, 0.f);
5965 	bc_ali = g_object_ref_sink (_tmp2_);
5966 	_tmp3_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
5967 	bc_box = g_object_ref_sink (_tmp3_);
5968 	gtk_container_add ((GtkContainer*) bc_ali, (GtkWidget*) bc_box);
5969 	gtk_box_pack_start ((GtkBox*) hist_box, (GtkWidget*) bc_ali, FALSE, FALSE, (guint) 0);
5970 	if (_data26_->artist == NULL) {
5971 		_tmp5_ = _data26_->album == NULL;
5972 	} else {
5973 		_tmp5_ = FALSE;
5974 	}
5975 	if (_tmp5_) {
5976 		_tmp4_ = title == NULL;
5977 	} else {
5978 		_tmp4_ = FALSE;
5979 	}
5980 	if (_tmp4_) {
5981 		GtkImage* _tmp6_ = NULL;
5982 		GtkImage* image;
5983 		GtkAlignment* _tmp7_ = NULL;
5984 		GtkAlignment* ali;
5985 		_tmp6_ = (GtkImage*) gtk_image_new_from_icon_name ("gmpc-metabrowser", GTK_ICON_SIZE_MENU);
5986 		image = g_object_ref_sink (_tmp6_);
5987 		_tmp7_ = (GtkAlignment*) gtk_alignment_new (0.5f, 0.5f, 0.f, 0.f);
5988 		ali = g_object_ref_sink (_tmp7_);
5989 		gtk_alignment_set_padding (ali, (guint) 6, (guint) 6, (guint) 6, (guint) 6);
5990 		gtk_container_add ((GtkContainer*) ali, (GtkWidget*) image);
5991 		gtk_box_pack_start ((GtkBox*) bc_box, (GtkWidget*) ali, TRUE, TRUE, (guint) 0);
5992 		_g_object_unref0 (ali);
5993 		_g_object_unref0 (image);
5994 	} else {
5995 		GtkImage* _tmp8_ = NULL;
5996 		GtkImage* image;
5997 		GtkButton* _tmp9_ = NULL;
5998 		GtkButton* button;
5999 		_tmp8_ = (GtkImage*) gtk_image_new_from_icon_name ("gmpc-metabrowser", GTK_ICON_SIZE_MENU);
6000 		image = g_object_ref_sink (_tmp8_);
6001 		_tmp9_ = (GtkButton*) gtk_button_new ();
6002 		button = g_object_ref_sink (_tmp9_);
6003 		gtk_button_set_relief (button, GTK_RELIEF_NONE);
6004 		gtk_button_set_image (button, (GtkWidget*) image);
6005 		g_signal_connect_object (button, "clicked", (GCallback) __lambda35__gtk_button_clicked, self, 0);
6006 		gtk_box_pack_start ((GtkBox*) bc_box, (GtkWidget*) button, TRUE, TRUE, (guint) 0);
6007 		_g_object_unref0 (button);
6008 		_g_object_unref0 (image);
6009 	}
6010 	if (_data26_->artist != NULL) {
6011 		if (type != GMPC_BROWSERS_METADATA_HITEM_TYPE_ARTIST) {
6012 			GtkButton* _tmp10_ = NULL;
6013 			GtkButton* button;
6014 			GtkImage* _tmp11_ = NULL;
6015 			GtkImage* _tmp12_;
6016 			_tmp10_ = (GtkButton*) gtk_button_new_with_label (_data26_->artist);
6017 			button = g_object_ref_sink (_tmp10_);
6018 			gtk_button_set_relief (button, GTK_RELIEF_NONE);
6019 			_tmp11_ = (GtkImage*) gtk_image_new_from_icon_name ("media-artist", GTK_ICON_SIZE_MENU);
6020 			_tmp12_ = g_object_ref_sink (_tmp11_);
6021 			gtk_button_set_image (button, (GtkWidget*) _tmp12_);
6022 			_g_object_unref0 (_tmp12_);
6023 			g_signal_connect_data (button, "clicked", (GCallback) __lambda36__gtk_button_clicked, block26_data_ref (_data26_), (GClosureNotify) block26_data_unref, 0);
6024 			gtk_box_pack_start ((GtkBox*) bc_box, (GtkWidget*) button, TRUE, TRUE, (guint) 0);
6025 			_g_object_unref0 (button);
6026 		} else {
6027 			GtkLabel* _tmp13_ = NULL;
6028 			GtkLabel* label;
6029 			GtkImage* _tmp14_ = NULL;
6030 			GtkImage* image;
6031 			_tmp13_ = (GtkLabel*) gtk_label_new (_data26_->artist);
6032 			label = g_object_ref_sink (_tmp13_);
6033 			_tmp14_ = (GtkImage*) gtk_image_new_from_icon_name ("media-artist", GTK_ICON_SIZE_MENU);
6034 			image = g_object_ref_sink (_tmp14_);
6035 			gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
6036 			gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
6037 			gtk_box_pack_start ((GtkBox*) hist_box, (GtkWidget*) image, FALSE, FALSE, (guint) 0);
6038 			gtk_box_pack_start ((GtkBox*) hist_box, (GtkWidget*) label, TRUE, TRUE, (guint) 0);
6039 			_g_object_unref0 (image);
6040 			_g_object_unref0 (label);
6041 		}
6042 		if (_data26_->album != NULL) {
6043 			if (type == GMPC_BROWSERS_METADATA_HITEM_TYPE_ALBUM) {
6044 				GtkLabel* _tmp15_ = NULL;
6045 				GtkLabel* label;
6046 				GtkImage* _tmp16_ = NULL;
6047 				GtkImage* image;
6048 				_tmp15_ = (GtkLabel*) gtk_label_new (_data26_->album);
6049 				label = g_object_ref_sink (_tmp15_);
6050 				_tmp16_ = (GtkImage*) gtk_image_new_from_icon_name ("media-album", GTK_ICON_SIZE_MENU);
6051 				image = g_object_ref_sink (_tmp16_);
6052 				gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
6053 				gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
6054 				gtk_box_pack_start ((GtkBox*) hist_box, (GtkWidget*) image, FALSE, FALSE, (guint) 0);
6055 				gtk_box_pack_start ((GtkBox*) hist_box, (GtkWidget*) label, TRUE, TRUE, (guint) 0);
6056 				_g_object_unref0 (image);
6057 				_g_object_unref0 (label);
6058 			} else {
6059 				GtkButton* _tmp17_ = NULL;
6060 				GtkButton* button;
6061 				GtkImage* _tmp18_ = NULL;
6062 				GtkImage* _tmp19_;
6063 				_tmp17_ = (GtkButton*) gtk_button_new_with_label (_data26_->album);
6064 				button = g_object_ref_sink (_tmp17_);
6065 				gtk_button_set_relief (button, GTK_RELIEF_NONE);
6066 				_tmp18_ = (GtkImage*) gtk_image_new_from_icon_name ("media-album", GTK_ICON_SIZE_MENU);
6067 				_tmp19_ = g_object_ref_sink (_tmp18_);
6068 				gtk_button_set_image (button, (GtkWidget*) _tmp19_);
6069 				_g_object_unref0 (_tmp19_);
6070 				g_signal_connect_data (button, "clicked", (GCallback) __lambda37__gtk_button_clicked, block26_data_ref (_data26_), (GClosureNotify) block26_data_unref, 0);
6071 				gtk_box_pack_start ((GtkBox*) bc_box, (GtkWidget*) button, TRUE, TRUE, (guint) 0);
6072 				_g_object_unref0 (button);
6073 			}
6074 		}
6075 	}
6076 	if (title != NULL) {
6077 		GtkLabel* _tmp20_ = NULL;
6078 		GtkLabel* label;
6079 		GtkImage* _tmp21_ = NULL;
6080 		GtkImage* image;
6081 		_tmp20_ = (GtkLabel*) gtk_label_new (title);
6082 		label = g_object_ref_sink (_tmp20_);
6083 		_tmp21_ = (GtkImage*) gtk_image_new_from_icon_name ("media-audiofile", GTK_ICON_SIZE_MENU);
6084 		image = g_object_ref_sink (_tmp21_);
6085 		gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
6086 		gtk_misc_set_alignment ((GtkMisc*) label, 0.0f, 0.5f);
6087 		gtk_box_pack_start ((GtkBox*) hist_box, (GtkWidget*) image, FALSE, FALSE, (guint) 0);
6088 		gtk_box_pack_start ((GtkBox*) hist_box, (GtkWidget*) label, TRUE, TRUE, (guint) 0);
6089 		_g_object_unref0 (image);
6090 		_g_object_unref0 (label);
6091 	}
6092 	gtk_widget_show_all ((GtkWidget*) self->priv->header);
6093 	_g_object_unref0 (bc_box);
6094 	_g_object_unref0 (bc_ali);
6095 	_g_object_unref0 (hist_box);
6096 	block26_data_unref (_data26_);
6097 	_data26_ = NULL;
6098 }
6099 
6100 
_gmpc_browsers_metadata_history_next_gtk_button_clicked(GtkButton * _sender,gpointer self)6101 static void _gmpc_browsers_metadata_history_next_gtk_button_clicked (GtkButton* _sender, gpointer self) {
6102 	gmpc_browsers_metadata_history_next (self);
6103 }
6104 
6105 
_gmpc_browsers_metadata_history_show_list_gtk_button_clicked(GtkButton * _sender,gpointer self)6106 static void _gmpc_browsers_metadata_history_show_list_gtk_button_clicked (GtkButton* _sender, gpointer self) {
6107 	gmpc_browsers_metadata_history_show_list (self);
6108 }
6109 
6110 
_gmpc_browsers_metadata_history_previous_gtk_button_clicked(GtkButton * _sender,gpointer self)6111 static void _gmpc_browsers_metadata_history_previous_gtk_button_clicked (GtkButton* _sender, gpointer self) {
6112 	gmpc_browsers_metadata_history_previous (self);
6113 }
6114 
6115 
gmpc_browsers_metadata_history_buttons(GmpcBrowsersMetadata * self)6116 static GtkHBox* gmpc_browsers_metadata_history_buttons (GmpcBrowsersMetadata* self) {
6117 	GtkHBox* result = NULL;
6118 	GtkHBox* _tmp0_ = NULL;
6119 	GtkHBox* box;
6120 	gboolean _tmp1_ = FALSE;
6121 	GtkButton* _tmp2_ = NULL;
6122 	GtkButton* next_but;
6123 	gboolean _tmp3_ = FALSE;
6124 	gboolean _tmp4_ = FALSE;
6125 	GtkButton* _tmp8_ = NULL;
6126 	GtkButton* back_but;
6127 	gboolean _tmp9_ = FALSE;
6128 	g_return_val_if_fail (self != NULL, NULL);
6129 	_tmp0_ = (GtkHBox*) gtk_hbox_new (FALSE, 6);
6130 	box = g_object_ref_sink (_tmp0_);
6131 	if (self->priv->history == NULL) {
6132 		_tmp1_ = self->priv->current == NULL;
6133 	} else {
6134 		_tmp1_ = FALSE;
6135 	}
6136 	if (_tmp1_) {
6137 		result = box;
6138 		return result;
6139 	}
6140 	_tmp2_ = (GtkButton*) gtk_button_new_from_stock ("gtk-go-forward");
6141 	next_but = g_object_ref_sink (_tmp2_);
6142 	gtk_button_set_relief (next_but, GTK_RELIEF_NONE);
6143 	if (self->priv->current == NULL) {
6144 		_tmp3_ = TRUE;
6145 	} else {
6146 		_tmp3_ = self->priv->current->prev == NULL;
6147 	}
6148 	if (_tmp3_) {
6149 		gtk_widget_set_sensitive ((GtkWidget*) next_but, FALSE);
6150 	}
6151 	g_signal_connect_object (next_but, "clicked", (GCallback) _gmpc_browsers_metadata_history_next_gtk_button_clicked, self, 0);
6152 	gtk_box_pack_end ((GtkBox*) box, (GtkWidget*) next_but, FALSE, FALSE, (guint) 0);
6153 	if (self->priv->current != NULL) {
6154 		gboolean _tmp5_ = FALSE;
6155 		if (self->priv->current->next != NULL) {
6156 			_tmp5_ = TRUE;
6157 		} else {
6158 			_tmp5_ = self->priv->current->prev != NULL;
6159 		}
6160 		_tmp4_ = _tmp5_;
6161 	} else {
6162 		_tmp4_ = FALSE;
6163 	}
6164 	if (_tmp4_) {
6165 		GtkButton* _tmp6_ = NULL;
6166 		GtkButton* dd_but;
6167 		GtkArrow* _tmp7_ = NULL;
6168 		GtkArrow* arrow;
6169 		_tmp6_ = (GtkButton*) gtk_button_new ();
6170 		dd_but = g_object_ref_sink (_tmp6_);
6171 		_tmp7_ = (GtkArrow*) gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_ETCHED_IN);
6172 		arrow = g_object_ref_sink (_tmp7_);
6173 		gtk_container_add ((GtkContainer*) dd_but, (GtkWidget*) arrow);
6174 		gtk_button_set_relief (dd_but, GTK_RELIEF_NONE);
6175 		g_signal_connect_object (dd_but, "clicked", (GCallback) _gmpc_browsers_metadata_history_show_list_gtk_button_clicked, self, 0);
6176 		gtk_box_pack_end ((GtkBox*) box, (GtkWidget*) dd_but, FALSE, FALSE, (guint) 0);
6177 		_g_object_unref0 (arrow);
6178 		_g_object_unref0 (dd_but);
6179 	}
6180 	_tmp8_ = (GtkButton*) gtk_button_new_from_stock ("gtk-go-back");
6181 	back_but = g_object_ref_sink (_tmp8_);
6182 	gtk_button_set_relief (back_but, GTK_RELIEF_NONE);
6183 	if (self->priv->current == NULL) {
6184 		_tmp9_ = TRUE;
6185 	} else {
6186 		_tmp9_ = self->priv->current->next == NULL;
6187 	}
6188 	if (_tmp9_) {
6189 		gtk_widget_set_sensitive ((GtkWidget*) back_but, FALSE);
6190 	}
6191 	g_signal_connect_object (back_but, "clicked", (GCallback) _gmpc_browsers_metadata_history_previous_gtk_button_clicked, self, 0);
6192 	gtk_box_pack_end ((GtkBox*) box, (GtkWidget*) back_but, FALSE, FALSE, (guint) 0);
6193 	result = box;
6194 	_g_object_unref0 (back_but);
6195 	_g_object_unref0 (next_but);
6196 	return result;
6197 }
6198 
6199 
gmpc_browsers_metadata_history_add(GmpcBrowsersMetadata * self,GmpcBrowsersMetadataHitem * hi)6200 static void gmpc_browsers_metadata_history_add (GmpcBrowsersMetadata* self, GmpcBrowsersMetadataHitem* hi) {
6201 	GmpcBrowsersMetadataHitem* _tmp7_;
6202 	guint _tmp8_;
6203 	g_return_if_fail (self != NULL);
6204 	if (self->priv->history != NULL) {
6205 		GmpcBrowsersMetadataHitem a;
6206 		a = *((GmpcBrowsersMetadataHitem*) self->priv->current->data);
6207 		if (a.type == (*hi).type) {
6208 			gchar* _tmp0_ = NULL;
6209 			gchar* _tmp1_;
6210 			gchar* _tmp2_ = NULL;
6211 			gchar* _tmp3_;
6212 			gboolean _tmp4_;
6213 			_tmp0_ = mpd_song_checksum (a.song);
6214 			_tmp1_ = _tmp0_;
6215 			_tmp2_ = mpd_song_checksum ((*hi).song);
6216 			_tmp3_ = _tmp2_;
6217 			_tmp4_ = g_strcmp0 (_tmp1_, _tmp3_) == 0;
6218 			_g_free0 (_tmp3_);
6219 			_g_free0 (_tmp1_);
6220 			if (_tmp4_) {
6221 				return;
6222 			}
6223 		}
6224 	}
6225 	if (self->priv->history != NULL) {
6226 		GList* iter;
6227 		iter = self->priv->current->prev;
6228 		while (TRUE) {
6229 			gboolean _tmp5_ = FALSE;
6230 			GList* _tmp6_ = NULL;
6231 			if (iter != NULL) {
6232 				_tmp5_ = iter != self->priv->current;
6233 			} else {
6234 				_tmp5_ = FALSE;
6235 			}
6236 			if (!_tmp5_) {
6237 				break;
6238 			}
6239 			self->priv->history = g_list_remove (self->priv->history, (GmpcBrowsersMetadataHitem*) iter->data);
6240 			_tmp6_ = g_list_first (self->priv->history);
6241 			iter = _tmp6_;
6242 		}
6243 	}
6244 	_tmp7_ = _gmpc_browsers_metadata_hitem_dup0 (hi);
6245 	self->priv->history = g_list_prepend (self->priv->history, _tmp7_);
6246 	_tmp8_ = g_list_length (self->priv->history);
6247 	if (_tmp8_ > 25) {
6248 		GList* _tmp9_ = NULL;
6249 		GList* a;
6250 		_tmp9_ = g_list_last (self->priv->history);
6251 		a = _tmp9_;
6252 		self->priv->history = g_list_remove (self->priv->history, (GmpcBrowsersMetadataHitem*) a->data);
6253 	}
6254 	self->priv->current = self->priv->history;
6255 }
6256 
6257 
gmpc_browsers_metadata_history_clear(GmpcBrowsersMetadata * self)6258 static void gmpc_browsers_metadata_history_clear (GmpcBrowsersMetadata* self) {
6259 	g_return_if_fail (self != NULL);
6260 	self->priv->current = NULL;
6261 	__g_list_free__gmpc_browsers_metadata_hitem_free0_0 (self->priv->history);
6262 	self->priv->history = NULL;
6263 }
6264 
6265 
6266 /**
6267      * Public api
6268      */
gmpc_browsers_metadata_set_base(GmpcBrowsersMetadata * self)6269 void gmpc_browsers_metadata_set_base (GmpcBrowsersMetadata* self) {
6270 	GtkTreeSelection* _tmp0_ = NULL;
6271 	g_return_if_fail (self != NULL);
6272 	_tmp0_ = gtk_tree_view_get_selection (self->priv->tree_artist);
6273 	gtk_tree_selection_unselect_all (_tmp0_);
6274 	gtk_entry_set_text (self->priv->artist_filter_entry, "");
6275 	gmpc_browsers_metadata_metadata_box_clear (self);
6276 	gmpc_browsers_metadata_metadata_box_update (self);
6277 }
6278 
6279 
gmpc_browsers_metadata_set_artist(GmpcBrowsersMetadata * self,const gchar * artist)6280 void gmpc_browsers_metadata_set_artist (GmpcBrowsersMetadata* self, const gchar* artist) {
6281 	gboolean _tmp0_;
6282 	GtkTreeSelection* _tmp1_ = NULL;
6283 	GtkTreeSelection* _tmp2_ = NULL;
6284 	GtkTreeIter iter = {0};
6285 	GtkTreeIter _tmp3_ = {0};
6286 	gboolean _tmp4_;
6287 	g_return_if_fail (self != NULL);
6288 	g_return_if_fail (artist != NULL);
6289 	_tmp0_ = gmpc_plugin_base_get_enabled ((GmpcPluginBase*) self);
6290 	if (!_tmp0_) {
6291 		return;
6292 	}
6293 	self->priv->block_update++;
6294 	_tmp1_ = gtk_tree_view_get_selection (self->priv->tree_artist);
6295 	gtk_tree_selection_unselect_all (_tmp1_);
6296 	_tmp2_ = gtk_tree_view_get_selection (self->priv->tree_album);
6297 	gtk_tree_selection_unselect_all (_tmp2_);
6298 	gtk_entry_set_text (self->priv->artist_filter_entry, "");
6299 	_tmp4_ = gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->model_filter_artist, &_tmp3_);
6300 	iter = _tmp3_;
6301 	if (_tmp4_) {
6302 		{
6303 			gboolean _tmp5_;
6304 			_tmp5_ = TRUE;
6305 			while (TRUE) {
6306 				gchar* lartist;
6307 				gboolean _tmp7_ = FALSE;
6308 				if (!_tmp5_) {
6309 					gboolean _tmp6_;
6310 					_tmp6_ = gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->model_filter_artist, &iter);
6311 					if (!_tmp6_) {
6312 						break;
6313 					}
6314 				}
6315 				_tmp5_ = FALSE;
6316 				lartist = NULL;
6317 				gtk_tree_model_get ((GtkTreeModel*) self->priv->model_filter_artist, &iter, 7, &lartist, -1, -1);
6318 				if (lartist != NULL) {
6319 					gint _tmp8_;
6320 					_tmp8_ = g_utf8_collate (lartist, artist);
6321 					_tmp7_ = _tmp8_ == 0;
6322 				} else {
6323 					_tmp7_ = FALSE;
6324 				}
6325 				if (_tmp7_) {
6326 					GtkTreeSelection* _tmp9_ = NULL;
6327 					GtkTreePath* _tmp10_ = NULL;
6328 					GtkTreePath* _tmp11_;
6329 					_tmp9_ = gtk_tree_view_get_selection (self->priv->tree_artist);
6330 					gtk_tree_selection_select_iter (_tmp9_, &iter);
6331 					_tmp10_ = gtk_tree_model_get_path ((GtkTreeModel*) self->priv->model_filter_artist, &iter);
6332 					_tmp11_ = _tmp10_;
6333 					gtk_tree_view_scroll_to_cell (self->priv->tree_artist, _tmp11_, NULL, TRUE, 0.5f, 0.f);
6334 					_gtk_tree_path_free0 (_tmp11_);
6335 					self->priv->block_update--;
6336 					gmpc_browsers_metadata_metadata_box_clear (self);
6337 					gmpc_browsers_metadata_metadata_box_update (self);
6338 					_g_free0 (lartist);
6339 					return;
6340 				}
6341 				_g_free0 (lartist);
6342 			}
6343 		}
6344 	}
6345 	self->priv->block_update--;
6346 	gmpc_browsers_metadata_metadata_box_clear (self);
6347 	gmpc_browsers_metadata_metadata_box_update (self);
6348 }
6349 
6350 
gmpc_browsers_metadata_set_album(GmpcBrowsersMetadata * self,const gchar * artist,const gchar * album)6351 void gmpc_browsers_metadata_set_album (GmpcBrowsersMetadata* self, const gchar* artist, const gchar* album) {
6352 	gboolean _tmp0_;
6353 	GtkTreeIter iter = {0};
6354 	GtkTreeIter _tmp1_ = {0};
6355 	gboolean _tmp2_;
6356 	GtkTreeSelection* _tmp11_ = NULL;
6357 	g_return_if_fail (self != NULL);
6358 	g_return_if_fail (artist != NULL);
6359 	g_return_if_fail (album != NULL);
6360 	_tmp0_ = gmpc_plugin_base_get_enabled ((GmpcPluginBase*) self);
6361 	if (!_tmp0_) {
6362 		return;
6363 	}
6364 	self->priv->block_update++;
6365 	gmpc_browsers_metadata_set_artist (self, artist);
6366 	gtk_entry_set_text (self->priv->album_filter_entry, "");
6367 	_tmp2_ = gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->model_filter_album, &_tmp1_);
6368 	iter = _tmp1_;
6369 	if (_tmp2_) {
6370 		{
6371 			gboolean _tmp3_;
6372 			_tmp3_ = TRUE;
6373 			while (TRUE) {
6374 				gchar* lalbum;
6375 				gboolean _tmp5_ = FALSE;
6376 				if (!_tmp3_) {
6377 					gboolean _tmp4_;
6378 					_tmp4_ = gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->model_filter_album, &iter);
6379 					if (!_tmp4_) {
6380 						break;
6381 					}
6382 				}
6383 				_tmp3_ = FALSE;
6384 				lalbum = NULL;
6385 				gtk_tree_model_get ((GtkTreeModel*) self->priv->model_filter_album, &iter, 6, &lalbum, -1, -1);
6386 				if (lalbum != NULL) {
6387 					gint _tmp6_;
6388 					_tmp6_ = g_utf8_collate (lalbum, album);
6389 					_tmp5_ = _tmp6_ == 0;
6390 				} else {
6391 					_tmp5_ = FALSE;
6392 				}
6393 				if (_tmp5_) {
6394 					GtkTreeSelection* _tmp7_ = NULL;
6395 					GtkTreePath* _tmp8_ = NULL;
6396 					GtkTreePath* _tmp9_;
6397 					GtkTreeSelection* _tmp10_ = NULL;
6398 					_tmp7_ = gtk_tree_view_get_selection (self->priv->tree_album);
6399 					gtk_tree_selection_select_iter (_tmp7_, &iter);
6400 					_tmp8_ = gtk_tree_model_get_path ((GtkTreeModel*) self->priv->model_filter_album, &iter);
6401 					_tmp9_ = _tmp8_;
6402 					gtk_tree_view_scroll_to_cell (self->priv->tree_album, _tmp9_, NULL, TRUE, 0.5f, 0.f);
6403 					_gtk_tree_path_free0 (_tmp9_);
6404 					_tmp10_ = gtk_tree_view_get_selection (self->priv->tree_songs);
6405 					gtk_tree_selection_unselect_all (_tmp10_);
6406 					self->priv->block_update--;
6407 					gmpc_browsers_metadata_metadata_box_update (self);
6408 					_g_free0 (lalbum);
6409 					return;
6410 				}
6411 				_g_free0 (lalbum);
6412 			}
6413 		}
6414 	}
6415 	_tmp11_ = gtk_tree_view_get_selection (self->priv->tree_songs);
6416 	gtk_tree_selection_unselect_all (_tmp11_);
6417 	self->priv->block_update--;
6418 	gmpc_browsers_metadata_metadata_box_clear (self);
6419 	gmpc_browsers_metadata_metadata_box_update (self);
6420 }
6421 
6422 
gmpc_browsers_metadata_set_song(GmpcBrowsersMetadata * self,const mpd_Song * song)6423 void gmpc_browsers_metadata_set_song (GmpcBrowsersMetadata* self, const mpd_Song* song) {
6424 	gboolean _tmp0_;
6425 	GtkTreeIter iter = {0};
6426 	GtkTreeIter _tmp1_ = {0};
6427 	gboolean _tmp2_;
6428 	GmpcBrowsersMetadataHitem item = {0};
6429 	mpd_Song* _tmp10_;
6430 	GtkWidget* _tmp11_ = NULL;
6431 	GtkWidget* view;
6432 	g_return_if_fail (self != NULL);
6433 	g_return_if_fail (song != NULL);
6434 	_tmp0_ = gmpc_plugin_base_get_enabled ((GmpcPluginBase*) self);
6435 	if (!_tmp0_) {
6436 		return;
6437 	}
6438 	self->priv->block_update++;
6439 	if (song->artist != NULL) {
6440 		gmpc_browsers_metadata_set_artist (self, song->artist);
6441 		if (song->album != NULL) {
6442 			gmpc_browsers_metadata_set_album (self, song->artist, song->album);
6443 		}
6444 	}
6445 	_tmp2_ = gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->model_songs, &_tmp1_);
6446 	iter = _tmp1_;
6447 	if (_tmp2_) {
6448 		{
6449 			gboolean _tmp3_;
6450 			_tmp3_ = TRUE;
6451 			while (TRUE) {
6452 				gchar* ltitle;
6453 				gboolean _tmp5_ = FALSE;
6454 				if (!_tmp3_) {
6455 					gboolean _tmp4_;
6456 					_tmp4_ = gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->model_songs, &iter);
6457 					if (!_tmp4_) {
6458 						break;
6459 					}
6460 				}
6461 				_tmp3_ = FALSE;
6462 				ltitle = NULL;
6463 				gtk_tree_model_get ((GtkTreeModel*) self->priv->model_songs, &iter, 7, &ltitle, -1, -1);
6464 				if (ltitle != NULL) {
6465 					gint _tmp6_;
6466 					_tmp6_ = g_utf8_collate (ltitle, song->title);
6467 					_tmp5_ = _tmp6_ == 0;
6468 				} else {
6469 					_tmp5_ = FALSE;
6470 				}
6471 				if (_tmp5_) {
6472 					GtkTreeSelection* _tmp7_ = NULL;
6473 					GtkTreePath* _tmp8_ = NULL;
6474 					GtkTreePath* _tmp9_;
6475 					_tmp7_ = gtk_tree_view_get_selection (self->priv->tree_songs);
6476 					gtk_tree_selection_select_iter (_tmp7_, &iter);
6477 					_tmp8_ = gtk_tree_model_get_path ((GtkTreeModel*) self->priv->model_songs, &iter);
6478 					_tmp9_ = _tmp8_;
6479 					gtk_tree_view_scroll_to_cell (self->priv->tree_songs, _tmp9_, NULL, TRUE, 0.5f, 0.f);
6480 					_gtk_tree_path_free0 (_tmp9_);
6481 					self->priv->block_update--;
6482 					gmpc_browsers_metadata_metadata_box_update (self);
6483 					_g_free0 (ltitle);
6484 					return;
6485 				}
6486 				_g_free0 (ltitle);
6487 			}
6488 		}
6489 	}
6490 	self->priv->block_update--;
6491 	gmpc_browsers_metadata_metadata_box_clear (self);
6492 	if (self->priv->update_timeout > 0) {
6493 		g_source_remove (self->priv->update_timeout);
6494 		self->priv->update_timeout = (guint) 0;
6495 	}
6496 	memset (&item, 0, sizeof (GmpcBrowsersMetadataHitem));
6497 	_tmp10_ = _mpd_songDup0 (song);
6498 	_mpd_freeSong0 (item.song);
6499 	item.song = _tmp10_;
6500 	item.type = GMPC_BROWSERS_METADATA_HITEM_TYPE_SONG;
6501 	gmpc_browsers_metadata_history_add (self, &item);
6502 	_tmp11_ = gmpc_browsers_metadata_metadata_box_show_song (self, song, TRUE);
6503 	view = _tmp11_;
6504 	gtk_container_add ((GtkContainer*) self->priv->metadata_box, view);
6505 	gmpc_browsers_metadata_change_color_style (self, (GtkWidget*) self->priv->metadata_sw);
6506 	gtk_widget_show_all ((GtkWidget*) self->priv->metadata_box);
6507 	_g_object_unref0 (view);
6508 	gmpc_browsers_metadata_hitem_destroy (&item);
6509 }
6510 
6511 
gmpc_browsers_metadata_select_browser(GmpcBrowsersMetadata * self,GtkTreeView * tree)6512 void gmpc_browsers_metadata_select_browser (GmpcBrowsersMetadata* self, GtkTreeView* tree) {
6513 	g_return_if_fail (self != NULL);
6514 	if (self->priv->rref != NULL) {
6515 		GtkTreeView* _tmp0_ = NULL;
6516 		GtkTreeView* category_tree;
6517 		GtkTreeSelection* _tmp1_ = NULL;
6518 		GtkTreeSelection* _tmp2_;
6519 		GtkTreeSelection* sel;
6520 		GtkTreePath* _tmp3_ = NULL;
6521 		GtkTreePath* path;
6522 		_tmp0_ = playlist3_get_category_tree_view ();
6523 		category_tree = _tmp0_;
6524 		_tmp1_ = gtk_tree_view_get_selection (category_tree);
6525 		_tmp2_ = _g_object_ref0 (_tmp1_);
6526 		sel = _tmp2_;
6527 		_tmp3_ = gtk_tree_row_reference_get_path (self->priv->rref);
6528 		path = _tmp3_;
6529 		if (path != NULL) {
6530 			gtk_tree_selection_select_path (sel, path);
6531 		}
6532 		_gtk_tree_path_free0 (path);
6533 		_g_object_unref0 (sel);
6534 	}
6535 }
6536 
6537 
gmpc_browsers_metadata_change_color_style(GmpcBrowsersMetadata * self,GtkWidget * bg)6538 static void gmpc_browsers_metadata_change_color_style (GmpcBrowsersMetadata* self, GtkWidget* bg) {
6539 	gboolean _tmp0_ = FALSE;
6540 	gboolean _tmp1_ = FALSE;
6541 	g_return_if_fail (self != NULL);
6542 	g_return_if_fail (bg != NULL);
6543 	g_debug ("gmpc-metadata-browser2.vala:2638: change style");
6544 	if (GTK_IS_SEPARATOR (bg)) {
6545 		_tmp1_ = TRUE;
6546 	} else {
6547 		_tmp1_ = GTK_IS_NOTEBOOK (bg);
6548 	}
6549 	if (_tmp1_) {
6550 		_tmp0_ = TRUE;
6551 	} else {
6552 		_tmp0_ = GTK_IS_CHECK_BUTTON (bg);
6553 	}
6554 	if (_tmp0_) {
6555 	} else {
6556 		if (self->priv->theme_colors) {
6557 			GtkStyle* _tmp2_ = NULL;
6558 			GdkColor _tmp3_;
6559 			_tmp2_ = gtk_widget_get_style ((GtkWidget*) self->priv->paned);
6560 			_tmp3_ = _tmp2_->base[GTK_STATE_NORMAL];
6561 			gtk_widget_modify_bg (bg, GTK_STATE_NORMAL, &_tmp3_);
6562 		} else {
6563 			gtk_widget_modify_bg (bg, GTK_STATE_NORMAL, &self->priv->background);
6564 			gtk_widget_modify_base (bg, GTK_STATE_NORMAL, &self->priv->background);
6565 			gtk_widget_modify_text (bg, GTK_STATE_NORMAL, &self->priv->foreground);
6566 			gtk_widget_modify_fg (bg, GTK_STATE_NORMAL, &self->priv->foreground);
6567 			gtk_widget_modify_text (bg, GTK_STATE_ACTIVE, &self->priv->foreground);
6568 			gtk_widget_modify_fg (bg, GTK_STATE_ACTIVE, &self->priv->foreground);
6569 			gtk_widget_modify_bg (bg, GTK_STATE_INSENSITIVE, &self->priv->background);
6570 			gtk_widget_modify_base (bg, GTK_STATE_INSENSITIVE, &self->priv->background);
6571 		}
6572 	}
6573 	if (GTK_IS_CONTAINER (bg)) {
6574 		GList* _tmp4_ = NULL;
6575 		_tmp4_ = gtk_container_get_children (GTK_CONTAINER (bg));
6576 		{
6577 			GList* child_collection;
6578 			GList* child_it;
6579 			child_collection = _tmp4_;
6580 			for (child_it = child_collection; child_it != NULL; child_it = child_it->next) {
6581 				GtkWidget* _tmp5_;
6582 				GtkWidget* child;
6583 				_tmp5_ = _g_object_ref0 ((GtkWidget*) child_it->data);
6584 				child = _tmp5_;
6585 				{
6586 					gmpc_browsers_metadata_change_color_style (self, child);
6587 					_g_object_unref0 (child);
6588 				}
6589 			}
6590 			_g_list_free0 (child_collection);
6591 		}
6592 	}
6593 }
6594 
6595 
string_strnlen(gchar * str,glong maxlen)6596 static glong string_strnlen (gchar* str, glong maxlen) {
6597 	glong result = 0L;
6598 	gchar* _tmp0_ = NULL;
6599 	gchar* end;
6600 	_tmp0_ = memchr (str, 0, (gsize) maxlen);
6601 	end = _tmp0_;
6602 	if (end == NULL) {
6603 		result = maxlen;
6604 		return result;
6605 	} else {
6606 		result = (glong) (end - str);
6607 		return result;
6608 	}
6609 }
6610 
6611 
string_substring(const gchar * self,glong offset,glong len)6612 static gchar* string_substring (const gchar* self, glong offset, glong len) {
6613 	gchar* result = NULL;
6614 	glong string_length = 0L;
6615 	gboolean _tmp0_ = FALSE;
6616 	gchar* _tmp3_ = NULL;
6617 	g_return_val_if_fail (self != NULL, NULL);
6618 	if (offset >= 0) {
6619 		_tmp0_ = len >= 0;
6620 	} else {
6621 		_tmp0_ = FALSE;
6622 	}
6623 	if (_tmp0_) {
6624 		glong _tmp1_;
6625 		_tmp1_ = string_strnlen ((gchar*) self, offset + len);
6626 		string_length = _tmp1_;
6627 	} else {
6628 		gint _tmp2_;
6629 		_tmp2_ = strlen (self);
6630 		string_length = (glong) _tmp2_;
6631 	}
6632 	if (offset < 0) {
6633 		offset = string_length + offset;
6634 		g_return_val_if_fail (offset >= 0, NULL);
6635 	} else {
6636 		g_return_val_if_fail (offset <= string_length, NULL);
6637 	}
6638 	if (len < 0) {
6639 		len = string_length - offset;
6640 	}
6641 	g_return_val_if_fail ((offset + len) <= string_length, NULL);
6642 	_tmp3_ = g_strndup (((gchar*) self) + offset, (gsize) len);
6643 	result = _tmp3_;
6644 	return result;
6645 }
6646 
6647 
gmpc_browsers_metadata_get_extension(GmpcBrowsersMetadata * self,const gchar * path)6648 static gchar* gmpc_browsers_metadata_get_extension (GmpcBrowsersMetadata* self, const gchar* path) {
6649 	gchar* result = NULL;
6650 	gint _tmp0_;
6651 	glong length;
6652 	glong i;
6653 	gchar* retv;
6654 	g_return_val_if_fail (self != NULL, NULL);
6655 	g_return_val_if_fail (path != NULL, NULL);
6656 	_tmp0_ = strlen (path);
6657 	length = (glong) _tmp0_;
6658 	i = length;
6659 	retv = NULL;
6660 	{
6661 		gboolean _tmp1_;
6662 		_tmp1_ = TRUE;
6663 		while (TRUE) {
6664 			gboolean _tmp2_ = FALSE;
6665 			gchar _tmp3_;
6666 			if (!_tmp1_) {
6667 				i--;
6668 			}
6669 			_tmp1_ = FALSE;
6670 			if (i > 0) {
6671 				_tmp2_ = (length - i) < 8;
6672 			} else {
6673 				_tmp2_ = FALSE;
6674 			}
6675 			if (!_tmp2_) {
6676 				break;
6677 			}
6678 			_tmp3_ = string_get (path, i);
6679 			if (_tmp3_ == '.') {
6680 				gchar* _tmp4_ = NULL;
6681 				_tmp4_ = string_substring (path, i + 1, (glong) (-1));
6682 				_g_free0 (retv);
6683 				retv = _tmp4_;
6684 				result = retv;
6685 				return result;
6686 			}
6687 		}
6688 	}
6689 	result = retv;
6690 	return result;
6691 }
6692 
6693 
gmpc_browsers_metadata_real_set_enabled(GmpcPluginBase * base,gboolean state)6694 static void gmpc_browsers_metadata_real_set_enabled (GmpcPluginBase* base, gboolean state) {
6695 	GmpcBrowsersMetadata * self;
6696 	const gchar* _tmp8_ = NULL;
6697 	self = (GmpcBrowsersMetadata*) base;
6698 	if (state) {
6699 		if (self->priv->rref == NULL) {
6700 			GtkTreeView* _tmp0_ = NULL;
6701 			_tmp0_ = playlist3_get_category_tree_view ();
6702 			gmpc_plugin_browser_iface_browser_add ((GmpcPluginBrowserIface*) self, (GtkWidget*) _tmp0_);
6703 			gmpc_browsers_metadata_browser_init (self);
6704 		}
6705 	} else {
6706 		if (self->priv->rref != NULL) {
6707 			GtkTreePath* _tmp1_ = NULL;
6708 			GtkTreePath* path;
6709 			_tmp1_ = gtk_tree_row_reference_get_path (self->priv->rref);
6710 			path = _tmp1_;
6711 			if (path != NULL) {
6712 				gint* _tmp2_ = NULL;
6713 				gint* indices;
6714 				gint indices_length1;
6715 				gint _indices_size_;
6716 				const gchar* _tmp3_ = NULL;
6717 				GtkTreeModel* _tmp4_ = NULL;
6718 				GtkListStore* _tmp5_;
6719 				GtkListStore* model;
6720 				GtkTreeIter iter = {0};
6721 				GtkTreeIter _tmp6_ = {0};
6722 				gboolean _tmp7_;
6723 				_tmp2_ = gtk_tree_path_get_indices (path);
6724 				indices = _tmp2_;
6725 				indices_length1 = -1;
6726 				_indices_size_ = -1;
6727 				_tmp3_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
6728 				cfg_set_single_value_as_int (config, _tmp3_, "position", indices[0]);
6729 				_tmp4_ = gtk_tree_row_reference_get_model (self->priv->rref);
6730 				_tmp5_ = _g_object_ref0 (GTK_LIST_STORE (_tmp4_));
6731 				model = _tmp5_;
6732 				_tmp7_ = gtk_tree_model_get_iter ((GtkTreeModel*) model, &_tmp6_, path);
6733 				iter = _tmp6_;
6734 				if (_tmp7_) {
6735 					gtk_list_store_remove (model, &iter);
6736 				}
6737 				_g_object_unref0 (model);
6738 			}
6739 			_gtk_tree_row_reference_free0 (self->priv->rref);
6740 			self->priv->rref = NULL;
6741 			_gtk_tree_path_free0 (path);
6742 		}
6743 	}
6744 	_tmp8_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
6745 	if (_tmp8_ != NULL) {
6746 		const gchar* _tmp9_ = NULL;
6747 		_tmp9_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
6748 		cfg_set_single_value_as_int (config, _tmp9_, "enabled", (gint) state);
6749 	}
6750 }
6751 
6752 
gmpc_browsers_metadata_construct(GType object_type)6753 GmpcBrowsersMetadata* gmpc_browsers_metadata_construct (GType object_type) {
6754 	GmpcBrowsersMetadata * self = NULL;
6755 	self = (GmpcBrowsersMetadata*) gmpc_plugin_base_construct (object_type);
6756 	return self;
6757 }
6758 
6759 
gmpc_browsers_metadata_new(void)6760 GmpcBrowsersMetadata* gmpc_browsers_metadata_new (void) {
6761 	return gmpc_browsers_metadata_construct (GMPC_BROWSERS_TYPE_METADATA);
6762 }
6763 
6764 
_gmpc_browsers_metadata_con_changed_gmpc_connection_connection_changed(GmpcConnection * _sender,MpdObj * mi,gint connect,gpointer self)6765 static void _gmpc_browsers_metadata_con_changed_gmpc_connection_connection_changed (GmpcConnection* _sender, MpdObj* mi, gint connect, gpointer self) {
6766 	gmpc_browsers_metadata_con_changed (self, _sender, mi, connect);
6767 }
6768 
6769 
_gmpc_browsers_metadata_status_changed_gmpc_connection_status_changed(GmpcConnection * _sender,MpdObj * mi,ChangedStatusType what,gpointer self)6770 static void _gmpc_browsers_metadata_status_changed_gmpc_connection_status_changed (GmpcConnection* _sender, MpdObj* mi, ChangedStatusType what, gpointer self) {
6771 	gmpc_browsers_metadata_status_changed (self, _sender, mi, what);
6772 }
6773 
6774 
gmpc_browsers_metadata_constructor(GType type,guint n_construct_properties,GObjectConstructParam * construct_properties)6775 static GObject * gmpc_browsers_metadata_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
6776 	GObject * obj;
6777 	GObjectClass * parent_class;
6778 	GmpcBrowsersMetadata * self;
6779 	gchar* _tmp0_ = NULL;
6780 	gchar* background;
6781 	gchar* _tmp1_ = NULL;
6782 	gchar* foreground;
6783 	GdkColor _tmp2_ = {0};
6784 	GdkColor _tmp3_ = {0};
6785 	const gchar* _tmp4_ = NULL;
6786 	const gchar* _tmp5_ = NULL;
6787 	parent_class = G_OBJECT_CLASS (gmpc_browsers_metadata_parent_class);
6788 	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
6789 	self = GMPC_BROWSERS_METADATA (obj);
6790 	((GmpcPluginBase*) self)->plugin_type = 2 | 8;
6791 	g_signal_connect_object (gmpcconn, "connection-changed", (GCallback) _gmpc_browsers_metadata_con_changed_gmpc_connection_connection_changed, self, 0);
6792 	g_signal_connect_object (gmpcconn, "status-changed", (GCallback) _gmpc_browsers_metadata_status_changed_gmpc_connection_status_changed, self, 0);
6793 	_tmp0_ = cfg_get_single_value_as_string_with_default (config, "Now Playing", "background-color", "#000");
6794 	background = _tmp0_;
6795 	_tmp1_ = cfg_get_single_value_as_string_with_default (config, "Now Playing", "foreground-color", "#FFF");
6796 	foreground = _tmp1_;
6797 	gdk_color_parse (background, &_tmp2_);
6798 	self->priv->background = _tmp2_;
6799 	gdk_color_parse (foreground, &_tmp3_);
6800 	self->priv->foreground = _tmp3_;
6801 	_tmp4_ = _ ("switch metadata");
6802 	_tmp5_ = _ ("Switch to Metadata view");
6803 	gmpc_easy_command_add_entry (gmpc_easy_command, _tmp4_, "", _tmp5_, (GmpcEasyCommandCallback*) gmpc_browsers_metadata_show_metadata_search, self);
6804 	_g_free0 (foreground);
6805 	_g_free0 (background);
6806 	return obj;
6807 }
6808 
6809 
gmpc_browsers_metadata_hitem_copy(const GmpcBrowsersMetadataHitem * self,GmpcBrowsersMetadataHitem * dest)6810 static void gmpc_browsers_metadata_hitem_copy (const GmpcBrowsersMetadataHitem* self, GmpcBrowsersMetadataHitem* dest) {
6811 	dest->type = self->type;
6812 	dest->song = _mpd_songDup0 (self->song);
6813 	dest->search_string = g_strdup (self->search_string);
6814 }
6815 
6816 
gmpc_browsers_metadata_hitem_destroy(GmpcBrowsersMetadataHitem * self)6817 static void gmpc_browsers_metadata_hitem_destroy (GmpcBrowsersMetadataHitem* self) {
6818 	_mpd_freeSong0 ((*self).song);
6819 	_g_free0 ((*self).search_string);
6820 }
6821 
6822 
gmpc_browsers_metadata_hitem_dup(const GmpcBrowsersMetadataHitem * self)6823 static GmpcBrowsersMetadataHitem* gmpc_browsers_metadata_hitem_dup (const GmpcBrowsersMetadataHitem* self) {
6824 	GmpcBrowsersMetadataHitem* dup;
6825 	dup = g_new0 (GmpcBrowsersMetadataHitem, 1);
6826 	gmpc_browsers_metadata_hitem_copy (self, dup);
6827 	return dup;
6828 }
6829 
6830 
gmpc_browsers_metadata_hitem_free(GmpcBrowsersMetadataHitem * self)6831 static void gmpc_browsers_metadata_hitem_free (GmpcBrowsersMetadataHitem* self) {
6832 	gmpc_browsers_metadata_hitem_destroy (self);
6833 	g_free (self);
6834 }
6835 
6836 
gmpc_browsers_metadata_hitem_get_type(void)6837 static GType gmpc_browsers_metadata_hitem_get_type (void) {
6838 	static volatile gsize gmpc_browsers_metadata_hitem_type_id__volatile = 0;
6839 	if (g_once_init_enter (&gmpc_browsers_metadata_hitem_type_id__volatile)) {
6840 		GType gmpc_browsers_metadata_hitem_type_id;
6841 		gmpc_browsers_metadata_hitem_type_id = g_boxed_type_register_static ("GmpcBrowsersMetadataHitem", (GBoxedCopyFunc) gmpc_browsers_metadata_hitem_dup, (GBoxedFreeFunc) gmpc_browsers_metadata_hitem_free);
6842 		g_once_init_leave (&gmpc_browsers_metadata_hitem_type_id__volatile, gmpc_browsers_metadata_hitem_type_id);
6843 	}
6844 	return gmpc_browsers_metadata_hitem_type_id__volatile;
6845 }
6846 
6847 
gmpc_browsers_metadata_class_init(GmpcBrowsersMetadataClass * klass)6848 static void gmpc_browsers_metadata_class_init (GmpcBrowsersMetadataClass * klass) {
6849 	gmpc_browsers_metadata_parent_class = g_type_class_peek_parent (klass);
6850 	g_type_class_add_private (klass, sizeof (GmpcBrowsersMetadataPrivate));
6851 	GMPC_PLUGIN_BASE_CLASS (klass)->get_version = gmpc_browsers_metadata_real_get_version;
6852 	GMPC_PLUGIN_BASE_CLASS (klass)->get_name = gmpc_browsers_metadata_real_get_name;
6853 	GMPC_PLUGIN_BASE_CLASS (klass)->save_yourself = gmpc_browsers_metadata_real_save_yourself;
6854 	GMPC_PLUGIN_BASE_CLASS (klass)->set_enabled = gmpc_browsers_metadata_real_set_enabled;
6855 	G_OBJECT_CLASS (klass)->constructor = gmpc_browsers_metadata_constructor;
6856 	G_OBJECT_CLASS (klass)->finalize = gmpc_browsers_metadata_finalize;
6857 }
6858 
6859 
gmpc_browsers_metadata_gmpc_plugin_browser_iface_interface_init(GmpcPluginBrowserIfaceIface * iface)6860 static void gmpc_browsers_metadata_gmpc_plugin_browser_iface_interface_init (GmpcPluginBrowserIfaceIface * iface) {
6861 	gmpc_browsers_metadata_gmpc_plugin_browser_iface_parent_iface = g_type_interface_peek_parent (iface);
6862 	iface->browser_add_go_menu = (gint (*)(GmpcPluginBrowserIface* ,GtkMenu*)) gmpc_browsers_metadata_real_browser_add_go_menu;
6863 	iface->browser_add = (void (*)(GmpcPluginBrowserIface* ,GtkWidget*)) gmpc_browsers_metadata_real_browser_add;
6864 	iface->browser_selected = (void (*)(GmpcPluginBrowserIface* ,GtkContainer*)) gmpc_browsers_metadata_real_browser_selected;
6865 	iface->browser_unselected = (void (*)(GmpcPluginBrowserIface* ,GtkContainer*)) gmpc_browsers_metadata_real_browser_unselected;
6866 }
6867 
6868 
gmpc_browsers_metadata_instance_init(GmpcBrowsersMetadata * self)6869 static void gmpc_browsers_metadata_instance_init (GmpcBrowsersMetadata * self) {
6870 	gchar* _tmp0_ = NULL;
6871 	gchar* _tmp1_ = NULL;
6872 	gint _tmp2_;
6873 	self->priv = GMPC_BROWSERS_METADATA_GET_PRIVATE (self);
6874 	self->priv->block_update = 0;
6875 	self->priv->rref = NULL;
6876 	_tmp0_ = cfg_get_single_value_as_string_with_default (config, "Now Playing", "title-color", "#4d90dd");
6877 	self->priv->title_color = _tmp0_;
6878 	_tmp1_ = cfg_get_single_value_as_string_with_default (config, "Now Playing", "item-color", "#304ab8");
6879 	self->priv->item_color = _tmp1_;
6880 	_tmp2_ = cfg_get_single_value_as_int_with_default (config, "Now Playing", "use-theme-color", 1);
6881 	self->priv->theme_colors = (gboolean) _tmp2_;
6882 	self->priv->paned = NULL;
6883 	self->priv->browser_box = NULL;
6884 	self->priv->tree_artist = NULL;
6885 	self->priv->model_artist = NULL;
6886 	self->priv->model_filter_artist = NULL;
6887 	self->priv->artist_filter_entry = NULL;
6888 	self->priv->tree_album = NULL;
6889 	self->priv->model_albums = NULL;
6890 	self->priv->model_filter_album = NULL;
6891 	self->priv->album_filter_entry = NULL;
6892 	self->priv->tree_songs = NULL;
6893 	self->priv->model_songs = NULL;
6894 	self->priv->metadata_sw = NULL;
6895 	self->priv->metadata_box = NULL;
6896 	self->priv->header = NULL;
6897 	self->priv->update_timeout = (guint) 0;
6898 	self->priv->selected = FALSE;
6899 	self->priv->history = NULL;
6900 	self->priv->current = NULL;
6901 }
6902 
6903 
gmpc_browsers_metadata_finalize(GObject * obj)6904 static void gmpc_browsers_metadata_finalize (GObject* obj) {
6905 	GmpcBrowsersMetadata * self;
6906 	self = GMPC_BROWSERS_METADATA (obj);
6907 	_gtk_tree_row_reference_free0 (self->priv->rref);
6908 	_g_free0 (self->priv->title_color);
6909 	_g_free0 (self->priv->item_color);
6910 	_g_object_unref0 (self->priv->paned);
6911 	_g_object_unref0 (self->priv->browser_box);
6912 	_g_object_unref0 (self->priv->tree_artist);
6913 	_g_object_unref0 (self->priv->model_artist);
6914 	_g_object_unref0 (self->priv->model_filter_artist);
6915 	_g_object_unref0 (self->priv->artist_filter_entry);
6916 	_g_object_unref0 (self->priv->tree_album);
6917 	_g_object_unref0 (self->priv->model_albums);
6918 	_g_object_unref0 (self->priv->model_filter_album);
6919 	_g_object_unref0 (self->priv->album_filter_entry);
6920 	_g_object_unref0 (self->priv->tree_songs);
6921 	_g_object_unref0 (self->priv->model_songs);
6922 	_g_object_unref0 (self->priv->metadata_sw);
6923 	_g_object_unref0 (self->priv->metadata_box);
6924 	_g_object_unref0 (self->priv->header);
6925 	__g_list_free__gmpc_browsers_metadata_hitem_free0_0 (self->priv->history);
6926 	G_OBJECT_CLASS (gmpc_browsers_metadata_parent_class)->finalize (obj);
6927 }
6928 
6929 
gmpc_browsers_metadata_get_type(void)6930 GType gmpc_browsers_metadata_get_type (void) {
6931 	static volatile gsize gmpc_browsers_metadata_type_id__volatile = 0;
6932 	if (g_once_init_enter (&gmpc_browsers_metadata_type_id__volatile)) {
6933 		static const GTypeInfo g_define_type_info = { sizeof (GmpcBrowsersMetadataClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gmpc_browsers_metadata_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GmpcBrowsersMetadata), 0, (GInstanceInitFunc) gmpc_browsers_metadata_instance_init, NULL };
6934 		static const GInterfaceInfo gmpc_plugin_browser_iface_info = { (GInterfaceInitFunc) gmpc_browsers_metadata_gmpc_plugin_browser_iface_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
6935 		GType gmpc_browsers_metadata_type_id;
6936 		gmpc_browsers_metadata_type_id = g_type_register_static (GMPC_PLUGIN_TYPE_BASE, "GmpcBrowsersMetadata", &g_define_type_info, 0);
6937 		g_type_add_interface_static (gmpc_browsers_metadata_type_id, GMPC_PLUGIN_TYPE_BROWSER_IFACE, &gmpc_plugin_browser_iface_info);
6938 		g_once_init_leave (&gmpc_browsers_metadata_type_id__volatile, gmpc_browsers_metadata_type_id);
6939 	}
6940 	return gmpc_browsers_metadata_type_id__volatile;
6941 }
6942 
6943 
6944 
6945