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