/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #+ #+ Glade / Gtk Programming #+ #+ Copyright (C) 2019 by Kevin C. O'Kane #+ #+ Kevin C. O'Kane #+ kc.okane@gmail.com #+ https://www.cs.uni.edu/~okane #+ http://threadsafebooks.com/ #+ #+ 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 #+ the Free Software Foundation; either version 2 of the License, or #+ (at your option) any later version. #+ #+ This program is distributed in the hope that it will be useful, #+ but WITHOUT ANY WARRANTY; without even the implied warranty of #+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #+ GNU General Public License for more details. #+ #+ You should have received a copy of the GNU General Public License #+ along with this program; if not, write to the Free Software #+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #+ #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ #include #include #include #include #include #include #include #include #include // Make them global GtkWidget *window; GtkWidget *fixed1; GtkWidget *scroll1; GtkWidget *b1; GtkBuilder *builder; GtkAdjustment *adjustment2; void css_set(GtkCssProvider *, GtkWidget *); int main(int argc, char *argv[]) { gtk_init(&argc, &argv); // init Gtk //--------------------------------------------------------------------- // establish contact with xml code used to adjust widget settings //--------------------------------------------------------------------- builder = gtk_builder_new_from_file ("part1.glade"); window = GTK_WIDGET(gtk_builder_get_object(builder, "window")); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_builder_connect_signals(builder, NULL); fixed1 = GTK_WIDGET(gtk_builder_get_object(builder, "fixed1")); scroll1 = GTK_WIDGET(gtk_builder_get_object(builder, "scroll1")); b1 = GTK_WIDGET(gtk_builder_get_object(builder, "b1")); adjustment2 = GTK_ADJUSTMENT(gtk_builder_get_object(builder, "adjustment2")); /******************* struct GtkAdjustment { gdouble lower, gdouble upper, gdouble step_increment, gdouble page_increment, gdouble page_size}; ****************************/ /* how to alter the range of the scroll bar */ /* gtk_range_set_range (GTK_RANGE(scroll1), 0, 100); */ GtkCssProvider *cssProvider1; cssProvider1 = gtk_css_provider_new(); gtk_css_provider_load_from_data(cssProvider1, "slider { border: 5px solid ; background-color: yellow; padding-left: 5px; padding-right: 0px; " "min-width: 10px; min-height: 10px; border-radius: 16px; " "outline: black; background: lightgreen; border-color: yellow;} " "trough {min-width: 54px; min-height: 54px; background-color: blue; border-radius: 10px; } " " scrollbar {padding-left: 10px; padding-right: 20px; background: red; } ", -1, NULL); // css_set(cssProvider1, scroll1); // gtk_css_provider_load_from_path(cssProvider1, "/home/okane/Desktop/Glade Cookbook/part40/gtk.css", NULL); css_set(cssProvider1, scroll1); css_set(cssProvider1, b1); css_set(cssProvider1, window); css_set(cssProvider1, fixed1); gtk_widget_show(window); gtk_main(); return EXIT_SUCCESS; } void on_scroll1_value_changed(GtkRange *r) { gdouble x = gtk_range_get_value (r); printf("scroll = %d\n", (int) x ); } // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // paint css on a widget // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ void css_set(GtkCssProvider * cssProvider, GtkWidget *g_widget) { GtkStyleContext *context = gtk_widget_get_style_context(g_widget); gtk_style_context_add_provider (context, GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_USER); }