gtk/tests/testgtkrc
Michael Natterer de3155a4c2 Added symbolic themable colors. Patch is a merged version of proposals
2005-11-23  Michael Natterer  <mitch@imendio.com>

	Added symbolic themable colors. Patch is a merged version of
	proposals from Matthias and maemo-gtk. Fixes bug #114355.

	* configure.in: require glib >= 2.9.1 for refcountable hashtables.

	* gtk/gtksettings.c: added property "color-scheme" which is a
	string defining colors like "foreground:black\nbackground:grey".
	Automatically provide a name->GdkColor hash table mapping for the
	color scheme.

	* gtk/gtkrc.[ch]: added list of color hashes that works like the
	list of icon factories. Append the color scheme hash from
	GtkSettings if it exists. Extended gtkrc syntax to allow defining
	and referencing of logical colors. Also allow to modulate colors
	in gtkrc by using arbitrary expressions of mix(), shade(),
	lighter() and darker(). Added internal function
	_gtk_rc_style_get_color_hashes().

	* gtk/gtkstyle.[ch]: keep a private list of color hashes around.
	Get the list from _gtk_rc_style_get_color_hashes(). Export
	internal function _gtk_style_shade() (used by above color
	expressions). Added public API gtk_style_lookup_color() which
	looks up a logical color by name.

	* gtk/gtk.symbols: add gtk_style_lookup_color

	* tests/testgtkrc: use symbolic colors for making
	the scrollbars red.
2005-11-23 10:33:58 +00:00

219 lines
4.5 KiB
Plaintext

# pixmap_path "<dir 1>:<dir 2>:<dir 3>:..."
#
# include "rc-file"
#
# style <name> [= <name>]
# {
# <option>
# }
#
# widget <widget_set> style <style_name>
# widget_class <widget_class_set> style <style_name>
# testgtkrc2 sets all the buttons in the main window to blue by default
include "testgtkrc2"
double-click_timeout = 42
bell-duration = 39
bell_duration = 40
# gtk-cursor-blink-time = 200
# gtk-menu-bar-accel = F10
style "global-style-properties"
{
# xthickness = 20
GtkButton::child_displacement_x = 1
GtkButton::child_displacement_y = 1
# GtkWidget::cursor_color = "#ff0000"
GtkToolbar::space_size = 10
GtkToolbar::space_style = line
GtkToolbar::button_relief = none
GtkButtonBox::child_min_width = 0
GtkButtonBox::child_min_height = 0
}
class "GtkWidget" style "global-style-properties"
style "defaultfont"
{
font_name = "Sans 12"
Gtest::foo = 47
Gtest::bar = 47
# GtkScrollbar::spacing = 33
# GtkButton::color = { 3, 2,45, 6, 6, 4, 23 }
}
style "myicons"
{
stock["gtk-dialog-warning"] =
{
{ "3DRings.xpm", *, *, *}
}
}
class "GtkImage" style "myicons"
# common default
class "GtkWidget" style "defaultfont"
style "window"
{
# bg_pixmap[NORMAL] = "marble.xpm"
}
style "scale"
{
fg[NORMAL] = { 1.0, 0, 0 }
bg_pixmap[NORMAL] = "<parent>"
}
style "button" = "default"
{
# fg[PRELIGHT] = { 1.0, 1.0, 1.0 }
# bg[PRELIGHT] = { 0, 0, 0.75 }
# bg[PRELIGHT] = { 0.75, 0, 0x00 }
}
style "toggle_button" = "button"
{
fg[NORMAL] = { 1.0, 0, 0 }
fg[ACTIVE] = { 1.0, 0, 0 }
# bg_pixmap[ACTIVE] = "check-y.xpm"
# bg_pixmap[NORMAL] = "check-n.xpm"
}
style "text"
{
bg_pixmap[NORMAL] = "marble.xpm"
text[NORMAL] = { 1.0, 1.0, 1.0 }
fg[NORMAL] = { 1.0, 1.0, 1.0 }
base[NORMAL] = { 0.0, 0.0, 0.0 }
}
style "slider"
{
fg[NORMAL] = { 1.0, 1.0, 1.0 }
bg[NORMAL] = { 0.0, 0.0, 1.0 }
bg[ACTIVE] = { 0.0 ,0.0, 0.5 }
bg[PRELIGHT] = { 0.75 ,0.75, 1.0 }
}
style "ruler"
{
font_name = 'Sans 8'
}
style "curve"
{
fg[NORMAL] = { 58000, 0, 0 } # red
}
style "red-bar-parent"
{
color["my-red"] = "red"
color["my-other-red"] = { 0.95, .55, 0.55 }
}
style "red-bar" = "red-bar-parent"
{
color["my-light-red"] = lighter (lighter (@my-red))
bg[PRELIGHT] = @my-light-red
}
# override testgtk2, introduce the green color in the button list
style 'button_list' = 'button'
{
font_name = "Monospace 10"
bg[PRELIGHT] = { 0, 0.75, 0x00 }
}
widget "main window.*GtkScrolledWindow.*GtkButton*" style "button_list"
style "checkbutton" {
# GtkCheckButton::indicator-size = 27
}
class "GtkCheckButton" style "checkbutton"
class "GtkScrollbar" style "red-bar"
widget_class "GtkWindow" style "window"
widget_class "GtkDialog" style "window"
widget_class "GtkFileSelection" style "window"
widget_class "*Gtk*Scale" style "scale"
widget_class "*GtkCheckButton*" style "toggle_button"
widget_class "*GtkRadioButton*" style "toggle_button"
widget_class "*GtkButton*" style "button"
widget_class "*Ruler" style "ruler"
widget_class "*GtkText" style "text"
widget "*GtkCurve" style "curve"
binding "test1"
{
bind "<ctrl>1" {
"debug-msg" ("jup!")
}
}
binding "test2"
{
bind "<ctrl>1" {
"debug-msg" ("hallo and")
"debug-msg" ("huhu")
}
}
# possible priorities are (in ascending order):
# lowest
# gtk (used by gtk for internal class bindings)
# application (for hard coded bindings on application basis)
# rc (used implicitel by rc files)
# highest
class "GtkCList" binding "test1" # implicit : rc
#class "GtkWindow" binding : highest "test2" # override "rc" priority
binding "clist-test"
{
bind "j" {
"scroll-vertical" (step-backward, 0.0)
}
bind "k" {
"scroll-vertical" (step-forward, 0.0)
}
}
class "GtkCList" binding "clist-test"
style "testthickness" {
xthickness = 15
ythickness = 15
}
#class "GtkFrame" style "testthickness"
# Test ordering of RC file priorities
style "testgtk-red-style" {
fg[NORMAL] = "red"
}
style "testgtk-green-style" {
fg[NORMAL] = "green"
}
style "testgtk-blue-style" {
fg[NORMAL] = "blue"
}
widget_class "*.GtkAspectFrame.*.GtkLabel" style "testgtk-green-style"
widget_class "*.GtkAspectFrame.*.GtkLabel" style "testgtk-blue-style" # override because it's later
widget "*.testgtk-red-label" style "testgtk-red-style" # override because it's widget, not widget_class
widget "*.testgtk-green-label" style : highest "testgtk-green-style"
# overrides the following, because it is higher priority
widget "*.testgtk-green-label" style "testgtk-red-style"