PDX - Picwin-dialog-extension for mIRC — File Browser

PDX-Picwin-dialog-extensionformIRCv1.0 / PDX-Picwin-dialog-extensionformIRCv1.0 / pdx.mrc

pdx.mrc — 6.29 KB — Download this file

;
; SET ACTIVE DIALOG
;

alias pdx.init {
  set %pdx.active $1
  set %pdx.script $2-
  set %pdx.dline $read($2-,w,dialog $1 $chr(123))
  if (!%pdx.font) set %pdx.font Arial
  if (!%pdx.size) set %pdx.size 10
  if (!%pdx.back) set %pdx.back $rgb(face)

  if (!$isidr($tmpdir)) mkdir $tmpdir
}
alias pdx.font set %pdx.font $1-
alias pdx.fontsize set %pdx.size $1-
alias pdx.back {
  if ($1- isnum) set %pdx.back $1-
  else set %pdx.back $rgb( [ $1- ] )
}


alias -l tmpdir return tmp/

; PDX TEXT 
alias pdx.text {
  tokenize 32 $1 $iif($2,$2-,$did.text($1))

  var %t = pdx. $+  %pdx.active, %f = $tmpdir $+ $ticks $+ $r(1000,9999) $+ .bmp, %font = %pdx.font, %size = %pdx.size
  var %3 = $did.width($1), %4 = $did.height($1)
  hadd -m %t $1 %f | window -hpfB +d @tmp -1 -1 %3 %4 | drawrect -fr @tmp %pdx.back 1 0 0 %3 %4

  var %i = 0
  while ($wrap($2-,%font,%size,$calc(%3 - 10),1,$calc(%i + 1))) {
    drawtext -rpbc @tmp 0 %pdx.back $+(",%font,") %size 0 $calc($height($2-,%font,%size) * %i) %3 $height($2-,%font,%size) $v1
    inc %i
  }

  if (%debug) drawrect -r @tmp $rgb(255,0,0) 1 0 0 %3 %4 | drawsave @tmp %f | window -c @tmp
}

; PDX TIPS
alias pdx.tips {
  tokenize 32 $1 $iif($2,$2-,$did.text($1))

  var %t = pdx. $+  %pdx.active, %f = $tmpdir $+ $ticks $+ $r(1000,9999) $+ .bmp, %font = %pdx.font, %size = %pdx.size
  var %3 = $did.width($1), %4 = $did.height($1)
  hadd -m %t $1 %f | window -hpfB +d @tmp -1 -1 %3 %4 | drawrect -fr @tmp $rgb(240,240,190) 1 0 0 %3 %4 

  var %i = 0
  while ($wrap($2-,%font,%size,$calc(%3 - 10),1,$calc(%i + 1))) {
    drawtext -rpbc @tmp 0 $rgb(240,240,190) $+(",%font,") %size 6 $calc($height($2-,%font,%size) * %i + 6) $calc(%3 - 12) $height($2-,%font,%size) $v1
    inc %i
  }

  drawrect -r @tmp $rgb(0,0,0) 1 0 0 %3 %4 | if (%debug) drawrect -r @tmp $rgb(255,0,0) 1 0 0 %3 %4 | drawsave @tmp %f | window -c @tmp
}

; PDX BOX
alias pdx.box {
  tokenize 32 $1 $iif($2,$2-,$did.text($1))

  var %t = pdx. $+ %pdx.active, %f = $tmpdir $+ $ticks $+ $r(1000,9999) $+ .bmp, %font = %pdx.font, %size = %pdx.size
  var %3 = $did.width($1), %4 = $did.height($1)

  hadd -m %t $1 %f | window -hpfB +d @tmp -1 -1 %3 %4 | drawrect -fr @tmp %pdx.back 1 0 0 %3 %4

  var %x = 1, %y = $calc($height($2-,%font,%size) / 2 + 1), %w = $calc(%3 - 1), %h = $calc(%4 - %y + 1), %rgb = hilight 
  drawrect -r @tmp $rgb(%rgb) 1 %x %y %w %h 
  var %x = 0, %y = $calc($height($2-,%font,%size) / 2), %w = $calc(%3 - 1), %h = $calc(%4 - %y), %rgb = shadow 
  drawrect -r @tmp $rgb(%rgb) 1 %x %y %w %h

  drawrect -fr @tmp %pdx.back 1 7 0 $calc($width($2-,%font,%size,0,1) + 6) $height($2-,%font,%size)
  drawtext -rpb @tmp 0 %pdx.back $+(",%font,") %size 10 0 $2-

  if (%debug) drawrect -r @tmp $rgb(255,0,0) 1 0 0 %3 %4 | drawsave @tmp %f | window -c @tmp
}

; PDX BG
alias pdx.bg {
  tokenize 32 $1 $iif($2,$2-,$did.text($1))

  var %t = pdx. $+ %pdx.active, %f = $tmpdir $+ $ticks $+ $r(1000,9999) $+ .bmp, %font = %pdx.font, %size = %pdx.size
  var %3 = $did.width($1), %4 = $did.height($1)

  hadd -m %t $1 %f | window -hpfB +d @tmp -1 -1 %3 %4 | drawrect -fr @tmp %pdx.back 1 0 0 %3 %4

  if ($2 == fade) {

    var %r1 = $iif($chr(44) isin $3,$3,$iif($3 isnum,$rgb( [ $3 ] ),$rgb($rgb($3)))), %r1a = $gettok(%r1,1,44), %r1b = $gettok(%r1,2,44) , %r1c = $gettok(%r1,3,44)
    var %r2 = $iif($chr(44) isin $4,$4,$iif($4 isnum,$rgb( [ $4 ] ),$rgb($rgb($4)))), %r2a = $gettok(%r2,1,44), %r2b = $gettok(%r2,2,44) , %r2c = $gettok(%r2,3,44)

    echo -s : %r1 -- %r2

    var %i = 0

    while (%i <= %4) { 
      %nc = $rgb( $calc( %r1a -  (%r1a - %r2a) / %4 * %i) , $calc( %r1b -  (%r1b - %r2b) / %4 * %i) , $calc( %r1c -  (%r1c - %r2c) / %4 * %i))
      drawline -r @tmp %nc 1 0 %i %3 %i 
      inc %i 
    }

  }
  else {
    if ($chr(44) isin $2) drawrect -fr @tmp $rgb( [ $2 ] ) 1 0 0 %3 %4
    else drawrect -fr @tmp $2 1 0 0 %3 %4
  }


  if (%debug) drawrect -r @tmp $rgb(255,0,0) 1 0 0 %3 %4 | drawsave @tmp %f | window -c @tmp
}


; PDX PROGRESSBAR
alias pdx.progressbar {
  tokenize 32 $1 $iif($2,$2-,$did.text($1))
  var %t = pdx. $+ %pdx.active, %f = $tmpdir $+ $ticks $+ $r(1000,9999) $+ .bmp, %font = %pdx.font, %size = %pdx.size
  var %3 = $did.width($1), %4 = $did.height($1)
  hadd -m %t $1 %f | window -hpfB +d @tmp -1 -1 %3 %4 | drawrect -fr @tmp %pdx.back 1 0 0 %3 %4

  drawline -r @tmp $rgb(0,0,0) 1 1 0 $calc(%3 - 1) 0
  drawline -r @tmp $rgb(0,0,0) 1 1 $calc(%4 - 1) $calc(%3 - 1) $calc(%4 - 1)

  drawline -r @tmp $rgb(0,0,0) 1 0 1 0 $calc(%4 - 1)
  drawline -r @tmp $rgb(0,0,0) 1 $calc(%3 - 1) 1 $calc(%3 - 1) $calc(%4 - 1)

  var %x = $round($calc($2 / 100 * $calc(%3 - 2)),0)

  var %i = $calc(%4 - 2), %p = $calc(2 * $pi / %i), %r, %r2
  while (%i) { %r = $calc(175 + $cos($calc(%p * %i)) * 50 ) | %r2 = %r - 50 | drawline -r @tmp $rgb(%r2,%r,%r2) 1 1 %i $calc(%x + 1) %i | dec %i }

  var %i = $calc(%4 - 2), %p = $calc(2 * $pi / %i), %r, %r2
  while (%i) { %r = $calc(230 + $cos($calc(%p * %i)) * 25 ) | %r2 = %r - 0 | drawline -r @tmp $rgb(%r2,%r,%r2) 1 $calc(%x + 1) %i $calc(%3 - 1) %i | dec %i }


  if (%debug) drawrect -r @tmp $rgb(255,0,0) 1 0 0 %3 %4 | drawsave @tmp %f | window -c @tmp
}


;
; APPLY BITMAPS
;

on *:dialog:*:init:0:{
  var %t = pdx. $+ $dname,%i = 1,%item
  if ($hget(%t)) {
    while ($hget(%t,%i).item) {
      %item = $v1
      if ($isfile($hget(%t,%item))) { did -g $dname %item $hget(%t,%item) | .remove $hget(%t,%item) }
      inc %i
    }
    hfree %t
    .signal pdx.init $dname
  }
}

;
; CLEAN UP
;

on *:exit:unset %pdx.*

;
; Edit control
;
alias pdid {
  pdx. $+ $2 $1 $3 
  var %f = $hget(pdx. $+ %pdx.active,$1) 
  did -g %pdx.active $1 %f
  .remove %f
}


;
; ALIASES
;
alias pdx return $mircexe
alias -l drawsave { if (!$isdir(tmp)) mkdir tmp | drawsave $1- }
alias -l did.width { var %str = * icon $1 $+ *,* * * *, $+ $+(*,$,pdx,*)  | var %res = $read(%pdx.script,nw,%str,%pdx.dline) | return $gettok($gettok(%res,2,44),3,32) }
alias -l did.height { var %str = * icon $1 $+ *,* * * *, $+ $+(*,$,pdx,*) | var %res = $read(%pdx.script,nw,%str,%pdx.dline) | return $gettok($gettok(%res,2,44),4,32) }
alias -l did.text { var %str = * icon $1 $+ *,* * * *, $+ $+(*,$,pdx,*)   | var %res = $read(%pdx.script,nw,%str,%pdx.dline) | return $gettok(%res,5-,44) }