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, <itle, -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