dialog srvList {
title "Server List"
size -1 -1 100 110
option dbu
text "TopicText", 10, 10 0 80 8, center
button "<", 20, 0 0 10 10
button ">", 30, 90 0 10 10
text "server 1", 40, 0 10 75 8
link "Connect", 45, 78 10 22 8
text "server 2", 50, 0 20 75 8
link "Connect", 55, 78 20 22 8
text "server 3", 60, 0 30 75 8
link "Connect", 65, 78 30 22 8
text "server 4", 70, 0 40 75 8
link "Connect", 75, 78 40 22 8
text "server 5", 80, 0 50 75 8
link "Connect", 85, 78 50 22 8
text "server 6", 90, 0 60 75 8
link "Connect", 95, 78 60 22 8
text "server 7", 100, 0 70 75 8
link "Connect", 105, 78 70 22 8
text "server 8", 110, 0 80 75 8
link "Connect", 115, 78 80 22 8
text "server 9", 120, 0 90 75 8
link "Connect", 125, 78 90 22 8
text "server 10", 130, 0 100 75 8
link "Connect", 135, 78 100 22 8
}
on *:DIALOG:srvList:INIT:*: {
; create a hash table that can hold our server list.
; The rest will be dynamic from here
if (!$hget(srvList)) /hmake srvList 10
; add the servers in the form of the following:
; /hadd srvList <Heading> <Server>[,Server2,Server3,...]
; note to use underscores (_) in the heading in place of
; spaces
/hadd srvList Access_Net_IRC_Servers $&
Graz.AT.EU.AccessIRC.Net,Lexington.KY.US.AccessIRC.Net,Florence.OR.US.AccessIRC.Net, $+ $&
Toronto.ON.CA.AccessIRC.Net,Regina.SK.CA.AccessIRC.Net,Caledonia.ON.CA.AccessIRC.Net, $+ $&
SanDiego.CA.US.AccessIRC.Net,Burlington.NJ.US.AccessIRC.Net,Winchester.KY.US.AccessIRC.Net
/hadd srvList Access_Net_IRC_Servers_(cont.) $&
Powell.OH.US.AccessIRC.Net,Trondheim.NO.EU.AccessIRC.Net,Boise.ID.US.AccessIRC.Net, $+ $&
LongBeach.CA.US.AccessIRC.net
/hadd srvList DALnet_IRC_Servers $&
misc-e.dal.net,Astro.ga.us.dal.net,Jade.va.us.dal.net,misc-e.dal.net,kernel.ga.us.dal.net, $+ $&
animals.ca.us.dal.net,diamond.hub.dal.net,eternal-c.dal.net,renew-r.hub.dal.net
/hadd srvList NewNet_IRC_Servers $&
irc.theflux.org,irc.newnet.net,irc.eskimo.com,irc.aohell.org,irc.josephbarnhart.net, $+ $&
irc2.fdt.net,irc.eviltwins.org,irc.dividedspace.com,irc.moo.me.uk
/hadd srvList NewNet_IRC_Servers_(cont.) $&
irc.d0t.net,irc.dragonzkeep.com,irc.firex.org,irc.linux-friendly-56k.com,irc.smartnoc.com, $+ $&
irc.sweatnet.net,eu.newnet.net,irc.me.uk,olympic.olympos-net.gr
;
; you can do the rest if you like this setup.
; I can't be bothered putting all your server in here
;
/set %srvList.Pane 1
/srvList.Display $dname
; we are on the first "pane", you can't go back
/did -b $dname 20
}
on *:DIALOG:srvList:SCLICK:*: {
var %pane = %srvList.Pane
; back one pane
if ($did == 20) var %pane = %pane - 1
; forward a pane
else if ($did == 30) var %pane = %pane + 1
; server connects
else if ($did isnum 45-135) /server -m $did($calc($did - 5))
; Change pane if necessary
if (%pane != %srvList.Pane) {
/set %srvList.Pane %pane
/srvList.Display $dname
if (%pane == 1) /did -b $dname 20
else /did -e $dname 20
if (%pane == $hget(srvList, 0).item) /did -b $dname 30
else /did -e $dname 30
}
}
on *:DIALOG:srvList:CLOSE:*: {
if ($hget(srvList)) /hfree srvList
/unset %srvList.Pane
}
alias srvList.display {
var %pane = %srvList.Pane, %dname = $1
if ($hget(srvList, %pane).item) {
var %topic = $ifmatch
; topic text
/did -ra %dname 10 $replace(%topic, _, $chr(32))
; Server List
/did -ra %dname 40,50,60,70,80,90,100,110,120,130
/did -h %dname 45,55,65,75,85,95,105,115,125,135
var %s = 1, %did = 40, %servers = $sorttok($hget(srvList, %topic), 44)
while ($gettok(%servers, %s, 44)) {
/did -vra %dname %did $ifmatch
/did -v %dname $calc(%did + 5)
/inc %did 10
/inc %s
}
}
}