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) }