1 /* gmpc-plugin.c generated by valac 0.12.0, the Vala compiler
2  * generated from gmpc-plugin.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 "gmpc-extras.h"
26 #include <stdlib.h>
27 #include <string.h>
28 #include <plugin.h>
29 #include <config1.h>
30 #include <gtk/gtk.h>
31 #include <libmpd/libmpdclient.h>
32 #include <libmpd/libmpd.h>
33 #include <misc.h>
34 #include <metadata.h>
35 
36 #define _g_free0(var) (var = (g_free (var), NULL))
37 
38 
39 static gpointer gmpc_plugin_base_parent_class = NULL;
40 
41 enum  {
42 	GMPC_PLUGIN_BASE_DUMMY_PROPERTY
43 };
44 static gint* gmpc_plugin_base_real_get_version (GmpcPluginBase* self, int* result_length1);
45 static const gchar* gmpc_plugin_base_real_get_name (GmpcPluginBase* self);
46 static void gmpc_plugin_base_real_save_yourself (GmpcPluginBase* self);
47 static gboolean gmpc_plugin_base_real_get_enabled (GmpcPluginBase* self);
48 static void gmpc_plugin_base_real_set_enabled (GmpcPluginBase* self, gboolean state);
49 static void gmpc_plugin_base_finalize (GObject* obj);
50 static gint gmpc_plugin_browser_iface_real_browser_option_menu (GmpcPluginBrowserIface* self, GtkMenu* menu);
51 static gint gmpc_plugin_browser_iface_real_browser_add_go_menu (GmpcPluginBrowserIface* self, GtkMenu* menu);
52 static gboolean gmpc_plugin_integrate_search_iface_real_field_supported (GmpcPluginIntegrateSearchIface* self, mpd_TagItems tag);
53 
54 
55 /**
56              * Function should return the version of the plugin
57              */
gmpc_plugin_base_real_get_version(GmpcPluginBase * self,int * result_length1)58 static gint* gmpc_plugin_base_real_get_version (GmpcPluginBase* self, int* result_length1) {
59 	g_return_val_if_fail (self != NULL, NULL);
60 	g_critical ("Type `%s' does not implement abstract method `gmpc_plugin_base_get_version'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
61 	return NULL;
62 }
63 
64 
gmpc_plugin_base_get_version(GmpcPluginBase * self,int * result_length1)65 gint* gmpc_plugin_base_get_version (GmpcPluginBase* self, int* result_length1) {
66 	return GMPC_PLUGIN_BASE_GET_CLASS (self)->get_version (self, result_length1);
67 }
68 
69 
70 /**
71              * Return the name of the plugin
72              */
gmpc_plugin_base_real_get_name(GmpcPluginBase * self)73 static const gchar* gmpc_plugin_base_real_get_name (GmpcPluginBase* self) {
74 	g_return_val_if_fail (self != NULL, NULL);
75 	g_critical ("Type `%s' does not implement abstract method `gmpc_plugin_base_get_name'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
76 	return NULL;
77 }
78 
79 
gmpc_plugin_base_get_name(GmpcPluginBase * self)80 const gchar* gmpc_plugin_base_get_name (GmpcPluginBase* self) {
81 	return GMPC_PLUGIN_BASE_GET_CLASS (self)->get_name (self);
82 }
83 
84 
85 /**
86              * This is called before the plugin is destroyed. Plugins should save it state here.
87              *
88              * A Browser plugin should store the position in the side-tree here.
89              * Optional function.
90              */
gmpc_plugin_base_real_save_yourself(GmpcPluginBase * self)91 static void gmpc_plugin_base_real_save_yourself (GmpcPluginBase* self) {
92 	g_return_if_fail (self != NULL);
93 }
94 
95 
gmpc_plugin_base_save_yourself(GmpcPluginBase * self)96 void gmpc_plugin_base_save_yourself (GmpcPluginBase* self) {
97 	GMPC_PLUGIN_BASE_GET_CLASS (self)->save_yourself (self);
98 }
99 
100 
101 /**
102              * Function used by gmpc to check if the plugin is enabled.
103              * By default it is stored in the get_name() category under the enabled key.
104              *
105              * @return The state (true or false)
106              */
gmpc_plugin_base_real_get_enabled(GmpcPluginBase * self)107 static gboolean gmpc_plugin_base_real_get_enabled (GmpcPluginBase* self) {
108 	gboolean result = FALSE;
109 	const gchar* _tmp0_ = NULL;
110 	const gchar* _tmp1_ = NULL;
111 	gint _tmp2_;
112 	g_return_val_if_fail (self != NULL, FALSE);
113 	_tmp0_ = gmpc_plugin_base_get_name (self);
114 	if (_tmp0_ == NULL) {
115 		result = FALSE;
116 		return result;
117 	}
118 	_tmp1_ = gmpc_plugin_base_get_name (self);
119 	_tmp2_ = cfg_get_single_value_as_int_with_default (config, _tmp1_, "enabled", 1);
120 	result = (gboolean) _tmp2_;
121 	return result;
122 }
123 
124 
gmpc_plugin_base_get_enabled(GmpcPluginBase * self)125 gboolean gmpc_plugin_base_get_enabled (GmpcPluginBase* self) {
126 	return GMPC_PLUGIN_BASE_GET_CLASS (self)->get_enabled (self);
127 }
128 
129 
130 /**
131              * Function to enable/disable the plugin
132              * @param state the enable state to set the plugin in. (true or false)
133              *
134              * Function used by gmpc to enable/disable the plugin.
135              * By default it is stored in the get_name() category under the enabled key.
136              * If something needs to be done on enable/disable override this function.
137              */
gmpc_plugin_base_real_set_enabled(GmpcPluginBase * self,gboolean state)138 static void gmpc_plugin_base_real_set_enabled (GmpcPluginBase* self, gboolean state) {
139 	const gchar* _tmp0_ = NULL;
140 	g_return_if_fail (self != NULL);
141 	_tmp0_ = gmpc_plugin_base_get_name (self);
142 	if (_tmp0_ != NULL) {
143 		const gchar* _tmp1_ = NULL;
144 		_tmp1_ = gmpc_plugin_base_get_name (self);
145 		cfg_set_single_value_as_int (config, _tmp1_, "enabled", (gint) state);
146 	}
147 }
148 
149 
gmpc_plugin_base_set_enabled(GmpcPluginBase * self,gboolean state)150 void gmpc_plugin_base_set_enabled (GmpcPluginBase* self, gboolean state) {
151 	GMPC_PLUGIN_BASE_GET_CLASS (self)->set_enabled (self, state);
152 }
153 
154 
gmpc_plugin_base_construct(GType object_type)155 GmpcPluginBase* gmpc_plugin_base_construct (GType object_type) {
156 	GmpcPluginBase * self = NULL;
157 	self = (GmpcPluginBase*) g_object_new (object_type, NULL);
158 	return self;
159 }
160 
161 
gmpc_plugin_base_class_init(GmpcPluginBaseClass * klass)162 static void gmpc_plugin_base_class_init (GmpcPluginBaseClass * klass) {
163 	gmpc_plugin_base_parent_class = g_type_class_peek_parent (klass);
164 	GMPC_PLUGIN_BASE_CLASS (klass)->get_version = gmpc_plugin_base_real_get_version;
165 	GMPC_PLUGIN_BASE_CLASS (klass)->get_name = gmpc_plugin_base_real_get_name;
166 	GMPC_PLUGIN_BASE_CLASS (klass)->save_yourself = gmpc_plugin_base_real_save_yourself;
167 	GMPC_PLUGIN_BASE_CLASS (klass)->get_enabled = gmpc_plugin_base_real_get_enabled;
168 	GMPC_PLUGIN_BASE_CLASS (klass)->set_enabled = gmpc_plugin_base_real_set_enabled;
169 	G_OBJECT_CLASS (klass)->finalize = gmpc_plugin_base_finalize;
170 }
171 
172 
gmpc_plugin_base_instance_init(GmpcPluginBase * self)173 static void gmpc_plugin_base_instance_init (GmpcPluginBase * self) {
174 	self->translation_domain = NULL;
175 	self->plugin_type = 1;
176 }
177 
178 
gmpc_plugin_base_finalize(GObject * obj)179 static void gmpc_plugin_base_finalize (GObject* obj) {
180 	GmpcPluginBase * self;
181 	self = GMPC_PLUGIN_BASE (obj);
182 	_g_free0 (self->path);
183 	G_OBJECT_CLASS (gmpc_plugin_base_parent_class)->finalize (obj);
184 }
185 
186 
187 /**
188          * This is the base class that a plugin should inherit from.
189          *
190          */
gmpc_plugin_base_get_type(void)191 GType gmpc_plugin_base_get_type (void) {
192 	static volatile gsize gmpc_plugin_base_type_id__volatile = 0;
193 	if (g_once_init_enter (&gmpc_plugin_base_type_id__volatile)) {
194 		static const GTypeInfo g_define_type_info = { sizeof (GmpcPluginBaseClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gmpc_plugin_base_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GmpcPluginBase), 0, (GInstanceInitFunc) gmpc_plugin_base_instance_init, NULL };
195 		GType gmpc_plugin_base_type_id;
196 		gmpc_plugin_base_type_id = g_type_register_static (G_TYPE_OBJECT, "GmpcPluginBase", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
197 		g_once_init_leave (&gmpc_plugin_base_type_id__volatile, gmpc_plugin_base_type_id);
198 	}
199 	return gmpc_plugin_base_type_id__volatile;
200 }
201 
202 
gmpc_plugin_tool_menu_iface_tool_menu_integration(GmpcPluginToolMenuIface * self,GtkMenu * menu)203 gint gmpc_plugin_tool_menu_iface_tool_menu_integration (GmpcPluginToolMenuIface* self, GtkMenu* menu) {
204 	return GMPC_PLUGIN_TOOL_MENU_IFACE_GET_INTERFACE (self)->tool_menu_integration (self, menu);
205 }
206 
207 
gmpc_plugin_tool_menu_iface_base_init(GmpcPluginToolMenuIfaceIface * iface)208 static void gmpc_plugin_tool_menu_iface_base_init (GmpcPluginToolMenuIfaceIface * iface) {
209 	static gboolean initialized = FALSE;
210 	if (!initialized) {
211 		initialized = TRUE;
212 	}
213 }
214 
215 
216 /**
217          * This interface allows the plugin to add one, or more, entries in the Tools menu.
218          * If need to remove or undate an entry call pl3_tool_menu_update(). This will tell gmpc
219          * To clear the menu, and call this function again on every plugin.
220          */
gmpc_plugin_tool_menu_iface_get_type(void)221 GType gmpc_plugin_tool_menu_iface_get_type (void) {
222 	static volatile gsize gmpc_plugin_tool_menu_iface_type_id__volatile = 0;
223 	if (g_once_init_enter (&gmpc_plugin_tool_menu_iface_type_id__volatile)) {
224 		static const GTypeInfo g_define_type_info = { sizeof (GmpcPluginToolMenuIfaceIface), (GBaseInitFunc) gmpc_plugin_tool_menu_iface_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
225 		GType gmpc_plugin_tool_menu_iface_type_id;
226 		gmpc_plugin_tool_menu_iface_type_id = g_type_register_static (G_TYPE_INTERFACE, "GmpcPluginToolMenuIface", &g_define_type_info, 0);
227 		g_type_interface_add_prerequisite (gmpc_plugin_tool_menu_iface_type_id, GMPC_PLUGIN_TYPE_BASE);
228 		g_once_init_leave (&gmpc_plugin_tool_menu_iface_type_id__volatile, gmpc_plugin_tool_menu_iface_type_id);
229 	}
230 	return gmpc_plugin_tool_menu_iface_type_id__volatile;
231 }
232 
233 
gmpc_plugin_meta_data_iface_get_metadata(GmpcPluginMetaDataIface * self,const mpd_Song * song,MetaDataType type,GmpcPluginMetaDataCallback callback,void * callback_target)234 void gmpc_plugin_meta_data_iface_get_metadata (GmpcPluginMetaDataIface* self, const mpd_Song* song, MetaDataType type, GmpcPluginMetaDataCallback callback, void* callback_target) {
235 	GMPC_PLUGIN_META_DATA_IFACE_GET_INTERFACE (self)->get_metadata (self, song, type, callback, callback_target);
236 }
237 
238 
gmpc_plugin_meta_data_iface_get_priority(GmpcPluginMetaDataIface * self)239 gint gmpc_plugin_meta_data_iface_get_priority (GmpcPluginMetaDataIface* self) {
240 	return GMPC_PLUGIN_META_DATA_IFACE_GET_INTERFACE (self)->get_priority (self);
241 }
242 
243 
gmpc_plugin_meta_data_iface_set_priority(GmpcPluginMetaDataIface * self,gint priority)244 void gmpc_plugin_meta_data_iface_set_priority (GmpcPluginMetaDataIface* self, gint priority) {
245 	GMPC_PLUGIN_META_DATA_IFACE_GET_INTERFACE (self)->set_priority (self, priority);
246 }
247 
248 
gmpc_plugin_meta_data_iface_base_init(GmpcPluginMetaDataIfaceIface * iface)249 static void gmpc_plugin_meta_data_iface_base_init (GmpcPluginMetaDataIfaceIface * iface) {
250 	static gboolean initialized = FALSE;
251 	if (!initialized) {
252 		initialized = TRUE;
253 	}
254 }
255 
256 
gmpc_plugin_meta_data_iface_get_type(void)257 GType gmpc_plugin_meta_data_iface_get_type (void) {
258 	static volatile gsize gmpc_plugin_meta_data_iface_type_id__volatile = 0;
259 	if (g_once_init_enter (&gmpc_plugin_meta_data_iface_type_id__volatile)) {
260 		static const GTypeInfo g_define_type_info = { sizeof (GmpcPluginMetaDataIfaceIface), (GBaseInitFunc) gmpc_plugin_meta_data_iface_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
261 		GType gmpc_plugin_meta_data_iface_type_id;
262 		gmpc_plugin_meta_data_iface_type_id = g_type_register_static (G_TYPE_INTERFACE, "GmpcPluginMetaDataIface", &g_define_type_info, 0);
263 		g_type_interface_add_prerequisite (gmpc_plugin_meta_data_iface_type_id, GMPC_PLUGIN_TYPE_BASE);
264 		g_once_init_leave (&gmpc_plugin_meta_data_iface_type_id__volatile, gmpc_plugin_meta_data_iface_type_id);
265 	}
266 	return gmpc_plugin_meta_data_iface_type_id__volatile;
267 }
268 
269 
gmpc_plugin_browser_iface_browser_add(GmpcPluginBrowserIface * self,GtkWidget * category_tree)270 void gmpc_plugin_browser_iface_browser_add (GmpcPluginBrowserIface* self, GtkWidget* category_tree) {
271 	GMPC_PLUGIN_BROWSER_IFACE_GET_INTERFACE (self)->browser_add (self, category_tree);
272 }
273 
274 
gmpc_plugin_browser_iface_browser_selected(GmpcPluginBrowserIface * self,GtkContainer * container)275 void gmpc_plugin_browser_iface_browser_selected (GmpcPluginBrowserIface* self, GtkContainer* container) {
276 	GMPC_PLUGIN_BROWSER_IFACE_GET_INTERFACE (self)->browser_selected (self, container);
277 }
278 
279 
gmpc_plugin_browser_iface_browser_unselected(GmpcPluginBrowserIface * self,GtkContainer * container)280 void gmpc_plugin_browser_iface_browser_unselected (GmpcPluginBrowserIface* self, GtkContainer* container) {
281 	GMPC_PLUGIN_BROWSER_IFACE_GET_INTERFACE (self)->browser_unselected (self, container);
282 }
283 
284 
gmpc_plugin_browser_iface_real_browser_option_menu(GmpcPluginBrowserIface * self,GtkMenu * menu)285 static gint gmpc_plugin_browser_iface_real_browser_option_menu (GmpcPluginBrowserIface* self, GtkMenu* menu) {
286 	gint result = 0;
287 	g_return_val_if_fail (menu != NULL, 0);
288 	result = 0;
289 	return result;
290 }
291 
292 
gmpc_plugin_browser_iface_browser_option_menu(GmpcPluginBrowserIface * self,GtkMenu * menu)293 gint gmpc_plugin_browser_iface_browser_option_menu (GmpcPluginBrowserIface* self, GtkMenu* menu) {
294 	return GMPC_PLUGIN_BROWSER_IFACE_GET_INTERFACE (self)->browser_option_menu (self, menu);
295 }
296 
297 
gmpc_plugin_browser_iface_real_browser_add_go_menu(GmpcPluginBrowserIface * self,GtkMenu * menu)298 static gint gmpc_plugin_browser_iface_real_browser_add_go_menu (GmpcPluginBrowserIface* self, GtkMenu* menu) {
299 	gint result = 0;
300 	g_return_val_if_fail (menu != NULL, 0);
301 	result = 0;
302 	return result;
303 }
304 
305 
gmpc_plugin_browser_iface_browser_add_go_menu(GmpcPluginBrowserIface * self,GtkMenu * menu)306 gint gmpc_plugin_browser_iface_browser_add_go_menu (GmpcPluginBrowserIface* self, GtkMenu* menu) {
307 	return GMPC_PLUGIN_BROWSER_IFACE_GET_INTERFACE (self)->browser_add_go_menu (self, menu);
308 }
309 
310 
gmpc_plugin_browser_iface_base_init(GmpcPluginBrowserIfaceIface * iface)311 static void gmpc_plugin_browser_iface_base_init (GmpcPluginBrowserIfaceIface * iface) {
312 	static gboolean initialized = FALSE;
313 	if (!initialized) {
314 		initialized = TRUE;
315 		iface->browser_option_menu = gmpc_plugin_browser_iface_real_browser_option_menu;
316 		iface->browser_add_go_menu = gmpc_plugin_browser_iface_real_browser_add_go_menu;
317 	}
318 }
319 
320 
gmpc_plugin_browser_iface_get_type(void)321 GType gmpc_plugin_browser_iface_get_type (void) {
322 	static volatile gsize gmpc_plugin_browser_iface_type_id__volatile = 0;
323 	if (g_once_init_enter (&gmpc_plugin_browser_iface_type_id__volatile)) {
324 		static const GTypeInfo g_define_type_info = { sizeof (GmpcPluginBrowserIfaceIface), (GBaseInitFunc) gmpc_plugin_browser_iface_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
325 		GType gmpc_plugin_browser_iface_type_id;
326 		gmpc_plugin_browser_iface_type_id = g_type_register_static (G_TYPE_INTERFACE, "GmpcPluginBrowserIface", &g_define_type_info, 0);
327 		g_type_interface_add_prerequisite (gmpc_plugin_browser_iface_type_id, GMPC_PLUGIN_TYPE_BASE);
328 		g_once_init_leave (&gmpc_plugin_browser_iface_type_id__volatile, gmpc_plugin_browser_iface_type_id);
329 	}
330 	return gmpc_plugin_browser_iface_type_id__volatile;
331 }
332 
333 
gmpc_plugin_integrate_search_iface_real_field_supported(GmpcPluginIntegrateSearchIface * self,mpd_TagItems tag)334 static gboolean gmpc_plugin_integrate_search_iface_real_field_supported (GmpcPluginIntegrateSearchIface* self, mpd_TagItems tag) {
335 	gboolean result = FALSE;
336 	result = TRUE;
337 	return result;
338 }
339 
340 
gmpc_plugin_integrate_search_iface_field_supported(GmpcPluginIntegrateSearchIface * self,mpd_TagItems tag)341 gboolean gmpc_plugin_integrate_search_iface_field_supported (GmpcPluginIntegrateSearchIface* self, mpd_TagItems tag) {
342 	return GMPC_PLUGIN_INTEGRATE_SEARCH_IFACE_GET_INTERFACE (self)->field_supported (self, tag);
343 }
344 
345 
gmpc_plugin_integrate_search_iface_search(GmpcPluginIntegrateSearchIface * self,mpd_TagItems tag,const gchar * search_query)346 MpdData* gmpc_plugin_integrate_search_iface_search (GmpcPluginIntegrateSearchIface* self, mpd_TagItems tag, const gchar* search_query) {
347 	return GMPC_PLUGIN_INTEGRATE_SEARCH_IFACE_GET_INTERFACE (self)->search (self, tag, search_query);
348 }
349 
350 
gmpc_plugin_integrate_search_iface_base_init(GmpcPluginIntegrateSearchIfaceIface * iface)351 static void gmpc_plugin_integrate_search_iface_base_init (GmpcPluginIntegrateSearchIfaceIface * iface) {
352 	static gboolean initialized = FALSE;
353 	if (!initialized) {
354 		initialized = TRUE;
355 		iface->field_supported = gmpc_plugin_integrate_search_iface_real_field_supported;
356 	}
357 }
358 
359 
gmpc_plugin_integrate_search_iface_get_type(void)360 GType gmpc_plugin_integrate_search_iface_get_type (void) {
361 	static volatile gsize gmpc_plugin_integrate_search_iface_type_id__volatile = 0;
362 	if (g_once_init_enter (&gmpc_plugin_integrate_search_iface_type_id__volatile)) {
363 		static const GTypeInfo g_define_type_info = { sizeof (GmpcPluginIntegrateSearchIfaceIface), (GBaseInitFunc) gmpc_plugin_integrate_search_iface_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
364 		GType gmpc_plugin_integrate_search_iface_type_id;
365 		gmpc_plugin_integrate_search_iface_type_id = g_type_register_static (G_TYPE_INTERFACE, "GmpcPluginIntegrateSearchIface", &g_define_type_info, 0);
366 		g_type_interface_add_prerequisite (gmpc_plugin_integrate_search_iface_type_id, GMPC_PLUGIN_TYPE_BASE);
367 		g_once_init_leave (&gmpc_plugin_integrate_search_iface_type_id__volatile, gmpc_plugin_integrate_search_iface_type_id);
368 	}
369 	return gmpc_plugin_integrate_search_iface_type_id__volatile;
370 }
371 
372 
gmpc_plugin_preferences_iface_preferences_pane_construct(GmpcPluginPreferencesIface * self,GtkContainer * container)373 void gmpc_plugin_preferences_iface_preferences_pane_construct (GmpcPluginPreferencesIface* self, GtkContainer* container) {
374 	GMPC_PLUGIN_PREFERENCES_IFACE_GET_INTERFACE (self)->preferences_pane_construct (self, container);
375 }
376 
377 
gmpc_plugin_preferences_iface_preferences_pane_destroy(GmpcPluginPreferencesIface * self,GtkContainer * container)378 void gmpc_plugin_preferences_iface_preferences_pane_destroy (GmpcPluginPreferencesIface* self, GtkContainer* container) {
379 	GMPC_PLUGIN_PREFERENCES_IFACE_GET_INTERFACE (self)->preferences_pane_destroy (self, container);
380 }
381 
382 
gmpc_plugin_preferences_iface_base_init(GmpcPluginPreferencesIfaceIface * iface)383 static void gmpc_plugin_preferences_iface_base_init (GmpcPluginPreferencesIfaceIface * iface) {
384 	static gboolean initialized = FALSE;
385 	if (!initialized) {
386 		initialized = TRUE;
387 	}
388 }
389 
390 
gmpc_plugin_preferences_iface_get_type(void)391 GType gmpc_plugin_preferences_iface_get_type (void) {
392 	static volatile gsize gmpc_plugin_preferences_iface_type_id__volatile = 0;
393 	if (g_once_init_enter (&gmpc_plugin_preferences_iface_type_id__volatile)) {
394 		static const GTypeInfo g_define_type_info = { sizeof (GmpcPluginPreferencesIfaceIface), (GBaseInitFunc) gmpc_plugin_preferences_iface_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
395 		GType gmpc_plugin_preferences_iface_type_id;
396 		gmpc_plugin_preferences_iface_type_id = g_type_register_static (G_TYPE_INTERFACE, "GmpcPluginPreferencesIface", &g_define_type_info, 0);
397 		g_type_interface_add_prerequisite (gmpc_plugin_preferences_iface_type_id, GMPC_PLUGIN_TYPE_BASE);
398 		g_once_init_leave (&gmpc_plugin_preferences_iface_type_id__volatile, gmpc_plugin_preferences_iface_type_id);
399 	}
400 	return gmpc_plugin_preferences_iface_type_id__volatile;
401 }
402 
403 
gmpc_plugin_song_list_iface_song_list(GmpcPluginSongListIface * self,GtkWidget * tree,GtkMenu * menu)404 gint gmpc_plugin_song_list_iface_song_list (GmpcPluginSongListIface* self, GtkWidget* tree, GtkMenu* menu) {
405 	return GMPC_PLUGIN_SONG_LIST_IFACE_GET_INTERFACE (self)->song_list (self, tree, menu);
406 }
407 
408 
gmpc_plugin_song_list_iface_base_init(GmpcPluginSongListIfaceIface * iface)409 static void gmpc_plugin_song_list_iface_base_init (GmpcPluginSongListIfaceIface * iface) {
410 	static gboolean initialized = FALSE;
411 	if (!initialized) {
412 		initialized = TRUE;
413 	}
414 }
415 
416 
gmpc_plugin_song_list_iface_get_type(void)417 GType gmpc_plugin_song_list_iface_get_type (void) {
418 	static volatile gsize gmpc_plugin_song_list_iface_type_id__volatile = 0;
419 	if (g_once_init_enter (&gmpc_plugin_song_list_iface_type_id__volatile)) {
420 		static const GTypeInfo g_define_type_info = { sizeof (GmpcPluginSongListIfaceIface), (GBaseInitFunc) gmpc_plugin_song_list_iface_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
421 		GType gmpc_plugin_song_list_iface_type_id;
422 		gmpc_plugin_song_list_iface_type_id = g_type_register_static (G_TYPE_INTERFACE, "GmpcPluginSongListIface", &g_define_type_info, 0);
423 		g_type_interface_add_prerequisite (gmpc_plugin_song_list_iface_type_id, GMPC_PLUGIN_TYPE_BASE);
424 		g_once_init_leave (&gmpc_plugin_song_list_iface_type_id__volatile, gmpc_plugin_song_list_iface_type_id);
425 	}
426 	return gmpc_plugin_song_list_iface_type_id__volatile;
427 }
428 
429 
430 
431