gtk-demo: Make CSS a resource
Also, improve the CSS to give you that basic feel.
This commit is contained in:
committed by
Cosimo Cecchi
parent
6c7f99d01e
commit
075b259321
@ -77,12 +77,7 @@ EXTRA_DIST += \
|
|||||||
$(IMAGEFILES) \
|
$(IMAGEFILES) \
|
||||||
demo.ui \
|
demo.ui \
|
||||||
demo.gresource.xml \
|
demo.gresource.xml \
|
||||||
application.ui \
|
$(RESOURCES) \
|
||||||
menus.ui \
|
|
||||||
theming.ui \
|
|
||||||
fancy.css \
|
|
||||||
gtk-logo-24.png \
|
|
||||||
gtk-logo-48.png \
|
|
||||||
org.gtk.Demo.gschema.xml
|
org.gtk.Demo.gschema.xml
|
||||||
|
|
||||||
gsettings_SCHEMAS = \
|
gsettings_SCHEMAS = \
|
||||||
@ -110,9 +105,18 @@ gtk3_demo_application_SOURCES = \
|
|||||||
|
|
||||||
gtk3_demo_application_LDADD = $(LDADDS)
|
gtk3_demo_application_LDADD = $(LDADDS)
|
||||||
|
|
||||||
demo_resources.c: demo.gresource.xml gtk-logo-24.png gtk-logo-48.png application.ui menus.ui
|
demo_resources.c: demo.gresource.xml $(RESOURCES)
|
||||||
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $(srcdir)/demo.gresource.xml
|
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $(srcdir)/demo.gresource.xml
|
||||||
|
|
||||||
|
RESOURCES= application.ui \
|
||||||
|
menus.ui \
|
||||||
|
theming.ui \
|
||||||
|
gtk-logo-24.png \
|
||||||
|
gtk-logo-48.png \
|
||||||
|
css_basics.css \
|
||||||
|
fancy.css \
|
||||||
|
reset.css
|
||||||
|
|
||||||
IMAGEFILES= alphatest.png \
|
IMAGEFILES= alphatest.png \
|
||||||
apple-red.png \
|
apple-red.png \
|
||||||
background.jpg \
|
background.jpg \
|
||||||
@ -131,11 +135,8 @@ IMAGEFILES= alphatest.png \
|
|||||||
democode_DATA = \
|
democode_DATA = \
|
||||||
$(demos) \
|
$(demos) \
|
||||||
$(IMAGEFILES) \
|
$(IMAGEFILES) \
|
||||||
demo.ui \
|
$(RESOURCES) \
|
||||||
menus.ui \
|
demo.ui
|
||||||
application.ui \
|
|
||||||
theming.ui \
|
|
||||||
fancy.css
|
|
||||||
|
|
||||||
DISTCLEANFILES = demos.h
|
DISTCLEANFILES = demos.h
|
||||||
|
|
||||||
|
|||||||
@ -9,20 +9,6 @@
|
|||||||
|
|
||||||
static GtkWidget *window = NULL;
|
static GtkWidget *window = NULL;
|
||||||
|
|
||||||
#define DEFAULT_CSS \
|
|
||||||
"/* You can edit the CSS to change the appearance of this Window */\n" \
|
|
||||||
"\n" \
|
|
||||||
"GtkWindow {\n" \
|
|
||||||
" engine: none;\n" \
|
|
||||||
" background-image: none;\n" \
|
|
||||||
" background-color: brown;\n" \
|
|
||||||
"}\n" \
|
|
||||||
"\n" \
|
|
||||||
"GtkTextView {\n" \
|
|
||||||
" color: green;\n" \
|
|
||||||
"}\n" \
|
|
||||||
"\n"
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
show_parsing_error (GtkCssProvider *provider,
|
show_parsing_error (GtkCssProvider *provider,
|
||||||
GtkCssSection *section,
|
GtkCssSection *section,
|
||||||
@ -83,6 +69,7 @@ do_css_basics (GtkWidget *do_widget)
|
|||||||
GtkWidget *container, *child;
|
GtkWidget *container, *child;
|
||||||
GtkStyleProvider *provider;
|
GtkStyleProvider *provider;
|
||||||
GtkTextBuffer *text;
|
GtkTextBuffer *text;
|
||||||
|
GBytes *bytes;
|
||||||
|
|
||||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
|
gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
|
||||||
@ -110,9 +97,10 @@ do_css_basics (GtkWidget *do_widget)
|
|||||||
"changed",
|
"changed",
|
||||||
G_CALLBACK (css_text_changed),
|
G_CALLBACK (css_text_changed),
|
||||||
provider);
|
provider);
|
||||||
gtk_text_buffer_set_text (text,
|
|
||||||
DEFAULT_CSS,
|
bytes = g_resources_lookup_data ("/css_basics/gtk.css", 0, NULL);
|
||||||
-1);
|
gtk_text_buffer_set_text (text, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes));
|
||||||
|
|
||||||
g_signal_connect (provider,
|
g_signal_connect (provider,
|
||||||
"parsing-error",
|
"parsing-error",
|
||||||
G_CALLBACK (show_parsing_error),
|
G_CALLBACK (show_parsing_error),
|
||||||
|
|||||||
22
demos/gtk-demo/css_basics.css
Normal file
22
demos/gtk-demo/css_basics.css
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* You can edit the text in this window to change the
|
||||||
|
* appearance of this Window.
|
||||||
|
* Be careful, if you screw it up, nothing might be visible
|
||||||
|
* anymore. :)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* This CSS resets all properties to their defaults values
|
||||||
|
* and overrides all user settings and the theme in use */
|
||||||
|
@import url("reset.css");
|
||||||
|
|
||||||
|
/* Set a very futuristic style by default */
|
||||||
|
* {
|
||||||
|
color: green;
|
||||||
|
font-family: Monospace;
|
||||||
|
border: 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make sure selections are visible */
|
||||||
|
:selected {
|
||||||
|
background-color: darkGreen;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
@ -8,4 +8,16 @@
|
|||||||
<file preprocess="xml-stripblanks">application.ui</file>
|
<file preprocess="xml-stripblanks">application.ui</file>
|
||||||
<file preprocess="xml-stripblanks">menus.ui</file>
|
<file preprocess="xml-stripblanks">menus.ui</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
|
<gresource prefix="/">
|
||||||
|
<file>reset.css</file>
|
||||||
|
</gresource>
|
||||||
|
<gresource prefix="/css_basics">
|
||||||
|
<file alias="gtk.css">css_basics.css</file>
|
||||||
|
</gresource>
|
||||||
|
<gresource prefix="/theming_custom_css">
|
||||||
|
<file alias="gtk.css">fancy.css</file>
|
||||||
|
</gresource>
|
||||||
|
<gresource prefix="/theming_style_classes">
|
||||||
|
<file preprocess="xml-stripblanks">theming.ui</file>
|
||||||
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
|||||||
68
demos/gtk-demo/reset.css
Normal file
68
demos/gtk-demo/reset.css
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
/* @import this colorsheet to get the default values for every property.
|
||||||
|
* This is useful when writing special CSS tests that should not be
|
||||||
|
* inluenced by themes - not even the default ones.
|
||||||
|
* Keep in mind that the output will be very ugly and not look like
|
||||||
|
* anything GTK.
|
||||||
|
* Also, when adding new style properties, please add them here.
|
||||||
|
*/
|
||||||
|
|
||||||
|
* {
|
||||||
|
color: inherit;
|
||||||
|
font-size: inherit;
|
||||||
|
background-color: initial;
|
||||||
|
font-family: inherit;
|
||||||
|
font-style: inherit;
|
||||||
|
font-variant: inherit;
|
||||||
|
font-weight: inherit;
|
||||||
|
text-shadow: inherit;
|
||||||
|
icon-shadow: inherit;
|
||||||
|
box-shadow: initial;
|
||||||
|
margin-top: initial;
|
||||||
|
margin-left: initial;
|
||||||
|
margin-bottom: initial;
|
||||||
|
margin-right: initial;
|
||||||
|
padding-top: initial;
|
||||||
|
padding-left: initial;
|
||||||
|
padding-bottom: initial;
|
||||||
|
padding-right: initial;
|
||||||
|
border-top-style: initial;
|
||||||
|
border-top-width: initial;
|
||||||
|
border-left-style: initial;
|
||||||
|
border-left-width: initial;
|
||||||
|
border-bottom-style: initial;
|
||||||
|
border-bottom-width: initial;
|
||||||
|
border-right-style: initial;
|
||||||
|
border-right-width: initial;
|
||||||
|
border-top-left-radius: initial;
|
||||||
|
border-top-right-radius: initial;
|
||||||
|
border-bottom-right-radius: initial;
|
||||||
|
border-bottom-left-radius: initial;
|
||||||
|
outline-style: initial;
|
||||||
|
outline-width: initial;
|
||||||
|
outline-offset: initial;
|
||||||
|
background-clip: initial;
|
||||||
|
background-origin: initial;
|
||||||
|
background-size: initial;
|
||||||
|
background-position: initial;
|
||||||
|
border-top-color: initial;
|
||||||
|
border-right-color: initial;
|
||||||
|
border-bottom-color: initial;
|
||||||
|
border-left-color: initial;
|
||||||
|
outline-color: initial;
|
||||||
|
background-repeat: initial;
|
||||||
|
background-image: initial;
|
||||||
|
border-image-source: initial;
|
||||||
|
border-image-repeat: initial;
|
||||||
|
border-image-slice: initial;
|
||||||
|
border-image-width: initial;
|
||||||
|
transition-property: initial;
|
||||||
|
transition-duration: initial;
|
||||||
|
transition-timing-function: initial;
|
||||||
|
transition-delay: initial;
|
||||||
|
engine: initial;
|
||||||
|
gtk-key-bindings: initial;
|
||||||
|
|
||||||
|
-GtkWidget-focus-line-width: 0;
|
||||||
|
-GtkWidget-focus-padding: 0;
|
||||||
|
-GtkNotebook-initial-gap: 0;
|
||||||
|
}
|
||||||
@ -20,7 +20,7 @@ do_theming_custom_css (GtkWidget *do_widget)
|
|||||||
GtkWidget *box;
|
GtkWidget *box;
|
||||||
GtkWidget *button;
|
GtkWidget *button;
|
||||||
GtkCssProvider *provider;
|
GtkCssProvider *provider;
|
||||||
gchar *filename;
|
GBytes *bytes;
|
||||||
|
|
||||||
if (!window)
|
if (!window)
|
||||||
{
|
{
|
||||||
@ -40,13 +40,14 @@ do_theming_custom_css (GtkWidget *do_widget)
|
|||||||
gtk_widget_set_name (button, "fancy");
|
gtk_widget_set_name (button, "fancy");
|
||||||
|
|
||||||
provider = gtk_css_provider_new ();
|
provider = gtk_css_provider_new ();
|
||||||
filename = demo_find_file ("fancy.css", NULL);
|
bytes = g_resources_lookup_data ("/theming_custom_css/gtk.css", 0, NULL);
|
||||||
gtk_css_provider_load_from_path (provider, filename, NULL);
|
gtk_css_provider_load_from_data (provider, g_bytes_get_data (bytes, NULL),
|
||||||
|
g_bytes_get_size (bytes), NULL);
|
||||||
gtk_style_context_add_provider_for_screen (gtk_widget_get_screen (do_widget),
|
gtk_style_context_add_provider_for_screen (gtk_widget_get_screen (do_widget),
|
||||||
GTK_STYLE_PROVIDER (provider),
|
GTK_STYLE_PROVIDER (provider),
|
||||||
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||||
g_object_unref (provider);
|
g_object_unref (provider);
|
||||||
g_free (filename);
|
g_bytes_unref (bytes);
|
||||||
|
|
||||||
gtk_widget_show_all (box);
|
gtk_widget_show_all (box);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,6 @@ do_theming_style_classes (GtkWidget *do_widget)
|
|||||||
{
|
{
|
||||||
GtkWidget *grid;
|
GtkWidget *grid;
|
||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
gchar *filename;
|
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
|
|
||||||
if (!window)
|
if (!window)
|
||||||
@ -32,9 +31,7 @@ do_theming_style_classes (GtkWidget *do_widget)
|
|||||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||||
|
|
||||||
builder = gtk_builder_new ();
|
builder = gtk_builder_new ();
|
||||||
filename = demo_find_file ("theming.ui", NULL);
|
gtk_builder_add_from_resource (builder, "/theming_style_classes/theming.ui", NULL);
|
||||||
gtk_builder_add_from_file (builder, filename, &err);
|
|
||||||
g_free (filename);
|
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
g_error ("ERROR: %s\n", err->message);
|
g_error ("ERROR: %s\n", err->message);
|
||||||
|
|||||||
Reference in New Issue
Block a user