+ assert(menu_playlists_widget != 0);
+ assert(playlists_menu != 0);
+ assert(menu_editplaylists_widget != 0);
+ assert(apis_menu != 0);
+
+ GtkWidget *edit_widget = gtk_item_factory_get_widget(mainmenufactory,
+ "<GdisorderMain>/Edit");
+ g_signal_connect(edit_widget, "show", G_CALLBACK(edit_menu_show), 0);
+
+ event_register("rights-changed", menu_rights_changed, 0);
+ users_set_sensitive(0);
+ m = gtk_item_factory_get_widget(mainmenufactory,
+ "<GdisorderMain>");
+ set_tool_colors(m);
+ if(menu_minimode_widget)
+ g_signal_connect(G_OBJECT(menu_minimode_widget), "toggled",
+ G_CALLBACK(toggled_minimode), NULL);
+
+ /* Populate the APIs menu */
+ GSList *playback_menu_group = NULL;
+ load_rtp_config();
+ assert(rtp_api != NULL);
+ for(int n = 0; uaudio_apis[n]; ++n) {
+ if(uaudio_apis[n]->flags & UAUDIO_API_CLIENT) {
+ GtkWidget *mw = gtk_radio_menu_item_new_with_label(playback_menu_group,
+ uaudio_apis[n]->name);
+ playback_menu_group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(mw));
+ gtk_menu_shell_append(GTK_MENU_SHELL(apis_menu), mw);
+ /* Tick the currently selected API... */
+ if(!strcmp(uaudio_apis[n]->name, rtp_api))
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mw), TRUE);
+ /* ...and only then connect the signal */
+ g_signal_connect(mw, "toggled", G_CALLBACK(rtp_menu_activate),
+ (char *)uaudio_apis[n]->name);
+ }
+ }
+
+ return m;
+}
+
+static void toggled_minimode(GtkCheckMenuItem *item,
+ gpointer attribute((unused)) userdata) {
+ 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);
+ }