X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/4908c9d03361e2454ce407a9705c2ab9d7140b33..c764e832cef2e0828e46762b66ca97cc5541686b:/disobedience/menu.c diff --git a/disobedience/menu.c b/disobedience/menu.c index d248b3f..b398606 100644 --- a/disobedience/menu.c +++ b/disobedience/menu.c @@ -1,6 +1,6 @@ /* * This file is part of DisOrder. - * Copyright (C) 2006-2009 Richard Kettlewell + * Copyright (C) 2006-2009, 2011, 2013 Richard Kettlewell * * 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 @@ -35,7 +35,7 @@ static GtkWidget *menu_minimode_widget; GtkItemFactory *mainmenufactory; /** @brief Set for full mode, clear for mini mode */ -int full_mode; +int full_mode = 1; static void about_popup_got_version(void *v, const char *err, @@ -154,7 +154,7 @@ static void about_popup_got_version(void attribute((unused)) *v, if(!value) value = "[error]"; - byte_xasprintf(&server_version_string, "Server version %s", value); + byte_xasprintf(&server_version_string, "DisOrder server version %s", value); byte_xasprintf(&short_version_string, "Disobedience %s", disorder_short_version_string); w = gtk_dialog_new_with_buttons("About Disobedience", @@ -182,7 +182,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-2009 Richard Kettlewell"), + gtk_label_new("\xC2\xA9 2003-2013 Richard Kettlewell et al"), FALSE/*expand*/, FALSE/*fill*/, 1/*padding*/); @@ -215,11 +215,23 @@ void users_set_sensitive(int sensitive) { gtk_widget_set_sensitive(w, sensitive); } +static void menu_check_userman(void attribute((unused)) *v, + const char *err, + const char attribute((unused)) *value) { + if(err && !strncmp(err, "510", 3)) + users_set_sensitive(FALSE); + else + users_set_sensitive(TRUE); +} + /** @brief Called when our rights change */ static void menu_rights_changed(const char attribute((unused)) *event, void attribute((unused)) *eventdata, void attribute((unused)) *callbackdata) { - users_set_sensitive(!!(last_rights & RIGHT_ADMIN)); + if(last_rights & RIGHT_ADMIN) + disorder_eclient_userinfo(client, menu_check_userman, "", "email", 0); + else + users_set_sensitive(FALSE); } /** @brief Create the menu bar widget */ @@ -283,8 +295,8 @@ GtkWidget *menubar(GtkWidget *w) { (char *)"A", /* accelerator */ menu_tab_action, /* callback */ offsetof(struct tabtype, selectall_activate), /* callback_action */ - 0, /* item_type */ - 0 /* extra_data */ + (char *)"", /* item_type */ + GTK_STOCK_SELECT_ALL, /* extra_data */ }, { (char *)"/Edit/Deselect all tracks", /* path */ @@ -299,8 +311,8 @@ GtkWidget *menubar(GtkWidget *w) { 0, /* accelerator */ menu_tab_action, /* callback */ offsetof(struct tabtype, properties_activate), /* callback_action */ - 0, /* item_type */ - 0 /* extra_data */ + (char *)"", /* item_type */ + GTK_STOCK_PROPERTIES, /* extra_data */ }, { (char *)"/Edit/Edit playlists", /* path */ @@ -325,8 +337,8 @@ GtkWidget *menubar(GtkWidget *w) { (char *)"S", /* accelerator */ 0, /* callback */ 0, /* callback_action */ - 0, /* item_type */ - 0 /* extra_data */ + (char *)"", /* item_type */ + GTK_STOCK_STOP, /* extra_data */ }, { (char *)"/Control/Playing", /* path */ @@ -352,7 +364,6 @@ GtkWidget *menubar(GtkWidget *w) { (char *)"", /* item_type */ 0 /* extra_data */ }, -#if 0 { (char *)"/Control/Compact mode", /* path */ (char *)"M", /* accelerator */ @@ -361,7 +372,14 @@ GtkWidget *menubar(GtkWidget *w) { (char *)"", /* item_type */ 0 /* extra_data */ }, -#endif + { + (char *)"/Control/Global Preferences", /* path */ + (char *)"G", /* accelerator */ + popup_globals, /* callback */ + 0, /* callback_action */ + 0, /* item_type */ + 0 /* extra_data */ + }, { (char *)"/Control/Activate playlist", /* path */ 0, /* accelerator */ @@ -384,11 +402,11 @@ GtkWidget *menubar(GtkWidget *w) { 0, /* accelerator */ manual_popup, /* callback */ 0, /* callback_action */ - 0, /* item_type */ - 0 /* extra_data */ + (char *)"", /* item_type */ + GTK_STOCK_HELP, /* extra_data */ }, { - (char *)"/Help/About DisOrder", /* path */ + (char *)"/Help/About Disobedience", /* path */ 0, /* accelerator */ about_popup, /* callback */ 0, /* callback_action */ @@ -446,8 +464,11 @@ GtkWidget *menubar(GtkWidget *w) { static void toggled_minimode(GtkCheckMenuItem *item, gpointer attribute((unused)) userdata) { - full_mode = !gtk_check_menu_item_get_active(item); - event_raise("mini-mode-changed", NULL); + int new_full_mode = !gtk_check_menu_item_get_active(item); + if(full_mode != new_full_mode) { + full_mode = new_full_mode; + event_raise("mini-mode-changed", NULL); + } } /*