Advertisement
Guest User

Gtk CSS Example

a guest
Jun 5th, 2017
808
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.09 KB | None | 0 0
  1. #include <gtk/gtk.h>
  2.  
  3. static void
  4. activate (GtkApplication* app,
  5.           gpointer        user_data)
  6. {
  7.   GtkWidget *window, *box, *combo;
  8.   GtkCssProvider *provider;
  9.   GtkListStore *liststore;
  10.   GtkCellRenderer *column;
  11.  
  12.   window = gtk_application_window_new (app);
  13.   gtk_window_set_title (GTK_WINDOW (window), "Window");
  14.   gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
  15.  
  16.   box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
  17.   gtk_container_add (GTK_CONTAINER (window), box);
  18.  
  19.   liststore = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
  20.   for(int i=0; i<10; i++) {
  21.       gtk_list_store_insert_with_values(liststore, NULL, -1, 0, "Default", 1, "white", 2, "black", -1);
  22.   }
  23.   combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(liststore));
  24.   g_object_unref(liststore);
  25.   column = gtk_cell_renderer_text_new();
  26.   gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), column, TRUE);
  27.   gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), column, "text", 0, "foreground", 1, "background", 2, NULL);
  28.  
  29.   provider = gtk_css_provider_new ();
  30.   gtk_css_provider_load_from_data (provider, "menuitem { background: #000; } menuitem:hover { background: #FFF; } .combo { background: #000; }", -1, NULL);
  31.   gtk_style_context_add_provider (
  32.     GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (combo))),
  33.     GTK_STYLE_PROVIDER (provider),
  34.     GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
  35.  
  36.   gtk_style_context_add_provider_for_screen (gtk_widget_get_screen (combo),
  37.                                              GTK_STYLE_PROVIDER (provider),
  38.                                              GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
  39.  
  40.   gtk_container_add (GTK_CONTAINER (box), combo);
  41.  
  42.   gtk_widget_show_all (window);
  43. }
  44.  
  45. int
  46. main (int    argc,
  47.       char **argv)
  48. {
  49.   GtkApplication *app;
  50.   int status;
  51.  
  52.   app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  53.   g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  54.   status = g_application_run (G_APPLICATION (app), argc, argv);
  55.   g_object_unref (app);
  56.  
  57.   return status;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement