Привет!
Вопрос про GTK3+. Не могу разобраться.
Есть у меня программулина, которая выводит всякие параметры установки. Это восновном табличка с циферками. Только в зависимости от различных условий циферки должны менять цвет - индикация насколько все в пределах заданных параметров. Цвета самые обычные - зеленый, желтый, красный.
Написано все это по историческим причинам на GTK+ c C. И ничего сложного не было, функция gtk_widget_modify_fg() делала все что нужно. Но...
gtk_widget_modify_fg has been deprecated since version 3.0
and should not be used in newly-written code.
Use gtk_widget_override_color() instead
Смотрим эту функцию и...
gtk_widget_override_color has been deprecated since version 3.16 and should not be used in newly-written code.
Use a custom style provider and style classes instead
Собственно, сами GTKStyle в которых можно было бы поправить Color тоже deprecated и надо все делать через CSS. Ок... CSS это удобно и круто, но хорошо подходит для определения общего стиля, а не для чего-то быстро меняющегося в процессе работы программы.
Если CSS надо поправить прямо из кода, то получается надо городить что-то подобное...
GtkCssProvider* provider = gtk_css_provider_new();
GdkDisplay* display = gdk_display_get_default();
GdkScreen* screen = gdk_display_get_default_screen(display);
gtk_style_context_add_provider_for_screen(screen,GTK_STYLE_PROVШDER(provider),GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(provider),
"#main_drawing_region,GtkLabel { color: black;}", -1, NULL);
g_object_unref(provider);
Но неужели нет чего-то проще? Чтобы поменять цвет одной надписи надо создать три объекта?
Собственно вопрос - может есть какой способ проще и чтобы не депрекэйтед?
P.s. Предложение перейти на QT не расценивается как способ проще.
c, gtk, российские физики