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