#!/usr/bin/tclsh
# Undocumented program. Don't use it.
#
# Usage:
# 
# 	tixmkpref option name.src > name.tcl
#

proc tixDefOption {classes specs {level \$tixOption(prioLevel)}} {
    global isFont tixOption

    foreach class $classes {
	foreach spec $specs {
	    if [regexp (Font)|(font) $spec] {
		if {$isFont} {
		    puts "option add *$class$spec $level"
		}
	    } else {
		if {!$isFont} {
		    set aspec [subst $spec]
		    puts "option add *$class$spec $level"
		}
	    }
	}
    }
}

proc option {classes specs {level \$tixOption(prioLevel)}} {
    tixDefOption $classes $specs $level
}

proc tixInitOptionDatabase {strictTK} {
    global tixOption isFont

    # general stuff, everything gets these defaults unless otherwise specified
    #-------------------------------------------------------------------------
    tixDefOption {""} {{Font			$tixOption(font)}}
    tixDefOption {""} {{font			$tixOption(font)}}

    tixDefOption {""} {{background 		$tixOption(bg)}}	10
    tixDefOption {""} {{Background		$tixOption(bg)}}
    tixDefOption {""} {{background		$tixOption(bg)}}
    tixDefOption {""} {{Foreground		$tixOption(fg)}}
    tixDefOption {""} {{foreground		$tixOption(fg)}}
    tixDefOption {""} {{activeBackground	$tixOption(active_bg)}}
    tixDefOption {""} {{activeForeground	$tixOption(active_fg)}}
    tixDefOption {""} {{HighlightBackground	$tixOption(bg)}}
    tixDefOption {""} {{selectBackground	$tixOption(select_bg)}}
    tixDefOption {""} {{selectForeground	$tixOption(select_fg)}}
    tixDefOption {""} {{selectBorderWidth	0}}

    #----------------------------------------
    # Standard TK Widget Options
    #
    # We set up the options for the TK widgets only if
    # the strictTK option is not selected.
    #----------------------------------------

    tixDefOption {Menu TixMenu} {
	{.font			$tixOption(menu_font)}
	{.selectColor		$tixOption(selector)}
    }

    tixDefOption {Menubutton} {
	{.font			$tixOption(menu_font)}
	{.padY			5}
    }

    tixDefOption {Button} {
	{.borderWidth		2}
	{.anchor		c}
    }

    tixDefOption {Checkbutton Radiobutton} {
	{.selectColor		$tixOption(selector)}
    }

    tixDefOption {Entry} {
	{.relief		sunken}
	{.highlightBacground	$tixOption(bg)}
	{.background		$tixOption(input1_bg)}
	{.foreground		black}
	{.insertBackground	black}
    }

    tixDefOption {Label} {
	{.anchor		w}
	{.borderWidth		0}
	{.font              	$tixOption(bold_font)}
    }

    tixDefOption {Listbox} {
	{.background		$tixOption(light1_bg)}
	{.relief		sunken}
    }

    tixDefOption {Scale} {
	{.foreground		$tixOption(fg)}
	{.activeForeground	$tixOption(bg)}
	{.background		$tixOption(bg)}
	{.sliderForeground	$tixOption(bg)}
	{.sliderBackground	$tixOption(light1_bg)}
	{.font			$tixOption(italic_font)}
    }

    tixDefOption {Scrollbar} {
	{.background		$tixOption(bg)}
	{.troughColor		$tixOption(light1_bg)}
	{.relief		sunken}
	{.borderWidth		1}
	{.width			15}
    }

    tixDefOption {Text} {
	{.background		$tixOption(input1_bg)}
	{.relief		sunken}
    }

    #----------------------------------------------------------------------
    # TIX WIDGETS
    #----------------------------------------------------------------------

    tixDefOption {TixBalloon} {
	{*background 			#ffff60}
	{*foreground 			black}
	{.background 			black}
	{*Label.font 			$tixOption(font)}
	{*Label.anchor 			w}
    }

    tixDefOption {TixBitmapButton} {
	{*label.font 			$tixOption(font)}
    }

    tixDefOption {TixControl} {
	{*entry.highlightBacground	$tixOption(bg)}
	{*entry.background		$tixOption(input1_bg)}
	{*entry.foreground		black}
	{*entry.insertBackground	black}
	{*label.font              	$tixOption(bold_font)}
    }

    # DLG_BTNS
    #
    tixDefOption {TixStdButtonBox} {
    }

    # DIR_LIST
    #
    tixDefOption {TixDirTree TixDirList TixScrolledHList TixTree} {
	{*Scrollbar.background		$tixOption(bg)}
	{*Scrollbar.troughColor		$tixOption(light1_bg)}
	{*hlist.highlightBacground	$tixOption(bg)}
	{*hlist.background		$tixOption(light1_bg)}
	{*hlist.activeBackground	$tixOption(light1_bg)}
	{*hlist.disabledBackground	$tixOption(light1_bg)}
	{*f1.borderWidth		1}
	{*f1.relief			sunken}
    }

    tixDefOption {TixFileEntry} {
	{*Entry.background 		$tixOption(input1_bg)}
    }

    tixDefOption {TixHList} {
	{.background			$tixOption(light1_bg)}
	{.activeBackground		$tixOption(light1_bg)}
	{.disabledBackground		$tixOption(light1_bg)}
    }

    tixDefOption {TixLabelEntry} {
	{*entry.highlightBacground	$tixOption(bg)}
	{*entry.background		$tixOption(input1_bg)}
	{*entry.foreground		black}
	{*entry.insertBackground	black}
	{*label.font              	$tixOption(bold_font)}
    }

    tixDefOption {TixLabelFrame} {
	{*label.font 	 		$tixOption(bold_font)}
    }

    tixDefOption {TixMultiList} {
	{*Listbox.borderWidth		0}
	{*Listbox.highlightThickness	0}
	{*Scrollbar.background		$tixOption(bg)}
	{*Scrollbar.troughColor		$tixOption(light1_bg)}
	{*Scrollbar.relief		sunken}
	{*Scrollbar.width		15}
	{*f1.borderWidth		2}
	{*f1.relief			sunken}
	{*f1.highlightThickness		2}
    }

    # MwmClient
    #
    tixDefOption {TixMwmClient} {
	{*title.font			$tixOption(menu_font)}
    }

    tixDefOption {TixMDIMenuBar} {
	{*menubar.relief		raised}
	{*menubar.borderWidth		2}
	{*Menubutton.padY 		2}
    }

    # NoteBook
    #
    tixDefOption {TixNoteBook} {
	{.Background			$tixOption(bg)}
	{.nbframe.Background		$tixOption(bg)}
	{.nbframe.font			$tixOption(menu_font)}
	{.nbframe.backPageColor		$tixOption(bg)}
	{.nbframe.inactiveBackground	$tixOption(inactive_bg)}
    }
 
    # OPTION_MENU
    #
    tixDefOption {TixOptionMenu} {
	{*menubutton.font		$tixOption(font)}
    }

    # PANED_WINDOW
    #
    tixDefOption {TixPanedWindow} {
	{.handleActiveBg 		$tixOption(active_bg)}
	{.seperatorBg    		$tixOption(bg)}
	{.handleBg       		$tixOption(dark1_bg)}
    }

    # POPUP MENU
    #
    tixDefOption {TixPopupMenu} {
	{*menubutton.background 	$tixOption(dark1_bg)}
    }

    # SCROLLED_HLIST
    #
    tixDefOption {TixScrolledHList} {
	{*Scrollbar.background		$tixOption(bg)}
	{*Scrollbar.troughColor		$tixOption(light1_bg)}
	{*hlist.highlightBacground	$tixOption(bg)}
	{*hlist.background		$tixOption(light1_bg)}
    }

    tixDefOption {TixScrolledTList} {
	{*Scrollbar.background		$tixOption(bg)}
	{*Scrollbar.troughColor		$tixOption(light1_bg)}
	{*tlist.highlightBacground	$tixOption(bg)}
	{*tlist.background		$tixOption(light1_bg)}
    }

    # SCROLLED_LISTBOX, .. ETC
    #
    tixDefOption {TixScrolledListBox} {
	{*Scrollbar.background		$tixOption(bg)}
	{*Scrollbar.troughColor		$tixOption(light1_bg)}
	{*listbox.highlightBacground	$tixOption(bg)}
	{*listbox.background		$tixOption(light1_bg)}
    }

    tixDefOption {TixScrolledText} {
	{*Scrollbar.background		$tixOption(bg)}
	{*Scrollbar.troughColor		$tixOption(light1_bg)}
    }


    # SCROLLED_WINDOW
    #
    tixDefOption {TixScrolledWindow} {
	{*Scrollbar.background		$tixOption(bg)}
	{*Scrollbar.troughColor		$tixOption(light1_bg)}
	{.frame.background		$tixOption(light1_bg)}
    }


    # SELECT
    #
    tixDefOption {TixSelect} {
    }

    tixDefOption {TixTree} {
	{*Scrollbar.background		$tixOption(bg)}
	{*Scrollbar.troughColor		$tixOption(light1_bg)}
	{*hlist.highlightBacground	$tixOption(bg)}
	{*hlist.background		$tixOption(light1_bg)}
	{*hlist.borderWidth		1}
    }
    # NON ALPHABETICAL ORDER WIDGETS

    # Since TK's option database follows the order-of-declaration rule, not
    # specific-vs-general rule, the options of the widgets below depends on
    # the options of the widget above, so their options must be defined here

    # COMBOBOX
    tixDefOption {TixComboBox} {
	{*Entry.font				$tixOption(font)}
	{*Entry.highlightBacground		$tixOption(bg)}
	{*Entry.background			$tixOption(input1_bg)}
	{*Entry.foreground			black}
	{*Entry.insertBackground		black}
    }

    # FILE_SELECT_BOX
    #
    tixDefOption {TixFileSelectBox} {
	{*Label.font            		$tixOption(bold_font)}
    }

    tixDefOption {TixExFileSelectBox} {
    }
}

#----------------------------------------------------------------------
# The default fontset and schemes
#
#----------------------------------------------------------------------

source ../DefSchm.tcl
rename tixSetDefaultFontset 		tixSetFontset
rename tixSetDefaultScheme-Color 	tixSetScheme-Color
rename tixSetDefaultScheme-Mono 	tixSetScheme-Mono

#----------------------------------------------------------------------
# Action:
#----------------------------------------------------------------------
if [string match TK* [lindex $argv 1]] {
    set isTK 1
} else {
    set isTK 0
}
set schemeName [lindex [split [lindex $argv 1] "."] 0]
source [lindex $argv 1]


tixSetFontset

if {[lindex $argv 0] == "-font"} {

    set isFont 1

    # FontSets will be set in two steps.
    # (1) init fontsets
    #     ... tix checks the validity of the fonts ...
    # (2) add the fontsets into the option database.
    #
    puts "proc tixPref:InitFontSet:$schemeName {} { "
    puts [info body tixSetFontset]
    puts "}"

    puts "proc tixPref:SetFontSet:$schemeName {} { "
    puts "global tixOption"
    if {! $isTK} {
	tixInitOptionDatabase 0
    }
    puts "}"


} else {
    set isFont 0

    # Do the Color First
    #
    puts "proc tixPref:SetScheme-Color:$schemeName {} {"
    puts [info body tixSetScheme-Color]
    if {! $isTK} {
	tixSetScheme-Color
	tixInitOptionDatabase 0
    }
    puts "}"

    # Now Do the Mono
    #
    puts "proc tixPref:SetScheme-Mono:$schemeName {} {"
    puts [info body tixSetScheme-Mono]
    if {! $isTK} {
	tixSetScheme-Mono
	tixInitOptionDatabase 0
    }
    puts "}"
}
