X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/fc36ecb7248f60d2dfc1736ccaeb93d57da57f01..e09e71f08264c22f6c6038988591f0069f5b6240:/disobedience/menu.c diff --git a/disobedience/menu.c b/disobedience/menu.c index 63d89be..0243139 100644 --- a/disobedience/menu.c +++ b/disobedience/menu.c @@ -2,20 +2,18 @@ * This file is part of DisOrder. * Copyright (C) 2006-2008 Richard Kettlewell * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA + * along with this program. If not, see . */ /** @file disobedience/menu.c * @brief Main menu @@ -26,8 +24,11 @@ static GtkWidget *selectall_widget; static GtkWidget *selectnone_widget; static GtkWidget *properties_widget; -static GtkWidget *playlists_widget; -static GtkWidget *playlists_menu; +#if PLAYLISTS +GtkWidget *playlists_widget; +GtkWidget *playlists_menu; +GtkWidget *editplaylists_widget; +#endif /** @brief Main menu widgets */ GtkItemFactory *mainmenufactory; @@ -177,7 +178,7 @@ static void about_popup_got_version(void attribute((unused)) *v, FALSE/*fill*/, 1/*padding*/); gtk_box_pack_start(GTK_BOX(vbox), - gtk_label_new("\xC2\xA9 2004-2008 Richard Kettlewell"), + gtk_label_new("\xC2\xA9 2004-2009 Richard Kettlewell"), FALSE/*expand*/, FALSE/*fill*/, 1/*padding*/); @@ -217,41 +218,6 @@ static void menu_rights_changed(const char attribute((unused)) *event, users_set_sensitive(!!(last_rights & RIGHT_ADMIN)); } -/** @brief Called to activate a playlist */ -static void menu_activate_playlist(GtkMenuItem *menuitem, - gpointer attribute((unused)) user_data) { - GtkLabel *label = GTK_LABEL(GTK_BIN(menuitem)->child); - const char *playlist = gtk_label_get_text(label); - - fprintf(stderr, "activate playlist %s\n", playlist); /* TODO */ -} - -/** @brief Called when the playlists change */ -static void menu_playlists_changed(const char attribute((unused)) *event, - void attribute((unused)) *eventdata, - void attribute((unused)) *callbackdata) { - GtkMenuShell *menu = GTK_MENU_SHELL(playlists_menu); - /* TODO: we could be more sophisticated and only insert/remove widgets as - * needed. For now that's too much effort. */ - while(menu->children) - gtk_container_remove(GTK_CONTAINER(menu), GTK_WIDGET(menu->children->data)); - /* NB nplaylists can be -1 as well as 0 */ - for(int n = 0; n < nplaylists; ++n) { - GtkWidget *w = gtk_menu_item_new_with_label(playlists[n]); - g_signal_connect(w, "activate", G_CALLBACK(menu_activate_playlist), 0); - gtk_widget_show(w); - gtk_menu_shell_append(menu, w); - } - gtk_widget_set_sensitive(playlists_widget, - nplaylists > 0); -} - -static void edit_playlists(gpointer attribute((unused)) callback_data, - guint attribute((unused)) callback_action, - GtkWidget attribute((unused)) *menu_item) { - fprintf(stderr, "edit playlists\n"); /* TODO */ -} - /** @brief Create the menu bar widget */ GtkWidget *menubar(GtkWidget *w) { GtkWidget *m; @@ -332,6 +298,7 @@ GtkWidget *menubar(GtkWidget *w) { 0, /* item_type */ 0 /* extra_data */ }, +#if PLAYLISTS { (char *)"/Edit/Edit playlists", /* path */ 0, /* accelerator */ @@ -340,6 +307,7 @@ GtkWidget *menubar(GtkWidget *w) { 0, /* item_type */ 0 /* extra_data */ }, +#endif { @@ -382,6 +350,7 @@ GtkWidget *menubar(GtkWidget *w) { (char *)"", /* item_type */ 0 /* extra_data */ }, +#if PLAYLISTS { (char *)"/Control/Activate playlist", /* path */ 0, /* accelerator */ @@ -390,6 +359,7 @@ GtkWidget *menubar(GtkWidget *w) { (char *)"", /* item_type */ 0 /* extra_data */ }, +#endif { (char *)"/Help", /* path */ @@ -434,22 +404,28 @@ GtkWidget *menubar(GtkWidget *w) { "/Edit/Deselect all tracks"); properties_widget = gtk_item_factory_get_widget(mainmenufactory, "/Edit/Track properties"); +#if PLAYLISTS playlists_widget = gtk_item_factory_get_item(mainmenufactory, "/Control/Activate playlist"); playlists_menu = gtk_item_factory_get_widget(mainmenufactory, "/Control/Activate playlist"); + editplaylists_widget = gtk_item_factory_get_widget(mainmenufactory, + "/Edit/Edit playlists"); +#endif assert(selectall_widget != 0); assert(selectnone_widget != 0); assert(properties_widget != 0); +#if PLAYLISTS assert(playlists_widget != 0); assert(playlists_menu != 0); + assert(editplaylists_widget != 0); +#endif GtkWidget *edit_widget = gtk_item_factory_get_widget(mainmenufactory, "/Edit"); g_signal_connect(edit_widget, "show", G_CALLBACK(edit_menu_show), 0); event_register("rights-changed", menu_rights_changed, 0); - event_register("playlists-updated", menu_playlists_changed, 0); users_set_sensitive(0); m = gtk_item_factory_get_widget(mainmenufactory, "");