Как изменить фон и / или цвет переднего плана GTK дерева выбранной строки в C - PullRequest
0 голосов
/ 09 января 2019

Я довольно новичок в gtk и совсем не разбираюсь в стилях CSS. Большинство примеров, которые я нашел в Интернете, предполагают, что цвет столбцов / строк дерева можно изменить с помощью CSS-провайдера. Я специально пытаюсь изменить цвет выбранной строки.

С помощью Gtk Inspector мне удалось изменить цвет невыбранных строк дерева в свойствах объекта. Поэтому я думаю, что это можно сделать, но я не могу понять, как это сделать в коде. И я еще не смог найти документацию, которая бы четко объясняла это.

Мой вопрос заключается в том, как реализовать изменение цвета строк с помощью кода CSS и C? Может ли кто-нибудь предложить решение в C или указать мне правильное направление? Я хотел бы сделать код максимально простым.

    void on_changed(GtkWidget *widget, gpointer view) // *** row clicked ***
{
    GtkTreeIter iter;
    GtkTreeModel *model;
    gchar *value;
// if the row is clicked then get the new selection
    gtk_tree_selection_get_selected(GTK_TREE_SELECTION(widget), &model, &iter); // won't work without this

    gtk_tree_model_get(model, &iter, COLUMN_ZERO, &value,  -1);

// set column header to selected row text.
GtkTreeViewColumn *col = gtk_tree_view_get_column (view, COLUMN_ZERO);  
gtk_tree_view_column_set_title(col, value);

//////////////////////////////////////////////
GtkCssProvider *provider = gtk_css_provider_new ();

GError *error = NULL;   
gtk_css_provider_load_from_path (provider,"custom.css", &error);
if(error) { printf("ERROR\n"); g_free(error); }

GtkStyleContext *context = gtk_widget_get_style_context (view);

gtk_style_context_add_provider (context, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

g_object_unref(provider);
//////////////////////////////////////////

    g_free(value);

} //*** End of ON_CHANGED **************
...