# AquaXen -- a theme for AquaX based on the Xenophilia engine
#   by Kevin D. Knerr, Sr. (aka Barthel aus Pennswald) <ld_barthel@yahoo.com>

# Not as slick as the pixmap theme, but *much* faster!

# 001002: v0.1 "Xen and the Art of Theme Maintenance"


# My test style makes it *very* easy to see what's affected by a given widget

style "test" {
   fg[NORMAL]           = "#ff0000"
   fg[PRELIGHT]         = "#00ff00"
   fg[ACTIVE]           = "#ff00ff"
   fg[SELECTED]         = "#ffff00"
   fg[INSENSITIVE]      = "#00ffff"
   bg[NORMAL]           = "#cf0000"
   bg[PRELIGHT]         = "#00cf00"
   bg[ACTIVE]           = "#cf00cf"
   bg[SELECTED]         = "#cfcf00"
   bg[INSENSITIVE]      = "#00cfcf"
   base[NORMAL]         = "#af0000"
   base[PRELIGHT]       = "#00af00"
   base[ACTIVE]         = "#af00af"
   base[SELECTED]       = "#afaf00"
   base[INSENSITIVE]    = "#00afaf"
}


# First we declare our default style and assign it to the base class

style "default" {
    font = "-*-helvetica-medium-r-normal--10-*-*-*-*-*-*-*"

    fg[NORMAL]		= { 0.00, 0.00, 0.00 }	# normal text, check
    fg[PRELIGHT]	= { 0.00, 0.00, 0.82 }	# prelighted text, check
    fg[ACTIVE]		= { 0.00, 0.00, 0.82 }	# selected option text, radio
    fg[SELECTED]	= { 0.00, 0.00, 0.82 }	# selected list item text
    fg[INSENSITIVE]	= { 0.80, 0.80, 0.80 }	# insensitive text
    
    bg[NORMAL]		= { 0.94, 0.94, 0.94 }	# unfocused DeskGuide windows
    bg[PRELIGHT]	= { 0.78, 0.88, 1.00 }  # focused DeskGuide window
    bg[ACTIVE]		= { 0.25, 0.50, 0.75 }  # DeskGuide background
    bg[SELECTED]	= { 0.91, 0.95, 1.00 }  # selected list item
    bg[INSENSITIVE]	= { 0.96, 0.96, 0.96 }	# insensitive button face

    base[NORMAL]	= { 1.00, 1.00, 1.00 }	# text widget background
    base[PRELIGHT]	= { 0.42, 0.60, 1.00 }	# prelight selected check/radio
    base[ACTIVE]	= { 0.66, 0.82, 1.00 }	# active checkbox
    base[SELECTED]	= { 0.78, 0.88, 1.00 }	# selected text
    base[INSENSITIVE]	= { 1.00, 1.00, 1.00 }	# combo box background
}

class "GtkObject"	style "default"


# If we apply the Xenophilia engine to the default style, the GtkFrame text
#   gets munged in unappealing ways (mostly because this theme uses a light
#   background).
# Since I've found no method of overriding the engine for just one widget,
#   I must either a) live with the munged label, or b) explicitly apply the
#   engine to every other class (and hope that this doesn't result in something
#   which is uglier still . . . )

style "engine" {
    engine "xeno" {
	scrollbar_knob	= dimple
	scrollbar_width	= 12
	stepper_arrows	= true
	stepper_ends	= false
	# paned_knob	= none
	handle_knob	= lines
	thin		= true
	shine		= 1.6
	shade		= 0.5
    }
}

# Method A:
class "GtkObject"	style "engine"

# Method B:

## Level 1 widgets (GtkObject children):
#class "GtkData"		style "engine"
#
## Level 2 widgets (GtkObject->GtkWidget children):
#class "GtkCalendar"	style "engine"
#class "GtkDrawingArea"	style "engine"
#class "GtkEditable"	style "engine"
#class "GtkMisc"		style "engine"
#class "GtkPreview"	style "engine"
#class "GtkProgress"	style "engine"
#class "GtkRange"	style "engine"
#class "GtkRuler"	style "engine"
#class "GtkSeparator"	style "engine"
#
## Level 3 widgets (GtkObject->GtkWidget->GtkContainer children):
#class "GtkBox"		style "engine"
#class "GtkCList"	style "engine"
#class "GtkFixed"	style "engine"
#class "GtkLayout"	style "engine"
#class "GtkList"		style "engine"
#class "GtkMenuShell"	style "engine"
#class "GtkNotebook"	style "engine"
#class "GtkPacker"	style "engine"
#class "GtkPaned"	style "engine"
#class "GtkSocket"	style "engine"
#class "GtkTable"	style "engine"
#class "GtkToolbar"	style "engine"
#class "GtkTree"		style "engine"
#
## Level 4 widgets (GtkObject->GtkWidget->GtkContainer->GtkBin children):
#class "GtkAlignment"	style "engine"
#class "GtkAspectFrame"	style "engine"
#class "GtkButton"	style "engine"
##class "GtkFrame"	style "engine"
#class "GtkEventBox"	style "engine"
#class "GtkHandleBox"	style "engine"
#class "GtkInvisible"	style "engine"
#class "GtkItem"		style "engine"
#class "GtkScrolledWindow"	style "engine"
#class "GtkViewport"	style "engine"
#class "GtkWindow"	style "engine"

##### End of "Method B" declarations #####


# Finally, we include any styles which require alterations to the defaults.

style "button" {
    bg[NORMAL]		= { 0.88, 0.88, 0.88 }
}

class "GtkButton"	style "button"


style "area" {
    bg[NORMAL]		= { 0.90, 0.90, 0.90 }	# unfocused DeskGuide windows
    bg[PRELIGHT]	= { 0.50, 0.85, 0.90 }  # focused DeskGuide window
    bg[ACTIVE]		= { 0.78, 0.88, 1.00 }  # DeskGuide background
}

class "GtkDrawingArea"	style "area"


# We specify GtkEditable in detail in case I change the defaults while tweaking
#   the rest of the theme. Otherwise, I'd only need to specify 1 or 2 of these
#   attributes.

style "editable" {
    fg[ACTIVE]		= { 0.00, 0.00, 0.82 }	# text selected w/ right button
    fg[SELECTED]	= { 0.00, 0.00, 0.82 }	# selected text
    base[ACTIVE]	= { 0.91, 0.95, 1.00 }  # bg selected w/ right button
    base[SELECTED]	= { 0.91, 0.95, 1.00 }  # selected text background
}

class "GtkEditable"	style "editable"


style "frame" {
    bg[NORMAL]		= { 0.56, 0.56, 0.56 }
}

class "GtkFrame"	style "frame"
class "GtkSeparator"	style "frame"


style "handlebox" {
    bg[NORMAL]		= { 0.63, 0.80, 0.97 }	
}

class "GtkHandleBox"	style "handlebox"


style "list" {
    base[NORMAL]	= { 0.97, 0.97, 0.97 }	# normal background
    base[ACTIVE]	= { 0.97, 0.97, 0.97 }	# normal separator lines
}

class "GtkCList"	style "list"
class "GtkList"		style "list"
class "GtkTree"		style "list"


# The following would give us the true AquaX menu coloring, if it weren't
#   for the fact that the menu text is controlled by the GtkLabel class
#   instead of either of the menu parent classes.
# Since that messes up other items, this segment is commented out . . .
#style "menu" {
#    fg[PRELIGHT]	= { 0.92, 0.94, 0.96 }	# selected menu item text
#    bg[PRELIGHT]	= { 0.25, 0.50, 0.75 }  # selected menu item
#}
#
#class "GtkMenuItem"	style "menu"
#class "GtkMenuShell"	style "menu"


style "notebook" {
    bg[NORMAL]		= { 0.50, 0.84, 0.85 }	# current tab
    bg[ACTIVE]		= { 0.47, 0.67, 0.82 }	# other tabs
}

class "GtkNotebook"	style "notebook"


style "progress" {
    bg[NORMAL]		= { 0.89, 0.89, 0.89 }	# trough
    bg[ACTIVE]		= { 0.89, 0.89, 0.89 }	# initial trough
    base[SELECTED]	= { 0.60, 0.96, 0.33 }	# bar
}

class "GtkProgress"	style "progress"


style "range" {
    bg[ACTIVE]          = { 0.82, 0.82, 0.82 }  # trough in available range
    bg[SELECTED]        = { 0.60, 0.96, 0.33 }  # trough below/behind slider
}

class "GtkRange"        style "range"


style "scrollbar" {
    bg[ACTIVE]          = { 0.89, 0.89, 0.89 }  # trough
}

class "GtkScrollbar"    style "scrollbar"


# For some reason, using the widget specification is more effective than
#   using the class specification here . . .

style "tooltips" {

    #bg[NORMAL]		= { 1.00, 0.96, 0.75 }
    bg[NORMAL]		= { 1.00, 0.98, 0.90 }
}

widget "gtk-tooltips*"	style "tooltips"


