Peace & Protection 4.00 — File Browser
PeaceProtection4.00v4.0 / PeaceProtection4.00v4.0 / SCRIPT / WINDOW.MRC
WINDOW.MRC — 15 KB — Download this file
; #= P&P -rs
; ########################################
; Peace & Protection
; Generic and standard custom windows
; ########################################
;
; Unhide all windows
;
alias unhide {
unset %!hidden | window -w "Status Window"
var %num = $chan(0) | :loopC | if (%num) { window -w " $+ $chan(%num) $+ " | dec %num | goto loopC }
%num = $chat(0) | :loopD | if (%num) { window -w = $+ $chat(%num) | dec %num | goto loopD }
%num = $query(0) | :loopQ | if (%num) { window -w $query(%num) | dec %num | goto loopQ }
%num = $numtok(%!@close,32) | :loopW | if (%num) { if ($window($gettok(%!@close,%num,32))) window -w $ifmatch | dec %num | goto loopW }
}
;
; Hide a window
;
; /hide [#chan|query|=chat|@win|status window]
alias hide {
if ($1) var %window = $1- | else var %window = $active
if ((%window == status window) || (%window ischan) || ($query(%window)) || ((=* iswm %window) && ($chat($right(%window,-1)))) || ($window(%window) == %window)) {
if (($chr(32) isin %window) || (%window ischan)) window -h " $+ %window $+ "
else window -h %window
%!hidden = 1
if ($active == %window) window -aw "Status Window"
}
else dispa Error- Can't hide $:s(%window)
if ($_dlgi(unhide) != 1) {
if ($dialog(howunhide,howunhide,-4)) _dlgw unhide 1
}
}
dialog howunhide {
title "Hiding Windows"
size -1 -1 250 125
text "To unhide a window, select it from the Window menu, or select 'Unhide all' from the P&&P menu. You can also type /unhide.", 3, 10 10 230 100
check "Don't show this message again", 2, 40 60 170 20
button "OK", 1, 85 90 80 25, ok default
edit "", 4, 1 1 1 1, hide autohs result
}
on *:DIALOG:howunhide:sclick:1:did -o $dname 4 1 $did(2).state
;
; Pick new windows
;
alias _newwin {
if ($window($1*,0) == 0) return $1
var %num = $calc(1 + [ $remove($window($1*,$window($1*,0)),$1) ] )
if (%num == 1) inc %num
return $1 $+ %num
}
alias _newdlg {
if ($dialog($1) == $null) return $1
var %num = 1
:loop
var %try = $1 $+ %num
if ($dialog(%try) == $null) return %try
inc %num | goto loop
}
; _window n -abcefl[N]noprsx -tN,..,N|+bfmnstx|+ @Name x y w h [/command] [popup]
; second -+ param is p2s
; Opens window with remembered settings for position, size, font, and desktopping
; n is 1 or 2-
; Appends a generic window submenu type- (not for picture windows/etc.)
; Use 1 for conceptually loggable windows
; Use 2 for nonloggable windows
; Add .n for listbox Copy cmd (n is first line to select on a select-all)
; Don't use for quick or hidden windows or windows that change name or settings
alias _window {
% [ $+ [ $4 ] ] = $remove($2,n,a,r,x,h,w) $3 $9-
%@R [ $+ [ $4 ] ] = $readini -n $_cfg(window.ini) $4 rem
if (%@R [ $+ [ $4 ] ] == $null) %@R [ $+ [ $4 ] ] = 1
%@L [ $+ [ $4 ] ] = $readini -n $_cfg(window.ini) $4 log
%@P [ $+ [ $4 ] ] = $readini -n $_cfg(window.ini) $4 pos
if (%@P [ $+ [ $4 ] ] == $null) %@P [ $+ [ $4 ] ] = $5-8
%@D [ $+ [ $4 ] ] = $5-8
window $iif($readini -n $_cfg(window.ini) $4 desk,$2d,$2) $_p2s($3) $4 %@P [ $+ [ $4 ] ] $9- $readini -n $_cfg(window.ini) $4 font
%!@close = $addtok(%!@close,$4,32)
if ($1 < 4) %!@help = $addtok(%!@help,$4,32)
if ($1 < 3) %!@nolog = $addtok(%!@nolog,$4,32)
if ($1 < 2) %!@log = $addtok(%!@log,$4,32)
if (. isin $1) { %!@copy = $addtok(%!@copy,$4,32) | %@S [ $+ [ $4 ] ] = $gettok($1,2,46) }
}
; Logs if window is logging (doesn't do stripping etc.)
; _win.log @window text
alias _win.log if (%@L [ $+ [ $1 ] ] != $null) write " [ $+ [ $logdir ] $+ [ $ifmatch ] $+ [ " ] ] $2-
; _windowreg @window call-on-close
; Registers an alias to call when the window closes (with window name as parameter)
alias _windowreg %@C [ $+ [ $1 ] ] = $2-
; select all items or all matching items
alias _selectall {
sline -r $1
var %num = $line($1,0)
:loop
if (%num >= $2) { sline -a $1 %num | dec %num | goto loop }
}
alias _selectallw {
sline -r $1
var %num = $line($1,0)
:loop
if (%num >= $2) { if ($3- iswm $line($1,%num)) sline -a $1 %num | dec %num | goto loop }
}
;
; Sort a window
; _dosort @window firstline tokennum tokentype numeric? descend?
;
alias _dosort {
var %range = $2 $+ - $+ $line($1,0)
filter -tr $+ $iif($5,u) $+ $iif($6,e) %range $3 $4 $1 $1 *
dline $1 %range
}
;
; Move selected items up or down in a window
; firstline is first line you allow to be modified; does checks in this routine
; _doslideup @window firstline
; _doslidedn @window
;
alias _doslideup {
if ($sline($1,1).ln <= $2) return
var %num = 1
:loop
if ($sline($1,%num).ln) {
iline -a $1 $calc($ifmatch - 1) $sline($1,%num)
inc %num
dline $1 $sline($1,%num).ln
goto loop
}
}
alias _doslidedn {
if ($sline($1,$sline($1,0)).ln == $line($1,0)) return
var %num = $sline($1,0)
:loop
if (%num) {
iline -a $1 $calc($sline($1,%num).ln + 2) $sline($1,%num)
dline $1 $sline($1,%num).ln
dec %num
goto loop
}
}
;
; Randomizes selected items in a window
; firstline is first line you allow to be modified; does checks in this routine
; _doshuffle @window firstline
;
alias _doshuffle {
if (($sline($1,1).ln < $2) || ($sline($1,1).ln == $null)) return
var %new,%line,%num = 1
:loop
if ($sline($1,%num).ln) {
%new = $sline($1,$_pprand($sline($1,0))).ln
if ($ifmatch != %new) {
%line = $line($1,%new)
rline $1 %new $line($1,$ifmatch)
rline $1 $ifmatch %line
}
inc %num
goto loop
}
}
;
; Randomizes all items in a window
; firstline is first line you allow to be modified
; _doshufflea @window firstline
;
alias _doshufflea {
if ($line($1,0) < $2) return
var %line,%num = $line($1,0)
:loop
%new = $calc($_pprand($calc($line($1,0) - $2 + 1)) + $2 - 1)
if (%num != %new) {
%line = $line($1,%new)
rline $1 %new $line($1,%num)
rline $1 %num %line
}
if (%num > $2) { dec %num | goto loop }
}
;
; Replace a line but using iline/dline combo to preserve sorting
; _ridline [-a|s] [col] @win ln new line
;
alias _ridline if (-* iswm $1) { dline $2-4 | iline $1- } | else { dline $1-3 | iline $1- }
; Remembers window settings on closing
on *:CLOSE:@:_dowclose $target
alias _dowclose {
if ($istok(%!@close,$1,32)) {
; Position
if (%@R [ $+ [ $1 ] ] ) {
if (f isin % [ $+ [ $1 ] ] ) var %@P = $window($1).x $window($1).y $window($1).dw $window($1).dh
else var %@P = $window($1).x $window($1).y $window($1).w $window($1).h
if (%@P == %@D [ $+ [ $1 ] ] ) remini $_cfg(window.ini) $1 pos
else writeini $_cfg(window.ini) $1 pos %@P
}
; Font (hidden window is to grab default font for comparison)
window -h @.fontgrab
if (($window($1).font != $window(@.fontgrab).font) || ($window($1).fontsize != $window(@.fontgrab).fontsize) || ($window($1).fontbold != $window(@.fontgrab).fontbold)) writeini $_cfg(window.ini) $1 font $window($1).font $iif($window($1).fontbold,bold) $window($1).fontsize
else remini $_cfg(window.ini) $1 font
window -c @.fontgrab
; On close routine?
if (%@C [ $+ [ $1 ] ] ) $ifmatch $1
; Cleanup
_dowcleanup $1
}
}
alias _dowcleanup {
if ($remtok(%!@close,$1,32)) %!@close = $ifmatch | else unset %!@close
if ($remtok(%!@copy,$1,32)) %!@copy = $ifmatch | else unset %!@copy
if ($remtok(%!@help,$1,32)) %!@help = $ifmatch | else unset %!@help
if ($remtok(%!@nolog,$1,32)) %!@nolog = $ifmatch | else unset %!@nolog
if ($remtok(%!@log,$1,32)) %!@log = $ifmatch | else unset %!@log
unset %@? $+ $1 % $+ $1
}
;
; Quick-error box
;
on *:KEYDOWN:@Error:13,27:%_lastkey = $keyval
on *:KEYUP:@Error:13,27:if ($keyval == %_lastkey) { window -c @Error | .timer.errorchk off | _unlock.tb | unset %_lastkey }
alias _error _doerror Error- $1-
alias _doerror {
if ($show == $false) $$$
; Timer for closing
_lock.tb
.timer.errorchk -om 0 100 if ($active != @Error) $chr(123) window -c @Error $chr(124) .timer.errorchk off $chr(124) _unlock.tb $chr(125)
; Window
window -c @Error
window -pfdhka +bLt @Error $_center(400,68,1,-7,-25) @Close2
drawrect -frn @Error $rgb(face) 1 0 0 400 68
drawpic -nt @Error $rgb(255,255,255) 334 1 130 65 64 64 script\icons.bmp
; Text
drawtext -nr @Error $rgb(text) "ms sans serif" 22 5 2 $1
drawtext -nr @Error $rgb(text) "ms sans serif" 22 5 23 $gettok($2-,1,127)
if ( isin $2-) drawtext -nr @Error $rgb(text) "ms sans serif" 13 5 47 $gettok($2-,2,127)
drawdot @Error
_ssplay othererror
halt
}
;
; Quick-help box
;
on *:INPUT:@Quick:window -c @Quick | .timer.quickchk off | .timer.quickflash off | _unlock.tb | unset %_qhelp.* %_qhelpn.* | _juryrig2 $1- | halt
; if info is in quikhelp.dat- _qhelp /cmd (what was entered)
; otherwise- _qhelp $_s2f(quikhelp.dat info) (what was entered)
alias _qhelp {
unset %_qhelp.*
; timers
_lock.tb
.timer.quickchk -om 0 100 if ($active != @Quick) $chr(123) window -c @Quick $chr(124) .timer.quickchk off $chr(124) .timer.quickflash off $chr(124) _unlock.tb $chr(124) unset % $+ _qhelp.* % $+ _qhelpn.* $chr(125)
; window
window -c @Quick
window -pfdehka +bLt @Quick $_center(400,68,1,-7,-50) @Close ms sans serif 16
drawrect -frn @Quick $rgb(face) 1 0 0 400 68
titlebar @Quick Help- $gettok($1,1,160)
editbox -p @Quick $gettok($1,1,160) $2-
; display parameters in their boxes
unset %_qhelp.flip
var %type,%parm,%num = 1,%x = 1,%read = $read -ts [ $+ [ $1 ] ] script\quikhelp.dat
if (%read == $null) %read = $gettok($_f2s($1),2-,32)
if ($findtok(%read,*,1,32)) {
%_qhelp.final = $ifmatch
%read = $remtok(%read,*,32)
}
else %_qhelp.final = 999
var %text = $gettok($1,1,160) $2- $gettok($gettok(%read, [ [ $numtok($1-,32) ] $+ ] -,32),1,33)
:loop
%parm = $gettok(%text,%num,32)
if (%parm) {
if ($ [ $+ [ %num ] ] == $null) {
%type = $left(%parm,1)
%parm = $_p2s($right(%parm,-1))
if (([ isin %parm) || (%type == +)) %_qhelpn. [ $+ [ %num ] ] = req
else %_qhelpn. [ $+ [ %num ] ] = %parm
if ([ isin %parm) {
drawrect -nrf @Quick $rgb(hilight) 1 $calc(%x + $width($gettok(%parm,1,91),ms sans serif,20,0,0) - 1) 45 $calc($width($gettok($gettok(%parm,2,91),1,93),ms sans serif,20,0,0) + 2) 18
%parm = $remove(%parm,[,])
}
drawrect $iif(%type == +,-nrf,-nr) @Quick $rgb(hilight) 1 $calc(%x - 1) 45 $calc($width($remove(%parm,[,]),ms sans serif,20,0,0) + 3) 18
%_qhelp. [ $+ [ %num ] ] = 1 $calc(%x - 2) 44 $calc($width(%parm,ms sans serif,20,0,0) + 3) 18
drawrect -nr @Quick $rgb(shadow) %_qhelp. [ $+ [ %num ] ]
}
drawtext -nr @Quick $rgb(text) "ms sans serif" 20 %x 44 %parm
inc %x $calc($width(%parm,ms sans serif,20,0,0) + $iif( $ [ $+ [ %num ] ] ,4,7))
inc %num
goto loop
}
; info on what to enter
drawrect -nrf @Quick $rgb(hilight) 1 66 6 54 14
drawtext -nr @Quick $rgb(text) "ms sans serif" 13 5 6 Please enter highlighted (required) parameters for $gettok($1,1,160) $+ -
drawtext -nr @Quick $rgb(text) "ms sans serif" 13 5 22 $gettok(%read,2-,33)
drawpic -nt @Quick $rgb(255,255,255) 334 1 65 65 64 64 script\icons.bmp
drawdot @Quick
_ssplay question
_qflash | .timer.quickflash -om 0 500 _qflash
halt
}
alias -l _qflash {
if ($window(@Quick) == $null) halt
var %box = 0,%num = 1
:loop
if ($gettok($editbox(@Quick),%num,32)) {
:loopN
inc %box
if (%_qhelp. [ $+ [ %box ] ] ) if ($left(%_qhelpn. [ $+ [ %box ] ] ,1) isin -#) if ($left($gettok($editbox(@Quick),%num,32),1) != $left(%_qhelpn. [ $+ [ %box ] ] ,1)) goto loopN
inc %num
goto loop
}
if ($right($editbox(@Quick),1) == $chr(32)) inc %box
if (%box > %_qhelp.final) %box = %_qhelp.final
if (%_qhelp.flip) {
unset %_qhelp.flip
drawrect -ri @Quick $rgb(shadow) %_qhelp. [ $+ [ %_qhelp.last ] ]
if (%box != %_qhelp.last) goto flip
}
else {
:flip
if (%_qhelp. [ $+ [ %box ] ] ) {
%_qhelp.flip = 1
%_qhelp.last = %box
drawrect -ri @Quick $rgb(shadow) %_qhelp. [ $+ [ %box ] ]
}
}
}
;
; Progress meter display
;
on *:KEYDOWN:@Progress:13,27:%_lastkey = $keyval
on *:KEYUP:@Progress:13,27:if ($keyval == %_lastkey) { close -@ @Progress @.pbmp | _unlock.tb | unset %_lastkey }
alias _progress.1 {
close -@ @Progress @.pbmp | _lock.tb
window -pfdohka +bLt @Progress $calc($window(-1).w - 330) $calc($window(-1).h - 160) 319 104
drawrect -frn @Progress $rgb(face) 1 0 0 319 104
_gradient @Progress 9 69 300 25
_bevel @Progress 7 67 304 29
drawrect -rn @Progress $rgb(face) 7 0 60 319 44
drawtext -nr @Progress $rgb(text) "ms sans serif" 22 8 25 $1-
drawpic -nt @Progress $rgb(255,255,255) 247 1 195 65 64 64 script\icons.bmp
drawdot @Progress
window -hpf @.pbmp 0 0 301 30
drawcopy @Progress 9 69 300 28 @.pbmp 0 0
}
alias _progress.2 {
if ($window(@Progress) == $null) return
if ($1 > 100) { _recurse _progress.2 100 $2- | return }
drawcopy -n @.pbmp 0 0 300 28 @Progress 9 69
drawtext -nro @Progress $rgb(text) "arial" 29 $calc(159 - $width($1%,arial,29,1,0) / 2) 67 $1%
drawrect -nrif @Progress 1 0 9 69 $calc($1 * 3 + 1) 26
drawrect -frn @Progress $rgb(face) 1 8 45 236 21
drawtext -cnr @Progress $rgb(text) "ms sans serif" 13 8 48 235 99 $2-
titlebar @Progress - $1%
drawdot @Progress
if ($1 == 100) {
.timer.kill.progress -om 1 500 close -@ @Progress @.pbmp $chr(124) _unlock.tb
_ssplay complete
}
else .timer.kill.progress -om 0 500 if ($window(@Progress).state != normal) $chr(123) close -@ @Progress @.pbmp $chr(124) _unlock.tb $chr(125)
}
alias -l _bevel {
drawrect -nr $1 $rgb(frame) 1 $calc($2 + 1) $calc($3 + 1) $calc($4 - 1) $calc($5 - 1)
drawrect -frn $1 $rgb(face) 1 $calc($2 + 1) $calc($3 + $5 - 1) $calc($4 - 1) 2
drawrect -frn $1 $rgb(face) 1 $calc($2 + $4 - 1) $calc($3 + 1) 2 $calc($5 - 1)
drawrect -nr $1 $rgb(hilight) 1 $2 $3 $calc($4 + 1) $calc($5 + 1)
drawline -nr $1 $rgb(shadow) 1 $2 $calc($3 + $5 - 1) $2 $3 $calc($2 + $4) $3
}
alias -l _gradient {
; Left side
var %place = $calc($4 / 2 + $5 / 2 + $2),%r = $calc($rgb(face) % 256),%g = $calc($rgb(face) / 256 % 256),%b = $calc($rgb(face) / 65536)
:loopL
drawline -nr $1 $rgb(%r,%g,%b) 7 $calc(%place - 3) $calc($3 - 3) $calc(%place - $5) $calc($3 + $5)
if (%place > $2) {
if (%r > 2) dec %r 3
if (%g > 2) dec %g 3
if (%b > 2) dec %b 3
dec %place 8
goto loopL
}
; Right side
%place = $calc($4 / 2 + $5 / 2 + $2)
%r = $calc($rgb(face) % 256)
%g = $calc($rgb(face) / 256 % 256)
%b = $calc($rgb(face) / 65536)
var %goal = $calc($2 + $4 + $5)
:loopR
drawline -nr $1 $rgb(%r,%g,%b) 7 $calc(%place - 3) $calc($3 - 3) $calc(%place - $5) $calc($3 + $5)
if (%place < %goal) {
if (%r < 250) inc %r 3
if (%g < 250) inc %g 3
if (%b < 250) inc %b 3
inc %place 8
goto loopR
}
}
;
; @Info
;
alias _info if ($show == $false) return | if ($window(@Info)) dispr-div @Info | else _window 2 -e + @Info $_center(500,300) $1 @(nopopups) | .timer -om 1 0 editbox -p @Info $1-