void wp_set_enabled(int enabled) { cfg_set_single_value_as_int(config, "wp-plugin", "enable", enabled); if (enabled) { if(wiki_ref == NULL) { wp_add(GTK_WIDGET(playlist3_get_category_tree_view())); } } else if (wiki_ref) { GtkTreePath *path = gtk_tree_row_reference_get_path(wiki_ref); if (path){ GtkTreeIter iter; if (gtk_tree_model_get_iter(GTK_TREE_MODEL(playlist3_get_category_tree_store()), &iter, path)){ gtk_list_store_remove(playlist3_get_category_tree_store(), &iter); } gtk_tree_path_free(path); gtk_tree_row_reference_free(wiki_ref); wiki_ref = NULL; } } }
static void serverstats_init(void) { /** Get an allready exposed widgets to grab theme colors from. */ GtkWidget *colw = (GtkWidget *) playlist3_get_category_tree_view(); GtkWidget *label = NULL; GtkWidget *table = NULL; GtkWidget *hbox = NULL; GtkWidget *event = NULL; GtkWidget *serverstats_vbox = gtk_vbox_new(FALSE, 0); GtkWidget *serverstats_event; gchar *markup = NULL; int i = 0; serverstats_sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(serverstats_sw), GTK_SHADOW_IN); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(serverstats_sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); serverstats_event = gtk_event_box_new(); gtk_event_box_set_visible_window(GTK_EVENT_BOX(serverstats_event), TRUE); gtk_container_add(GTK_CONTAINER(serverstats_event), serverstats_vbox); { GtkStyleContext *cs = gtk_widget_get_style_context(GTK_WIDGET(serverstats_event)); gtk_style_context_add_class(cs, GTK_STYLE_CLASS_VIEW); } /* wrap in event box to set bg color */ event = gtk_event_box_new(); gtk_event_box_set_visible_window(GTK_EVENT_BOX(event), TRUE); //gtk_widget_set_state(GTK_WIDGET(event), GTK_STATE_SELECTED); { GtkStyleContext *cs = gtk_widget_get_style_context(GTK_WIDGET(serverstats_event)); gtk_style_context_add_class(cs, GTK_STYLE_CLASS_HEADER); } //gtk_widget_modify_bg(serverstats_event, GTK_STATE_NORMAL, &(colw->style->base[GTK_STATE_NORMAL])); g_signal_connect(G_OBJECT(serverstats_vbox), "style-set", G_CALLBACK(serverstats_header_style_changed), serverstats_event); /* set label and padding */ hbox = gtk_hbox_new(FALSE, 6); label = gtk_image_new_from_icon_name("mpd", GTK_ICON_SIZE_DND); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); markup = g_markup_printf_escaped("<span size='xx-large' weight='bold'>%s</span>", _("Server Information")); gtk_label_set_markup(GTK_LABEL(label), markup); g_free(markup); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); gtk_container_add(GTK_CONTAINER(event), hbox); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); gtk_box_pack_start(GTK_BOX(serverstats_vbox), event, FALSE, TRUE, 0); gtk_widget_show_all(event); label = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(serverstats_vbox), label, FALSE, TRUE, 0); gtk_widget_show(label); /** * Data list */ table = gtk_grid_new();//(SERVERSTATS_NUM_FIELDS + 2, 2, FALSE); gtk_grid_set_column_spacing(GTK_GRID(table), 6); gtk_grid_set_row_spacing(GTK_GRID(table), 6); gtk_container_set_border_width(GTK_CONTAINER(table), 12); /** Database */ label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); markup = g_markup_printf_escaped("<span size='x-large' weight='bold'>%s</span>", _("Server")); gtk_label_set_markup(GTK_LABEL(label), markup); g_free(markup); gtk_grid_attach(GTK_GRID(table), label, 0,0,2,1); i = 1; /** Mpd version */ serverstats_add_entry(table, i++, _("Version"), SERVERSTATS_MPD_VERSION); serverstats_add_entry(table, i++, _("Uptime"), SERVERSTATS_MPD_UPTIME); serverstats_add_entry(table, i++, _("Time Playing"), SERVERSTATS_MPD_PLAYTIME); /** Database */ label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); markup = g_markup_printf_escaped("<span size='x-large' weight='bold'>%s</span>", _("Database")); gtk_label_set_markup(GTK_LABEL(label), markup); g_free(markup); gtk_grid_attach(GTK_GRID(table), label, 0, i, 2, 1); i++; /** Mpd Playtime */ serverstats_add_entry(table, i++, _("Total Playtime"), SERVERSTATS_MPD_DB_PLAYTIME); /** Mpd Artists*/ serverstats_add_entry(table, i++, _("Number of artists"), SERVERSTATS_MPD_DB_ARTISTS); /** Mpd Albums */ serverstats_add_entry(table, i++, _("Number of albums"), SERVERSTATS_MPD_DB_ALBUMS); /** Mpd Songs */ serverstats_add_entry(table, i++, _("Number of songs"), SERVERSTATS_MPD_DB_SONGS); /** Mpd Songs */ serverstats_add_entry(table, i++, _("URL Handlers"), SERVERSTATS_MPD_URLHANDLERS); /** Mpd Songs */ serverstats_add_entry(table, i++, _("Tag Types"), SERVERSTATS_MPD_TAG_TYPES); /** Stats */ label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); markup = g_markup_printf_escaped("<span size='x-large' weight='bold'>%s</span>", _("Tag statistics")); gtk_label_set_markup(GTK_LABEL(label), markup); g_free(markup); gtk_grid_attach(GTK_GRID(table), label, 0, i, 2, 1); i++; gtk_widget_show_all(table); /** * Stats treeview */ { int j; GtkWidget *combo = NULL; GtkWidget *sw = NULL, *cancel; GtkListStore *store; GtkCellRenderer *renderer; GtkWidget *pb = gtk_progress_bar_new(); combo = gtk_combo_box_text_new(); for (j = 0; j < MPD_TAG_NUM_OF_ITEM_TYPES - 1; j++) { if (mpd_server_tag_supported(connection, j)) { gtk_combo_box_text_append(GTK_COMBO_BOX(combo),NULL, mpdTagItemKeys[j]); } } gtk_grid_attach(GTK_GRID(table), combo, 0, i, 2, 1); i++; gtk_widget_show(combo); hbox = gtk_hbox_new(FALSE, 6); cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); g_signal_connect(G_OBJECT(cancel), "clicked", G_CALLBACK(cancel_clicked), NULL); gtk_box_pack_start(GTK_BOX(hbox), pb, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), cancel, FALSE, TRUE, 0); gtk_grid_attach(GTK_GRID(table), hbox, 0, i, 2, 1); i++; g_signal_connect(G_OBJECT(combo), "changed", G_CALLBACK(serverstats_combo_changed), pb); sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_NEVER); gtk_container_set_border_width(GTK_CONTAINER(sw), 6); store = gtk_list_store_new(4, G_TYPE_ULONG, G_TYPE_STRING, G_TYPE_ULONG, G_TYPE_STRING); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), 0, GTK_SORT_DESCENDING); serverstats_tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(serverstats_tree), FALSE); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(serverstats_tree), TRUE); renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, "ellipsize-set", TRUE, "width-chars", 30, NULL); gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(serverstats_tree), -1, "", renderer, "text", 1, NULL); renderer = gtk_cell_renderer_progress_new(); gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(serverstats_tree), -1, "", renderer, "value", 2, "text", 3, NULL); gtk_tree_view_set_search_column(GTK_TREE_VIEW(serverstats_tree), 1); gtk_container_add(GTK_CONTAINER(sw), serverstats_tree); gtk_grid_attach(GTK_GRID(table), sw, 0, i, 2, 1); i++; gtk_widget_show_all(sw); } /** * Add table */ gtk_box_pack_start(GTK_BOX(serverstats_vbox), table, TRUE, TRUE, 0); /* maintain my own reference to the widget, so it won't get destroyed removing * from view */ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(serverstats_sw), serverstats_event); gtk_widget_show(serverstats_vbox); gtk_widget_show(serverstats_event); gtk_widget_show(serverstats_sw); g_object_ref_sink(serverstats_sw); }