#!@@RHSWISH@@ -f

set control_panel_lib_dir @@PANELDIR@@

source $control_panel_lib_dir/balloon-help.tcl
set env(CONTROL_PANEL_LIB_DIR) $control_panel_lib_dir

set module_count 0
set module_program(0) ""
set module_bitmap(0) ""
set module_name(0) ""
set module_help(0) ""
set balloon_help 0

proc load_modules {} {

	global control_panel_lib_dir
	global module_program module_bitmap module_name module_help
	global module_count
	
	set module_count 0

	if {[catch {glob $control_panel_lib_dir/*.init} mods] != "0"} {
		return
	}
	set module_program($module_count) lim
	set module_bitmap($module_count) lim.xpm
	set module_name($module_count) "RHS Linux Installation Manager"
	set module_help($module_count) "The Linux Installation Manager lets\nyou install and uninstall various\nsource and binary packages"
	incr module_count
	foreach x $mods {
		set f [open $x r]
		gets $f module_program($module_count)
		gets $f module_bitmap($module_count)
		gets $f module_name($module_count)
		set module_help($module_count) ""
		while {[gets $f line] != "-1"} {
			if {$module_help($module_count) == ""} {
				set module_help($module_count) "$line"
			} else {
				set module_help($module_count) "$module_help($module_count)\n$line"
			}
		}
		close $f
		incr module_count
	}
}

proc create_ui {} {

	frame .menu -relief raised -borderwidth 2
	menubutton .menu.cp -text "File" -menu .menu.cp.menu
	menubutton .menu.mod -text "Modules" -menu .menu.mod.menu
	menubutton .menu.help -text "Help" -menu .menu.help.menu

	menu .menu.cp.menu
#	.menu.cp.menu add command -label "About" -command menu_about
	.menu.cp.menu add command -label "Quit" -command menu_quit

	menu .menu.mod.menu

	menu .menu.help.menu
	.menu.help.menu add checkbutton -label "Balloon Help" -variable balloon_help

	pack .menu.cp .menu.mod -side left
	pack .menu.help -side right
	tk_menuBar .menu .menu.cp .menu.mod .menu.help

	canvas .c -scrollregion {0 0 128 212} -width 128 -height 212 \
		-yscroll ".s set" -scrollincrement 1 -bg black
	scrollbar .s -relief sunken -command ".c yview"

	pack .menu -side top -fill x
	pack .s -side right -fill y
	pack .c -side right -fill both -expand true

	wm geometry . 147x150
	wm minsize . 147 150
	wm maxsize . 147 800
}

proc display_modules {} {

	global module_program module_bitmap module_name module_help
	global module_count tixBal control_panel_lib_dir

	## Delete Modules Menu
	.menu.mod.menu delete 0 last

	## Resize the canvas and scroll region
	.c configure -height [expr $module_count * 112 + 12]
	.c configure -scrollregion "0 0 128 [expr $module_count * 112 + 12]"

	## Resize main window (with a max and min) 
	if {$module_count < 1} {
		wm geometry . 147x150
		wm maxsize . 147 150
	} elseif {$module_count > 4} {
		wm geometry . 147x[expr 4 * 112 + 38]
		wm maxsize . 147 [expr $module_count * 112 + 38]
	} else {
		wm geometry . 147x[expr $module_count * 112 + 38]
		wm maxsize . 147 [expr $module_count * 112 + 38]
	}

	for {set i 0} {$i < $module_count} {incr i} {
		set x [.c create bitmap 64 [expr $i * 112 + 16] -anchor n \
			-bitmap @$control_panel_lib_dir/$module_bitmap($i) \
			-background Black]
		.c create text 64 [expr $i * 112 + 84] -text $module_name($i) \
			-anchor n -width 128 -justify center -fill Green

		## Add bindings to bitmap
		.c bind $x <Any-Enter> "tixBalStart $x 200"
		.c bind $x <Any-Leave> "tixBalEnd $x 200"
		.c bind $x <Double-Button-1> "run_module $i"
		set tixBal($x) $module_help($i)

		## Add to Modules menu
		.menu.mod.menu add command -label $module_name($i) -command "run_module $i"
	}
}

proc run_module {i} {
	global module_program control_panel_lib_dir

	if {$module_program($i) == "lim"} {
	    exec lim &
	} else {
	    exec $module_program($i) &
	}
}

proc menu_about {} {
}

proc menu_quit {} {
	exit 0
}

##########################################################
## Main

create_ui
load_modules
display_modules
