All pastes #779040 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-11-18 03:44 UTC
rendered paste body
dialog away {
  title "AwayScript by Marius"
  size -1 -1 202 124
  option dbu
  box "Away //  Back", 1, 1 0 200 77
  button "Away", 3, 46 62 37 12
  button "Back", 4, 90 62 37 12, disable
  text "Away Reason:", 5, 5 10 35 8
  text "Away Message:", 2, 5 20 38 8
  text "Return Message:", 6, 5 30 41 8
  check "Inform channels when you are away/back", 7, 5 40 115 10
  radio "AMSG", 8, 20 50 30 10, disable
  radio "AME", 9, 50 50 30 10, disable
  box "Channel Ignorer", 10, 1 125 200 81
  check "Do not message ignored channels", 11, 85 140 95 10
  list 12, 5 133 70 70, size
  button "Add Channel", 13, 85 160 37 12
  button "Del Channel", 14, 85 180 37 12
  box "Highlight Control", 15, 1 78 55 45
  check "Log highlights", 16, 5 95 50 10
  check "Log PM's", 17, 5 85 50 10
  button "Add", 18, 68 90 15 10
  button "Del", 19, 68 105 15 10
  list 20, 93 83 105 38, size
  box "Highlights", 21, 56 78 145 45
  edit "", 22, 50 29 100 10, autohs
  edit "", 23, 50 9 100 10, autohs
  edit "", 24, 50 19 100 10, autohs
  link "More", 25, 150 10 15 8
  link "More", 26, 150 20 15 8
  link "More", 27, 150 30 15 8
}
dialog away_ext {
  title "Away Help"
  size -1 -1 154 42
  option dbu
  link "Current Time", 1, 2 3 33 8
  link "Away Reason", 2, 37 3 34 8
  link "Away Duration", 3, 73 3 36 8
  button "Done", 4, 49 27 37 12, ok
  link "Away Start Time", 5, 111 3 40 8
  link "Highlight Log Status", 6, 2 14 50 8
  link "PM Log Status", 7, 55 14 35 8
}

on *:DIALOG:away_ext:sclick:*: {
  if ($did == 1) { .did -a away %away.help $chr(13) $+ &ctime }
  if ($did == 2) { .did -a away %away.help $chr(13) $+ &reason }
  if ($did == 3) { .did -a away %away.help $chr(13) $+ &duration }
  if ($did == 5) { .did -a away %away.help $chr(13) $+ &stime }
  if ($did == 6) { .did -a away %away.help $chr(13) $+ &hl }
  if ($did == 7) { .did -a away %away.help $chr(13) $+ &pm }
}
on *:DIALOG:away:edit:22,23,24: {
  if ($did == 22) {
    .set %away.msg.back $did($dname,22)
  }
  if ($did == 23) {
    .set %away.reason $did($dname,23)
  }
  if ($did == 24) {
    .set %away.msg.away $did($dname,24)
  }
}
on *:DIALOG:away:init:0: {
  if (%away.amsg) { .did -c $dname 8 }
  else { .did -c $dname 9 }
  if (%away.inform) { .did -c $dname 7 | .did -e $dname 8,9 | .dialog -s away $dialog(away).x $dialog(away).y 410 415 }
  var %a = 1
  while (%a <= $lines(away.highlight.txt)) { .did -a $dname 20 $read(away.highlight.txt,%a) | inc %a }
  var %a = 1
  while (%a <= $lines(away.channelignore.txt)) { .did -a $dname 12 $read(away.channelignore.txt,%a) | inc %a }
  if (%away.ig) { .did -c $dname 11 }
  if (%away.log.pm) { .did -c $dname 17 }
  if (%away.log.hl) { .did -c $dname 16 }
  .did -a $dname 22 %away.msg.back
  .did -a $dname 23 %away.reason
  .did -a $dname 24 %away.msg.away
}
on *:DIALOG:away:sclick:*: {
  if ($did == 7) {
    .set %away.inform $iif($did($dname,7).state == 1,$true,$false)
    .dialog -s away $dialog(away).x $dialog(away).y 410 $iif($did($dname,7).state == 1,415,250)
    if (%away.inform) { .did -e $dname 8,9 }
    else { .did -b $dname 8,9 }
  }
  if ($did == 8) { .set %away.amsg $true | .set %away.ame $false }
  if ($did == 9) { .set %away.ame $true | .set %away.amsg $false }
  if ($did == 17) { .set %away.log.pm $iif($did($dname,17).state == 1,$true,$false) }
  if ($did == 16) { .set %away.log.hl $iif($did($dname,16).state == 1,$true,$false) }
  if ($did == 18) {
    var %nhl = $$?="Enter a highlight string/word"
    .write away.highlight.txt %nhl
    .did -a $dname 20 %nhl
    .did -c $dname 20 $lines(away.highlight.txt)
  }
  if ($did == 19) {
    if (!$did($dname,20).seltext) { halt }
    .write $+(-dl,$did($dname,20).sel) away.highlight.txt
    .did -d $dname 20 $did($dname,20).sel
  }
  if ($did == 11) { .set %away.ig $iif($did($dname,11).state == 1,$true,$false) }
  if ($did == 13) {
    var %nci = $$?="Enter channel to ignore"
    .write away.channelignore.txt %nci
    .did -a $dname 12 %nci
  }
  if ($did == 14) {
    if (!$did($dname,12).seltext) { halt }
    .write $+(-dl,$did($dname,12).sel) away.channelignore.txt
    .did -d $dname 12 $did($dname,12).sel
  }
  if ($did == 25) { .set %away.help 23 | .dialog -mdo away_ext away_ext }
  if ($did == 26) { .set %away.help 24 | .dialog -mdo away_ext away_ext }
  if ($did == 27) { .set %away.help 22 | .dialog -mdo away_ext away_ext }
  if ($did == 3) {
    if ($away) { halt }
    .did -e $dname 4
    .did -b $dname 3
    .setaway %away.reason
  }
  if ($did == 4) {
    if (!$away) { halt }
    .did -e $dname 3
    .did -b $dname 4
    .setaway
  }
}
alias same {
  var %a = 1,%chan
  while (%a <= $chan(0)) {
    if (!$read(away.channelignore.txt,w,$+(*,$chan(%a)))) { echo -t $chan(%a) $+(* ,$chr(3),$nick($chan(%a),$me).color,$nick($chan(%a),$me).pnick,$chr(3)) $1- | describe $chan(%a) $1- }
    inc %a
  }
}
alias samsg {
  var %a = 1,%chan
  while (%a <= $chan(0)) {
    if (!$read(away.channelignore.txt,w,$+(*,$chan(%a)))) { echo -t $chan(%a) $+(<,$chr(3),$nick($chan(%a),$me).color,$nick($chan(%a),$me).pnick,$chr(3),>) $1- | msg $chan(%a) $1- }
    inc %a
  }
}
menu * {
  AwaySystem
  .Open AwaySystem:.dialog -md away away
  .Logs
  ..Show PM Logs:.awaylog pm
  ..Show Highlight Logs:.awaylog hl
  .-
  . $iif($away,Back,Away) :.setaway
}
alias awaylog {
  if (!$window(@away.log)) { .window @away.log }
  var %sf = $iif($1 == hl,away.log.hl.txt,away.log.pm.txt),%a = 1
  while (%a <= $lines(%sf)) {
    .aline @away.log $read(%sf,%a)
    inc %a
  }
}

alias setaway {
  if ($away) {
    if (%away.inform) {
      if (%away.amsg) { $iif(%away.ig,samsg,amsg) $away.p(%away.msg.back) }
      if (%away.ame) { $iif(%away.ig,same,ame) $away.p(%away.msg.back) }
    }
    .away
    if (%away.new > 0) {
      var %vn = $input(You have been highlighted/PMed while you were away. $crlf Would you like to list these now?,y,Away Log Management)
      if (%vn) {
        .awaylog hl
        .awaylog pm
      }
    }
    halt
  }
  if (!$away) {
    if (!$1) { .set %away.reason $$?="Enter an away reason" }
    else { .set %away.reason $1- }
    if (%away.inform) {
      if (%away.amsg) { $iif(%away.ig,samsg,amsg) $away.p(%away.msg.away) }
      if (%away.ame) { $iif(%away.ig,same,ame) $away.p(%away.msg.away) }
    }
    if ($exists(away.log.pm.txt) || $exists(away.log.hl.txt)) { var %lc = $input(Would you like to remove old log files?,y,Away Log Management) }
    if (%lc) {
      if ($exists(away.log.pm.txt)) { .remove away.log.pm.txt }
      if ($exists(away.log.hl.txt)) { .remove away.log.hl.txt }
    }
    .set %away.start $fulldate
    .set %away.new 0
    .away $away.p(%away.reason)
  }
}
alias aw {
  if (!$1) { .dialog $iif(!$dialog(away),-md,-v) away away }
  .setaway $1-
}
alias away.p {
  var %ret = $1-
  var %ret = $replace(%ret,&ctime,$time)
  var %ret = $replace(%ret,&reason,%away.reason)
  var %ret = $replace(%ret,&duration,$duration($awaytime))
  var %ret = $replace(%ret,&stime,%away.start)
  var %ret = $replace(%ret,&hl,$iif(%away.log.hl,On,Off))
  var %ret = $replace(%ret,&pm,$iif(%away.log.pm,On,Off))
  return %ret
}
on ^*:TEXT:*:?: {
  if (!$away || !%away.log.pm) { return }
  .write away.log.pm.txt $nick - $fulldate - $1-
  .msg $nick I am currently away ( $+ %away.reason $+ ) - Your message has been logged.
  .close -m $nick
  inc %away.new
  haltdef
}
on *:TEXT:*:#: {
  if (!$away || !%away.log.hl) { halt }
  var %a = 1
  while (%a <= $lines(away.highlight.txt)) {
    if ($read(away.highlight.txt,%a) isin $1-) { .write away.log.hl.txt $chan - $nick - $fulldate - $1- | break }
    inc %a
  }
  inc %away.new
}
on *:NOTICE:*:?: {
  if (!$away || !%away.log.pm) { return }
  .write away.log.pm.txt $nick - $fulldate - *Notice* $1-
  inc %away.new
  haltdef
}
on *:ACTION:*:#: {
  if (!$away || !%away.log.hl) { halt }
  var %a = 1
  while (%a <= $lines(away.highlight.txt)) {
    if ($read(away.highlight.txt,%a) isin $1-) { .write away.log.hl.txt $chan - $nick - $fulldate - */me* $1- | break }
    inc %a
  }
  inc %away.new
}