;;;;;;;;;;;;;;;;;;;;;;;;;; ; /sticky by poiuy_qwert ; ;;;;;;;;;;;;;;;;;;;;;;;;;; ; irc.gamesurge.net #script #eval ;;;;;;;;;;;;;;;;;;;;;;;;;; ; NOTE 1: THIS VERSION IS NOT BACKWARDS COMPATABLE ; NOTE 2: THERE IS NO ERROR CHECKING ;;;;;;;;;;;;;;;;;;;;;;;;;; ; Updates: ; - Can now specify width and height of the sticky ; - Multiple lines supported ; - Sticky resizing ; - Lots of little changes ;;;;;;;;;;;;;;;;;;;;;;;;;; ; Usage: ; /sticky [ [Text]] ; Create a new sticky: ; -Name is the name of the sticky ; -X Y W H is the x/y co-ordinates and width/height of the sticky (use -1 for X and Y to center the sticky on screen) ; -BackgroundColor is the background color of the sticky ; -BoarderColor is the boarder color of the sticky ; -TextColor is the color of the text in the sticky ; -Font is the font used in the sticky ; -FontSize is the size of the font in the sticky ; -Title is the stickies title text. To have a title with more than one word wrap it in quotes ; -Text is the default text for the sticky ; /stickies ; List the current stickies (like /socklist) ; $stickies(N) ; Return the Nth stickies name, if N is 0 return how many stickies there are ; /sticky.title <Name> <Text> ; Set the stickies title ; -Name is the name of the sticky ; -Text is the title text to use (No quotes are required for this) ; /sticky.size <Name> <X Y W H> ; Resize/reposition a sticky ; -Name is the name of the sticky ; -X Y W H is the position and size of the sticky (use -1 for the values to use the current value) ; /sticky.ontop <Name> ; Toggle on top for a sticky ; -Name is the name of the sticky ; $sticky.ontop(Name) ; Return if a sticky is ontop or not ; -Name is the name of the sticky ; /sticky.aline <Name> <Text> ; Add a line of text to the sticky ; -Name is the name of the sticky ; -Text is the text of the line ; /sticky.dline <Name> <N> ; Delete the Nth line in the sticky ; -Name is the name of the sticky ; -N is the line number ; /sticky.iline <Name> <N> <Text> ; Insert a line of text in the Nth position ; -Name is the name of the sticky ; -N is the line number ; -Text is the text of the line ; /sticky.rline <Name> <N> <Text> ; Replace the Nth line of text ; -Name is the name of the sticky ; -N is the line number ; -Text is the text of the line ; $sticky.line(Name,N) ; Return the Nth line of text ; -Name is the name of the sticky ; -N is the line number ; $sticky.fline(Name,Wildtext,N[,X]) ; Return Nth position of the line that matches the wildcard ; -Name is the name of the sticky ; -Wildtext is the text to match on the line ; -N is the Nth line that matches Wildtext ; -X can be anything, if its set it means Wildtext is a regular expression ; /sticky.close <Name> ; Close a sticky ; -Name is the name of the sticky (can use wildcards) ;;;;;;;;;;;;;;;;;;;;;;;;;; ; Example: ; Run the '/teststicky' command to test stickies ;;;;;;;;;;;;;;;;;;;;;;;;;; alias teststicky { sticky sticky 100 100 300 500 $rgb(50,50,255) $rgb(0,0,130) $rgb(0,0,130) Tahoma 12 "Testing title with spaces" This is a test for my /sticky snippet that is supposed to imitate the stickies that a MAC has. sticky.aline sticky In the top right there is a X for closing the sticky, and a box beside it to toggle on-top off or on (filled is on-top). sticky.aline sticky The stickies are also resizable, click and drag in the bottem right corner to do it! sticky.aline sticky Stickies has commands like /aline, /rline, /iline, /dline, $!line, and $!fline, just with /sticky.* before them. sticky.iline sticky 4 } alias sticky { var %h sticky. $+ $1,%w = @ $+ %h,%a 33,%c window -Bpdow0 $+ $iif($2-3 == -1 -1,C) +dL %w $2-5 window -lh @sticky.lines. $+ $1 hadd -m %h bgcolor $6 hadd %h bordercolor $7 hadd %h textcolor $8 hadd %h font $9 hadd %h fontsize $10 while (%a < 127) var %c = %c $+ $chr(%a),%a = %a + 1 hadd %h textheight $height(%c,$9,$10) if ($11) { var %p $pos($11-,",2) if ("* iswm $11) && (%p) var %t = $noqt($left($11-,%p)),%r = $right($11-,- $+ %p) else var %t $11,%r $12- hadd %h title %t if (%r) aline @sticky.lines. $+ $1 %r } sticky.draw $1 } alias stickies { if ($isid) && ($1 isnum) return $iif($1 == 0,$window(@sticky.lines.*,0),$gettok($window(@sticky.lines.*,$1),3-,46)) else { if ($window(@sticky.lines.*,0)) { echo $color(info) * Open stickies: var %a 1 while ($window(@sticky.lines.*,%a)) { var %n $gettok($v1,3-,46),%a = %a + 1 echo $color(info2) %n $qt($hget(sticky. $+ %n,title)) } } else echo $color(info) * No open stickies } } alias sticky.title { hadd sticky. $+ $1 title $2- sticky.draw $1 } alias sticky.size { window @sticky. $+ $1- sticky.draw $1 } alias sticky.ontop { var %o $window(@sticky. $+ $1).ontop if ($isid) return %o else { window $iif(%o,-u,-o) @sticky. $+ $1 sticky.draw $1 } } alias sticky.aline { aline @sticky.lines. $+ $1 $iif(!$2,$chr(160),$2-) sticky.draw $1 } alias sticky.dline { dline @sticky.lines. $+ $1-2 sticky.draw $1 } alias sticky.iline { iline @sticky.lines. $+ $1-2 $iif(!$3,$chr(160),$3-) sticky.draw $1 } alias sticky.rline { rline @sticky.lines. $+ $1-2 $iif(!$3,$chr(160),$3-) sticky.draw $1 } alias sticky.line return $line(@sticky.lines. $+ $1,$2) alias sticky.fline return $fline(@sticky.lines. $+ $1,$2,$3,$iif($4,2)) alias sticky.close { window -c @sticky. $+ $1 window -c @sticky.lines. $+ $1 hfree -w sticky. $+ $1 } alias -l sticky.draw { var %h sticky. $+ $1,%w = @ $+ %h,%ww $window(%w).w,%wh $window(%w).h,%s $calc($hget(%h,textheight) +6),%t = $hget(%h,title) drawrect -rnf %w $hget(%h,bgcolor) 1 0 0 %ww %wh drawrect -rn %w $hget(%h,bordercolor) 1 0 0 %ww %wh drawrect -rn $+ $iif($window(%w).ontop,f) %w $hget(%h,bordercolor) 1 $calc(%ww -19) 0 10 10 drawline -rn %w $hget(%h,bordercolor) 1 $calc(%ww -10) 0 $calc(%ww -1) 9 $calc(%ww -10) 9 $calc(%ww -1) 0 drawline -rn %w $hget(%h,bordercolor) 1 0 %s $window(%w).w %s drawline -rn %w $hget(%h,bordercolor) 1 $calc(%ww -11) %wh $calc(%ww -1) $calc(%wh -10) if (%t) { if ($width(%t,$hget(%h,font),$hget(%h,fontsize)) > $calc(%ww -25)) %t = $wrap(%t,$hget(%h,font),$hget(%h,fontsize),$calc(%ww - $width(...,$hget(%h,font),$hget(%h,fontsize))-25),0,1) $+ ... drawtext -rn %w $hget(%h,textcolor) $hget(%h,font) $hget(%h,fontsize) 3 3 %t } var %a 1,%y = %s + 3 while (%y < $window(%w).h) && (%a <= $line(@sticky.lines. $+ $1,0)) { var %b 1,%t = $line(@sticky.lines. $+ $1,%a) while (%y < $window(%w).h) && (%b <= $wrap(%t,$hget(%h,font),$hget(%h,fontsize),$calc(%ww -6),1,0)) { if ($wrap(%t,$hget(%h,font),$hget(%h,fontsize),$calc(%ww -6),1,%b)) drawtext -rn %w $hget(%h,textcolor) $hget(%h,font) $hget(%h,fontsize) 3 %y $v1 var %y = $calc($hget(%h,textheight) +4+%y),%b = %b + 1 } inc %a } drawdot %w } menu @sticky.* { sclick:sticky.sdrag $active mouse:sticky.mdrag $active drop:unset %sticky.* leave:if (%sticky.x) && (%sticky.y) sticky.mdrag $active } alias -l sticky.sdrag { var %w $window($1).w,%h $window($1).h if ($inrect($mouse.x,$mouse.y,$calc(%w -10),0,10,10)) sticky.close $gettok($1,2-,46) elseif ($inrect($mouse.x,$mouse.y,$calc(%w -19),0,9,10)) { window $iif($window($1).ontop,-u,-o) $1 sticky.draw $gettok($1,2-,46) } else { if ($inrect($mouse.x,$mouse.y,$calc(%w -10),$calc(%h -10),10,10)) { set %sticky.size 1 set %sticky.x $calc(%w - $mouse.x) set %sticky.y $calc(%h - $mouse.y) } else { set %sticky.x $mouse.x set %sticky.y $mouse.y } } } alias -l sticky.mdrag { if (%sticky.x) && (%sticky.y) { if ($mouse.key !& 1) unset %sticky.* elseif (%sticky.size) { var %w $iif($calc($mouse.x +%sticky.x) > 50,$v1,50),%h $iif($calc($mouse.y +%sticky.y) > 50,$v1,50) if (%w != $window($1).w) && (%h != $window($1).h) { window $1 -1 -1 %w %h sticky.draw $gettok($1,2-,46) } } else window $1 $calc($window($1).x + $mouse.x -%sticky.x) $calc($window($1).y + $mouse.y -%sticky.y) } } on *:CLOSE:@:if (@sticky.* iswm $target) sticky.close $gettok($1,2-,46)