gtk-demo: Add a theming example
This commit is contained in:
		@ -43,6 +43,7 @@ demos =						\
 | 
			
		||||
	stock_browser.c				\
 | 
			
		||||
	textview.c				\
 | 
			
		||||
	textscroll.c				\
 | 
			
		||||
	theming.c				\
 | 
			
		||||
	toolpalette.c				\
 | 
			
		||||
	transparent.c				\
 | 
			
		||||
	tree_store.c				\
 | 
			
		||||
@ -76,6 +77,7 @@ EXTRA_DIST += 				\
 | 
			
		||||
	application.gresource.xml	\
 | 
			
		||||
	application.ui			\
 | 
			
		||||
	menus.ui			\
 | 
			
		||||
	theming.ui			\
 | 
			
		||||
	gtk-logo-24.png			\
 | 
			
		||||
	gtk-logo-48.png			\
 | 
			
		||||
	org.gtk.Demo.gschema.xml
 | 
			
		||||
@ -122,7 +124,13 @@ IMAGEFILES=	alphatest.png		\
 | 
			
		||||
		gnu-keys.png		\
 | 
			
		||||
		gtk-logo-rgb.gif
 | 
			
		||||
 | 
			
		||||
democode_DATA = $(demos) $(IMAGEFILES) demo.ui menus.ui application.ui
 | 
			
		||||
democode_DATA = \
 | 
			
		||||
	$(demos)		\
 | 
			
		||||
	$(IMAGEFILES)		\
 | 
			
		||||
	demo.ui			\
 | 
			
		||||
	menus.ui		\
 | 
			
		||||
	application.ui		\
 | 
			
		||||
	theming.ui
 | 
			
		||||
 | 
			
		||||
DISTCLEANFILES = demos.h
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										61
									
								
								demos/gtk-demo/theming.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								demos/gtk-demo/theming.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,61 @@
 | 
			
		||||
/* Theming :: theming.ui
 | 
			
		||||
 *
 | 
			
		||||
 * GTK+ uses CSS for theming. Style classes can be associated
 | 
			
		||||
 * with widgets to inform the theme about intended rendering.
 | 
			
		||||
 *
 | 
			
		||||
 * This demo shows some common examples where theming features
 | 
			
		||||
 * of GTK+ are used for certain effects: primary toolbars,
 | 
			
		||||
 * inline toolbars and linked buttons.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <gtk/gtk.h>
 | 
			
		||||
#include "demo-common.h"
 | 
			
		||||
 | 
			
		||||
static GtkWidget *window = NULL;
 | 
			
		||||
 | 
			
		||||
GtkWidget *
 | 
			
		||||
do_theming (GtkWidget *do_widget)
 | 
			
		||||
{
 | 
			
		||||
  GtkWidget *grid;
 | 
			
		||||
  GtkBuilder *builder;
 | 
			
		||||
  gchar *filename;
 | 
			
		||||
  GError *err = NULL;
 | 
			
		||||
 | 
			
		||||
  if (!window)
 | 
			
		||||
    {
 | 
			
		||||
      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 | 
			
		||||
      gtk_window_set_screen (GTK_WINDOW (window),
 | 
			
		||||
                             gtk_widget_get_screen (do_widget));
 | 
			
		||||
      gtk_window_set_title (GTK_WINDOW (window), "Theming");
 | 
			
		||||
      gtk_container_set_border_width (GTK_CONTAINER (window), 12);
 | 
			
		||||
      g_signal_connect (window, "destroy",
 | 
			
		||||
                        G_CALLBACK (gtk_widget_destroyed), &window);
 | 
			
		||||
 | 
			
		||||
      builder = gtk_builder_new ();
 | 
			
		||||
      filename = demo_find_file ("theming.ui", NULL);
 | 
			
		||||
      gtk_builder_add_from_file (builder, filename, &err);
 | 
			
		||||
      g_free (filename);
 | 
			
		||||
      if (err)
 | 
			
		||||
        {
 | 
			
		||||
          g_error ("ERROR: %s\n", err->message);
 | 
			
		||||
          return NULL;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      grid = (GtkWidget *)gtk_builder_get_object (builder, "grid");
 | 
			
		||||
      gtk_widget_show_all (grid);
 | 
			
		||||
      gtk_container_add (GTK_CONTAINER (window), grid);
 | 
			
		||||
      g_object_unref (builder);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (!gtk_widget_get_visible (window))
 | 
			
		||||
    {
 | 
			
		||||
      gtk_widget_show (window);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      gtk_widget_destroy (window);
 | 
			
		||||
      window = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return window;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										319
									
								
								demos/gtk-demo/theming.ui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										319
									
								
								demos/gtk-demo/theming.ui
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,319 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<interface>
 | 
			
		||||
  <object class="GtkGrid" id="grid">
 | 
			
		||||
    <property name="row-spacing">6</property>
 | 
			
		||||
    <property name="orientation">vertical</property>
 | 
			
		||||
    <child>
 | 
			
		||||
      <object class="GtkToolbar" id="toolbar1">
 | 
			
		||||
        <property name="visible">True</property>
 | 
			
		||||
        <property name="can_focus">False</property>
 | 
			
		||||
        <property name="hexpand">True</property>
 | 
			
		||||
        <property name="show-arrow">False</property>
 | 
			
		||||
        <style>
 | 
			
		||||
          <class name="primary-toolbar"/>
 | 
			
		||||
        </style>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="toolbutton1">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Normal</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="is_important">True</property>
 | 
			
		||||
            <property name="icon_name">edit-find</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="toolbutton2">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Active</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="is_important">True</property>
 | 
			
		||||
            <property name="icon_name">edit-find</property>
 | 
			
		||||
            <property name="active">True</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="toolbutton3">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="sensitive">False</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Insensitive</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="is_important">True</property>
 | 
			
		||||
            <property name="icon_name">edit-find</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="toolbutton5">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Raised</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="is_important">True</property>
 | 
			
		||||
            <property name="icon_name">edit-find-symbolic</property>
 | 
			
		||||
            <style>
 | 
			
		||||
              <class name="raised"/>
 | 
			
		||||
            </style>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="toolbutton6">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Raised Active</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="is_important">True</property>
 | 
			
		||||
            <property name="icon_name">edit-find-symbolic</property>
 | 
			
		||||
            <property name="active">True</property>
 | 
			
		||||
            <style>
 | 
			
		||||
              <class name="raised"/>
 | 
			
		||||
            </style>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="toolbutton4">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="sensitive">False</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Insensitive Active</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="icon_name">edit-find</property>
 | 
			
		||||
            <property name="is_important">True</property>
 | 
			
		||||
            <property name="active">True</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToolItem" id="toolitementry">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <child>
 | 
			
		||||
              <object class="GtkEntry" id="entry1">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can_focus">True</property>
 | 
			
		||||
                <property name="invisible_char">•</property>
 | 
			
		||||
                <property name="placeholder-text" translatable="yes">Search...</property>
 | 
			
		||||
                <property name="secondary-icon-name">edit-find-symbolic</property>
 | 
			
		||||
              </object>
 | 
			
		||||
            </child>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToolItem" id="toolitemswitch">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <child>
 | 
			
		||||
              <object class="GtkSwitch" id="switch1">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can_focus">True</property>
 | 
			
		||||
              </object>
 | 
			
		||||
            </child>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
      </object>
 | 
			
		||||
    </child>
 | 
			
		||||
    <child>
 | 
			
		||||
      <object class="GtkBox" id="box1">
 | 
			
		||||
        <property name="visible">True</property>
 | 
			
		||||
        <property name="can_focus">False</property>
 | 
			
		||||
        <property name="orientation">horizontal</property>
 | 
			
		||||
        <property name="valign">center</property>
 | 
			
		||||
        <property name="halign">center</property>
 | 
			
		||||
        <style>
 | 
			
		||||
          <class name="linked"/>
 | 
			
		||||
        </style>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkButton" id="button1">
 | 
			
		||||
            <property name="label" translatable="yes">Hi, I am a button</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">True</property>
 | 
			
		||||
            <property name="receives_default">True</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">0</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkButton" id="button2">
 | 
			
		||||
            <property name="label" translatable="yes">And I'm another button</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">True</property>
 | 
			
		||||
            <property name="receives_default">True</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">1</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkButton" id="button3">
 | 
			
		||||
            <property name="label" translatable="yes">This is a button party!</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">True</property>
 | 
			
		||||
            <property name="receives_default">True</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">2</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
      </object>
 | 
			
		||||
    </child>
 | 
			
		||||
    <child>
 | 
			
		||||
      <object class="GtkToolbar" id="itoolbar1">
 | 
			
		||||
        <property name="visible">True</property>
 | 
			
		||||
        <property name="can_focus">False</property>
 | 
			
		||||
        <property name="hexpand">True</property>
 | 
			
		||||
        <property name="icon_size">1</property>
 | 
			
		||||
        <style>
 | 
			
		||||
          <class name="inline-toolbar"/>
 | 
			
		||||
        </style>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="itoolbutton1">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Normal</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="icon_name">list-add-symbolic</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="itoolbutton2">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Normal</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="icon_name">list-add-symbolic</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="itoolbutton3">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Active</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="icon_name">list-remove-symbolic</property>
 | 
			
		||||
            <property name="active">True</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="itoolbutton4">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Active</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="icon_name">list-remove-symbolic</property>
 | 
			
		||||
            <property name="active">True</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="itoolbutton5">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="sensitive">False</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Insensitive</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="icon_name">edit-find-symbolic</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkToggleToolButton" id="itoolbutton6">
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="sensitive">False</property>
 | 
			
		||||
            <property name="can_focus">False</property>
 | 
			
		||||
            <property name="use_action_appearance">False</property>
 | 
			
		||||
            <property name="label" translatable="yes">Insensitive Active</property>
 | 
			
		||||
            <property name="use_underline">True</property>
 | 
			
		||||
            <property name="icon_name">go-up-symbolic</property>
 | 
			
		||||
            <property name="active">True</property>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="homogeneous">True</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
      </object>
 | 
			
		||||
    </child>
 | 
			
		||||
  </object>
 | 
			
		||||
</interface>
 | 
			
		||||
		Reference in New Issue
	
	Block a user