1 /*
2     Glurp - A GTK+ client for Music Player Daemon
3     Copyright (C) 2004, 2005 Andrej Kacian
4 
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9 
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14 
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18 
19     http://musicpd.org/glurp.shtml
20 
21 */
22 
23 #include <glib.h>
24 #include <gtk/gtk.h>
25 #include "player.h"
26 #include "gui-callbacks.h"
27 
traymenu_new(void)28 GtkMenu* traymenu_new(void)
29 {
30 	return GTK_MENU(gtk_menu_new ());
31 }
32 
33 /* append an item to the menu, and connect its callback on "activate" event */
traymenu_append_item(GtkMenu * menu,gchar * label,GCallback callback,gpointer cb_data)34 GtkMenuItem* traymenu_append_item(GtkMenu* menu, gchar* label, GCallback callback, gpointer cb_data)
35 {
36 	GtkWidget* item;
37 
38 	item = gtk_menu_item_new_with_label (label);
39 	gtk_menu_shell_append ((GtkMenuShell*) (menu), item);
40 	if (callback)
41 		g_signal_connect (G_OBJECT(item), "activate", G_CALLBACK(callback), cb_data);
42 	gtk_widget_show (item);
43 
44 	return GTK_MENU_ITEM(item);
45 }
46 
47 /* show the menu */
traymenu_show(GtkMenu * menu,guint button,guint activate_time)48 void traymenu_show(GtkMenu* menu, guint button, guint activate_time)
49 {
50 	gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, activate_time);
51 	return;
52 }
53 
54 /* hide the menu */
tarymenu_hide(GtkMenu * menu)55 void tarymenu_hide(GtkMenu* menu)
56 {
57 	gtk_menu_popdown(GTK_MENU(menu));
58 	return;
59 }
60 
61 /* append a stock imageitem to the menu, and connect its callback on "activate" event */
traymenu_append_image_item(GtkMenu * menu,const gchar * stock_id,GCallback callback,gpointer cb_data)62 GtkMenuItem* traymenu_append_image_item(GtkMenu* menu, const gchar* stock_id, GCallback callback, gpointer cb_data)
63 {
64 	GtkWidget* item;
65 
66 	item = gtk_image_menu_item_new_from_stock(stock_id, NULL);
67 	gtk_menu_shell_append ((GtkMenuShell*) (menu), item);
68 	if (callback)
69 		g_signal_connect (G_OBJECT(item), "activate", G_CALLBACK(callback), cb_data);
70 	gtk_widget_show (item);
71 
72 	return GTK_MENU_ITEM(item);
73 }
74 
traymenu_on_play(GtkWidget * widget,gpointer user_data)75 gboolean traymenu_on_play(GtkWidget *widget, gpointer user_data) {
76   player_play_song(-1);
77 
78   return FALSE;
79 }
80 
traymenu_on_pause(GtkWidget * widget,gpointer user_data)81 gboolean traymenu_on_pause(GtkWidget *widget, gpointer user_data) {
82   player_pause();
83 
84   return FALSE;
85 }
86 
traymenu_on_stop(GtkWidget * widget,gpointer user_data)87 gboolean traymenu_on_stop(GtkWidget *widget, gpointer user_data) {
88   player_stop();
89 
90   return FALSE;
91 }
92 
traymenu_on_next(GtkWidget * widget,gpointer user_data)93 gboolean traymenu_on_next(GtkWidget *widget, gpointer user_data) {
94   player_next();
95 
96   return FALSE;
97 }
98 
traymenu_on_prev(GtkWidget * widget,gpointer user_data)99 gboolean traymenu_on_prev(GtkWidget *widget, gpointer user_data) {
100   player_prev();
101 
102   return FALSE;
103 }
104 
traymenu_on_quit(GtkWidget * widget,gpointer user_data)105 void traymenu_on_quit(GtkWidget *widget, gpointer user_data) {
106   on_ui_quit(NULL, NULL);
107 }
108 // vim: et sw=2 smarttab
109