# radiance.tcl

namespace eval tile::theme::radiance {

    package provide tile::theme::radiance 0.1

    variable I
    array set I [tile::LoadImages \
                     [file join [file dirname [info script]] radiance] *.gif]
    
    variable colors

    array set colors {
        -frame          "#efebe7"
        -lighter        "#f5f3f0"
        -dark           "#cfcdc8"
        -darker         "#9e9a9e"
        -darkest        "#d4cfca"
        -selectbg       "#7c99ad"
        -selectfg       "#ffffff"
        -disabledfg     "#b5b3ac"
        -entryfocus     "#6f9dc6"
        -tabbg          "#c9c1bc"
        -tabborder      "#b5aca7"
        -troughcolor    "#d7cbbe"
        -troughborder   "#ae9e8e"
        -checklight     "#f5f3f0"
    }


    style theme create radiance -parent clam -settings {

        style configure . \
            -borderwidth        1 \
            -background         $colors(-frame) \
            -foreground         black \
            -bordercolor        $colors(-darkest) \
            -darkcolor          $colors(-dark) \
            -lightcolor         $colors(-lighter) \
            -troughcolor        $colors(-troughcolor) \
            -selectforeground   $colors(-selectfg) \
            -selectbackground   $colors(-selectbg) \
            -font               TkDefaultFont \
            ;

        style map . \
            -background [list disabled $colors(-frame) \
                             active $colors(-lighter)] \
            -foreground [list disabled $colors(-disabledfg)] \
            -selectbackground [list !focus $colors(-darker)] \
            -selectforeground [list !focus white] \
            ;


#        style configure Frame.border -relief groove

        ## Treeview.
        #
        style element create Treeheading.cell image $I(tree-n) \
            -map [list \
                      selected $I(tree-p) \
                      disabled $I(tree-d) \
                      pressed $I(tree-p) \
                      active $I(tree-h) \
                     ] \
            -border 4 -sticky ew

        #style configure Treeview -fieldbackground white
        style configure Row -background "#efefef"
        style map Row -background [list \
                                       {focus selected} "#71869e" \
                                       selected "#969286" \
                                       alternate white]
        style map Item -foreground [list selected white]
        style map Cell -foreground [list selected white]


        ## Buttons.
        #
        #style configure TButton -padding {10 0} -anchor center
        style configure TButton -padding {5 5} -anchor center -width -9
        style layout TButton {
            Button.button -children {
                Button.focus -children {
                    Button.padding -children {
                        Button.label
                    }
                }
            }
        }

        style element create button image $I(button-n) \
            -map [list \
                      pressed $I(button-p) \
                      {selected active} $I(button-pa) \
                      selected $I(button-p) \
                      active $I(button-a) \
                      disabled $I(button-d) \
                     ] \
            -border 4 -sticky ew


        ## Checkbuttons.
        #
        style element create Checkbutton.indicator image $I(check-nu) \
            -width 24 -sticky w -map [list \
                {disabled selected} $I(check-dc) \
                disabled $I(check-du) \
                {pressed selected} $I(check-pc) \
                pressed $I(check-pu) \
                {active selected} $I(check-ac) \
                active $I(check-au) \
                selected $I(check-nc) ]

        style map TCheckbutton -background [list active $colors(-checklight)]
        style configure TCheckbutton -padding 1


        ## Radiobuttons.
        #
        style element create Radiobutton.indicator image $I(radio-nu) \
            -width 24 -sticky w \
            -map [list \
                      {disabled selected} $I(radio-dc) \
                      disabled $I(radio-du) \
                      {pressed selected} $I(radio-pc) \
                      pressed $I(radio-pu) \
                      {active selected} $I(radio-ac) \
                      active $I(radio-au) \
                      selected $I(radio-nc) ]

        style map TRadiobutton -background [list active $colors(-checklight)]
        style configure TRadiobutton -padding 1


        ## Menubuttons.
        #
        #style configure TMenubutton -relief raised -padding {10 2}
# 	style element create Menubutton.border image $I(toolbutton-n) \
# 	    -map [list \
#                       pressed $I(toolbutton-p) \
#                       selected $I(toolbutton-p) \
#                       active $I(toolbutton-a) \
#                       disabled $I(toolbutton-n)] \
# 	    -border {4 7 4 7} -sticky nsew

        style element create Menubutton.border image $I(button-n) \
            -map [list \
                      selected $I(button-p) \
                      disabled $I(button-d) \
                      active $I(button-a) \
                     ] \
            -border 4 -sticky ew


        ## Toolbar buttons.
        #
        style configure Toolbutton -padding -5 -relief flat
        style configure Toolbutton.label -padding 0 -relief flat

        style element create Toolbutton.border image $I(blank) \
            -map [list \
                      pressed $I(toolbutton-p) \
                      {selected active} $I(toolbutton-pa) \
                      selected $I(toolbutton-p) \
                      active $I(toolbutton-a) \
                      disabled $I(blank)] \
            -border 11 -sticky nsew


        ## Entry widgets.
        #
        style configure TEntry -padding 1 -insertwidth 1 \
            -fieldbackground white

        style map TEntry \
            -fieldbackground [list readonly $colors(-frame)] \
            -bordercolor     [list focus $colors(-selectbg)] \
            -lightcolor      [list focus $colors(-entryfocus)] \
            -darkcolor       [list focus $colors(-entryfocus)] \
            ;


        ## Combobox.
        #
        style configure TCombobox -selectbackground

        style element create Combobox.downarrow image $I(comboarrow-n) \
            -map [list \
                          disabled $I(comboarrow-d) \
                          pressed $I(comboarrow-p) \
                          active $I(comboarrow-a) \
                         ] \
            -border 1 -sticky {}

        style element create Combobox.field image $I(combo-n) \
            -map [list \
                      {readonly disabled} $I(combo-rd) \
                      {readonly pressed} $I(combo-rp) \
                      {readonly focus} $I(combo-rf) \
                      readonly $I(combo-rn)
                     ] \
            -border 4 -sticky ew


        ## Notebooks.
        #
#         style element create tab image $I(tab-a) -border {2 2 2 0} \
#             -map [list selected $I(tab-n)]

        style configure TNotebook.Tab -padding {6 2 6 2}
        style map TNotebook.Tab \
            -padding [list selected {6 4 6 2}] \
            -background [list selected $colors(-frame) {} $colors(-tabbg)] \
            -lightcolor [list selected $colors(-lighter) {} $colors(-dark)] \
            -bordercolor [list selected $colors(-darkest) {} $colors(-tabborder)] \
            ;

        ## Labelframes.
        #
        style configure TLabelframe -borderwidth 2 -relief groove


        ## Scrollbars.
        #
        style layout Vertical.TScrollbar {
            Scrollbar.trough -sticky ns -children {
                Scrollbar.uparrow -side top
                Scrollbar.downarrow -side bottom
                Vertical.Scrollbar.thumb -side top -expand true -sticky ns
            }
        }

        style layout Horizontal.TScrollbar {
            Scrollbar.trough -sticky we -children {
                Scrollbar.leftarrow -side left
                Scrollbar.rightarrow -side right
                Horizontal.Scrollbar.thumb -side left -expand true -sticky we
            }
        }

        style element create Horizontal.Scrollbar.thumb image $I(sbthumb-hn) \
            -map [list \
                      disabled $I(sbthumb-hd) \
                      pressed $I(sbthumb-ha) \
                      active $I(sbthumb-ha)] \
            -border 3

        style element create Vertical.Scrollbar.thumb image $I(sbthumb-vn) \
            -map [list \
                      disabled $I(sbthumb-vd) \
                      pressed $I(sbthumb-va) \
                      active $I(sbthumb-va)] \
            -border 3

        foreach dir {up down left right} {
            style element create ${dir}arrow image $I(arrow${dir}-n) \
                -map [list \
                          disabled $I(arrow${dir}-d) \
                          pressed $I(arrow${dir}-p) \
                          active $I(arrow${dir}-a)] \
                -border 1 -sticky {}
        }

        style configure TScrollbar -bordercolor $colors(-troughborder)


        ## Scales.
        #
        style element create Scale.slider image $I(scale-hn) \
            -map [list \
                      disabled $I(scale-hd) \
                      active $I(scale-ha) \
                     ]

        style element create Scale.trough image $I(scaletrough-h) \
            -border 2 -sticky ew -padding 0

        style element create Vertical.Scale.slider image $I(scale-vn) \
            -map [list \
                      disabled $I(scale-vd) \
                      active $I(scale-va) \
                     ]
        style element create Vertical.Scale.trough image $I(scaletrough-v) \
            -border 2 -sticky ns -padding 0

        style configure TScale -bordercolor $colors(-troughborder)


        ## Progressbar.
        #
        style element create Horizontal.Progressbar.pbar image $I(progress-h) \
            -border {2 2 1 1}
        style element create Vertical.Progressbar.pbar image $I(progress-v) \
            -border {2 2 1 1}

        style configure TProgressbar -bordercolor $colors(-troughborder)


        ## Statusbar parts.
        #
        style element create sizegrip image $I(sizegrip)


        ## Paned window parts.
        #
#         style element create hsash image $I(hseparator-n) -border {2 0} \
#             -map [list {active !disabled} $I(hseparator-a)]
#         style element create vsash image $I(vseparator-n) -border {0 2} \
#             -map [list {active !disabled} $I(vseparator-a)]

        style configure Sash -sashthickness 6 -gripcount 16


        ## Separator.
        #
        #style element create separator image $I(sep-h)
        #style element create hseparator image $I(sep-h)
        #style element create vseparator image $I(sep-v)

    }
}

