1
2namespace Gmpc {
3    [CCode (cname="TRUE",cheader_filename="gtk/gtk.h,gtktransition.h")]
4    static const bool use_transition;
5
6    [CCode (cname="paned_size_group", cheader_filename="plugin.h")]
7    static PanedSizeGroup paned_size_group;
8
9    [CCode (cname = "gmpcconn", cheader_filename="main.h")]
10    static Connection gmpcconn;
11
12    [CCode (cname = "connection", cheader_filename="plugin.h")]
13    static MPD.Server server;
14
15    [CCode (cname = "gmw", cheader_filename="main.h")]
16    static MetaWatcher metawatcher;
17
18    [CCode (cname = "gmpc_profiles", cheader_filename="plugin.h")]
19    static Profiles profiles;
20
21    [CCode (cname = "gmpc_easy_command", cheader_filename="plugin.h")]
22    static Easy.Command  easy_command;
23
24    [CCode (cheader_filename="gmpc-meta-watcher.h")]
25    public class MetaWatcher {
26        public signal void data_changed(MPD.Song song,  Gmpc.MetaData.Type type, Gmpc.MetaData.Result result,MetaData.Item? met);
27
28
29        [CCode ( cname="gmpc_meta_watcher_get_meta_path", cheader_filename="gmpc-meta-watcher.h" )]
30        public Gmpc.MetaData.Result query(MPD.Song song, Gmpc.MetaData.Type type, out MetaData.Item met);
31
32    }
33
34
35   namespace MetaData {
36
37        [CCode (cname="MetaDataContentType", cprefix = "META_DATA_CONTENT_", cheader_filename = "libmpd/libmpd.h,metadata.h")]
38        public enum ContentType {
39            EMPTY,
40            URI,
41            TEXT,
42            RAW,
43            HTML,
44            STRV,
45            TEXT_LIST
46        }
47        [CCode (cname="MetaData", cheader_filename="metadata.h")]
48        [Compact]
49        [Immutable]
50        [CCode (free_function="meta_data_free")]
51        public class Item {
52            [CCode (cname="meta_data_new")]
53            public Item ();
54            public Gmpc.MetaData.Type type;
55            [CCode (cname="meta_data_dup")]
56            public static Item copy(Item item);
57           public unowned string plugin_name;
58           public int size;
59           public void * content;
60           public Gmpc.MetaData.ContentType content_type;
61
62           [CCode (cname="meta_data_is_empty")]
63           public bool is_empty();
64
65
66           /* add accessors? */
67           [CCode (cname="meta_data_get_raw")]
68           public unowned uchar[] get_raw();
69	   [CCode (cname="meta_data_set_raw")]
70	   public void set_raw(uchar[] data);
71	   [CCode (cname="meta_data_set_raw_owned")]
72	   public void set_raw_void(ref void *data,ref uint length);
73
74           [CCode (cname="meta_data_get_text")]
75           public unowned string  get_text();
76           [CCode (cname="meta_data_set_text")]
77           public void set_text(string data);
78
79           [CCode (cname="meta_data_get_text_from_html")]
80           public string get_text_from_html();
81           /* same as get_text */
82
83           [CCode (cname="meta_data_get_uri")]
84           public unowned string? get_uri();
85           [CCode (cname="meta_data_set_uri")]
86           public void set_uri(string uri);
87           [CCode (cname="meta_data_get_thumbnail_uri")]
88           public unowned string? get_thumbnail_uri();
89           [CCode (cname="meta_data_set_thumbnail_uri")]
90           public void set_thumbnail_uri(string uri);
91
92           [CCode (cname="meta_data_get_html")]
93           public unowned string get_html();
94
95           [CCode (cname="meta_data_get_text_vector")]
96           public unowned string[] get_text_vector();
97
98           [CCode (cname="meta_data_get_text_list")]
99           public unowned GLib.List<unowned string> get_text_list();
100
101           [CCode (cname="meta_data_is_text_list")]
102           public bool  is_text_list();
103           [CCode (cname="meta_data_dup_steal")]
104           public MetaData.Item dup_steal();
105        }
106        [CCode (cname="MetaDataType", cprefix = "META_", cheader_filename = "metadata.h")]
107        public enum Type {
108            ALBUM_ART       = 1,
109            ARTIST_ART      = 2,
110            ALBUM_TXT       = 4,
111            ARTIST_TXT      = 8,
112            SONG_TXT        = 16,
113            ARTIST_SIMILAR  = 32,
114            SONG_SIMILAR    = 64,
115            GENRE_SIMILAR   = 128,
116            SONG_GUITAR_TAB = 256,
117            QUERY_DATA_TYPES = 65535,
118            QUERY_NO_CACHE   = 65536
119        }
120
121        [CCode (cname="MetaDataResult", cprefix = "META_DATA_", cheader_filename = "metadata.h")]
122        public enum Result {
123            AVAILABLE,
124            UNAVAILABLE,
125            FETCHING
126        }
127
128
129        public delegate void Callback (void *handle,string? plugin_name, GLib.List<MetaData.Item>? list);
130        [CCode ( cname="metadata_get_list", cheader_filename="libmpd/libmpd.h,metadata.h" )]
131        public void* get_list(MPD.Song song, Type type, Callback callback);
132
133        [CCode ( cname="metadata_get_list_cancel", cheader_filename="metadata.h" )]
134        public void* get_list_cancel(void *handle);
135
136
137        [CCode ( cname="meta_data_set_cache", cheader_filename="metadata-cache.h")]
138        public void set_metadata(MPD.Song song, Result result, Gmpc.MetaData.Item met);
139
140        [CCode ( cname="gmpc_get_metadata_filename", cheader_filename="libmpd/libmpd.h,metadata.h")]
141        public string get_metadata_filename(Type type, MPD.Song song, string? extension);
142
143        [CCode ( cname="GmpcMetaImage", cheader_filename="gmpc-metaimage.h")]
144        public class Image: Gtk.Widget {
145            [CCode (cname="gmpc_metaimage_new_size")]
146            public Image(Type type, int size);
147            [CCode (cname="gmpc_metaimage_update_cover_from_song")]
148            public void update_from_song(MPD.Song song);
149
150            [CCode (cname="gmpc_metaimage_update_cover_from_song_delayed")]
151            public void update_from_song_delayed(MPD.Song song);
152            [CCode (cname="gmpc_metaimage_set_squared")]
153            public void set_squared(bool squared);
154            [CCode (cname="gmpc_metaimage_set_hide_on_na")]
155            public void set_hide_on_na(bool hide);
156            [CCode (cname="gmpc_metaimage_set_no_cover_icon")]
157            public void set_no_cover_icon(string name);
158            [CCode (cname="gmpc_metaimage_set_loading_cover_icon")]
159            public void set_loading_cover_icon(string name);
160
161            [CCode (cname="gmpc_metaimage_set_scale_up")]
162            public void set_scale_up(bool scale);
163
164        }
165        [CCode ( cname="GmpcStatsLabel", cheader_filename="gmpc-stats-label.h")]
166        public class StatsLabel : Gtk.Label {
167            [CCode (cprefix="")]
168            public enum Type {
169                ARTIST_NUM_SONGS,
170                ARTIST_PLAYTIME_SONGS,
171                ARTIST_GENRES_SONGS,
172                ARTIST_DATES_SONGS,
173                ALBUM_NUM_SONGS,
174                ALBUM_PLAYTIME_SONGS,
175                ALBUM_GENRES_SONGS,
176                ALBUM_DATES_SONGS
177            }
178            [CCode (cname="gmpc_stats_label_new")]
179            public StatsLabel(Type type, MPD.Song song);
180        }
181        [CCode ( cname="GmpcMetaTextView", cheader_filename="gmpc-meta-text-view.h")]
182        public class TextView: Gtk.TextView {
183                public bool use_monospace;
184            [CCode (cname="gmpc_meta_text_view_new")]
185                public TextView(Type type);
186            [CCode (cname="gmpc_meta_text_view_query_text_from_song")]
187                public void query_from_song(MPD.Song song);
188                public bool force_ro;
189        }
190
191   }
192   namespace Messages {
193       [CCode (cprefix = "ERROR_", cheader_filename = "playlist3-messages.h")]
194       public enum Level{
195        INFO,
196        WARNING,
197        CRITICAL
198    }
199
200    [CCode (cname = "playlist3_show_error_message", cheader_filename="playlist3-messages.h")]
201    void show(string message, Gmpc.Messages.Level level);
202   }
203
204   namespace AsyncDownload {
205     [CCode (cname="GEADStatus",cprefix = "GEAD_", cheader_filename = "gmpc_easy_download.h")]
206        public enum Status {
207            DONE,
208            PROGRESS,
209            FAILED,
210            CANCELLED
211        }
212
213        [CCode (cname="GEADAsyncHandler", cheader_filename="gmpc_easy_download.h")]
214        [Compact]
215        [Immutable]
216        [CCode (ref_function="", unref_function ="")]
217        public class Handle {
218            [CCode (cname="gmpc_easy_async_cancel", cheader_filename="gmpc_easy_download.h")]
219            public void cancel ();
220            /* Gets raw data. Remember data_length does not include trailing \0. */
221            [CCode (cname="gmpc_easy_handler_get_data_vala_wrap", cheader_filename="gmpc_easy_download.h")]
222            public unowned uchar[] get_data();
223
224            [CCode (cname="gmpc_easy_handler_get_data_as_string", cheader_filename="gmpc_easy_download.h")]
225            public unowned string get_data_as_string();
226
227            [CCode (cname="gmpc_easy_handler_get_uri", cheader_filename="gmpc_easy_download.h")]
228            public unowned string get_uri();
229
230            [CCode (cname="gmpc_easy_handler_get_user_data", cheader_filename="gmpc_easy_download.h")]
231            public void * get_user_data();
232
233            [CCode (cname="gmpc_easy_handler_set_user_data", cheader_filename="gmpc_easy_download.h")]
234            public void set_user_data(void *user_data);
235
236            [CCode (cname="gmpc_easy_handler_get_content_size", cheader_filename="gmpc_easy_download.h")]
237            public int64 get_content_size();
238        }
239
240
241
242        public delegate void Callback (Gmpc.AsyncDownload.Handle handle, Gmpc.AsyncDownload.Status status);
243        public delegate void CallbackVala (Gmpc.AsyncDownload.Handle handle, Gmpc.AsyncDownload.Status status, void *p);
244
245        [CCode (cname="gmpc_easy_async_downloader_vala", cheader_filename="gmpc_easy_download.h")]
246        public unowned Gmpc.AsyncDownload.Handle download_vala(string uri, void *p,Gmpc.AsyncDownload.CallbackVala callback);
247        [CCode (cname="gmpc_easy_async_downloader", cheader_filename="gmpc_easy_download.h")]
248        public unowned Gmpc.AsyncDownload.Handle download(string uri, Gmpc.AsyncDownload.Callback callback);
249
250        [CCode (cname="gmpc_easy_download_uri_escape", cheader_filename="gmpc_easy_download.h")]
251        public string escape_uri(string part);
252   }
253
254    [CCode (cname="gmpc_get_full_glade_path", cheader_filename="plugin.h")]
255    public string data_path(string file);
256    [CCode (cname="gmpc_get_user_path", cheader_filename="plugin.h")]
257    public string user_path(string file);
258    [CCode (cname="open_uri", cheader_filename="misc.h")]
259    public void open_uri(string uri);
260
261
262    namespace Playlist {
263        [CCode (cname="(GtkWindow *)playlist3_get_window", cheader_filename="plugin.h")]
264        public unowned Gtk.Window get_window();
265[CCode (cname="playlist3_window_is_hidden", cheader_filename="plugin.h")]
266        public bool is_hidden();
267
268[CCode (cname="pl3_hide", cheader_filename="plugin.h")]
269        public void hide();
270
271[CCode (cname="create_playlist3", cheader_filename="plugin.h")]
272        public void show();
273        [CCode (cname="playlist3_get_accel_group", cheader_filename="playlist3.h")]
274        public unowned Gtk.AccelGroup get_accel_group();
275    }
276
277    namespace TrayIcon2 {
278        [CCode (cname="trayicon2_toggle_use_appindicator", cheader_filename="tray-icon2.h")]
279        public void toggle_use_appindicator();
280
281        [CCode (cname="trayicon2_have_appindicator_support", cheader_filename="tray-icon2.h")]
282        public bool have_appindicator_support();
283    }
284
285   [CCode (cname = "config", cheader_filename="plugin.h")]
286    static Settings config;
287    [CCode (cheader_filename="config1.h")]
288        [Compact]
289        [Immutable]
290    public class Settings {
291        [CCode (cname="cfg_get_single_value_as_string_with_default", cheader_filename="config1.h")]
292        public string get_string_with_default(string class, string key, string value);
293        [CCode (cname="cfg_get_single_value_as_int_with_default", cheader_filename="config1.h")]
294        public int get_int_with_default(string class, string key, int value);
295        [CCode (cname="cfg_set_single_value_as_int", cheader_filename="config1.h")]
296        public int set_int(string class, string key, int value);
297    }
298
299    namespace Misc{
300        [CCode (cname="colorshift_pixbuf",cheader_filename="misc.h")]
301        public void colorshift_pixbuf(Gdk.Pixbuf dest, Gdk.Pixbuf src, int shift);
302
303        [CCode (cname="darken_pixbuf",cheader_filename="misc.h")]
304        public void darken_pixbuf(Gdk.Pixbuf dest, uint factor = 1.0);
305        [CCode (cname="decolor_pixbuf",cheader_filename="misc.h")]
306        public void decolor_pixbuf(Gdk.Pixbuf dest, Gdk.Pixbuf src);
307		[CCode (cname="screenshot_add_border",cheader_filename="misc.h")]
308		public void border_pixbuf (Gdk.Pixbuf buf);
309        [CCode (cname="misc_header_expose_event",cheader_filename="misc.h")]
310        public bool misc_header_expose_event(Gtk.Widget widget, Gdk.EventExpose event);
311
312
313        [CCode (cname="format_time_real", cheader_filename="misc.h")]
314        public string format_time(ulong seconds, string pre);
315    }
316
317    /* Browser */
318    namespace Browser{
319        [CCode (cname="playlist3_insert_browser")]
320        public void insert(out Gtk.TreeIter iter, int position);
321        namespace File {
322            [CCode (cname="pl3_file_browser_open_path")]
323            public void open_path(string path);
324        }
325        namespace Find {
326            [CCode (cname="pl3_find2_ec_database")]
327            public void query_database(void *user_data, string query);
328        }
329        namespace Metadata {
330            [CCode (cname="info2_fill_artist_view")]
331            public void show_artist(string artist);
332
333            [CCode (cname="info2_fill_album_view")]
334            public void show_album(string artist,string album);
335        }
336    }
337    namespace Playlist3 {
338        [CCode (cname="playlist3_get_category_tree_view")]
339        public unowned Gtk.TreeView get_category_tree_view();
340
341        [CCode (cname="main_window_add_status_icon")]
342        public void add_status_icon(Gtk.Widget widget);
343
344        [CCode (cname="pl3_update_go_menu",cheader_filename="plugin.h")]
345        public void update_go_menu();
346    }
347
348    /* objects */
349    namespace MpdData {
350        [CCode (cheader_filename="gmpc-mpddata-treeview.h",cname="GmpcMpdDataTreeview",type_check_function="GMPC_IS_MPDDATA_TREEVIEW")]
351        public class TreeView : Gtk.TreeView {
352            [CCode (cname="gmpc_mpddata_treeview_new")]
353            public TreeView(string name, bool sort, Gtk.TreeModel model);
354            [CCode (cname="gmpc_mpddata_treeview_enable_click_fix")]
355            public void enable_click_fix();
356            [CCode (cname="gmpc_mpddata_treeview_right_mouse_intergration")]
357            public int right_mouse_integration(Gtk.Menu menu);
358        }
359
360        [CCode (cheader_filename="gmpc-mpddata-model.h")]
361        public class Model : GLib.Object, Gtk.TreeModel{
362            [CCode (has_construct_function = true,cname="gmpc_mpddata_model_new")]
363            public Model();
364
365            [CCode (cname="gmpc_mpddata_model_set_mpd_data")]
366            public void set_mpd_data(owned MPD.Data.Item? list);
367
368            [CCode (cname="gmpc_mpddata_model_set_request_artist")]
369            public void set_request_artist(string? list);
370
371            [CCode (cname="gmpc_mpddata_model_get_request_artist")]
372            public unowned string get_request_artist();
373            public int icon_size;
374        }
375    }
376
377
378    namespace Misc {
379        [CCode (cname="mpd_song_checksum",cheader_filename="misc.h")]
380        public string? song_checksum(MPD.Song? song);
381        [CCode (cname="mpd_song_checksum_type",cheader_filename="misc.h")]
382        public string? song_checksum_type(MPD.Song? song, Gmpc.MetaData.Type type);
383
384    }
385    namespace MpdInteraction {
386        [CCode (cname="play_path",cheader_filename="mpdinteraction.h")]
387        public void play_path(string path);
388        [CCode (cname="submenu_for_song")]
389        public void submenu_for_song(Gtk.Widget menu, MPD.Song song);
390    }
391
392        [CCode (cheader_filename="gmpc-profiles.h")]
393        [Compact]
394        [Immutable]
395        class Profiles {
396            [CCode (cname="gmpc_profiles_get_current",cheader_filename="gmpc-profiles.h")]
397            public string? get_current_id();
398            public void set_db_update_time(string id, int value);
399            public int get_db_update_time(string id);
400            public unowned string? get_music_directory(string id);
401            [CCode (cname="connection_get_hostname", cheader_filename="mpdinteraction.h")]
402            public string? get_hostname();
403
404    }
405
406    namespace Fix{
407        [CCode (cname="gdk_pixbuf_loader_write", cheader_filename="gdk-pixbuf/gdk-pixdata.h")]
408            public void write_loader(Gdk.PixbufLoader loader, string data, size_t size) throws GLib.Error;
409
410        [CCode (cname="screenshot_add_border", cheader_filename="misc.h")]
411            public void add_border(Gdk.Pixbuf image);
412
413        [CCode (cname="pango_attr_list_change", cheader_filename="pango/pango.h")]
414            public void change (Pango.AttrList list,owned Pango.Attribute attr);
415    }
416    [CCode (cheader_filename="pixbuf-cache.h")]
417    namespace PixbufCache {
418        [CCode (cname="pixbuf_cache_lookup_icon")]
419            public Gdk.Pixbuf? lookup_icon(int size, string url);
420        [CCode (cname="pixbuf_cache_add_icon")]
421            public void add_icon(int size, string url, Gdk.Pixbuf pb);
422
423    }
424    [CCode (cheader_filename="advanced-search.h")]
425    namespace Query{
426        [CCode (cname="advanced_search")]
427        public MPD.Data.Item? search(string query, bool playlist);
428
429    }
430
431	[CCode (cname="gmpcPluginParent",cprefix="gmpc_plugin_",cheader_filename="plugin-internal.h")]
432        [Compact]
433        [Immutable]
434	public class parentPlugin
435	{
436		public int get_id();
437		public unowned string get_name();
438		public int get_enabled();
439		public bool has_enabled();
440		public void set_enabled(int e);
441		public bool is_browser();
442	}
443	[CCode (cheader_filename="main.h", cname="plugins")]
444	static weak parentPlugin[] plugins;
445	[CCode (cheader_filename="main.h", cname="num_plugins")]
446	static int num_plugins;
447
448
449    namespace Preferences {
450        [CCode (cname="preferences_window_update", cheader_filename="preferences.h")]
451        public void update();
452
453    }
454}
455