aIRC — File Browser

aIRCv0.8.69 / aIRCv0.8.69 / script / nicklistcol.mrc

nicklistcol.mrc — 11.83 KB — Download this file

;/**********************************************************************
; *
; * aIRC
; * Colored Nicklist
; *
; **********************************************************************/

alias nickcol { _dialog -m _nickcol _nickcol }
alias _loadsetup.nicklistcol {
  var %cols = $_nickol.fix
  if ($_getsetup(script,_nicklistcol.state)) {
    .enable #_nicklistcol.d
    $iif($_getsetup(script,_nicklistcol.userflags),.enable,.disable) #_nicklistcol.u
  }
  else { .disable #_nicklistcol.* }
}
#_nicklistcol.d off

;
;;
;
; /_nicklist.col.channick <channel> <nick> <colflags> <fulladdress> <handle> <userflags> <forcecolor>
; colflags: h - don't lookup handle
;           q - don't colour
;
alias _nicklist.col.channick {
  var %rc
  if ($2 ison $1) {
    var %chan = $1,%nick = $2,%colflags = $3,%addy = $4,%handle = $5,%uflags = $6,%fc = $7,%rc,%cols = $_getsetup(script,_nicklistcol.cols),%procflags = $_getsetup(script,_nicklistcol.userflags),%procignores = $_getsetup(script,_nicklistcol.ignores),%notify = $_notify.nicksvars(%nick)
    if (%fc isnum 0-15) { %rc = $ifmatch }
    elseif (%nick == $me) { %rc = $gettok(%cols,1,32) }
    elseif ($_isircop(%nick)) { %rc = $gettok(%cols,2,32) }
    else {
      if (%addy == $null) && ((%procignores) || (%procflags)) {
        if ($address(%nick,5) != $null) { %addy = $ifmatch }
        else { %addy = %nick $+ !*@* }
      }
      if (%procflags) && (%uflags == $null) && (%handle == $null) && (h !isin %colflags) { var %handle = $_finduser(%addy),%uflags = $_nickflags(%handle,%chan) }
      if (%procflags) && (%handle != $null) {
        if (k isincs %uflags) { %rc = $gettok(%cols,9,32) }
        elseif (n isincs %uflags) { %rc = $gettok(%cols,10,32) }
        elseif (m isincs %uflags) { %rc = $gettok(%cols,11,32) }
        elseif (b isincs %uflags) { %rc = $gettok(%cols,12,32) }
        elseif (o isincs %uflags) { %rc = $gettok(%cols,13,32) }
        elseif (v isincs %uflags) { %rc = $gettok(%cols,14,32) }
        elseif (f isincs %uflags) { %rc = $gettok(%cols,15,32) }
        else { %rc = $gettok(%cols,16,32) }
      }
      elseif (%procignores) && (%addy isignore) { %rc = $gettok(%cols,8,32) }
      elseif (%notify == passed) { %rc = $gettok(%cols,3,32) }
      elseif (%notify == failed) { %rc = $gettok(%cols,4,32) }
      elseif (%nick isop %chan) { %rc = $gettok(%cols,5,32) }
      elseif (%nick isvo %chan) { %rc = $gettok(%cols,6,32) }
      else { %rc = $gettok(%cols,7,32) }
    }
    if (%rc == 16) { %rc = $colour(listbox text) }
    if (%rc isnum 0-15) && (q !isincs %colflags) { cline %rc %chan %nick }
  }
  if ($len(%rc) == 1) { %rc = 0 $+ %rc }
  return %rc
}
; /_nicklist.col.addy <address> <chan|*>
alias _nicklist.col.addy {
  var %addy = $1,%chan = $2,%i = $ialchan(%addy,%chan,0)
  while (%i) {
    var %fa = $ialchan(%addy,%chan,%i),%nick = $gettok(%fa,1,33)
    _nicklist.col.nick %nick %fa
    dec %i
  }
}
; /_nicklist.col.nick <nick> <fulladdress>
;  (all channels)
alias _nicklist.col.nick {
  var %nick = $1,%fa = $2,%i = $comchan(%nick,0)
  while (%i) {
    _nicklist.col.channick $comchan(%nick,%i) %nick - %fa
    dec %i
  }
}
alias _nicklist.col.chandle {
  if ($_getsetup(script,_nicklistcol.userflags)) {
    if (t isin $1) {
      .timer_nicklistcolhandle $+ $2 $+ $3 off
      _nicklist.col.handle $1-
    }
    else { .timer_nicklistcolhandle $+ $2 $+ $3 -m 1 500 _nicklist.col.handle $1- }
  }
}

raw 366:*:{
  if ($_not($_get(junk,colorednicklist,$2))) && ($_rchini(_updateial,$2) != 1) {
    _setd junk colorednicklist $2 1
    return $_nicklist.col.chan($2)
  }
}
ON *:KICK:#:{
  if ($knick == $me) { _setd junk colorednicklist $chan 0 }
}
ON ME:*:PART:#:{ _setd junk colorednicklist $2 0 }
ON *:CONNECT:{ hdel -w _aircjunk colorednicklist_* }
ON *:DISCONNECT:{ hdel -w _aircjunk colorednicklist_* }
ON *:JOIN:#:{ return $_nicklist.col.channick($chan,$nick,h,%++fulladdress,%++handle,%++flags,$null) }
ON *:VOICE:#:{ return $_nicklist.col.channick($chan,$vnick,h,%++fulladdress2,%++handle2,%++flags2,$null) }
ON *:DEVOICE:#:{ return $_nicklist.col.channick($chan,$vnick,h,%++fulladdress2,%++handle2,%++flags2,$null) }
ON *:OP:#:{ return $_nicklist.col.channick($chan,$opnick,h,%++fulladdress2,%++handle2,%++flags2,$null) }
ON *:SERVEROP:#:{ return $_nicklist.col.channick($chan,$opnick,h,%++fulladdress2,%++handle2,%++flags2,$null) }
ON *:DEOP:#:{ return $_nicklist.col.channick($chan,$opnick,h,%++fulladdress2,%++handle2,%++flags2,$null) }
ON *:OWNER:#:{ return $_nicklist.col.channick($chan,$opnick,h,%++fulladdress2,%++handle2,%++flags2,$null) }
ON *:DEOWNER:#:{ return $_nicklist.col.channick($chan,$opnick,h,%++fulladdress2,%++handle2,%++flags2,$null) }
raw 352:*:{ _nicklist.col.channick $2 $6 - $6 $+ ! $+ $3 $+ @ $+ $4 }
; script2.mrc ; ON *:NOTIFY:{ _nicklist.col.nick $nick }
#_nicklistcol.d end
#_nicklistcol.u off
ON *:NICK:{ _nicklist.col.nick $newnick $newnick $+ ! $+ $address }
#_nicklistcol.u end

; /_nicklist.col.handle <flags> <handle> <chan|*>
; flags: r - removing handle...
alias _nicklist.col.handle {
  var %comflags = $1,%handle = $2,%chan = $3,%hosts = $_ruini(%handle,hosts),%n = $numtok(%hosts,32),%hh,%ialtot,%x,%t,%r,%tmp,%uflags,%fhandle
  while (%n) {
    %hh = $gettok(%hosts,%n,32)
    %x = 1
    %ialtot = $ialchan(%hh,%chan,0)
    while (%x <= %ialtot) {
      %t = $ialchan(%hh,%chan,%x)
      if ($_finduser(%t) == %handle) {
        %t = $gettok(%t,1,33)
        if ($len(%r) < 900) { %r = $addtok(%r,%t,44) }
        if (%chan == *) {
          var %ci = $chan(0),%ct
          while (%ci) {
            var %uflags,%ct = $chan(%ci),%fhandle = %handle
            if (r isin %comflags) { var %fhandle }
            else { %uflags = $_nickflags(%handle,%ct) }
            %tmp = $_nicklist.col.channick(%ct,%t,h,$null,%fhandle,%uflags,$null)
            dec %ci
          }
        }
        else {
          var %uflags,%fhandle = %handle
          if (r isin %comflags) { var %fhandle }
          else { %uflags = $_nickflags(%handle,%chan) }
          %tmp = $_nicklist.col.channick(%chan,%t,h,$null,%fhandle,%uflags,$null)
        }
      }
      inc %x
    }
    dec %n
  }
}
alias _nicklist.col.chan {
  if ($me !ison $1) { return }
  var %i = 1,%n = $nick($1,0)
  while (%i <= %n) {
    _nicklist.col.channick $1 $nick($1,%i)
    inc %i
  }
}
alias _nicklist.col.all {
  var %i = $chan(0)
  while (%i) {
    _nicklist.col.chan $chan(%i)
    dec %i
  }
}
alias _nicklist.col.no {
  var %i = $chan(0),%chan,%t
  while (%i) {
    %chan = $chan(%i)
    %t = $nick(%chan,0)
    while (%t) {
      cline -r %chan $nick(%chan,%t)
      dec %t
    }
    dec %i
  }
}

dialog _nickcol {
  size -1 -1 140 150
  option dbu
  title "Nicklist Colours"

  check "Nicklist Colours (slowdown)",1001,5 5 80 8
  check "Process user flags (BIG slowdown)",1002,5 15 98 8
  check "Process ignores (HUGE slowdown)",1003,5 25 98 8

  box "",1011,5 35 65 95
  box "",1012,5 35 130 95

  text "You",1501,10 46 42 8,right
  icon 1601,55 45 8 8
  text "Ircop",1502,10 56 42 8,right
  icon 1602,55 55 8 8
  text "Notify",1503,10 66 42 8,right
  icon 1603,55 65 8 8
  text "Failed Notify",1504,10 76 42 8,right
  icon 1604,55 75 8 8
  text "Channel Operator",1505,10 86 42 8,right
  icon 1605,55 85 8 8
  text "Channel voice",1506,10 96 42 8,right
  icon 1606,55 95 8 8
  text "Channel regular",1507,10 106 42 8,right
  icon 1607,55 105 8 8
  text "Ignored",1508,10 116 42 8,right
  icon 1608,55 115 8 8

  text "+k user (akick)",1509,75 46 42 8,right
  icon 1609,120 45 8 8
  text "+n user (owner)",1510,75 56 42 8,right
  icon 1610,120 55 8 8
  text "+m user (master)",1511,75 66 42 8,right
  icon 1611,120 65 8 8
  text "+b user (bot)",1512,75 76 42 8,right
  icon 1612,120 75 8 8
  text "+o user (op)",1513,75 86 42 8,right
  icon 1613,120 85 8 8
  text "+v user (voice)",1514,75 96 42 8,right
  icon 1614,120 95 8 8
  text "+f user (friend)",1515,75 106 42 8,right
  icon 1615,120 105 8 8
  text "other users",1516,75 116 42 8,right
  icon 1616,120 115 8 8

  edit "",2048,100 100 100 10,autohs hide

  button "White Def.",2993,5 135 31 13
  button "Black Def.",2994,39 135 31 13
  button "Ok",2995,72 135 31 13,ok
  button "Cancel",2996,105 135 31 13,cancel
}
ON *:DIALOG:_nickcol:init:0:{
  _mdx.init $_icofile(nickcol.ico)
  _refreshcolorbmps
  did $iif($_getsetup(script,_nicklistcol.state),-c,-u) $dname 1001
  did $iif($_getsetup(script,_nicklistcol.userflags),-c,-u) $dname 1002
  did $iif($_getsetup(script,_nicklistcol.ignores),-c,-u) $dname 1003
  _nickcol.paintitblack $_nickol.fix
  _nickcol.refresh
  _dummy $_lang.loaddialog($dname,$dname,00086969,main.lang,$scriptdir)
}
ON *:DIALOG:_nickcol:sclick:1001,1002,1003:{ _nickcol.refresh }
ON *:DIALOG:_nickcol:sclick:2993:{ _nickcol.paintitblack $_nickol.whitedefault }
ON *:DIALOG:_nickcol:sclick:2994:{ _nickcol.paintitblack $_nickol.blackdefault }
ON *:DIALOG:_nickcol:sclick:2995:{
  var %com
  if ($_getsetup(script,_nicklistcol.state)) && ($_not($did($dname,1001).state)) { %com = _nicklist.col.no }
  elseif ($_not($_getsetup(script,_nicklistcol.state))) && ($did($dname,1001).state) { %com = _nicklist.col.all }
  elseif ($did($dname,1001).state) && ($did($dname,2048) != $_getsetup(script,_nicklistcol.cols)) { %com = _nicklist.col.all }
  elseif ($did($dname,1001).state) && ($did($dname,1002).state != $_getsetup(script,_nicklistcol.userflags)) { %com = _nicklist.col.all }
  elseif ($did($dname,1001).state) && ($did($dname,1003).state != $_getsetup(script,_nicklistcol.ignores)) { %com = _nicklist.col.all }
  _setsetup script _nicklistcol.cols $did($dname,2048)
  _setsetup script _nicklistcol.state $did($dname,1001).state
  _setsetup script _nicklistcol.userflags $did($dname,1002).state
  _setsetup script _nicklistcol.ignores $did($dname,1003).state
  _nickol.fix
  _loadsetup.nicklistcol
  if (%com != $null) { $ifmatch }
}
ON *:DIALOG:_nickcol:sclick:*:{
  if (16?? iswm $did) { _nickcol.change }
}
alias -l _nickcol.refresh {
  var %d = $dname
  if ($did(%d,1001).state) {
    did -e %d 1002,1003,1501,1601,1502,1602,1503,1603,1504,1604,1505,1605,1506,1606,1507,1607
    did $iif($did(%d,1003).state,-e,-b) %d 1508,1608
    did $iif($did(%d,1002).state,-e,-b) %d 1509,1609,1510,1610,1511,1611,1512,1612,1513,1613,1514,1614,1515,1615,1516,1616
  }
  else { did -b %d 1002,1003,1501,1601,1502,1602,1503,1603,1504,1604,1505,1605,1506,1606,1507,1607,1508,1608,1509,1609,1510,1610,1511,1611,1512,1612,1513,1613,1514,1614,1515,1615,1516,1616 }
}
alias _nickol.fix {
  var %def = $_nickol.currdedault,%i = 1,%old = $_getsetup(script,_nicklistcol.cols),%set,%z
  while (%i <= 16) {
    var %z
    if ($gettok(%old,%i,32) isnum 0-16) { %z = $ifmatch }
    else { %z = $gettok(%def,%i,32) }
    if ($len(%z) == 1) { %z = 0 $+ %z }
    %set = %set %z
    inc %i
  }
  _setsetup script _nicklistcol.cols %set
  return %set
}
alias -l _nickcol.change {
  var %d = $dname,%col = $_pickcol(1,default,Pick Colour),%n = $did - 1600
  if (%col isnum 0-16) {
    did -o %d 2048 1 $puttok($did(%d,2048),%col,%n,32)
    _nickcol.draw %n %col
  }
}
alias -l _nickcol.paintitblack {
  var %cols = $1-
  did -o $dname 2048 1 %cols
  var %i = 1601
  while (%i <= 1616) {
    _nickcol.draw %i $gettok(%cols,$calc(%i - 1600),32)
    inc %i
  }
}
alias -l _nickcol.draw {
  var %d = $dname,%m,%did = $1,%z = $2
  if (%did < 1600) { inc %did 1600 }
  if (%z == 16) { %z = $colour(listbox text) }
  if ($len(%z) == 1) { %z = 0 $+ %z }
  %m = mircol $+ %z $+ _*.bmp
  did -g $dname %did " $+ $findfile($mircdiretc\bmps\,%m,1,1) $+ "
}
alias _nickol.whitedefault { return 12 13 10 06 10 02 02 04 04 12 12 05 10 03 03 03 }
alias _nickol.blackdefault { return 11 13 12 00 12 15 15 04 04 11 11 08 12 09 09 09 }
alias _nickol.currdedault { return $iif($colour(listbox) == 1,$_nickol.blackdefault,$_nickol.whitedefault) }