44 lines
937 B
C++
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);
|
|
}
|