1# keramik.tcl -
2#
3# A sample pixmap theme for the tile package.
4#
5#  Copyright (c) 2004 Googie
6#  Copyright (c) 2004 Pat Thoyts <patthoyts@users.sourceforge.net>
7#
8# $Id: keramik.tcl 31689 2011-05-22 09:26:02Z nobu $
9
10package require Tk 8.4;                 # minimum version for Tile
11package require tile 0.5;               # depends upon tile 0.5
12
13namespace eval tile {
14    namespace eval theme {
15        namespace eval keramik {
16            variable version 0.3.2
17        }
18    }
19}
20
21namespace eval tile::theme::keramik {
22
23    variable imgdir [file join [file dirname [info script]] keramik]
24    variable I
25    array set I [tile::LoadImages $imgdir *.gif]
26
27    variable colors
28    array set colors {
29        -frame      "#cccccc"
30        -lighter    "#cccccc"
31        -window     "#ffffff"
32        -selectbg   "#eeeeee"
33        -selectfg   "#000000"
34        -disabledfg "#aaaaaa"
35    }
36
37    style theme create keramik -parent alt -settings {
38
39
40        # -----------------------------------------------------------------
41        # Theme defaults
42        #
43        style default . \
44            -borderwidth 1 \
45            -background $colors(-frame) \
46            -troughcolor $colors(-lighter) \
47            -font TkDefaultFont \
48            ;
49
50        style map . -foreground [list disabled $colors(-disabledfg)]
51
52        # -----------------------------------------------------------------
53        # Button elements
54        #  - the button has a large rounded border and needs a bit of
55        #    horizontal padding.
56        #  - the checkbutton and radiobutton have the focus drawn around
57        #    the whole widget - hence the new layouts.
58        #
59        style layout TButton {
60            Button.background
61            Button.button -children {
62                Button.focus -children {
63                    Button.label
64                }
65            }
66        }
67        style layout Toolbutton {
68            Toolbutton.background
69            Toolbutton.button -children {
70                Toolbutton.focus -children {
71                    Toolbutton.label
72                }
73            }
74        }
75        style element create button image $I(button-n) \
76            -border {8 6 8 16} -padding {6 6} -sticky news \
77            -map [list {pressed !disabled} $I(button-p) \
78                      {active !selected}  $I(button-h) \
79                      selected $I(button-s) \
80                      disabled $I(button-d)]
81        style default TButton -padding {10 6}
82
83        style element create Toolbutton.button image $I(tbar-n) \
84            -border {2 8 2 16} -padding {2 2} -sticky news \
85            -map [list {pressed !disabled} $I(tbar-p) \
86                      {active !selected}   $I(tbar-a) \
87                      selected             $I(tbar-p)]
88
89        style element create Checkbutton.indicator image $I(check-u) \
90            -width 20 -sticky w \
91            -map [list selected $I(check-c)]
92
93        style element create Radiobutton.indicator image $I(radio-u) \
94            -width 20 -sticky w \
95            -map [list  selected $I(radio-c)]
96
97        # The layout for the menubutton is modified to have a button element
98        # drawn on top of the background. This means we can have transparent
99        # pixels in the button element. Also, the pixmap has a special
100        # region on the right for the arrow. So we draw the indicator as a
101        # sibling element to the button, and draw it after (ie on top of) the
102        # button image.
103        style layout TMenubutton {
104            Menubutton.background
105            Menubutton.button -children {
106                Menubutton.focus -children {
107                    Menubutton.padding -children {
108                        Menubutton.label -side left -expand true
109                    }
110                }
111            }
112            Menubutton.indicator -side right
113        }
114        style element create Menubutton.button image $I(mbut-n) \
115            -map [list {active !disabled} $I(mbut-a) \
116                      {pressed !disabled} $I(mbut-a) \
117                      {disabled}          $I(mbut-d)] \
118            -border {7 10 29 15} -padding {7 4 29 4} -sticky news
119        style element create Menubutton.indicator image $I(mbut-arrow-n) \
120            -width 11 -sticky w -padding {0 0 18 0}
121
122        # -----------------------------------------------------------------
123        # Scrollbars, scale and progress elements
124        #  - the scrollbar has three arrow buttons, two at the bottom and
125        #    one at the top.
126        #
127        style layout Vertical.TScrollbar {
128            Scrollbar.background
129            Scrollbar.trough -children {
130                Scrollbar.uparrow -side top
131                Scrollbar.downarrow -side bottom
132                Scrollbar.uparrow -side bottom
133                Vertical.Scrollbar.thumb -side top -expand true -sticky ns
134            }
135        }
136
137        style layout Horizontal.TScrollbar {
138            Scrollbar.background
139            Scrollbar.trough -children {
140                Scrollbar.leftarrow -side left
141                Scrollbar.rightarrow -side right
142                Scrollbar.leftarrow -side right
143                Horizontal.Scrollbar.thumb -side left -expand true -sticky we
144            }
145        }
146
147        style default TScrollbar -width 16
148
149        style element create Horizontal.Scrollbar.thumb image $I(hsb-n) \
150            -border {6 4} -width 15 -height 16 -sticky news \
151            -map [list {pressed !disabled} $I(hsb-p)]
152
153        style element create Vertical.Scrollbar.thumb image $I(vsb-n) \
154            -border {4 6} -width 16 -height 15 -sticky news \
155            -map [list {pressed !disabled} $I(vsb-p)]
156
157        style element create Scale.slider image $I(hslider-n) \
158            -border 3
159
160        style element create Vertical.Scale.slider image $I(vslider-n) \
161            -border 3
162
163        style element create Horizontal.Progress.bar image $I(hsb-n) \
164            -border {6 4}
165
166        style element create Vertical.Progress.bar image $I(vsb-n) \
167            -border {4 6}
168
169        style element create uparrow image $I(arrowup-n) \
170            -map [list {pressed !disabled} $I(arrowup-p)]
171
172        style element create downarrow image $I(arrowdown-n) \
173            -map [list {pressed !disabled} $I(arrowdown-p)]
174
175        style element create rightarrow image $I(arrowright-n) \
176            -map [list {pressed !disabled} $I(arrowright-p)]
177
178        style element create leftarrow image $I(arrowleft-n) \
179            -map [list {pressed !disabled} $I(arrowleft-p)]
180
181        # -----------------------------------------------------------------
182        # Notebook elements
183        #
184        style element create tab image $I(tab-n) \
185            -map [list selected $I(tab-p) active $I(tab-p)] \
186            -border {6 6 6 2} -height 12
187
188	## Labelframes.
189	#
190	style default TLabelframe -borderwidth 2 -relief groove
191    }
192}
193
194package provide tile::theme::keramik $::tile::theme::keramik::version
195