ocarina/ocarina/songlist/menu.cpp

44 lines
937 B
C++

#include <ocarina/songlist.h>
#include <libsaria/print.h>
#include "songlist.h"
#define BUTTON_RIGHT 3
MenuItem::MenuItem(string s, void (*f)())
{
text = s;
func = f;
}
MenuItem::~MenuItem() {}
GtkWidget *MenuItem::get_widget()
{
GtkWidget *widget = gtk_menu_item_new_with_label(text.c_str());
return widget;
}
gint SongList::right_click(guint button, guint64 time)
{
list<MenuItem>::iterator it;
GtkWidget *menu = gtk_menu_new();
for (it = menu_items->begin(); it != menu_items->end(); it++)
gtk_menu_append(GTK_MENU(menu), it->get_widget());
gtk_widget_show_all(menu);
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, button, time);
return TRUE;
}
void songlist_button_click(GtkWidget *widget, GdkEvent *event, gpointer data)
{
SongList *list = (SongList *)data;
if (event->button.button != BUTTON_RIGHT)
return;
println("right click!");
list->right_click(event->button.button, event->button.time);
}