1 /*
2  * * Copyright (C) 2009-2011 Ali <aliov@xfce.org>
3  * * Copyright (C) 2012-2017 Simon Steinbeiß <ochosi@xfce.org>
4  * * Copyright (C) 2012-2020 Sean Davis <bluesabre@xfce.org>
5  *
6  * Licensed under the GNU General Public License Version 2
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
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
21  */
22 
23 #if !defined (__PAROLE_H_INSIDE__) && !defined (PAROLE_COMPILATION)
24 #error "Only <parole.h> can be included directly."
25 #endif
26 
27 #ifndef SRC_MISC_PAROLE_PROVIDER_PLUGIN_H_
28 #define SRC_MISC_PAROLE_PROVIDER_PLUGIN_H_
29 
30 #include <gtk/gtk.h>
31 
32 #include "src/misc/parole-stream.h"
33 #include "src/misc/parole-provider-player.h"
34 
35 G_BEGIN_DECLS
36 
37 #define PAROLE_TYPE_PROVIDER_PLUGIN                 (parole_provider_plugin_get_type ())
38 #define PAROLE_PROVIDER_PLUGIN(o)                   (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_PROVIDER_PLUGIN, ParoleProviderPlugin))
39 #define PAROLE_IS_PROVIDER_PLUGIN(o)                (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_PROVIDER_PLUGIN))
40 #define PAROLE_PROVIDER_PLUGIN_GET_INTERFACE(o)     (G_TYPE_INSTANCE_GET_INTERFACE((o), PAROLE_TYPE_PROVIDER_PLUGIN, ParoleProviderPluginIface))
41 
42 /**
43  * ParoleProviderPluginIface:
44  *
45  * Interface for #ParoleProviderPlugin
46  *
47  * Since: 0.2
48  */
49 typedef struct _ParoleProviderPluginIface ParoleProviderPluginIface;
50 
51 /**
52  * ParoleProviderPlugin:
53  *
54  * The methods of this interface should be overridden by the plugin, the Parole
55  * player calls these methods to determine if the plugin is configurable, to ask
56  * the plugin to open its configuration dialog or to set the
57  * #ParoleProviderPlayer that the plugin can use to get access to various
58  * functionalities of the player.
59  *
60  * Since: 0.2
61  */
62 typedef struct _ParoleProviderPlugin      ParoleProviderPlugin;
63 
64 struct _ParoleProviderPluginIface {
65     GTypeInterface  __parent__;
66 
67     /*< public >*/
68     gboolean     (*get_is_configurable)             (ParoleProviderPlugin *provider);
69 
70     void         (*configure)                       (ParoleProviderPlugin *provider,
71                                                      GtkWidget *parent);
72 
73     void         (*set_player)                      (ParoleProviderPlugin *provider,
74                                                      ParoleProviderPlayer *player);
75 };
76 
77 GType            parole_provider_plugin_get_type    (void) G_GNUC_CONST;
78 
79 gboolean
80 parole_provider_plugin_get_is_configurable          (ParoleProviderPlugin *provider);
81 
82 void             parole_provider_plugin_configure   (ParoleProviderPlugin *provider,
83                                                      GtkWidget *parent);
84 
85 void             parole_provider_plugin_set_player  (ParoleProviderPlugin *provider,
86                                                      ParoleProviderPlayer *player);
87 
88 G_END_DECLS
89 
90 #endif /* SRC_MISC_PAROLE_PROVIDER_PLUGIN_H_ */
91