aIRC — File Browser

aIRCv0.8.69 / aIRCv0.8.69 / script / network.mrc

network.mrc — 24.43 KB — Download this file

;/**********************************************************************
; *
; * aIRC
; * Networks
; *
; **********************************************************************/

alias _nsetup {
  unset %c.nsetup.*
  if (-* iswm $1) {
    %c.nsetup.service = 1
    tokenize 32 $2-
  }
  if ($1 != $null) && ($ini($_snetworkini,$1)) { %c.nsetup.initnetwork = $1 }
  else { %c.nsetup.initnetwork = %.network }
  %c.nsetup.nick = $me
  %c.nsetup.chan = $chan
  if ($dialog(_nsetup)) { _nsetup.init }
  else { _dialog -m _nsetup _nsetup }
  unset %c.nsetup.*
}
alias _nsetup.writesetup {
  var %d = _nsetup,%sel = $did(%d,498,1).sel,%net = $did(%d,498,%sel),%file
  var %modes_on_connect,%modes_on_oper,%modes_oper,%on_connect,%minserver,%autojoin
  %modes_on_connect = $did(%d,1011).state $gettok($did(%d,1012),1,32)
  %modes_on_oper = $did(%d,1021).state $gettok($did(%d,1022),1,32)
  %modes_oper = $did(%d,1031).state $gettok($did(%d,1032),1-2,32)
  %on_connect = $did(%d,1111).state $did(%d,1112)
  %minserver = $did(%d,1121).state $did(%d,1122)
  %autojoin = $didtok(%d,1217,32)
  if (%sel == 1) {
    var %file = $_tmpdir(snetwork.ini)
    writeini $"(%file) default modes_on_connect %modes_on_connect
    writeini $"(%file) default modes_on_oper %modes_on_oper
    writeini $"(%file) default modes_oper %modes_oper
    writeini $"(%file) default on_connect %on_connect
    writeini $"(%file) default minserver %minserver
    if (%autojoin != $null) { writeini $"(%file) default autojoin %autojoin }
    else { remini $"(%file) default autojoin }
  }
  else {
    var %file = $_tmpdir(snetwork.ini)
    if ($did(%d,1010).state) { remini $"(%file) %net modes_on_connect }
    else { writeini $"(%file) %net modes_on_connect %modes_on_connect }
    if ($did(%d,1020).state) { remini $"(%file) %net modes_on_oper }
    else { writeini $"(%file) %net modes_on_oper %modes_on_oper }
    if ($did(%d,1030).state) { remini $"(%file) %net modes_oper }
    else { writeini $"(%file) %net modes_oper %modes_oper }
    if ($did(%d,1110).state) { remini $"(%file) %net on_connect }
    else { writeini $"(%file) %net on_connect %on_connect }
    if ($did(%d,1120).state) { remini $"(%file) %net minserver }
    else { writeini $"(%file) %net minserver %minserver }
    if ($did(%d,1210).state) { remini $"(%file) %net autojoin }
    elseif (%autojoin == $null) { writeini $"(%file) %net autojoin , }
    else { writeini $"(%file) %net autojoin %autojoin }
  }
  flushini $"(%file)
}
dialog _nsetup {
  size -1 -1 380 185
  option dbu
  title "Network Setup"

  text "Network:",1,10 5 30 8
  list 498,10 15 65 128,size
  button "Add",3,10 148 30 15
  button "Remove",4,45 148 30 15

  tab "Setup",1001,80 2 295 160

  box "Modes",1002,85 20 140 55,tab 1001
  check "Default",1010,90 30 27 8,tab 1001
  check "Set on connect",1011,120 30 50 8,tab 1001
  edit "",1012,170 28 50 10,tab 1001 autohs
  check "Default",1020,90 45 27 8,tab 1001
  check "Set on oper",1021,120 45 50 8,tab 1001
  edit "",1022,170 43 50 10,tab 1001 autohs
  check "Default",1030,90 60 27 8,tab 1001
  check "/oper",1031,120 60 50 8,tab 1001
  edit "",1032,170 58 50 10,tab 1001 autohs

  box "Misc",1101,230 20 140 55,tab 1001
  check "Default",1110,235 30 27 8,tab 1001
  check "On connect event",1111,265 30 55 8,tab 1001
  edit "",1112,320 28 45 10,tab 1001 autohs
  check "Default",1120,235 45 27 8,tab 1001
  check "min. # of servers or reconnect",1121,265 45 80 8,tab 1001
  edit "",1122,350 43 15 10,tab 1001 autohs
  ;  check "Default",1130,235 60 27 8,tab 1001
  ;  check "",1131,265 60 50 8,tab 1001
  ;  edit "",1132,315 58 50 10,tab 1001 autohs

  box "Autojoin",1201,85 77 285 80,tab 1001
  check "Default",1210,90 90 27 8,tab 1001
  list 1212,120 90 120 70,tab 1001
  button "Up",1213,245 90 30 15,tab 1001
  button "Down",1214,245 110 30 15,tab 1001
  button "Add",1215,280 90 30 15,tab 1001
  button "Remove",1216,280 110 30 15,tab 1001
  list 1217,120 90 120 70,hide
  button "Edit Pass",1218,315 90 30 15,tab 1001

  tab "Services",1501

  box "Services",1511,85 20 285 30,tab 1501
  text "Profile:"1512,90 32 20 10,tab 1501
  combo 499,110 30 80 100,drop tab 1501
  text "Bots/Services:"1514,200 32 35 10,tab 1501
  edit "",1515,240 30 120 10,autohs tab 1501

  box "Registered Channels",1601,85 55 140 100,tab 1501
  list 398,90 67 75 74,sort tab 1501
  button "Add",1611,100 135 25 15,tab 1501
  button "Remove",1612,130 135 25 15,tab 1501
  text "Password:",1620,170 67 30 10,tab 1501
  edit "",1621,170 77 50 10,pass autohs tab 1501
  text "Your level:",1630,170 90 30 10,tab 1501
  combo 1631,170 100 50 100,drop tab 1501
  combo 1632,170 100 50 100,drop edit hide tab 1501
  edit "",1635,170 100 50 10,autohs hide tab 1501
  edit "",1633,100 100 100 100,hide autohs
  edit "",1634,100 100 100 100,hide autohs
  text "Select bot:",1640,170 115 30 10,tab 1501
  combo 1641,170 125 50 100,drop tab 1501

  box "Registered Nicks",1701,230 55 140 100,tab 1501
  list 399,235 67 75 74,sort tab 1501
  button "Add",1711,245 135 25 15,tab 1501
  button "Remove",1712,275 135 25 15,tab 1501
  text "Password:",1720,315 67 30 10,tab 1501
  edit "",1721,315 77 50 10,pass autohs tab 1501
  text "Your main nick:",1722,315 90 50 10,tab 1501
  edit "",1723,315 100 50 10,autohs tab 1501

  button "&Ok",2990,300 167 30 15,ok
  button "&Cancel",2991,340 167 30 15,cancel
}
ON *:DIALOG:_nsetup:*:*:{
  if ($devent == init) {
    _mdx.init $_icofile(network.ico)
    _dummy $_lang.loaddialog($dname,$dname,00086969,main.lang,$scriptdir)
    _nsetup.init
  }
  elseif ($devent == sclick) {
    if ($did == 3) { .timer -o 1 0 _nsetup.addnetwork }
    elseif ($did == 4) { _nsetup.remnetwork }
    elseif ($did == 498) { _nsetup.selectnet }
    elseif ($did == 1210) {
      _nsetup.writesetup
      _nsetup._selectnet_autojoin
    }
    elseif ($did == 1213) {
      _dialog.up $dname 1212 1212,1217
      _nsetup.writesetup
    }
    elseif ($did == 1214) {
      _dialog.down $dname 1212 1212,1217
      _nsetup.writesetup
    }
    elseif ($did == 1215) {
      _nsetup.writesetup
      _nsetup.addautojoin
    }
    elseif ($did == 1216) {
      _nsetup.writesetup
      if ($did($dname,1212,1).sel) {
        var %sel = $ifmatch
        did -d $dname 1212,1217 %sel
        if (%sel <= $did($dname,1212).lines) { did -c $dname 1212 %sel }
        else { did -c $dname 1212 $calc(%sel - 1) }
        _nsetup.writesetup
      }
    }
    elseif ($did == 1218) { _nsetup.autojoineditpass }
    elseif ($did == 1501) { .timer -o 1 0 _nsetup.actservices }
    elseif ($did == 398) { _nsetup.selectchan }
    elseif ($did == 1611) { .timer -o 1 0 _nsetup.addchan }
    elseif ($did == 1612) { _nsetup.remchan }
    elseif ($did == 1711) { .timer -o 1 0 _nsetup.addnick }
    elseif ($did == 1712) { _nsetup.remnick }
    elseif ($istok(1631 1632,$did,32)) { did -o $dname 1633 1 $did($did,$did($did,1).sel) }
    elseif ($did == 1635) { did -o $dname 1633 1 $did(1635) }
    elseif ($did == 399) { _nsetup.selectnick }
    elseif ($did == 2990) {
      _nsetup.ok
      _unloadnetworkmrc
    }
    elseif ($did == 2991) { _unloadnetworkmrc }
  }
  elseif ($devent == edit) {
    if ($did == 1632) || ($did == 1635) { did -o $dname 1633 1 $did($did) }
  }
  elseif ($devent == dclick) {
    if ($did == 1212) { _nsetup.autojoineditpass }
  }
  if (($devent == sclick) && ($did == 499)) || (($devent == edit) && (($did == 1723) || ($did == 1515))) {
    _nsetup.writenet
    if ($devent == sclick) { _nsetup._selectnet_services }
  }
  if ($did isnum 1001-1199) {
    _nsetup.writesetup
    if ($devent == sclick) { _nsetup._selectnet_setup }
  }
  if ($did isnum 1601-1699) { _nsetup.writechan }
  if ($did isnum 1701-1799) { _nsetup.writenick }
}
alias _nsetup.autojoineditpass {
  _nsetup.writesetup
  if ($did($dname,1212,1).sel) {
    var %sel = $ifmatch,%chan = $gettok($did($dname,1212,%sel),1,32),%pass,%tp = $gettok($did($dname,1217,%sel),2-,44)
    if (%tp == $null) { %tp = $chan(%chan).pass }
    %pass = $_parameterpass($null,0,Autojoin channels [/nsetup],1,%tp,New Password for [ %chan ] <CRLF>Cancel for no password:)
    did -o $dname 1217 %sel %chan $+ , $+ $iif(%pass != $null,%pass,$null)
    if (%pass == $null) { var %pass }
    else { %pass = * }
    did -co $dname 1212 %sel %chan %pass
    _nsetup.writesetup
  }
}
alias _nsetup.addautojoin {
  var %d = _nsetup,%c,%chan,%i = 1,%pass,%tmp = 0
  if ($dialog(%d) == $null) { return }
  while (%i <= $chan(0)) {
    ;;;
    if ($istok($didtok(%d,1212,32),$chan(%i),32) == $false) {
      %c = $chan(%i)
      break
    }
    inc %i
  }
  %chan = $_parameter($null,1,Autojoin channels [/nsetup],ischan,%c,Channel:)
  %pass = $_parameterpass($null,0,Autojoin channels [/nsetup],1,$chan(%chan).pass,Password for [ %chan ] <CRLF>Cancel for no password:)
  if ($dialog(%d) == $null) { return }
  %i = $did(%d,1212).lines
  while (%i) {
    if ($gettok($did(%d,1217,%i),1,32) == %chan) {
      did -d %d 1212,1217 %i
      break
    }
    dec %i
  }
  did -a %d 1217 %chan $+ , $+ $iif(%pass != $null,%pass,$null)
  if (%pass == $null) { var %pass }
  else { %pass = * }
  did -a %d 1212 %chan %pass
  _nsetup.writesetup
}
alias _nsetup.addnetwork {
  var %d = _nsetup,%net,%i,%nets,%file = $_tmpdir(snetwork.ini)
  if ($dialog(%d) == $null) { return }
  if ($did(%d,498,%t) != $null) { remini $"(%file) $ifmatch }
  %i = $did(%d,498).lines
  while (%i) {
    %nets = %nets $did(%d,498,%i)
    dec %i
  }
  %net = $_parameter($null,1,Network Services [/services],alias:_nsetup_isvalidnewnetwork,$iif($_not($istok(%nets,%.network,32)),%.network),Network:<CRLF>[One word please])
  if ($dialog(%d) == $null) { return }
  _dialog.add %d 498 %net
  _nsetup.selectnet
  _nsetup.writenet
}
alias _nsetup_isvalidnewnetwork {
  var %2 = $gettok(%_parm.edit,2,32),%3 = $gettok(%_parm.edit,3,32)
  if ($0 == 1) && ($len($1-) > 3) && ($1- != default) { return 1 }
}

alias _nsetup.remnetwork {
  var %d = _nsetup,%net,%i,%t = $did(%d,498,1).sel,%file = $_tmpdir(snetwork.ini),%win = @__nsetupremnetwork
  if (%t == 1) { return }
  %net = $did(%d,498,%t)
  if (%net != $null) { remini $"(%file) $ifmatch }
  if (%t) { did -d %d 498 %t }
  if ($did(%d,498,%t)) { did -c %d 498 %t }
  else { did -c %d 498 $calc(%t - 1) }
  _nsetup.rem_snetwork
  _nsetup.selectnet
}
alias _nsetup.rem_snetwork {
  var %d = _nsetup,%net = $1,%file,%win = @__nsetupremnetwork,%t = $did(%d,498,1).sel,%net = $did(%d,498,%t)
  _openwins %win
  %file = $_tmpdir(schan.ini)
  filter -fwx $"(%file) %win %net *
  savebuf %win $"(%file)
  clear %win
  %file = $_tmpdir(snick.ini)
  filter -fwx $"(%file) %win %net *
  savebuf %win $"(%file)
  close -@ %win
}
alias _nsetup.init {
  var %d = _nsetup,%n = $ini($_snetworkini,0),%i = 1,%win = @__nsetupinit,%t
  .copy -o " $+ $_schanfile $+ " " $+ $_tmpdir(schan.ini) $+ "
  .copy -o " $+ $_snickfile $+ " " $+ $_tmpdir(snick.ini) $+ "
  .copy -o " $+ $_snetworkini $+ " " $+ $_tmpdir(snetwork.ini) $+ "
  did -ac %d 498 --Default--
  did -ac %d 499 none
  close -@ %win
  window -hs %win
  _dummy $findfile($_fixdir($_scriptdir),*.mrcn,0,_nsetup.loadprofiles $1-)
  if ($dialog(%d)) && ($window(%win)) { _win2dialog %win %d 499 * }

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; shit!
  did -o %d 499 1 none
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  close -@ %win
  while (%i <= %n) {
    %t = $ini($_snetworkini,%i)
    if (%t != default) { did $iif(%t == %c.nsetup.initnetwork,-ac,-a) %d 498 %t }
    inc %i
  }
  if (%c.nsetup.service) { .timer -o 1 0 _nsetup.actservices }
  _nsetup.sortnetworks
  _nsetup.selectnet
}
alias _nsetup.actservices {
  var %d = _nsetup
  if ($dialog(%d) == $null) { return }
  did -c %d 1501
  _nsetup.selectnet
  did -f %d 1515
}
alias _nsetup.loadprofiles {
  var %l = $read -ns";services" $1-
  if (%l != $null) { aline @__nsetupinit %l }
}
alias _nsetup.sortnetworks {
  var %d = _nsetup,%win = @__nsetupsortnetworks,%s = $did(%d,498,$did(%d,498).sel),%i = 2,%l
  close -@ %win
  window -hs %win
  %i = 2
  while (%i <= $did(%d,498).lines) {
    aline %win $did(%d,498,%i)
    inc %i
  }
  did -r %d 498
  %l = --Default--
  did $iif(%s == %l,-ac,-a) %d 498 %l
  %i = 1
  while (%i <= $line(%win,0)) {
    %l = $line(%win,%i)
    did $iif(%s == %l,-ac,-a) %d 498 %l
    inc %i
  }
  close -@ %win
}
alias _nsetup.rnetwork {
  var %d = _nsetup
  if ($did(%d,498).sel == 1) {
    did -u %d 1010,1020,1030,1110,1120,1210
    did -c %d 1001
  }
  did $iif($did(%d,498).sel == 1,-h,-v) %d 1010,1020,1030,1110,1120,1210,1001
  if ($dialog(%d).tab == $null) { did -c %d 1001 }
}
alias _nsetup._selectnet_setup {
  var %d = _nsetup
  if ($dialog(%d) == $null) { return }
  if ($did(%d,498,1).sel == $null) { did -c %d 498 1 }
  var %sel = $did(%d,498,1).sel,%net = $did(%d,498,%sel),%services,%win = @__snetselectnet,%file = $_tmpdir(snetwork.ini),%chanfile = $_tmpdir(schan.ini),%nickfile = $_tmpdir(snick.ini),%tmp,%id,%bots,%i,%t1,%t2,%tf,%tt = 0
  var %i = 1,%t1,%t2,%tf
  while (%i <= 5) {
    %tt = 0
    %t1 = $_readini(%file,default,$gettok(modes_on_connect modes_on_oper modes_oper on_connect minserver,%i,32))
    %t2 = $_readini(%file,%net,$gettok(modes_on_connect modes_on_oper modes_oper on_connect minserver,%i,32))
    if ($_readini(%file,%net,main_nick) != $null) { did -o %d 1723 1 $ifmatch }
    else { did -r %d 1723 }
    if (%sel == 1) { var %tf = %t1,%tt = 0 }
    elseif (%t2 != $null) { var %tf = %t2,%tt = 0 }
    else { var %tf = %t1,%tt = 1 }
    did $iif(%tt,-c,-u) %d $gettok(1010 1020 1030 1110 1120,%i,32)
    did $iif($gettok(%tf,1,32),-c,-u) %d $gettok(1011 1021 1031 1111 1121,%i,32)
    did -o %d $gettok(1012 1022 1032 1112 1122,%i,32) 1 $gettok(%tf,2-,32)
    if (%tt) {
      did -b %d $gettok(1011 1021 1031 1111 1121,%i,32)
      did -b %d $gettok(1012 1022 1032 1112 1122,%i,32)
    }
    else {
      did -e %d $gettok(1011 1021 1031 1111 1121,%i,32)
      did $iif($did(%d,$gettok(1011 1021 1031 1111 1121,%i,32)).state,-e,-b) %d $gettok(1012 1022 1032 1112 1122,%i,32)
    }
    inc %i
  }
  if ($_not($_isint($did(%d,1122)))) { did -r %d 1122 }
}
alias _nsetup._selectnet_autojoin {
  var %d = _nsetup
  if ($dialog(%d) == $null) { return }
  if ($did(%d,498,1).sel == $null) { did -c %d 498 1 }
  var %sel = $did(%d,498,1).sel,%net = $did(%d,498,%sel),%services,%win = @__snetselectnet,%file = $_tmpdir(snetwork.ini),%chanfile = $_tmpdir(schan.ini),%nickfile = $_tmpdir(snick.ini),%tmp,%id,%bots,%i,%t1,%t2,%tf,%tt = 0
  %tt = 0
  %t1 = $_readini(%file,default,autojoin)
  %t2 = $_readini(%file,%net,autojoin)
  if (%sel == 1) { var %tf = %t1,%tt = 0 }
  elseif (%t2 != $null) { var %tf = %t2,%tt = 0 }
  else { var %tf = %t1,%tt = 1 }
  did $iif(%tt,-c,-u) %d 1210
  did -r %d 1212,1217
  if (%tf != $null) && (%tf != $chr(44)) {
    didtok %d 1217 32 %tf
    var %i = 1,%n = $did(%d,1217).lines
    while (%i <= %n) {
      var %line = $did(%d,1217,%i),%chan = $gettok(%line,1,44),%pass = $gettok(%line,2-,44)
      if (%pass == $null) { var %pass }
      else { %pass = * }
      did -a %d 1212 %chan %pass
      inc %i
    }
  }
  did $iif(%tt,-b,-e) %d 1212,1213,1214,1215,1216,1218
}
alias _nsetup._selectnet_services {
  var %d = _nsetup
  if ($dialog(%d) == $null) { return }
  if ($did(%d,498,1).sel == $null) { did -c %d 498 1 }
  var %sel = $did(%d,498,1).sel,%net = $did(%d,498,%sel),%services,%win = @__snetselectnet,%file = $_tmpdir(snetwork.ini),%chanfile = $_tmpdir(schan.ini),%nickfile = $_tmpdir(snick.ini),%tmp,%id,%bots,%i,%t1,%t2,%tf,%tt = 0,%sflags,%mrcnfile,%mrcnchan,%mrcnnick
  if ($ini(%file,%net)) {
    %services = $_readini(%file,%net,services)
    %mrcnfile = script\ $+ %services $+ .mrcn
    if ($isfile(%mrcnfile)) {
      %mrcnchan = $read -ns;schan %mrcnfile
      if ($chr(59) $+ schan == %mrcnchan) { var %mrcnchan }
      %mrcnnick = $read -ns;snick %mrcnfile
      if ($chr(59) $+ snick == %mrcnnick) { var %mrcnnick }
    }
    %bots = $replace($_readini(%file,%net,bots),$chr(44),$chr(32))
    did -c %d 499 $findtok($didtok(%d,499,32),%services,1,32)
    did -o %d 1515 1 %bots
  }
  else { did -c %d 499 1 }

  if ($did(%d,499,1).sel == 1) { _nsetup.rem_snetwork }
  if (%mrcnchan != $null) {
    did -v %d 1601,398,1611,1612
    %sflags = $gettok(%mrcnchan,3,32)
    did $iif($gettok(%mrcnchan,2,32),-v,-h) %d 1620,1621
    if ($gettok(%mrcnchan,1,32) != $null) {
      %tmp = $ifmatch
      did -v %d 1630
      if (f isincs %sflags) { %id = 1635 }
      elseif ($remove(%tmp,$chr(44)) isnum) { %id = 1632 }
      else { %id = 1631 }
      did -r %d 1631,1632,1635
      did -o %d 1634 1 %id
      did -v %d %id
      did -h %d $remtok($replace(1631 1632 1635,$chr(32),$chr(44)),%id,44)
      if (f isincs %sflags) { did -o %d 1630 1 Your Flags: }
      else {
        did -o %d 1630 1 Your Level:
        didtok %d %id 44 %tmp
        did -c %d %id 1
      }
    }
    else { did -h %d 1630,1631,1632,1635 }
    if (a isincs %sflags) && ($_readini(%file,%net,bots) != $null) {
      did -v %d 1640,1641
      %tmp = $_readini(%file,%net,bots)
      didtok %d 1641 44 %tmp
      did -c %d 1641 1
    }
    else { did -h %d 1640,1641 }
  }
  else { did -h %d 1601,398,1611,1612,1620,1621,1630,1631,1632,1635,1640,1641 }
  if (%mrcnnick != $null) {
    did -v %d 1701,399,1711,1712
    if ($gettok(%mrcnnick,1,32)) { did -v %d 1720,1721 }
    if (m isincs $gettok(%mrcnnick,2,32)) { did -v %d 1722,1723 }
  }
  else { did -h %d 1701,399,1711,1712,1720,1721,1722,1723 }
  close -@ %win
  window -hs %win
  filter -fw " $+ %chanfile $+ " %win %net *
  var %line
  while ($line(%win,0)) {
    %line = $line(%win,1)
    did $iif(%c.nsetup.chan == $gettok(%line,2,32),-ac,-a) %d 398 $gettok(%line,2,32)
    dline %win 1
  }
  clear %win
  filter -fw " $+ %nickfile $+ " %win %net *
  var %line
  while ($line(%win,0)) {
    %line = $line(%win,1)
    did $iif($gettok(%line,2,32) == %c.nsetup.nick,-ac,-a) %d 399 $gettok(%line,2,32)
    dline %win 1
  }
  close -@ %win
  if ($did(%d,398,0).sel == 0) { did -c %d 398 1 }
  if ($did(%d,399,0).sel == 0) { did -c %d 399 1 }
  _nsetup.rnetwork
  _nsetup.selectchan
  _nsetup.selectnick
}
alias _nsetup.selectnet {
  var %d = _nsetup
  if ($dialog(%d) == $null) { return }
  did -r %d 1515,398,1621,1631,1632,1635,1641,399,1721,1723
  did -h %d 1601,398,1611,1612,1620,1621,1630,1631,1632,1635,1633,1634,1640,1641,1701,399,1711,1712,1720,1721,1722,1723
  _nsetup._selectnet_setup
  _nsetup._selectnet_autojoin
  _nsetup._selectnet_services
}
alias _nsetup.selectchan {
  var %d = _nsetup,%net = $did(%d,498,$did(%d,498,1).sel),%file = $_tmpdir(schan.ini),%chan = $did(%d,398,$did(%d,398,1).sel),%pass,%level,%bot,%line,%validlevel = 0,%ztmpid
  if ($dialog(%d) == $null) || (%net == $null) { return }
  if (%chan == $null) { goto chanull }
  %line = $read -ns" $+ %net %chan $+ " %file
  if ($readn) {
    %line = $read -nl $+ $readn %file
    %pass = $gettok(%line,4,32)
    if (%pass == $null) { var %pass }
    else { %pass = $_decrypt(%pass) }
    %level = $gettok(%line,5,32)
    %bot = $gettok(%line,6,32)
    if (%pass != $null) { did -o %d 1621 1 %pass }
    else { did -r %d 1621 }
    %ztmpid = $did(%d,1634)
    if (%level != $null) {
      if (%ztmpid == 1632) {
        var %min = $did(%d,1632,1),%max = $did(%d,1632,$did(%d,1632).lines)
        ;;;        if (%level isnum) && (%level >= %min) && (%level <= %max) { %validlevel = 1 }
        if (%level isnum) && (%level >= 0) { %validlevel = 1 }
      }
      elseif (%ztmpid == 1631) {
        if ($istok($didtok(%d,1631,32),%level,32)) { %validlevel = 1 }
      }
      else { %validlevel = 1 }
    }
    if (%validlevel) {
      if (%ztmpid == 1635) { did -o %d 1635 1 %level }
      else { _dialog.add %d %ztmpid %level }
      did -o %d 1633 1 %level
    }
    else {
      if (%ztmpid != $null) {
        if (%ztmpid == 1635) { did -r %d 1633,1635 }
        else {
          did -c %d %ztmpid 1
          did -o %d 1633 1 $did(%d,%ztmpid,$did(%d,%ztmpid,1).sel)
        }
      }
    }
    if (%bot != $null) { _dialog.add %d 1641 %bot }
    else { did -c %d 1641 1 }
  }
  else {
    :chanull
    did -r %d 1621
    if (%ztmpid != $null) {
      did -c %d %ztmpid 1
      did -o %d 1633 1 $did(%d,%ztmpid,$did(%d,%ztmpid,1).sel)
    }
    did -c %d 1641 1
  }
  _nsetup.writechan
}
alias _nsetup.selectnick {
  var %d = _nsetup,%net = $did(%d,498,$did(%d,498,1).sel),%file = $_tmpdir(snick.ini),%nick = $did(%d,399,$did(%d,399,1).sel),%pass,%line
  if (%net == $null) { return }
  if (%nick == $null) {
    did -r %d 1721
    return
  }
  %line = $read -ns" $+ %net %nick $+ " %file
  if ($readn) {
    %line = $read -nl $+ $readn %file
    %pass = $gettok(%line,4,32)
    if (%pass == $null) { var %pass }
    else { %pass = $_decrypt(%pass) }
    if (%pass != $null) { did -o %d 1721 1 %pass }
    else { did -r %d 1721 }
  }
  else { did -r %d 1721 }
  _nsetup.writenick
}
alias _nsetup.writenet {
  var %d = _nsetup,%bots = $replace($did(%d,1515,1),$chr(32),$chr(44)),%file = $_tmpdir(snetwork.ini),%net = $did(%d,498,$did(%d,498,1).sel),%"file" = " $+ %file $+ "
  if ($did(%d,1723,1) != $null) { writeini %"file" %net main_nick $ifmatch }
  else { remini %"file" %net main_nick }
  if ($did(%d,499,$did(%d,499,1).sel) != $null) { writeini %"file" %net services $ifmatch }
  else { remini %"file" %net services }
  if (%bots != $null) { writeini %"file" %net bots $ifmatch }
  else { remini %"file" %net bots }
}
alias _nsetup.writechan {
  var %d = _nsetup,%net = $did(%d,498,$did(%d,498,1).sel),%file = $_tmpdir(schan.ini),%chan = $did(%d,398,$did(%d,398,1).sel),%services = $_readini($_tmpdir(snetwork.ini),%net,services),%pass = $did(%d,1621),%level,%bot = $did(%d,1641,$did(%d,1641,1).sel)
  if (%net == $null) || (%chan == $null) { return }
  if (%pass != $null) { %pass = $_crypt(%pass) }
  if ($did(%d,1633) != $null) && (($istok(1631 1635,$did(%d,1634),32)) || ($did(%d,1633) isnum)) { %level = $did(%d,1633) }
  else { var %level }
  write -s" $+ %net %chan $+ " $"(%file) %net %chan $iif(%services != $null,%services,$null) $iif(%pass != $null,%pass,$null) $iif(%level != $null,%level,$null) $iif(%bot != $null,%bot)
}
alias _nsetup.writenick {
  var %d = _nsetup,%net = $did(%d,498,$did(%d,498,1).sel),%file = $_tmpdir(snick.ini),%nick = $did(%d,399,$did(%d,399,1).sel),%services = $_readini($_tmpdir(snetwork.ini),%net,services),%pass = $did(%d,1721)
  if (%net == $null) || (%nick == $null) { return }
  if (%pass != $null) { %pass = $_crypt(%pass) }
  write -s" $+ %net %nick $+ " $"(%file) %net %nick $iif(%services != $null,%services,$null) $iif(%pass != $null,%pass,$null)
}
alias _nsetup.addchan {
  var %d = _nsetup,%c,%chan,%win = @__nsetupaddchan,%i = 1
  if ($dialog(%d) == $null) { return }
  _openwins %win
  _dialog2win %d 398 %win *
  while (%i <= $chan(0)) {
    if ($fline(%win,$chan(%i),0) == 0) { %c = %c $chan(%i) }
    inc %i
  }
  close -@ %win
  %chan = $_selectedit($null,1,Registered Channels [/schan],ischan,$gettok(%c,1,32),32,%c,Channel:)
  if ($dialog(%d) == $null) { return }
  _dialog.add %d 398 %chan
  did -r %d 1633,1635
  _nsetup.selectchan
}
alias _nsetup.remchan {
  var %d = _nsetup,%i = $did(%d,398,1).sel,%chan = $did(%d,398,%i),%net = $did(%d,498,$did(%d,498,1).sel)
  if (%chan == $null) || (%net == $null) { return }
  if (%i) { did -d %d 398 %i }
  if ($did(%d,398,%i)) { did -c %d 398 %i }
  else { did -c %d 398 $calc(%i - 1) }
  write -ds" $+ %net %chan $+ " " $+ $_tmpdir(schan.ini) $+ "
  _nsetup.selectchan
}
alias _nsetup.addnick {
  var %d = _nsetup,%nick
  if ($dialog(%d) == $null) { return }
  %nick = $_parameter($null,1,Registered Nicks [/snick],1,$me,Nick:)
  if ($dialog(%d) == $null) { return }
  _dialog.add %d 399 %nick
  _nsetup.selectnick
}
alias _nsetup.remnick {
  var %d = _nsetup,%i = $did(%d,399,1).sel,%nick = $did(%d,399,%i),%net = $did(%d,498,$did(%d,498,1).sel)
  if (%nick == $null) || (%net == $null) { return }
  if (%i) { did -d %d 399 %i }
  if ($did(%d,399,%i)) { did -c %d 399 %i }
  else { did -c %d 399 $calc(%i - 1) }
  write -ds" $+ %net %nick $+ " " $+ $_tmpdir(snick.ini) $+ "
  _nsetup.selectnick
}
alias _nsetup.ok {
  .copy -o $shortfn($_tmpdir(schan.ini)) $shortfn($_schanfile)
  .copy -o $shortfn($_tmpdir(snick.ini)) $shortfn($_snickfile)
  .copy -o $shortfn($_tmpdir(snetwork.ini)) $shortfn($_snetworkini)
}

;;;;;
;;;;;

alias -l _unloadnetworkmrc { _quickunload _nsetup $script }