Peace and Protection — File Browser
PeaceandProtectionv4.22.8 / PeaceandProtectionv4.22.8 / Peace-and-Protection-master / script / gui.mrc
gui.mrc — 22.4 KB — Download this file
; #= P&P -rs
; ########################################
; Peace and Protection
; Dialog support code (for extra stuff not built-in
; to mIRC's dialogs)
; ########################################
;
; Drive search selection (returns space-delimited c:\ d:\ etc)
; Use $_drivesearch(1) to include removable media
;
alias _drivesearch set %.dsparm $1 | _ssplay Question | return $dialog(drivesearch,drivesearch,-4)
dialog drivesearch {
title "Drive Search"
icon script\pnp.ico
option dbu
size -1 -1 108 91
text "&Select one or more drives to search:", 1, 2 2 100 8
list 2, 4 12 50 75, extsel sort
button "&Select", 3, 58 40 45 12, default ok
edit "", 4, 1 1 1 1, hide autohs result
}
on *:DIALOG:drivesearch:init:*:{
if (%.dsparm) var %types = fixed,cdrom,removable
else var %types = fixed
unset %.dsparm
var %asc = 65
:loop
if ($istok(%types,$disk($chr(%asc)).type,44)) did -a $+ $iif(%asc == 67,c) $dname 2 $chr(%asc) $+ :\
if (%asc < 90) { inc %asc | goto loop }
if ($did(2).lines == 1) dialog -k $dname
}
on *:DIALOG:drivesearch:dclick:2:dialog -k $dname
on *:DIALOG:drivesearch:sclick:3:{
var %ret,%num = 1
:loop
if ($did(2,$did(2,%num).sel)) {
%ret = $addtok(%ret,$ifmatch,32)
inc %num | goto loop
}
did -o $dname 4 1 %ret
}
;
; Color selector
;
; call /_cs-prep $dname when dialog opens
; call /_cs-fin $dname when dialog closes
; call /_cs-go xsize ysize allownone when a color is clicked on
; colors are stored in hash pnp.dlgcolor.$dname item is dialog id
; (color of 16 = none)
alias _cs-prep {
var %col = 0
window -pfhn +d @.csbmp -1 -1 16 16
while (%col < 16) {
drawrect -f @.csbmp %col 2 0 0 16 16
drawsave @.csbmp script\ $+ %col $+ .bmp
inc %col
}
window -c @.csbmp
if ($hget(pnp.dlgcolor. $+ $1) == $null) hmake pnp.dlgcolor. $+ $1 20
}
alias _cs-fin window -c @Ç | hfree pnp.dlgcolor. $+ $1
alias _cs-go {
if ($window(@Ç).state == hidden) {
window -f @Ç $calc($mouse.dx - 5) $calc($mouse.dy - 5) $calc($1 * 4 + 8) $calc($2 * 4 + 8 + $iif($3,$calc($2 + 2),0))
}
else {
window -c @Ç
window -fphkdBz +fL @Ç $calc($mouse.dx - 5) $calc($mouse.dy - 5) $calc($1 * 4 + 8) $calc($2 * 4 + 8 + $iif($3,$calc($2 + 2),0)) @colpck
}
drawrect -nfr @Ç $rgb(face) 2 0 0 200 200
var %x,%y = 0,%col = 0
:loopy | %x = 0 | :loopx
drawrect -nf @Ç %col 2 $calc(%x * ($1 + 2) + 1) $calc(%y * ($2 + 2) + 1) $1 $2
inc %col
if (%x < 3) { inc %x | goto loopx }
if (%y < 3) { inc %y | goto loopy }
if ($3) drawtext -nr @Ç $rgb(text) "ms sans serif" 12 $int($calc(2 * $1 + 4 - $width(No color,ms sans serif,12,0,0) / 2)) $int($calc(4.5 * $2 + 10 - $height(No color,ms sans serif,12) / 2)) No color
drawdot @Ç
window -a @Ç
titlebar @Ç $calc($1 + 2) $calc($2 + 2)
hadd pnp colordlg $dname $did
hadd pnp colorwait 2
}
menu @colpck {
mouse:if ($hget(pnp,colorwait)) hdec pnp colorwait | _mcp $leftwin $mouse.x $mouse.y $window($leftwin).title
uclick:if (!$hget(pnp,colorwait)) _mcc $leftwin $window($leftwin).title
leave:_mcp $leftwin -1 -1 $window($leftwin).title
}
alias -l _mcc {
if ($5 == 4) var %bit = 16
else var %bit = $calc($4 + $5 * 4)
hadd pnp.dlgcolor. $+ $gettok($hget(pnp,colordlg),1,32) $gettok($hget(pnp,colordlg),2,32) %bit
dialog -v $gettok($gettok($hget(pnp,colordlg),1,32),1,32)
did -g $hget(pnp,colordlg) script\ $+ %bit $+ .bmp
hdel pnp colorwait
hdel pnp colordlg
window -h $1
}
alias -l _mcp {
var %x = $int($calc($2 / $4)),%y = $int($calc($3 / $5))
if (%y == 4) %x = 0
if ($6 $7 != %x %y) {
if ($6 != $null) {
if ($7 == 4) drawrect -nr $1 $rgb(face) 2 $calc($6 * $4 - 1) $calc($7 * $5 - 1) $calc($4 * 4 + 2) $calc($5 + 2)
else drawrect -nr $1 $rgb(face) 2 $calc($6 * $4 - 1) $calc($7 * $5 - 1) $calc($4 + 2) $calc($5 + 2)
}
if ($2 >= 0) {
if (%y == 4) {
drawline -nr $1 $rgb(hilight) 1 0 $calc(%y * $5 + $5 - 1) $calc($4 * 4 - 1) $calc(%y * $5 + $5 - 1) $calc($4 * 4 - 1) $calc(%y * $5 - 1)
drawline -nr $1 $rgb(shadow) 1 0 $calc(%y * $5 + $5 - 1) 0 $calc(%y * $5) $calc($4 * 4 - 1) $calc(%y * $5)
}
else {
drawline -nr $1 $rgb(hilight) 1 $calc(%x * $4) $calc(%y * $5 + $5 - 1) $calc(%x * $4 + $4 - 1) $calc(%y * $5 + $5 - 1) $calc(%x * $4 + $4 - 1) $calc(%y * $5 - 1)
drawline -nr $1 $rgb(shadow) 1 $calc(%x * $4) $calc(%y * $5 + $5 - 1) $calc(%x * $4) $calc(%y * $5) $calc(%x * $4 + $4 - 1) $calc(%y * $5)
}
titlebar $1 $4-5 %x %y
}
else titlebar $1 $4-5
drawdot $1
}
}
; Converts font n [bold] between mirc and windows sizes
; mirc -> windows- * 3/4
; windows -> mirc- * 4/3
alias _font_m2w {
var %font = $1-
var %tok = $iif($gettok(%font,-1,32) == bold,-2,-1)
return $puttok(%font,$round($calc($gettok(%font,%tok,32) * 3 / 4),0),%tok,32)
}
alias _font_w2m {
var %font = $1-
var %tok = $iif($gettok(%font,-1,32) == bold,-2,-1)
return $puttok(%font,$round($calc($gettok(%font,%tok,32) * 4 / 3),0),%tok,32)
}
;
; Font picker- $_pickfont(old)
; returns font size [bold]
; old is optional (same format) but if specified will be returned even if cancel is pressed
;
alias _pickfont {
window -pfh +d @.pickfont 50 50 1 1 cancel 13
if ($1) {
var %bold = $gettok($1-,-1,32)
var %rest = $1-
if (%bold == bold) {
%bold = -b
%rest = $deltok($1-,-1,32)
}
else %bold =
font %bold @.pickfont $gettok(%rest,-1,32) $deltok(%rest,-1,32)
}
window -a @.pickfont | font
if ($window(@.pickfont).font == cancel) { window -c @.pickfont | return }
var %font = $window(@.pickfont).font $window(@.pickfont).fontsize $iif($window(@.pickfont).fontbold,bold)
window -c @.pickfont | return %font
}
;
; Generic entry
;
; $_entry(type,defaultvalue,question[,checkvalue,checkbox])
; default value is $_s2p and $null/%emptyvar works
; question can contain a to be two lines
; type = 0 only accept data 1 blank is ok 2 return cancel as blank too
; type = -1 to require data and only return one word
; type = -2 to require data be a number
; If present, a checkbox (checked if checkvalue is true) is present
; and it's value is set -u into %.entry.checkbox
;
dialog entry {
title "PnP Entry"
icon script\pnp.ico
option dbu
size -1 -1 175 60
text "", 202, 7 8 142 14
text "", 203, 7 5 142 10, hide
text "", 204, 7 12 142 10, hide
edit %.entry.ans, 1, 5 22 165 11, result autohs
check %.entry.checkbox, 2, 5 35 165 11, hide
icon 11, 151 3 16 16, script\pnp.ico
button "OK", 101, 40 43 40 12, OK default
button "Cancel", 102, 95 43 40 12, cancel
}
dialog entrycheck {
title "PnP Entry"
icon script\pnp.ico
option dbu
size -1 -1 175 68
text "", 202, 7 8 142 14
text "", 203, 7 5 142 10, hide
text "", 204, 7 12 142 10, hide
edit %.entry.ans, 1, 5 22 165 11, result autohs
check "", 2, 5 35 165 11
icon 11, 151 3 16 16, script\pnp.ico
button "OK", 101, 40 51 40 12, OK default
button "Cancel", 102, 95 51 40 12, cancel
}
on *:DIALOG:entry:init:*:{
if (%.entry.q2) {
did -h $dname 202
did -va $dname 203 & $+ $replace(%.entry.q,&,&&)
did -va $dname 204 $replace(%.entry.q2,&,&&)
}
else did -a $dname 202 & $+ $replace(%.entry.q,&,&&)
if (%.entry.checkbox) did -a $dname 2 %.entry.checkbox
if (%.entry.checkboxvalue) did -c $dname 2
unset %.entry.q %.entry.q2 %.entry.checkbox %.entry.checkboxvalue
_ssplay Question
}
on *:DIALOG:entry:sclick:101:{ set -u1 %.entry.o 1 | set -u1 %.entry.checkbox $did(2).state }
on *:DIALOG:entry:sclick:102:{ set -u1 %.entry.checkbox $did(2).state }
alias _entry {
unset %.entry.o
var %type = $1
%.entry.ans = $_p2s($2)
%.entry.q2 = $gettok($3,2,127)
:retry
%.entry.q = $gettok($3,1,127)
if ($5) {
%.entry.checkbox = & $+ $replace($5,&,&&)
%.entry.checkboxvalue = $4
set -u1 %.entry.ans $dialog(entry,entrycheck,-4)
}
else {
set -u1 %.entry.ans $dialog(entry,entry,-4)
}
if ((%type <= 0) && (%.entry.ans == $null)) $$$
if (%type < 0) %.entry.ans = $gettok(%.entry.ans,1,32)
if ((%type == -2) && (%.entry.ans !isnum)) { %.entry.q2 = (please enter a number) | goto retry }
if (%.entry.o) return %.entry.ans
if (%type == 2) return
$$$
}
;
; Entry based off of a 'recents' list
;
; $_rentry(type,code,defaultvalue,question)
; default value is $_s2p and $null/%emptyvar works (will then use top list of recents)
; question can contain a to be two lines
; type = recents list name (don't include .lis extension) (as far as entry goes, something must be entered or all is canceled)
; type = # for a list of all open channels (on all CIDs)
; code = 0 for normal .lis, #chan for &chan& replacement .lis
;
dialog rentry {
title "PnP Entry"
icon script\pnp.ico
option dbu
size -1 -1 175 60
text "", 202, 7 8 142 14
text "", 203, 7 5 142 10, hide
text "", 204, 7 12 142 10, hide
combo 1, 5 22 165 80, drop result edit
icon 11, 151 3 16 16, script\pnp.ico
edit %.entry.t, 100, 1 1 1 1, autohs hide
button "OK", 101, 15 43 40 12, OK default
button "Cancel", 102, 70 43 40 12, cancel
button "&Clear list", 103, 135 44 35 10, disable
}
; fills drop down with recents (bdid = clear button to enable if recents; chan = false if n/a)
; /_fillrec dname did bdid file chan [current]
alias _fillrec {
if ($exists($4)) {
if ($3) did -e $1 $3
if ($_ischan($5)) {
var %num = 1
:loop1
if ($read($4,nt,%num) != $null) { if ($replace($ifmatch,&chan&,$5) != $6-) did -a $1 $2 $ifmatch | inc %num | goto loop1 }
}
else {
if ($6- == $null) loadbuf -o $1 $2 $4
else filter -fox $4 $1 $2 $6-
}
}
if ($6 != $null) did -ic $1 $2 1 $6-
else did -c $1 $2 1
}
on *:DIALOG:rentry:init:*:{
if (%.entry.t == $chr(35)) {
var %scon = 1
while ($scon(%scon)) {
scon %scon
var %chan = 1
while ($chan(%chan)) {
did -a $+ $iif($chan(%chan) == %.entry.a,c) $dname 1 $chan(%chan)
inc %chan
}
inc %scon
}
scon -r
if (($did($dname,1).lines > 0) && ($did($dname,1).sel == $null)) did -c $dname 1 1
}
else _fillrec $dname 1 103 %.entry.t %.entry.c %.entry.a
if (%.entry.q2) {
did -h $dname 202
did -va $dname 203 & $+ $replace(%.entry.q,&,&&)
did -va $dname 204 $replace(%.entry.q2,&,&&)
}
else did -a $dname 202 & $+ $replace(%.entry.q,&,&&)
unset %.entry.t %.entry.c %.entry.a %.entry.q %.entry.q2
_ssplay Question
}
on *:DIALOG:rentry:sclick:103:{
did -b $dname 103
.remove $did(100)
:loop | if ($did(1,1) != $null) { did -d $dname 1 1 | goto loop }
}
alias _rentry {
; if we ever add .rct support, erasure button has to handle this proplerly
if ($1 == $chr(35)) set %.entry.t $chr(35)
else set %.entry.t $_cfg($1.lis)
set %.entry.c $2
set %.entry.a $_p2s($3)
set %.entry.q $gettok($4-,1,127)
set %.entry.q2 $gettok($4-,2,127)
return $$dialog(rentry,rentry,-4)
}
;
; Generic buttons
;
; $_yesno(x,prompt)
; x = 0 for no default 1 for yes default
; returns 1/0
alias _yesno {
set %.yesno $1-
return $$dialog(yesno,yesno,-4)
}
dialog yesno {
title "PnP Entry"
icon script\pnp.ico
option dbu
size -1 -1 200 34
edit "", 202, 1 1 1 1, hide result autohs
text "", 201, 7 4 150 14
icon 11, 162 1 16 16, script\check1.ico
icon 12, 178 1 16 16, script\check2.ico
icon 13, 162 17 16 16, script\check3.ico
icon 14, 178 17 16 16, script\check4.ico
button "&Yes", 101, 6 20 40 12, OK
button "&No", 102, 56 20 40 12
button "Cancel", 103, 106 20 40 12, cancel
}
on *:DIALOG:yesno:init:*:{
did -a $dname 201 $replace($gettok(%.yesno,2-,32),&,&&)
if ($gettok(%.yesno,1,32)) did -ft $dname 101
else did -ft $dname 102
unset %.yesno
_ssplay Confirm
}
on *:DIALOG:yesno:sclick:101:if ($did(202) == $null) did -a $dname 202 1
on *:DIALOG:yesno:sclick:102:did -a $dname 202 0 | dialog -k $dname
; $_okcancel(x,prompt) or _okcancel x prompt
; x = 0 for cancel default 1 for ok default
; returns 1 or halts
; x & 2 to return 1 or 0. (no halt)
alias _okcancel {
set %.okcancel $1-
var %result = $dialog(okcancel,okcancel,-4)
unset %.okcancel
if (!%result) {
if ($1 & 2) %result = 0
else halt
}
return %result
}
dialog okcancel {
title "PnP Confirm"
icon script\pnp.ico
option dbu
size -1 -1 200 34
edit "1", 202, 1 1 1 1, hide result autohs
text "", 201, 7 4 150 14
icon 11, 162 1 16 16, script\check1.ico
icon 12, 178 1 16 16, script\check2.ico
icon 13, 162 17 16 16, script\check3.ico
icon 14, 178 17 16 16, script\check4.ico
button "OK", 101, 6 20 40 12, OK
button "Cancel", 102, 56 20 40 12, cancel
}
on *:DIALOG:okcancel:init:*:{
did -a $dname 201 $replace($gettok(%.okcancel,2-,32),&,&&)
if ($gettok(%.okcancel,1,32) & 1) did -ft $dname 101
else did -ft $dname 102
_ssplay Confirm
}
; $_okcancelcheck(x,prompt,value,checkbox)
; x = 0 for cancel default 1 for ok default
; returns 1 or 0. state of check in %.okcheck
alias _okcancelcheck {
set %.okcancel $1-2
set %.okcheck $3-4
var %result = $dialog(okcancelcheck,okcancelcheck,-4)
unset %.okcancel
set -u %.okcheck %.okcheck
if (!%result) %result = 0
return %result
}
dialog okcancelcheck {
title "PnP Confirm"
icon script\pnp.ico
option dbu
size -1 -1 200 44
edit "1", 202, 1 1 1 1, hide result autohs
text "", 201, 7 4 150 14
check "", 203, 7 19 150 8
icon 11, 162 1 16 16, script\check1.ico
icon 12, 178 1 16 16, script\check2.ico
icon 13, 162 17 16 16, script\check3.ico
icon 14, 178 17 16 16, script\check4.ico
button "OK", 101, 6 30 40 12, OK
button "Cancel", 102, 56 30 40 12, cancel
}
on *:DIALOG:okcancelcheck:init:*:{
did -a $dname 201 $replace($gettok(%.okcancel,2-,32),&,&&)
did -a $dname 203 & $+ $replace($gettok(%.okcheck,2-,32),&,&&)
if ($gettok(%.okcancel,1,32) & 1) did -ft $dname 101
else did -ft $dname 102
if ($gettok(%.okcheck,1,32)) did -c $dname 203
set %.okcheck $did(203).state
_ssplay Confirm
}
on *:DIALOG:okcancelcheck:sclick:203:set %.okcheck $did(203).state
; $_fileopt(x,file) or _fileopt x file
; x = 0 for normal 1 to allow append 2 to make append the default
; returns 1/0 (overwrite/append) halts on cancel
; if overwrite is selected, file is automatically cleared
alias _fileopt {
set %.fileopt $1-
return $$dialog(fileopt,fileopt,-4)
}
dialog fileopt {
title "File Exists"
icon script\pnp.ico
option dbu
size -1 -1 200 34
edit "", 203, 1 1 1 1, hide autohs
edit "", 202, 1 1 1 1, hide result autohs
text "", 201, 7 4 150 14
icon 11, 162 1 16 16, script\file1.ico
icon 12, 178 1 16 16, script\file2.ico
icon 13, 162 17 16 16, script\file3.ico
icon 14, 178 17 16 16, script\file4.ico
button "&Overwrite", 101, 6 20 40 12, OK
button "&Append", 102, 56 20 40 12, disable
button "Cancel", 103, 106 20 40 12, cancel
}
on *:DIALOG:fileopt:init:*:{
did -a $dname 203 $gettok(%.fileopt,2-,32)
did -a $dname 201 File ' $+ $replace($gettok(%.fileopt,2-,32),&,&&) $+ ' already exists $+ :
if ($gettok(%.fileopt,1,32)) {
did -e $dname 102
if ($ifmatch == 2) did -ft $dname 102
else did -ft $dname 101
}
else did -ft $dname 101
unset %.fileopt
_ssplay Confirm
}
on *:DIALOG:fileopt:sclick:101:if ($did(202) == $null) { did -a $dname 202 1 | .remove -b " $+ $did(203) $+ " }
on *:DIALOG:fileopt:sclick:102:did -a $dname 202 0 | dialog -k $dname
;
; Quick-pick popup
;
; _qp-go xsize cmd word1 2 3 etc
alias _qp-go {
.timer.qpickfin off
window -c @¶
var %x = $calc($mouse.dx - ($1 / 2))
var %y = $calc($mouse.dy - 1)
var %ys = $calc($numtok($3-,32) * 20)
window -fphkdonBz +fL @¶ %x %y $1 %ys @quikpck
if ($window(@¶).dy < %y) window -f @¶ %x $calc(%y - %ys - 3) $1 %ys
drawrect -nfr @¶ $rgb(face) 2 0 0 $1 200
var %text,%y = 0 | :loopy
%text = $_p2s($gettok($3-,$calc(%y + 1),32))
if ($left(%text,1) isin 01) {
hadd pnp qpick. $+ %y $ifmatch
drawrect -nr @¶ $rgb(hilight) 1 4 $calc(20 * %y + 4) 12 12
drawline -nr @¶ $rgb(shadow) 1 4 $calc(20 * %y + 15) 4 $calc(20 * %y + 4) 15 $calc(20 * %y + 4)
if ($left(%text,1) == 1) drawtext -nro @¶ $rgb(text) arial 18 5 $calc(20 * %y - 1) ×
%text = $right(%text,-1)
}
drawtext -nr @¶ $rgb(text) "ms sans serif" 12 24 $calc(%y * 20 + 3) %text
inc %y | if (%y < $numtok($3-,32)) goto loopy
hadd pnp qpick.cmd $2
%.skipit = 1
.timer -mio 1 0 unset % $+ .skipit
drawdot @¶
window -a @¶
}
on *:ACTIVE:*:if ($lactive == @¶) _qp-fin @¶
on *:APPACTIVE:if ($appactive == $false) _qp-fin @¶
alias _qp-fin {
var %do = $_p2s($hget(pnp,qpick.cmd)) $2
hdel pnp qpick.cmd
window -c @¶
.timer.qpickfin -mio 1 0 hdel -w pnp qpick.*
%do
}
menu @quikpck {
sclick:_qcp $leftwin $mouse.x $mouse.y $mouse.key $window($leftwin).dw $window($leftwin).title
mouse:if (%.skipit) return | _qcp $leftwin $mouse.x $mouse.y $mouse.key $window($leftwin).dw $window($leftwin).title
dclick:_qcp $leftwin $mouse.x $mouse.y $mouse.key $window($leftwin).dw $window($leftwin).title
uclick:{
if ($numtok($window($leftwin).title,32) < 1) return
_qcp $leftwin $mouse.x $mouse.y $mouse.key $window($leftwin).dw $window($leftwin).title
if ($hget(pnp,qpick. $+ $result) isnum) {
hadd pnp qpick. $+ $result $calc(1 - $ifmatch)
if ($ifmatch) drawrect -fr $leftwin $rgb(face) 2 5 $calc(20 * $result + 5) 10 10
else drawtext -ro $leftwin $rgb(text) arial 18 5 $calc(20 * $result - 1) ×
}
else _qp-fin $leftwin $gettok($window($leftwin).title,1,32)
}
leave:_qcp $leftwin -20 -20 $mouse.key $window($leftwin).dw $window($leftwin).title
}
alias -l _qcp {
var %y = $int($calc($3 / 20))
if (($6 != %y) || ($4 != $7)) {
if ($6 != $null) {
if ($7 & 1) {
if ($hget(pnp,qpick. $+ $6) isnum) {
drawrect -nr $1 $rgb(hilight) 1 4 $calc(20 * $6 + 4) 12 12
drawline -nr $1 $rgb(shadow) 1 4 $calc(20 * $6 + 15) 4 $calc(20 * $6 + 4) 15 $calc(20 * $6 + 4)
}
drawscroll -n $1 -1 -1 16 $calc(20 * $6 + 1) $calc($5 - 17) 18
}
drawrect -nr $1 $rgb(face) 1 0 $calc(20 * $6) $5 20
}
if ($2 >= 0) {
if ($4 & 1) {
if ($hget(pnp,qpick. $+ %y) isnum) drawrect -nr $1 $rgb(face) 1 4 $calc(20 * %y + 4) 12 12
drawscroll -n $1 1 1 16 $calc(20 * %y + 1) $calc($5 - 17) 18
}
drawrect -nr $1 $rgb($iif($4 & 1,hilight,shadow)) 1 0 $calc(20 * %y) $5 20
drawline -nr $1 $rgb($iif($4 & 1,shadow,hilight)) 1 0 $calc(20 * %y + 19) 0 $calc(20 * %y) $calc($5 - 1) $calc(20 * %y)
titlebar $1 %y $4
}
else titlebar $1
drawdot $1
}
return %y
}
alias _doubleclick {
if ($2-3 == Message Window) tokenize 32 $1 MessageWindow $3-
var %popups = $gettok(JoinFavs ListUsers PortScan Reconnect Usermode!Whois DCCChat Ping Clear!Ping ChanCentral Banlist EditTopic Clear!Whois Query DCCChat QuickKick QuickBan!Whois Query DCCChat Ping,$1,33)
if ($_cfgi(dc. $+ $1) isnum) {
if (($mouse.key & 2) || ($mouse.key & 4)) _qp-go 104 _doubleclick² $+ $1 $+ $2 $+ $3 %popups 1Selectdefault
else _doubleclick² $1 $2 $3 $_cfgi(dc. $+ $1) 1
}
else _qp-go 104 _doubleclick² $+ $1 $+ $2 $+ $3 %popups 0Selectdefault
}
alias _doubleclick² {
if ($4 == $null) return
if (($1 == 2) || ($1 == 5)) var %bit = 4
else var %bit = 5
if ($hget(pnp,qpick. $+ %bit) == 1) {
var %popups = $gettok(JoinFavs ListUsers PortScan Reconnect Usermode!Whois DCCChat Ping Clear!Ping ChanCentral Banlist EditTopic Clear!Whois Query DCCChat QuickKick QuickBan!Whois Query DCCChat Ping,$1,33)
var %area = $gettok(statusquerychannelnicklistnotify,$1,127)
_okcancel 1 Set the default %area double-click action to ' $+ $_p2s($gettok(%popups,$calc($4 + 1),32)) $+ '?
_cfgw dc. $+ $1 $4
if ($_dlgi(undefault) != 1) {
_ssplay Confirm
if ($dialog(howundefault,howundefault,-4)) _dlgw undefault 1
}
return
}
if ($hget(pnp,qpick. $+ %bit) == 0) _cfgw dc. $+ $1
goto $1 $+ $4
:20 | :40 | :50 | whois $3 | return
:41 | :51 | query $3 | return
:21 | :42 | :52 | dcc chat $3 | return
:43 | kick $2 $3 | return
:44 | cb $2 $3 | return
:22 | :30 | :53 | if (=* iswm $2) dcp $3 | else ping $3 | return
:31 | channel $3 | return
:32 | ban $3 | return
:33 | etopic $3 | return
:23 | :34 | if (=* iswm $2) clear Chat $3 | else clear $3 | return
:10 | fav j | return
:11 | lusers | return
:12 | ports | return
:13 | server | return
:14 | umode | return
}
dialog howundefault {
title "Setting Double-click Default"
icon script\pnp.ico
option dbu
size -1 -1 125 62
text "To change the default action in the future, hold down the 'Ctrl' key while double-clicking.", 3, 5 5 115 50
check "&Don't show this message again", 2, 20 30 100 10
button "OK", 1, 42 45 40 12, ok default
edit "", 4, 1 1 1 1, hide autohs result
}
on *:DIALOG:howundefault:sclick:1:did -o $dname 4 1 $did(2).state
; Convienience commands
; _bulkdid op dname first last [params]
; like a /did op dname first-last [params] ie on multiples
alias _bulkdid var %num = $3 | :loop | did $1-2 %num $5- | if (%num < $4) { inc %num | goto loop }
; Add to dropdown without duplication
; _ddadd dname did item
alias _ddadd {
var %num = $did($1,$2).lines
:loop
if (%num) {
if ($3- === $did($1,$2,%num)) return
dec %num | goto loop
}
did -a $1-
}
; _ddaddm dname did addr mask1 mask2...
; (for multiple masks of same addr) uses usermask settings
alias _ddaddm {
var %num = 4
:loop
if ($ [ $+ [ %num ] ] ) { _ddadd $1-2 $_ppmask($3,$_stmask($ifmatch)) | inc %num | goto loop }
}
; finds a line in a dialog listbox where the first (space) token matches
; returns line number or 0; $_finddid(dname,did,text)
alias _finddid {
var %num = $did($1,$2).lines
:loop
if ($gettok($did($1,$2,%num),1,32) == $3) return %num
if (%num > 1) { dec %num | goto loop }
return 0
}
; finds a line in a dialog listbox matching exactly
; returns line number or 0; $_scandid(dname,did,text)
alias _scandid {
var %num = $did($1,$2).lines
:loop
if ($did($1,$2,%num) == $3) return %num
if (%num > 1) { dec %num | goto loop }
return 0
}
; if dialog is already open, makes it active, else opens it
alias _dialog if ($dialog($2)) dialog -v $2 | else { _ssplay Dialog | dialog $1- }