6 #include <glade/glade.h>
7 #include <gmpc/plugin.h>
8 #include <libmpd/debug_printf.h>
10 /* External pointer + function, there internal from gmpc */
11 extern GladeXML
*pl3_xml
;
13 void pl3_option_menu_activate();
15 static int get_enabled() {
16 return cfg_get_single_value_as_int_with_default(config
,"random-playlist", "enabled",TRUE
);
18 static void set_enabled(int enabled
) {
19 cfg_set_single_value_as_int(config
,"random-playlist", "enabled", enabled
);
20 pl3_option_menu_activate();
22 static void rp_start()
24 MpdData
*data
= mpd_database_get_complete(connection
);
25 GRand
*rand
= g_rand_new();
26 mpd_playlist_clear(connection
);
27 for(;data
;data
= mpd_data_get_next(data
))
30 if(g_rand_int_range(rand
, 0,10000) < 2000)
32 mpd_playlist_queue_add(connection
, data
->song
->file
);
35 mpd_playlist_queue_commit(connection
);
40 static int rp_right_mouse_menu(GtkWidget
*menu
, int type
, GtkWidget
*tree
, GdkEventButton
*event
)
42 gmpcPlugin
*plug
= plugin_get_from_id(type
);
43 if(!cfg_get_single_value_as_int_with_default(config
, "random-playlist", "enabled", TRUE
)) {
46 debug_printf(DEBUG_INFO
,"Random playlist right mouse clicked");
47 if(!strcmp(plug
->name
, "Current Playlist Browser"))
50 item
= gtk_image_menu_item_new_with_label("Generate Random Playlist");
51 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item
),
52 gtk_image_new_from_stock(GTK_STOCK_ADD
, GTK_ICON_SIZE_MENU
));
53 gtk_menu_shell_append(GTK_MENU_SHELL(menu
), item
);
54 g_signal_connect(G_OBJECT(item
), "activate", G_CALLBACK(rp_start
), NULL
);
62 gmpcPlBrowserPlugin rp_gpb
= {
65 NULL
, /** Unselected */
66 NULL
, /** slection changed */
68 rp_right_mouse_menu
, /* right mouse menu */
69 NULL
, /** cat key press */
70 NULL
, /** add go menu */
71 NULL
/** key press event */
78 GMPC_PLUGIN_PL_BROWSER
,
80 NULL
, /* path to plugin */
81 NULL
, /* initialization */
82 &rp_gpb
, /* browser intergration */
83 NULL
, /* status changed */
84 NULL
, /* connection changed */
85 NULL
, /* preferences */
90 int plugin_api_version
= PLUGIN_API_VERSION
;