Add tkDolTool, circa 2006
This commit is contained in:
118
tkDolTool
Executable file
118
tkDolTool
Executable file
@@ -0,0 +1,118 @@
|
|||||||
|
#!/usr/bin/wish
|
||||||
|
# andrew K (C) 2005
|
||||||
|
|
||||||
|
# Welcome to tkDolTool. These are the comments. The interface is a bit ugly, but it works.
|
||||||
|
# The options here are fairly obvious; the IP addresses of your gamecube and your
|
||||||
|
# PC, and the port your gamecube is listening on if you are sending via netcat.
|
||||||
|
# Type in or browse to the location of the DOL to upload. The program will block
|
||||||
|
# while trying to load the DOL, and will display the results when finished.
|
||||||
|
# Obviously, all the appropriate programs need to be in your path. (nc and psoload2)
|
||||||
|
# if you're running on windows, change these to nc.exe and psoload2.exe -
|
||||||
|
|
||||||
|
# This is just a quick hack to bring DOL loading out of the command line and into the
|
||||||
|
# GUI. I mainly did it because I wanted to smack a "reload" button after doing a compile,
|
||||||
|
# without having to be in a bash shell.
|
||||||
|
|
||||||
|
# This app saves your settings in your $HOME/ directory in $HOME/.tkDolTool
|
||||||
|
|
||||||
|
# execute with wish, the interpreter for the TK extension to the TCL language.
|
||||||
|
# get it at http://www.tcl.tk/software/
|
||||||
|
|
||||||
|
set globalWelcome {Welcome to tkDolTool v 1.0 (AndrewK). Please read the source comments.}
|
||||||
|
set dolLoadMethod 0
|
||||||
|
|
||||||
|
wm withdraw .
|
||||||
|
set mainWin [toplevel .mainWin]
|
||||||
|
wm title .mainWin {tkDolTool : X11 Gamecube DOL Loader}
|
||||||
|
|
||||||
|
set fileFrame [frame $mainWin.fileFrame]
|
||||||
|
pack [label $fileFrame.dolFNLabel -text {DOL Filename}] -side left
|
||||||
|
pack [entry $fileFrame.dolFileName] -side left -fill x -expand true
|
||||||
|
pack [button $fileFrame.dolSelect -text {Browse ...} -default active -command {
|
||||||
|
$fileFrame.dolFileName delete 0 9999
|
||||||
|
$fileFrame.dolFileName insert 1 [tk_getOpenFile -title {Please select a DOL to load ...} -initialfile [$fileFrame.dolFileName get]] }] -side right
|
||||||
|
pack $fileFrame
|
||||||
|
|
||||||
|
set settingsFrame [frame $mainWin.settingsFrame]
|
||||||
|
pack [label $settingsFrame.gcIPAddrLabel -text {GCN IP: }] -side left
|
||||||
|
pack [entry $settingsFrame.gcIPAddr ] -side left
|
||||||
|
pack [label $settingsFrame.pcIPAddrLabel -text {PC IP: }] -side left
|
||||||
|
pack [entry $settingsFrame.pcIPAddr ] -side left
|
||||||
|
pack [label $settingsFrame.gcNetcatPortLabel -text {GCN Port:}] -side left
|
||||||
|
pack [entry $settingsFrame.gcNetcatPort ] -side left
|
||||||
|
pack $settingsFrame
|
||||||
|
|
||||||
|
set outputFrame [frame $mainWin.outputFrame]
|
||||||
|
pack [text $outputFrame.commandOutput -height 15 -width 80 -wrap word]
|
||||||
|
$outputFrame.commandOutput insert end "\t$globalWelcome\n\nCommand output:"
|
||||||
|
pack $outputFrame
|
||||||
|
|
||||||
|
set buttonFrame [frame $mainWin.buttonFrame]
|
||||||
|
pack [frame $buttonFrame.rbuttons -relief groove -bd 3] -side left
|
||||||
|
pack [label $buttonFrame.rbuttons.loadMethod -text {Load method:}] -side left
|
||||||
|
pack [radiobutton $buttonFrame.rbuttons.psoLoad -text {PSOLoad} -variable dolLoadMethod -value 0] -side left
|
||||||
|
pack [radiobutton $buttonFrame.rbuttons.psoReload -text {PSO Reload} -variable dolLoadMethod -value 1] -side left
|
||||||
|
pack [radiobutton $buttonFrame.rbuttons.netcat -text {Netcat} -variable dolLoadMethod -value 2] -side left
|
||||||
|
pack [button $buttonFrame.closeButton -text {Exit} -default normal -command {
|
||||||
|
saveSettings $dolLoadMethod [$settingsFrame.gcIPAddr get] [$settingsFrame.pcIPAddr get] [$settingsFrame.gcNetcatPort get] [$fileFrame.dolFileName get]
|
||||||
|
exit 0 }] -side right
|
||||||
|
pack [button $buttonFrame.loadButton -text {Load} -default normal -command {
|
||||||
|
$outputFrame.commandOutput insert end "\n\nBlocking until completion of load command!\n\n"
|
||||||
|
loadDOL $dolLoadMethod [$settingsFrame.gcIPAddr get] [$settingsFrame.pcIPAddr get] [$settingsFrame.gcNetcatPort get] [$fileFrame.dolFileName get] $outputFrame.commandOutput} ] -side right
|
||||||
|
pack $buttonFrame -before $outputFrame
|
||||||
|
|
||||||
|
proc loadDOL { loadmethod gcip pcip port dolfile output} {
|
||||||
|
set result ""
|
||||||
|
set command ""
|
||||||
|
|
||||||
|
if {$loadmethod == 0} {
|
||||||
|
set result [exec psoload2 -i $pcip $dolfile]
|
||||||
|
}
|
||||||
|
if {$loadmethod == 1} {
|
||||||
|
set result [exec psoload2 -R $gcip $dolfile]
|
||||||
|
}
|
||||||
|
if {$loadmethod == 2} {
|
||||||
|
set result [exec nc $gcip $port -s $pcip < $dolfile]
|
||||||
|
}
|
||||||
|
$output insert end $result
|
||||||
|
}
|
||||||
|
|
||||||
|
proc saveSettings { loadmethod gcip pcip port dolfile } {
|
||||||
|
# save the user's current settings for later
|
||||||
|
cd
|
||||||
|
set confout [open ".tkDolTool" w]
|
||||||
|
puts $confout $loadmethod
|
||||||
|
puts $confout $gcip
|
||||||
|
puts $confout $pcip
|
||||||
|
puts $confout $port
|
||||||
|
puts $confout $dolfile
|
||||||
|
close $confout
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
proc loadSettings { loadmethod gcip pcip port dolfile } {
|
||||||
|
#load any previous settings
|
||||||
|
cd
|
||||||
|
set confin [open ".tkDolTool" a+]
|
||||||
|
seek $confin 0 start
|
||||||
|
gets $confin tmpdata
|
||||||
|
if { [string length $tmpdata] == 0 } {
|
||||||
|
# there are no previous settings, this is the first run
|
||||||
|
close $confin
|
||||||
|
return
|
||||||
|
}
|
||||||
|
set loadmethod $tmpdata
|
||||||
|
gets $confin tmpdata
|
||||||
|
$gcip insert end $tmpdata
|
||||||
|
gets $confin tmpdata
|
||||||
|
$pcip insert end $tmpdata
|
||||||
|
gets $confin tmpdata
|
||||||
|
$port insert end $tmpdata
|
||||||
|
gets $confin tmpdata
|
||||||
|
$dolfile insert end $tmpdata
|
||||||
|
close $confin
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
loadSettings $dolLoadMethod $settingsFrame.gcIPAddr $settingsFrame.pcIPAddr $settingsFrame.gcNetcatPort $fileFrame.dolFileName
|
||||||
Reference in New Issue
Block a user