alias colors dialog -m colorgen colorgen dialog colorgen { title "Your personal color generator" option dbu size -1 -1 138 100 box "Red", 1, 1 1 135 25 edit "0", 2, 6 12 20 10, read scroll "Red", 3, 30 1 100 20, horizontal, range 0 255 box "green", 4, 1 25 135 25 edit "0", 5, 6 36 20 10, read scroll "green", 6, 30 25 100 20, horizontal, range 0 255 box "blue", 7, 1 49 135 25 edit "0", 8, 6 60 20 10, read scroll "blue", 9, 30 49 100 20, horizontal, range 0 255 text "Hex:", 10, 15 75 20 8, left edit "#000000", 11, 37 75 30 8 text "RGB:", 12, 70 75 20 8, left edit "0", 13, 92 75 30 8 button "Grab Color From Image", 14, 1 87 136 10 } menu @grab { sclick: { var %rgb = $getdot(@grab,$mouse.x,$mouse.y), %c = $rgb(%rgb), %b = $gettok(%c,3,44), %r = $gettok(%c,1,44), %g = $gettok(%c,2,44) did -c colorgen 3 %r did -ra colorgen 2 %r did -c colorgen 6 %g did -ra colorgen 5 %g did -c colorgen 9 %b did -ra colorgen 8 %b drawreplace -r @preview $getdot(@preview,1,1) %rgb did -ra colorgen 13 %rgb did -ra colorgen 11 $+($chr(35),$iif($len($base(%r,10,16)) == 1,0 $+ $base(%r,10,16),$base(%r,10,16)),$iif($len($base(%g,10,16)) == 1,0 $+ $base(%g,10,16),$base(%g,10,16)),$iif($len($base(%b,10,16)) == 1,0 $+ $base(%b,10,16),$base(%b,10,16))))) } } on *:DIALOG:*:*:*:{ if ($dname == colorgen) { if ($devent == sclick) { if ($did == 14) { if (!$window(@grab)) window -p @grab 300 300 300 300 drawpic -s @grab 1 1 $window(@grab).dw $window(@grab).dh $shortfn($sfile(C:\)) } } if ($devent == init) { did -b $dname 2,5,8 | window -p +s @preview 100 100 100 100 | drawreplace -r @preview $getdot(@preview,1,1) 0 } if ($devent == scroll) { var %r = $did(3).sel, %g = $did(6).sel, %b = $did(9).sel, %d = $calc($did - 1), %rgb = $calc((%r * 1) + (%g * 256) + (%b * 65536)) did -ra $dname %d $did($did).sel did -ra $dname 13 %rgb drawreplace -r @preview $getdot(@preview,1,1) %rgb did -ra $dname 11 $+($chr(35),$iif($len($base(%r,10,16)) == 1,0 $+ $base(%r,10,16),$base(%r,10,16)),$iif($len($base(%g,10,16)) == 1,0 $+ $base(%g,10,16),$base(%g,10,16)),$iif($len($base(%b,10,16)) == 1,0 $+ $base(%b,10,16),$base(%b,10,16))))) } if ($devent == close) { window -c @preview | window -c @grab } } }