#!/usr/local/bin/wish
# Copyright (C) 1997 Tomohiro Tanaka

# Хѿ
set filemask "*"
set dirmask "*"
set filemain ""
set filemain1 ""


##### ԣ ѡ #####

# ե졼λ
frame .f1
frame .f1.box
frame .f1.mask
frame .f2 
frame .f2.box 
frame .f3

# եʬλ
label	.f1.l1 -text "ե̾"
label	.f1.l2 -text "ե̾"
entry	.f1.e1 -relief ridge -bd 2 -width 25
label   .f1.mask.l1 -text "MASK "
entry	.f1.mask.e1 -relief ridge -bd 2 -width 10 -textvariable filemask
button  .f1.mask.b1 -text "set" -command getfile
scrollbar .f1.box.scroll -bd 2 -relief ridge -command ".f1.box.listbox yview"
listbox .f1.box.listbox -bd 2 -relief ridge \
		-yscrollcommand ".f1.box.scroll set"

#ǥ쥯ȥʬλ
label	.f2.l1 -text "ǥ쥯ȥ"
label	.f2.l2 -text "ߤΥǥ쥯ȥ"
entry	.f2.e1 -relief ridge -bd 2 
message	.f2.mes -relief ridge -bd 2 -width 170 -text [pwd]
scrollbar .f2.box.scroll -bd 2 -relief ridge -command ".f2.box.listbox yview"
listbox .f2.box.listbox -bd 2 -relief ridge \
		-yscrollcommand ".f2.box.scroll set"

# ܥ
button .f3.b1 -text "ϣ" -command exec_fileout
button .f3.b2 -text "󥻥" -command exec_emptyfileout
button .f3.b3 -text "Ȥ򸫤" -command {exec mgtp-disp-file $filemain}

# ĥդ(pack)ʬ
pack .f1.box.listbox .f1.box.scroll -in .f1.box -side left \
		-padx 1m -pady 1m -fill y
pack .f1.mask.l1 .f1.mask.e1 .f1.mask.b1 -in .f1.mask -side left
pack .f1.l1 	-in .f1 -side top -padx 1m -pady 1m 
pack .f1.e1 	-in .f1 -side top -padx 2m -pady 1m -anchor w
pack .f1.l2 	-in .f1 -side top -padx 1m -pady 1m 
pack .f1.box 	-in .f1 -side top -padx 1m -pady 1m
pack .f1.mask 	-in .f1 -side top -padx 1m -pady 1m

pack .f2.box.listbox .f2.box.scroll -in .f2.box -side left \
		-padx 1m -pady 1m -fill y
pack .f2.l1 	-in .f2 -side top -padx 1m -pady 1m -fill y
pack .f2.box 	-in .f2 -side top -padx 1m -pady 1m -fill y
pack .f2.l2 	-in .f2 -side top -padx 1m -pady 1m -fill y
pack .f2.mes 	-in .f2 -side top -padx 1m -pady 1m -fill x

pack .f3.b1 .f3.b3 .f3.b2 -side top -padx 1m -pady 2m

pack .f1 .f2 .f3 -side left -fill y

# ֥륯å
bind .f2.box.listbox <Double-Button-1> {
	setdir; changedir;
}

bind .f1.box.listbox <Double-Button-1> {
	setfile
}


##### ԣ ѡ #####

# եꥹȤκ
proc getfile {} {
	global filemask
	.f1.box.listbox delete 0 end
	set filelist [glob -nocomplain $filemask]
	foreach i $filelist {
		if {[file isfile $i]} {
			.f1.box.listbox insert end $i
		}
	}
}

# ե
proc setfile {} {
	global filemain; global filemain1
	set index [.f1.box.listbox curselection]
	set data [.f1.box.listbox get $index]
	.f1.e1 delete 0 end
	.f1.e1 insert 0 $data
	set filemain [pwd]
        append filemain "/"
        append filemain $data
        set filemain1 $data
	.f3.b1 configure -state normal
	.f3.b3 configure -state normal
}

# ǥ쥯ȥꥹȤκ
proc getdir {} {
	global dirmask; global dirname; 
	.f2.box.listbox delete 0 end
	set dirlist [glob -nocomplain $dirmask]
	.f2.box.listbox insert end ".."
	foreach i $dirlist {
		if {[file isdirectory $i]} {
			.f2.box.listbox insert end $i
		}
	}
	.f2.mes configure -text [pwd]
}

# ǥ쥯ȥ
proc setdir {} {
	set index [.f2.box.listbox curselection]
	set data [.f2.box.listbox get $index]
	.f2.e1 delete 0 end
	.f2.e1 insert 0 $data
}

# ǥ쥯ȥѹ
proc changedir {} {
	set dir [.f2.e1 get]
	cd $dir
	.f1.e1 delete 0 end
	.f1.e1 insert 0 ""
	.f2.e1 delete 0 end
	.f2.e1 insert 0 ""
	getfile
	getdir
}

# ϣν
proc exec_fileout {} {
	global filemain; global filemain1; global argv; 
        set f [open $argv w]
        puts $f $filemain
        puts $f $filemain1
        close $f
        exit
}

# 󥻥ν
proc exec_emptyfileout {} {
	global argv; 
        set f [open $argv w]
        puts $f ""
        puts $f ""
        close $f
        exit
}

getfile
getdir
.f3.b3 configure -state disabled
.f3.b1 configure -state disabled




