All pastes #763713 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-11-06 18:12 UTC
rendered paste body
dialog wbs.channelbar {
  title "Wbs Channel bar"
  size -1 -1 80 314
  option dbu
  list 1, 0 0 80 333, size
}
alias -l wget { return $hget(wbscfg,$1-) }
alias sb { 
  var %dname = wbs.channelbar
  if (!$dialog(%dname).title) { wbsopen %dname }
  else { load.switchbar }
  var %dll = $wdll(dmu.dll)
  if (%dll) {
    var %height = $dll(%dll,SbSize,height) , %width = $dll(%dll,SbSize,width)
    if (%height) && (%width) { ;dialog -s %dname %height %width }
  }
}
alias ub {  if ($dialog(wbs.channelbar).title) { dll $wdll(UltraDock.dll) UnDock 0 | dll $wdll(UltraDock.dll) ShowSwitchbar 1 | wbsclose wbs.channelbar  } }
alias wbs.gettree { ;usage: $wbs.gettree(Dialog,Id,string)
  var %tmp = $wildtok($didtok($1,$2,1),* $+ $3- $+ *,1,1)
  if ($isid) && (%tmp) { return %Tmp }
}

alias -l pop.add { mpdll MPAddItem $1- }
on *:dialog:wbs.channelbar:*:*:{
  if ($devent == init) {
    mdxinit
    dll $wdll(mdx.dll) SetControlMDX $dname 1 treeview fullrowselect haslines hasbuttons showsel rowselect > $wdll(views.mdx)
    idid 1 1 iconsize normal small
    var %ico.dir = $shortfn($wbsdir $+ img\ico\) , %icos = otherads.ico;mirc.ico;serv.ico;burn.ico;notify.ico;sitespring.ico;ftp.ico;skull.ico;send.ico;Sitespring.ico;mem.ico , %i = 1 , %n = $numtok(%icos,59)
    while (%i <= %n) {
      idid 1 1 seticon normal %ico.dir $+ $gettok(%icos,%i,59)
      inc %i
    }
    load.switchbar
    ;idid 1 1 branch collapseall
    idid 1 1 setcolor bkg 0
    idid 1 1 setcolor text 16777215
    tokenize 32 $did(1,1,1)
    if ($window(0)) { idid 1 1 branch collapse $calc($scon(0) +2) }
    dll $wdll(UltraDock.dll) ShowSwitchbar 0
    dll $wdll(UltraDock.dll) Dock -1 $dialog($dname).hwnd left $dname
  }
  elseif ($devent == sclick) {
    tokenize 32 $did(1,1,1)
    if ($1 == slclick) {
      var %seltext = $gettok($mdxgb($dname,1,$4),7,32) , %mode = $2 , %auto_dialog = 0 , %text = $mdxgb($dname,1,$4-5) , %stext = $mgettok(%text,7-,32,1,9)
      var %rtext = $mgettok($mdxgb($dname,1,$4-),7-,32,1,9)
      if ($left(%Rtext,1) == $chr(35)) { %rtext = $mgettok($mdxgb($dname,1,$4-),7-,32,2,9) }
      if (%mode == select) && ($1 == slclick) {
        var %scon = $wbs.findscon(%seltext)
        if (%scon) { scid %scon }
        if ($left(%rtext,1) != @) { 
          if (%seltext != !Dcc) && (!$5) { 
            window -a "Status Window"
            if (%auto_dialog) {
              wbsopen $dname
              did -f $dname 1
            }
          }
        }
        if ($calc($4 -1) <= $scon(0)) {
          if ($left(%rtext,1) == $chr(35)) {
            if ($window(%rtext))  { window -a " $+ %rtext $+ " }
            if (%auto_dialog) { did -f $dname 1 }
          }
          elseif (%Stext = Query) && ($query(%rtext)) { .timer 1 0.1 query %rtext }
        }
        elseif ($window(%rtext)) && (%seltext == @Windows) && ($v1) { 
          window -wx %rtext
          if (%auto_dialog) { did -f $dname 1 }
        }
        elseif (%seltext == !Dcc) { 
          var %i = $calc($6 -1)
          if (%stext == Get) && ($get(%rtext).file) { window -a "Get $get(%rtext) $get(%rtext).file $+ " }
          elseif (%stext == Send) && ($send(%rtext).file) { window -a "Send $send(%rtext) $send(%rtext).file $+ " }
          elseif (%stext == Chat) { window -a "Chat $chat(%i) $+ " }
          if (%auto_dialog) { did -f $dname 1 }
        }
      }
    }
    elseif ($1 == rclick) {
      did -f $dname 1
      var %seltext = $gettok($mdxgb($dname,1,$4),7,32) , %mode = $gettok($did(1,1),2,32) , %dll = $wdll(mpopup.dll)
      var %chan = $gettok($gettok($mdxgb($dname,1,$3-),7-,32),1,9) , %scon = $wbs.findscon(%seltext)
      var %hmenu = $gettok($mpdll(MPCreateMenu,Channelbar),2,32)
      if (%scon) { scid %scon }
      pop.add %hmenu > 1 0 0 Actualiser > sb
      pop.add %hmenu > 2 0 0 - > -
      pop.add %hmenu > 3 0 0 Rejoindre > hop %chan
      pop.add %hmenu > 4 0 0 Fermer > part %Chan
      pop.add %hmenu > 5 0 0 Deconecter > quit
      mpdll MPMenuColor Channelbar > RGB_BACK > 16777180
      mpdll MPopup Channelbar > $mouse.dx $mouse.dy left left left
    }  
  }
}

alias -l fmaj {
  if ($2) { return $upper($left($1,$2)) $+ $mid($1,[ [ $calc($2 +1) ] $+ - ])  }
  elseif ($1) { return $upper($left($1-,1)) $+ $mid($1-,2-) } 
}

alias -l load.switchbar {
  var %n = $scon(0) , %i 1 , %dname = wbs.channelbar , %win = $window(0) , %table = wbs.channelbar.data
  if ($dialog(%dname).title) {
    wbs.figebar
    did -r %dname 1
    while (%i <= %n) {
      scid $scon(%i)
      var %chans = $chan(0) , %i2 1 , %query = $query(0) , %data = $hget(%table,$network)
      if (%chans > 0) {
        did -i %dname 1 1 cb root up
        did -a %dname 1 $iif($gettok(%data,1-6,32),$ifmatch,+be 1 1 0 0 0) $network $chr(9) $network $chr(91) $+ %chans $+ $chr(93)
        did -i %dname 1 1 cb root last 
        while (%i2 <= %chans) {
          var %tmp = $fmaj($chan(%i2),2)
          if ($len(%tmp) <= 17) { did -a %dname 1 2 10 0 0 0 %tmp $chr(9) %tmp }
          else { did -a %dname 1 2 10 0 0 0 $+($mid(%tmp,1,16),..) $chr(9) %tmp }
          inc %i2
        }
      }
      if (%query > 0) { 
        var %i3 1 , %qdata = $hget(%table,$+($network,.,$query(%i)))
        did -a %dname 1 $iif(%qdata,$ifmatch) 6 6 0 0 0 Query $chr(9) Query $chr(91) $+ %query $+ $chr(93)
        did -i %dname 1 1 cb last
        while (%i3 <= %query) {
          did -a %dname 1 5 5 0 0 0 $query(%i3) $chr(9) $query(%i3)
          inc %i3
        }
        did -i %dname 1 1 cb root up
      }
      inc %i
    }
    if (%win > 0) { 
      var %i3 1
      did -i %dname 1 1 cb root up
      did -a %dname 1 $iif($gettok($hget(%table,@windows),1-6,32),$ifmatch,+be 3 3 0 0 0) @Windows $chr(9) @Windows $chr(91) $+ %win $+ $chr(93)
      did -i %dname 1 1 cb root last
      while (%i3 <= %win) {
        did -a %dname 1 4 4 0 0 $window(%i3) $chr(9) $window(%i3)
        inc %i3
      }
      did -i %dname 1 1 branch collapse $calc($scon(0) +2)
      did -i %dname 1 1 cb root up
    }
  }
  wbs.dcclist
  if ($hget(%table)) { hfree %table }
}
alias -l wbs.dcclist {
  var %get = $get(0) , %send = $send(0) , %i 1 , %dname = wbs.channelbar , %table = wbs.channelbar.data
  if ($dialog(%dname).title) {
    if ($calc(%get + %send + $chat(0)) > 0) {
      ;did -i %dname 1 1 cb root up
      did -a %dname 1 $iif($gettok($hget(%table,!DCC),1-6,32),$ifmatch,+be 7 7 0 0 0) !DCC $chr(9) Dcc transfers
      did -i %dname 1 1 cb root last
      if (%get) {
        did -a %dname 1 9 9 0 0 0 Get $chr(9) Get $chr(91) $+ %get $+ $chr(93)
        did -i %dname 1 1 cb last
        while (%i <= %get) {
          did -a %dname 1 8 8 0 0 0 $get(%i) $chr(9) $get(%i).file $chr(40) $+ $get(%i).ip $+ $chr(41)
          inc %i
        }  
        did -i %dname 1 1 cb  up
      }
      if (%send) {
        var %i 1
        did -a %dname 1 10 10 0 0 0 Send $chr(9) Send $chr(91) $+ %send $+ $chr(93)
        did -i %dname 1 1 cb last
        while (%i <= %send) {
          did -a %dname 1 8 8 0 0 0 $send(%i) $chr(9) $send(%i).file $chr(40) $+ $send(%i).ip $+ $chr(41)
          inc %i
        }  
        did -i %dname 1 1 cb up
      }
      if ($chat(0)) {
        var %i 1
        did -a %dname 1 12 12 0 0 0 Chat $chr(9) Chat $chr(91) $+ $chat(0) $+ $chr(93)
        did -i %dname 1 1 cb last
        while (%i <= $chat(0)) {
          did -a %dname 1 13 13 0 0 0 $chat(%i).ip $chr(9) $chat(%i) $chr(91) $+ $chat(%i).ip $+ $chr(93)
          inc %i
        }  
        did -i %dname 1 1 cb root up
      }
    }
  }
}
alias -l wbs.figebar {
  var %table = wbs.channelbar.data , %n = $wbs.mdx.tree.num(wbs.channelbar,1) , %i 2
  if (%n > 0) {
    if ($hget(%table)) { hfree %table }
    while (%i <= %n) {
      var %data = $did(wbs.channelbar,1,%i)
      if (%data) { hadd -m %table $gettok(%data,7,32) %data }
      inc %i
    }
  }
}

on me:*:join:#: { .timer -m 1 1 load.switchbar } 
on me:*:part:#: { .timer -m 1 1 load.switchbar }
on *:connect:{ .timer -m 1 1 load.switchbar }
on *:open:@:{ .timer -m 1 1 load.switchbar }
on *:close:@:{ .timer -m 1 1 load.switchbar }
on *:open:?:{ .timer -m 1 1 load.switchbar }
on *:close:?:{ .timer -m 1 1 load.switchbar }
on *:close:*:{ if ($target == "status window") { .timer -m 1 1 load.switchbar } }
on *:GETFAIL:*.*:{ .timer -m 1 1 load.switchbar }
on *:FILERCVD:*:{ .timer -m 1 1 load.switchbar }
on *:FILESENT:*:{ .timer -m 1 1 load.switchbar }

alias wbs.mdx.tree.num {
  ;retourne le nombre total d'items dans une treeview
  if ($dialog($1)) && ($2) && ($isid) {
    var %i 0
    while ($true) {
      inc %i
      if (!$mdxgb($1,$2,%i)) { return %i }
    }
  }
}
Alias mdxGB {
  if ($dialog($1)) {
    did -i $1 $2 1 cb root $deltok($3,-1,32)
    return $did($1,$2,1,$gettok($3,-1,32))
  }
}
alias wbs.mdx.tree.id {
  ;syntaxe: Dname,ID,mot,N
  ;N = occurence, 0 pour le nombre total d"occurences
  if ($dialog($1)) && ($len($4)) && ($isid) {
    var %n = $wbs.mdx.tree.num($1,$2) , %i 1 , %k = 0
    while (%i <= %n) {
      var %data = $strip($mdxgb($1,$2,%i))
      if (%data) {
        var %tmp = $gettok($gettok(%data,7-,32),1,9)
        if ($3 iswm %tmp || $3 == %tmp) {
          inc %k
          if ($4 == %k) { return %i }
        }
      }
      elseif (!$len($4)) { break }
      else { return %k }
      inc %i
    }
  }
}

alias wbs.findscon {
  if ($isid) && ($1) {
    var %n = $scon(0) , %id = $scon($network)
    while (%n > 0) {
      scid $scon(%n)
      if ($1 == $network) { return $scon(%n) }
      dec %n
    }
    if (%id) { scid $scid(%id) }
  }
}
alias wbsopen {
  var %dialog = $1 , %mod = $2
  if (%dialog) {
    if ($dialog(%dialog).title) { dialog -v %dialog }
    else { 
      if ($left(%mod,1) == -) { dialog %mod %dialog %dialog }
      else { dialog -m %dialog %dialog }
    }
  }
}

alias mdx {
  if ($wdll(mdx.dll)) { dll $ifmatch $1- }
  elseif (%mdx) { dll $shortfn(%mdx) $1- }
}
alias mdxinit {
  if ($1) { var %dname = $1- }
  else { var %dname = $dname }
  if (!%dname) { wecho erreur: Mdxinit: nom du dialog manquant !  | halt }
  else {
    mdx SetMircVersion $version
    mdx MarkDialog %dname 
    return OK
  }
}
alias dellasttok { return $deltok($1,$numtok($1,$2),$2) }
alias wbsdir { 
  if ($wbs.relat($shortfn($scriptdir))) { return $ifmatch $+ $chr(92) }
}
alias idid { if ($1) { did -i $dname $1- } }
alias wbs.relat { 
  if ($gettok($$1,$calc($numtok($mircdir,92) +1),92)) {  return $gettok($$1,$calc($numtok($mircdir,92) +1) $+ -,92) }
}
alias wdll {
  if ($1) {
    if ($hget(wbs.dlls,$1)) { return $wbs.relat($shortfn($ifmatch)) }
    var %wdll = $wbsdir $+ dlls\ $+ $1
    if (!$exists(%wdll)) { 
      var %wdll = $findfile($mircdir,$ifmatch,1)
      if (%wdll) { hadd -m wbs.dlls $nopath(%wdll) %wdll }
    }
    if (%wdll) { return $wbs.relat($shortfn($ifmatch))  }
  }
}

alias mgettok {
  if ($0) && ($isid) {
    var %n = $calc(($0 -1) / 2)
    if ($chr(46) !isin %n) {
      var %i 1 , %tok = 3 , %id = 2
      while (%i <= %n) {
        var %tmp = $eval($+($,%tok),2)
        if (%tmp !isnum) { var %tmp = $asc(%tmp) }
        if (!%data) { var %data = $gettok($1,$eval($+($,%id),2),%tmp) }
        else { var %data =  $gettok(%data,$eval($+($,%id),2),%tmp) }
        inc %id 2
        inc %tok 2
        inc %i
      }
      return %data
    }
    else { wecho Error: mgettok syntaxe/parametres invalides }
  }
}
alias wbsclose {
  var %dname = $iif($1-,$ifmatch,$dname)
  if ($dialog(%dname).title) { dialog -x %dname }
}
alias -l mpdll {
  if ($isid) { return $dll($wdll(mpopup.dll),$1,$2-) }
  else { dll $wdll(mpopup.dll) $1 $2- }
}