configfile menu

# "Description: popup menu config file"

# { command NAME COMMAND adds a normal menu entry }
# { menu NAME starts a submenu }
# { end ends the most recent submenu }
# { checkbutton NAME VARIABLE COMMAND adds a checkbutton entry which toggles the global variable and runs the command }
# { radiobutton NAME VARIABLE VALUE COMMAND adds a radiobutton entry which sets the global variable to value and runs the command }
# { the command may be null for checkbutton and radiobutton options }
# { tcl COMMAND evaluates the command and uses its return value to add to the menu }
# { the tcl command should return a list containing the above options, the same format as this file }

channel {
    command Ping "/ping $channel"
    command Banlist... {
        /echo $channel \[ channel \] Retrieving banlist...
        /mode $channel b
    }
    command Rejoin {
        /part $channel
        /join $channel
    }
    command Part "/part $channel"
    command Modes... "/mode $channel"
}

query {
    menu Ctcp
     command Ping "/ping $nick"
     command Version "/ctcp $nick version"
     command Clientinfo "/ctcp $nick clientinfo"
     command Userinfo "/ctcp $nick userinfo"
     command Finger "/ctcp $nick finger"
     command Time "/ctcp $nick time"
    end
    menu Dcc
     command Chat "/dcc chat $nick"
     command Send... "/dcc send $nick"
    end
    command Whois "/whois $nick $nick"
    command Who "/who $nick"
}

dcc {
    command Send... "/dcc send $nick"
    command Close "/dcc close chat $nick"
    command Whois "/whois $nick"
    command Query... "/query $nick"
}

user {
    menu Ctcp
     command Ping {/ping [join $nicks ,]}
     command Version {/ctcp [join $nicks ,] version}
     command Clientinfo {/ctcp [join $nicks ,] clientinfo}
     command Userinfo {/ctcp [join $nicks ,] userinfo}
     command Finger {/ctcp [join $nicks ,] finger}
     command Time {/ctcp [join $nicks ,] time}
    end
    command Whois {
        if {[llength $nicks] == 1} {
            /whois $nick $nick
        } else {
            /whois [join $nicks ,]
        }
    }
    command Who {
        set after 0
        foreach x $nicks {
            after $after [list /who $x]
            incr after 1000
        }
    }
    command Query... "/query $nick"
    menu Dcc
     command Chat "/dcc chat $nick"
     command Send... "/dcc send $nick"
    end
    menu Control
    command Op {
        set mode ""
        set blah ""
        foreach x $nicks {
            append mode [string map {1 -o 0 +o} [isop $channel $x]]
            lappend blah $x
            if {[llength $blah] == 4} {
                /mode $channel $mode [join $blah]
                set blah ""
                set mode ""
            }
        }
        if {$blah != ""} {
            /mode $channel $mode [join $blah]
        }
    }
    command Voice {
        set mode ""
        set blah ""
        foreach x $nicks {
            append mode [string map {1 -v 0 +v} [isvoice $channel $x]]
            lappend blah $x
            if {[llength $blah] == 4} {
                /mode $channel $mode [join $blah]
                set blah ""
                set mode ""
            }
        }
        if {$blah != ""} {
            /mode $channel $mode [join $blah]
        }
    }
    command QKick {
        global prefs
        /kick $channel [join $nicks ,] [lindex $prefs(kick) 0]
    }
    command "Q B/K" "/qbk $channel [join $nicks]"
    command Kick/Ban... "/bk $channel $nick"
    command Ignore {
        if {[set addr [address $nick 3]] != ""} {
            /ignore $addr
        } else {
            /ignore $nick
        }
    }
}

personal {
    menu "Mark Away"
    tcl {set r ""; foreach a $prefs(away) {lappend r "command \"$a\" \"/away $a\""}; return [join $r]}
    end
    command "Unmark Away" /away
    menu "Join Channel"
    tcl {set r ""; foreach a $prefs(chan) {lappend r "command \"$a\" \"/join $a\""}; return [join $r]}
    separator
    command All "/join [join $prefs(chan) ,]"
    end
    menu "Set Nick"
    tcl {set r ""; foreach a $prefs(nick) {lappend r "command \"$a\" \"/nick $a\""}; return [join $r]}
}

server {
    command Ping /sping
    command Links... /links
    command List... /list
    command Lusers /lusers
    command Motd /motd
    menu "Connect to"
    tcl {
        set r ""
        # group all the servers by network name
        foreach x [split $prefs(server) "\n"] {
            set x [split $x :]
            lappend serv([lindex $x 1]) $x
        }
        # for each network in order
        foreach x [lsort [array names serv]] {
            if {$x == ""} continue
            lappend r "menu $x"
            # for all servers in the network
            foreach a $serv($x) {
                set name [join [lrange $a 4 end]]
                if {$name == ""} {
                    set name [string trim [lindex $a 0]]
                }
                lappend r "command \"$name\" \"/server [lindex $a 0]:[lindex $a 2] [lindex $a 3]\""
            }
            lappend r separator "command \"Random\" \"/server [string tolower $x]\"" end
        }
        return [join $r]
    }
}

url {
    command "Open New" "/exec netscape -remote openURL($url, new-window)"
    command Copy ""
    command Fetch "/exec fetch $url"
    command Bookmark "/exec netscape -remote addBookmark($url)"
}

REMOVE!misc {
    command Example {Send "i suck"}
    menu test
    command Blah test
    menu test2
    separator
    command blah2 test
    end
    command blah3 test
    end
    command blah4 test
}
