ircZP — File Browser
ircZPv1.1 / ircZPv1.1 / zpdir / kte / kte.mrc
kte.mrc — 63.8 KB — Download this file
; Kte - Kamek's Theme Engine v1.3
; MTS-compatible theme engine (standard v1.0/1.1) -- homepage: http://www3.brinkster.com/ircweb/mts/
; Dialogs made using Dialog Studio
on *:CONNECT:kte_v connected 1
on *:DISCONNECT:hdel -w Kte.Data $+(c, $cid, :*)
on *:EXIT:hdel -w Kte.Data c*:* | _savedata
alias kte_start {
hmake Kte.Theme 16
if ($isfile($ktedir $+ Kte-Theme.dat)) { hload -b Kte.Theme $+(", $ktedir, Kte-Theme.dat") }
elseif ($isfile($ktedir $+ Kte-DefTheme.dat)) { hload -b Kte.Theme $+(", $ktedir, Kte-DefTheme.dat") }
hmake Kte.Data 8 | if ($isfile($ktedir $+ Kte-Data.dat)) { hload -b Kte.Data $+(", $ktedir, Kte-Data.dat") }
hmake Kte.Events 8 | .kte.refresh -n
hdel -w Kte.Data c*:*
if ($hget(Kte.Data, Hide) !isnum) { hadd Kte.Data Hide 8 }
if ($hget(Kte.Data, Cache) !isnum) { hadd Kte.Data Cache 3 }
if ($hget(Kte.Data, Apply) !isnum) { hadd Kte.Data Apply 959 }
if ($hget(Kte.Data, FRep.Status) = $null) {
; add some font replacements
var %rep = 0, %bestrep = Terminal, %msss = Microsoft Sans Serif
if ($width(A, IBMPC, -20) != $width(i, IBMPC, -20)) { hadd Kte.Data FRep.Rep.IBMPC Terminal | %rep = 1 }
else { %bestrep = IBMPC }
if ($width(A, GwdTE_437, -9) != $width(i, GwdTE_437, -9)) { hadd Kte.Data FRep.Rep.GwdTE_437 %bestrep | %rep = 1 }
if ($width(A, PC8X16, -12) != $width(i, PC8X16, -12)) { hadd Kte.Data FRep.Rep.PC8X16 %bestrep | %rep = 1 }
if ($width(Kte test, MS Sans Serif, -30) = $width(Kte test, %msss, -30)) { hadd Kte.Data FRep.Rep.MS\~Sans\~Serif %msss | %rep = 1 }
hadd Kte.Data FRep.Status %rep
}
if ($hget(Kte.Data, TimestampFormat) != $null) { .timestamp -f $ifmatch }
if ($lock(dll)) { kte.echo -aet Please enable the /dll command in mIRC Options (Alt+O), General\Lock section. }
unset %kte._* %_kte.*
}
on *:LOAD:{
if ($version < 5.91) { echo -ati2 Please use this add-on on mIRC 5.91 or greater. | .timer -o 1 0 .unload -nrs $+(", $script, ") | return }
.enable #Kte.DefTheme
if ($hget(Kte.Theme)) { hfree Kte.Theme } | if ($hget(Kte.Data)) { hfree Kte.Data } | if ($hget(Kte.Events)) { hfree Kte.Events }
}
on *:UNLOAD:{
var %p
if ($isfile($ktedir $+ Kte-Restore.dat)) { %p = $crlf $+ Your settings will be restored. }
if ($hget(Kte.Data, CurTheme)) && ($input(Unload current theme before unloading Kte? $+ %p, 8)) { theme.unload }
else {
if ($script($ktedir $+ Kte-Dyn.mrc)) { .unload -rs $+(", $ifmatch, ") }
hdel Kte.Data CurTheme
hdel Kte.Data Extracted
}
if ($dll($ktedir $+ Kte.dll)) { dll -u $+(", $ktedir, Kte.dll") }
hfree Kte.Theme | _savedata | hfree Kte.Data
.remove $+(", $ktedir, Kte-Theme.dat")
.remove $+(", $ktedir, Kte-Restore.dat")
.remove $+(", $ktedir, Kte-Dyn.mrc")
unset %kte.* %_kte.*
}
alias -l kte.ver return 1.3
alias -l kte.dynver return 1.3
alias -l kte.mtsver return 1.1
alias mtsversion return $kte.mtsver
alias kte.load if (!$isid) { theme.load $1- }
alias kte.unload if (!$isid) { theme.unload $1- }
alias kte.scheme if (!$isid) { theme.scheme $1- }
alias kte.refresh {
if ($isid) { return }
if ($1 != -n) { saveini }
hdel -w Kte.Events *
hadd Kte.Events Active.Invites $gettok($readini($mircini, options, n3), 26, 44)
hadd Kte.Events Active.Queries $gettok($readini($mircini, options, n4), 5, 44)
hadd Kte.Events Active.Notices $gettok($readini($mircini, options, n5), 13, 44)
hadd Kte.Events Active.Whois $gettok($readini($mircini, options, n2), 26, 44)
hadd Kte.Events Active.CTCPs $gettok($readini($mircini, options, n4), 19, 44)
if ($version >= 6.01) { hadd Kte.Events Active.Away $gettok($readini($mircini, options, n4), 32, 44) }
else { hadd Kte.Events Active.Away 0 }
var %def = $readini($mircini, events, default), %i = $numtok(%def, 44), %set
if (!%def) { %def = 1,1,1,1,1,1,1,1 }
else { while (%i) { %def = $puttok(%def, $calc($gettok(%def, %i, 44) + 1), %i, 44) | dec %i } }
%i = $chan(0)
while (%i) {
%set = $readini($mircini, events, $chan(%i))
if (!%set) { %set = %def }
else { while ($findtok(%set, 0, 1, 44)) { %set = $puttok(%set, $gettok(%def, $ifmatch, 44), $ifmatch, 44) } }
hadd Kte.Events $chan(%i) %set
dec %i
}
kte.echo -a Settings were updated from $+(', $nopath($mircini), '.)
}
alias theme.load {
if ($isid) { return }
if ($lock(dll)) { kte.error -a You must first enable the /dll command in mIRC Options (Alt+O), General\Lock section. | return }
var %h = Kte.Theme, %dat = Kte.Data, %fn, %ofn, %ngz = $kte.gzdir $+ ngzipn.dll, %xthmdir = $kte.xthmtmpdir
if (!$isdir($kte.cachedir)) { mkdir $+(", $kte.cachedir, ") }
if (!$0) { dlg -md kte.load | return }
if ($0 > 1) && ($regex($1, /-s\d+/i)) { var %sch = $int($mid($1, 3)) | tokenize 32 $2- }
set -n %fn $1-
if ("*" iswm %fn) { %fn = $mid(%fn, 2, -1) }
if (*.mts !iswm %fn) && (*.mts.gz !iswm %fn) && (*.vpk !iswm %fn) && (*.vpk.gz !iswm %fn) { %fn = %fn $+ .mts }
if (\* !iswm %fn) && (?:\* !iswm %fn) {
var %tfn = $kte.thmdir $+ %fn
if ($isfile(%tfn)) { %fn = %tfn }
elseif ($kte.trydir(%fn)) { %fn = $ifmatch }
elseif ($findfile($kte.thmdir, %fn, 1, 2)) { %fn = $ifmatch }
}
if (!$isfile(%fn)) { kte.error -a File not found | return }
if (*.mts.gz iswm %fn) {
%ofn = %fn | %fn = $left(%fn, -3)
if (!$isfile(%ngz)) { kte.error -a nGZIPn is needed to decompress this file | goto end }
if (!$dll(%ngz, unzip, $left(%ofn, -3))) { kte.error -a nGZIPn was unable to decompress this file | goto end }
if (!$isdir(%xthmdir)) { mkdir $+(", %xthmdir, ") }
.rename $+(", %fn, ") $+(", %xthmdir, $nopath(%fn), ")
%fn = %xthmdir $+ $nopath(%fn)
}
elseif (*.vpk iswm %fn) || (*.vpk.gz iswm %fn) {
var %nfn = %fn
if (*.gz iswm %fn) {
%nfn = $left(%fn, -3)
if (!$isfile(%ngz)) { kte.error -a nGZIPn is needed to decompress this file | goto end }
if (!$dll(%ngz, unzip, $left(%fn, -3))) { kte.error -a nGZIPn was unable to decompress this file | goto end }
}
vPak.extract $+(", %nfn, ") $+(", $kte.xthmtmpdir, ") | if (*.gz iswm %fn) { .remove $+(", %nfn, ") }
var %killtmp = $true
if ($result) { kte.error -a vPak error ( $+ $ifmatch $+ ) | goto end }
var %ofn = %fn, %fn = $findfile($kte.xthmtmpdir, *.mts, 1, 9)
if (!%fn) { kte.error -a No theme file was found on the specified vPak archive | goto end }
}
%fn = $+(", %fn, ")
; ok, file exists... check if it's valid...
if (!$read(%fn, nw, [mts])) { kte.error -a Invalid theme file (main theme section not found) | goto end }
var %ver = $read(%fn, ns, MTSVersion)
if (!%ver) { kte.error -a Invalid theme file (no MTS version declared) | goto end }
elseif (!$istok(1 1.1, $calc(%ver), 32)) { kte.error -a Invalid theme file (standard v $+ %ver is not supported) | goto end }
if (%sch != $null) && ((%sch = 0) || (!$read(%fn, nw, $+([Scheme, %sch, ])))) {
kte.error -a Invalid parameter (there's no scheme $chr(35) $+ %sch $+ ) | goto end
}
; if the file is in the temp dir, move it to the extracted dir
if (%ofn) {
var %x
killxthm
if (!$isdir($kte.xthmdir)) { mkdir $+(", $kte.xthmdir, ") }
%x = $finddir($kte.xthmtmpdir, *, 0, 9, .mkdir $+(", $kte.xthmdir, $mid($1-, $calc($len($kte.xthmtmpdir) + 1)), "))
%x = $findfile($kte.xthmtmpdir, *, 0, 9, .rename $+(", $1-, ") $+(", $kte.xthmdir, $mid($1-, $calc($len($kte.xthmtmpdir) + 1)), "))
%fn = $mid(%fn, 2, -1)
%fn = $+(", $kte.xthmdir, $mid(%fn, $calc($len($kte.xthmtmpdir) + 1)), ")
%_kte.killedtmp = 1
}
; now, theme WILL load
%_kte.ofn = %ofn
%_kte.fn = %fn
%_kte.sch = %sch
doload
_savedata
:end
if (%ofn) { var %x = $findfile($kte.xthmtmpdir, *, 0, 9, .remove $+(", $1-, ")) } | if (%killtmp) { killtmp }
unset %_kte.*
}
alias theme.scheme {
if ($isid) { return }
var %thm = $hget(Kte.Data, CurTheme), %i = 1
if (!%thm) { kte.error -a There's no theme loaded. | return }
if (!$isfile(%thm)) { kte.error -a The theme file was not found. | return }
if (!$0) {
var %r | while ($hget(Kte.Theme, Scheme $+ %i) != $null) { %r = %r $ifmatch $+ , | inc %i }
if (%r = $null) { kte.echo -a The current theme has no schemes }
else { kte.echo -a Schemes from the current theme: $left(%r, -1) } | return
}
if ($0 = 1) && ($1 isnum) && (. !isin $1) && ($hget(Kte.Theme, Scheme $+ $int($1)) != $null) { set -u %_kte.sch $int($1) }
elseif ($1- != -d) { while ($hget(Kte.Theme, Scheme $+ %i) != $null) { if ($ifmatch == $1-) { set -u %_kte.sch %i | break } | inc %i } }
if (!%_kte.sch) && ($1 != -d) { kte.error -a The requested scheme was not found | return }
set -u %_kte.fn %thm
set -u %_kte.chscheme $true
doload
_savedata
}
alias theme.unload {
if ($isid) { return }
if (!$isfile($ktedir $+ Kte-Restore.dat)) && (!$hget(Kte.Data, CurTheme)) && ($1 != -f) { kte.error -a You're not currently using a theme. | return }
if (!%_kte.loading) && ($isfile($ktedir $+ Kte-Restore.dat)) {
status.open | status.show 0 Unloading current theme...
if ($hget(Kte.Restore)) { hdel -w Kte.Restore * } | else { hmake Kte.Restore 8 } | hload -b Kte.Restore $+(", $ktedir, Kte-Restore.dat")
}
dounload
if ($script($ktedir $+ Kte-Dyn.mrc)) { .unload -rs $+(", $ifmatch, ") | .remove $+(", $ifmatch, ") }
.enable #Kte.DefTheme
if ($hget(Kte.Restore)) { hfree Kte.Restore | .remove $+(", $ktedir, Kte-Restore.dat") | status.close }
}
alias theme.setting return $hget(Kte.Theme, $1)
alias -l _savedata {
if ($hget(Kte.Theme)) { hsave -ob Kte.Theme $+(", $ktedir, Kte-Theme.dat") } | hsave -ob Kte.Data $+(", $ktedir, Kte-Data.dat")
}
alias -l kte.thmdir if ($hget(Kte.Data, ThmDir)) { return $ifmatch } | return $ktedir $+ Themes\
alias -l kte.gzdir if ($hget(Kte.Data, GZipDir)) { return $ifmatch } | return $ktedir
alias -l kte.cachedir return $ktedir $+ Cache\
alias -l kte.xthmdir return $ktedir $+ Extracted theme\
alias -l kte.xthmtmpdir return $ktedir $+ Extracted theme.tmp\
alias -l _rmdir var %x = $finddir($1-, *, 0, 1, _rmdir $1-) | .rmdir $+(", $1-, ")
alias -l kte.trydir if (\ isin $1) { return } | var %fn = $+($kte.thmdir, $iif((*.mts iswm %fn), $left(%fn, -4), %fn), \, $1) | if ($isfile(%fn)) { return %fn }
alias kte.echo _out Echo $color(info) $1-
alias kte.error _out Error $color(info) $1-
; /_out str <type>, int <color>, str <target>, str <text>
alias -l _out {
if ($3 == -a) && (@* !iswm $active) { var %f = a }
elseif ($3 == -a) || ($3 == -s) { var %f = s } | else { var %p = $3 }
set -u %:echo echo $2 -qti2 $+ %f %p
set -nu %::text $4- | theme.text $1
}
alias -l dobackup {
var %base, %i = 1, %t = 27, %rgb, %f, %font, %fsize, %base-d = back;action;ctcp;high;info;info2;invite;join;kick;mode;nick;normal;notice; $+ $&
notify;other;own;part;quit;topic;wallops;whois;edit;editbox t;list;listbox t;gray
saveini
if (!$hget(Kte.Restore)) { hmake Kte.Restore 8 }
while (%i <= %t) { %base = %base $+ , $+ $color($gettok(%base-d, %i, 59)) | inc %i }
%i = 0 | %t = 15 | while (%i <= %t) { %rgb = %rgb $rgb($color(%i)) | inc %i }
hadd Kte.Restore Colors $gettok(%base, 1-, 44)
hadd Kte.Restore RGBColors %rgb
%i = 1 | %t = $cnick(0)
while (%i <= %t) {
%f = $+(-, $iif(($cnick(%i).anymode), a), $iif(($cnick(%i).nomode), n), $iif(($cnick(%i).ignore), i), $iif(($cnick(%i).op), o), $iif(($cnick(%i).voice), v), $&
$iif(($cnick(%i).protect), p), $iif(($cnick(%i).notify), y), m, $cnick(%i).method)
hadd Kte.Restore CNick- $+ %i %f $iif(($cnick(%i) != $null), $cnick(%i), *) $cnick(%i).color $cnick(%i).modes $cnick(%i).levels
inc %i
}
hadd Kte.Restore Timestamp $iif(($window(Status Window).stamp), ON, OFF)
hadd Kte.Restore TimestampFormat $readini($mircini, text, timestamp)
hadd Kte.Restore FontDefault $+($window(Status Window).font, $chr(44), $window(Status Window).fontsize, $&
$iif(($window(Status Window).fontbold), $chr(44) $+ b))
%font = $readini($mircini, fonts, fchannel) | %fsize = $gettok(%font, 2, 44)
hadd Kte.Restore FontChan $gettok(%font, 1, 44) $+ , $+ $right(%fsize, 2) $+ $iif((%fsize > 700), $chr(44) $+ b)
%font = $readini($mircini, fonts, fquery) | %fsize = $gettok(%font, 2, 44)
hadd Kte.Restore FontQuery $gettok(%font, 1, 44) $+ , $+ $right(%fsize, 2) $+ $iif((%fsize > 700), $chr(44) $+ b)
hsave -ob Kte.Restore $+(", $ktedir, Kte-Restore.dat")
hfree Kte.Restore
}
; /doload
alias -l doload {
var %h = Kte.Theme, %dat = Kte.Data, %fn = %_kte.fn, %w = @Kte.Theme, %i = 1, %t, %sch = %_kte.sch, %ofn = %_kte.ofn, $&
%chscheme = %_kte.chscheme, %apply = $hget(Kte.Data, Apply)
status.open
status.show 0 Preparing to load...
%_kte.loading = $true
if ($isbit(%apply, 1)) || (!%apply) { %apply = 1023 }
if (!%_kte.chscheme) {
if ($hget(%dat, CurTheme)) { dounload }
else { dobackup }
if (%ofn) { hadd %dat Extracted $true } | else { hdel %dat Extracted }
}
.disable #Kte.DefTheme
window -lhBi %w
hdel -w %h * | if ($isfile($ktedir $+ Kte-DefTheme.dat)) { hload -ob %h $+(", $ktedir, Kte-DefTheme.dat") }
loadbuf -tmts %w %fn
if (%sch) { loadbuf -tScheme $+ %sch %w %fn }
filter -cwwg %w %w /^[^\x20;]/
%t = $line(%w, 0)
while (%i <= %t) { hadd %h $line(%w, %i) | inc %i }
close -@ %w
if ($hget(%h, BaseColors) != $null) {
tokenize 44 $ifmatch
hadd %h BaseColors $replace($~($1) $~($2) $~($3) $~($4), $chr(32), $chr(44))
}
%_kte.apply = %apply
if ($isbit(%apply, 3)) || ($isbit(%apply, 6)) { apply.colors }
if ($isbit(%apply, 5)) { apply.fonts }
if ($isbit(%apply, 2)) || ($isbit(%apply, 9)) || ($isbit(%apply, 10)) { apply.bg %fn }
if ($isbit(%apply, 8)) {
if ($hget(%h, MTSVersion) == 1.0) {
var %ts = $hget(%h, Timestamp) | if (%ts != $null) && (%ts != off) { hadd %h TimestampFormat $ifmatch | hadd %h Timestamp ON }
}
if ($istok(on off, $hget(%h, Timestamp), 32)) { .timestamp $hget(%h, Timestamp) }
if ($hget(%h, TimestampFormat) != $null) {
var %ts | set -n %ts $__cl($ifmatch)
.timestamp -f %ts
hadd Kte.Data TimestampFormat %ts
}
}
if (* !iswm $hget(%h, ParenText)) { hadd %h ParenText (<text>) }
if ($isbit(%apply, 4)) {
var %script = $hget(%h, Script), %fscript = $+(", $nofile(%fn), %script, ")
if (%script != $null) && ($isfile(%fscript)) { hadd %dat Script %fscript | .reload -rs %fscript }
set -u %_kte.fn %fn
var %cached = 0, %cfn = $+(", $kte.cachedir, Kte-Dyn-, $nopath(%fn), $iif((%sch), -S $+ %sch), .mrc"), %ln
if ($isfile(%cfn)) {
%ln = $read(%cfn, 3)
if (%ln == ; Kte-Dyn $kte.dynver $crc($ktedir $+ Kte-Dyn.dat) $crc(%fn)) {
.copy -o %cfn $+(", $ktedir, Kte-Dyn.mrc")
write -l3 $+(", $ktedir, Kte-Dyn.mrc, ") ;
%cached = 1
}
}
if (!%cached) {
kte.buildfile
if ($isbit($hget(Kte.Data, Cache), 2)) {
.copy -o $+(", $ktedir, Kte-Dyn.mrc") %cfn
write -l3 %cfn ; Kte-Dyn $kte.dynver $crc($ktedir $+ Kte-Dyn.dat) $crc(%_kte.fn)
}
}
status.show 0 Loading theme script...
.reload -rs $+ $calc($script(0) + 1) $+(", $ktedir, Kte-Dyn.mrc")
}
else { .enable #Kte.DefTheme | if ($script($ktedir $+ Kte-Dyn.mrc)) { .unload -rs $+(", $ifmatch, ") } }
unset %_kte.loading %_kte.apply
status.close
if (!%chscheme) {
hadd %dat CurTheme %fn | hadd %dat CurOTheme $iif((%ofn), %ofn, %fn)
if ($show) { set -u %:echo echo $color(info) -ati2 | linesep -a }
else { set -u %:echo _kte.void }
theme.text Load
if ($show) { linesep -a }
}
}
alias -l ~ return $right(0 $+ $int($calc($1 % 16)), 2)
alias -l dounload {
if ($show) { set -u %:echo echo $color(info) -ati2 } | else { set -u %:echo _kte.void }
if (!$isalias(theme.text)) { .enable #Kte.DefTheme }
theme.text Unload
if ($script($longfn($hget(Kte.Data, Script)))) { .unload -rs $+(", $ifmatch, ") }
if ($hget(Kte.Data, Extracted)) && (!%_kte.killedtmp) { killxthm }
hdel -w Kte.Theme *
var %i = 1, %item
while ($hget(Kte.Data, %i).item) {
%item = $ifmatch
if ($istok(ThmDir GZipDir Hide Cache Apply, %item, 32)) || (FRep.* iswm %item) { inc %i }
else { hdel Kte.Data %item }
}
%_kte.apply = 1023
; restoring nicklist...
var %i = $cnick(0) | while (%i) { .cnick -r 1 | dec %i }
if (!%_kte.loading) { %i = 1 | while ($hget(Kte.Restore, CNick- $+ %i)) { .cnick $ifmatch | inc %i } }
if (!%_kte.loading) && ($hget(Kte.Restore)) {
; restoring colors...
hadd Kte.Theme Colors $hget(Kte.Restore, Colors)
hadd Kte.Theme RGBColors $hget(Kte.Restore, RGBColors)
apply.colors
; restoring fonts...
hadd Kte.Theme FontDefault $hget(Kte.Restore, FontDefault)
hadd Kte.Theme FontChan $hget(Kte.Restore, FontChan)
hadd Kte.Theme FontQuery $hget(Kte.Restore, FontQuery)
apply.fonts
; restoring timestamp...
if ($hget(Kte.Restore, Timestamp)) { .timestamp $ifmatch }
if ($hget(Kte.Restore, TimestampFormat)) { .timestamp -f $ifmatch }
hdel -w Kte.Theme *
}
; removing background... channels
%i = $chan(0)
if (%i) { while (%i) { background -ex $chan(%i) | dec %i } }
else { remini $mircini background wchannel }
; query windows
%i = $query(0)
if (%i) { while (%i) { background -ex $query(%i) | dec %i } }
else { remini $mircini background wquery }
%i = $chat(0) | while (%i) { background -dx $chat(%i) | dec %i }
; others
background -sx | background -gx | background -mx | background -dx | background -lx | background -hx | background -ux
; finishing...
if (!%_kte.loading) && ($isfile($ktedir $+ Kte-DefTheme.dat)) { hload -ob Kte.Theme $+(", $ktedir, Kte-DefTheme.dat") }
unset %_kte.apply
}
alias -l kte.buildfile {
var %w = @Kte.File, %a = aline %w, %i = 1, %t, %lnt, %rawt, %realt, %ln, %x
status.show 1 Compiling theme script...
window -hliB %w
loadbuf %w $+(", $ktedir, Kte-Dyn.dat")
rline %w 3 ;
set -n %kte._pre $dll($ktedir $+ kte.dll, MTSPrecompile, $__cl($remove($hget(Kte.Theme, Prefix), <pre>)))
%lnt = $line(%w, 0)
%t = %lnt
%rawt = $hmatch(Kte.Theme, Raw.???, 0)
%realt = $calc(%t + %rawt)
while (%i <= %t) {
:continue1
status.prog %i %realt
%ln = $line(%w, %i)
if (kte:: isin %ln) { %x = $wildtok(%ln, kte::?*, 1, 32) }
elseif ($gettok(%ln, 1, 32) == #KteDyn#) { rline %w %i $_ktedyn:: [ $+ [ $gettok(%ln, 2, 32) ] ] }
if (%x) {
%x = $numtok(%ln, 32)
while (%x) {
if (kte::?* iswm $gettok(%ln, %x, 32)) {
if ($_pcomp($mid($gettok(%ln, %x, 32), 6)) != $null) { %ln = $puttok(%ln, $ifmatch, %x, 32) }
else { %ln = $deltok(%ln, %x, 32) | if ($gettok(%ln, $calc(%x - 1), 32) == |) { %ln = $deltok(%ln, $calc(%x - 1), 32) | dec %x } }
; dang, mIRC 6.0 broke /break
goto break2
}
; /break inner loop
:break2
dec %x
}
%x =
if (* !iswm %ln) || (%ln == $chr(32)) { dline %w %i | goto continue1 }
rline %w %i %ln
}
inc %i
}
var %list = Echo EchoTarget Error, %i = 1, %t = $numtok(%list, 32), %item
while (%i <= %t) {
%item = $gettok(%list, %i, 32)
aline %w alias -l kte:: $+ %item $_pcomp(%item)
inc %i
}
%i = 1
while ($hmatch(Kte.Theme, Raw.???, %i)) {
status.prog $calc(%lnt + %i - 1) %realt
%item = $ifmatch
aline %w alias -l kte:: $+ %item $_pcomp(%item)
inc %i
}
savebuf %w $+(", $ktedir, Kte-Dyn.mrc")
close -@ %w
unset %kte._*
}
alias -l _pcomp {
var %v | set -n %v $hget(Kte.Theme, $1)
if ($gettok(%v, 1, 32) == !Script) { set -n %v $_cl($gettok(%v, 2-, 32)) }
elseif (* iswm %v) { %v = % $+ :echo $dll($ktedir $+ kte.dll, MTSPrecompile, $__cl(%v)) $!+ % $+ :comment }
if ($istok(%v, % $+ ::pre, 32)) && (* iswm %kte._pre) {
while ($findtok(%v, % $+ ::pre, 1, 32)) { set -n %v $puttok(%v, %kte._pre, $ifmatch, 32) }
}
while ($regsub(%v, /((\s|\A)[^$%\x28,][^\x20\x29,]*) \$\+ ([^$%]\S*(\s|\Z))/, $!1$3, %v) > 0) { }
return %v
}
; $_cl(str <text>) - replaces base colors for script code
alias -l _cl {
var %v | set -n %v $1
tokenize 44 $hget(Kte.Theme, BaseColors)
while ($findtok(%v, % $+ ::c1, 1, 32)) { set -n %v $puttok(%v, $1, $ifmatch, 32) }
while ($findtok(%v, % $+ ::c2, 1, 32)) { set -n %v $puttok(%v, $2, $ifmatch, 32) }
while ($findtok(%v, % $+ ::c3, 1, 32)) { set -n %v $puttok(%v, $3, $ifmatch, 32) }
while ($findtok(%v, % $+ ::c4, 1, 32)) { set -n %v $puttok(%v, $4, $ifmatch, 32) }
return %v
}
; $__cl(str <text>) - replaces base colors for simple event lines
alias -l __cl {
var %v | set -n %v $1
tokenize 44 $hget(Kte.Theme, BaseColors)
return $replace(%v, <c1>, $1, <c2>, $2, <c3>, $3, <c4>, $4)
}
alias -l _ktedyn::SetCl {
if ($hget(Kte.Theme, BaseColors) != $null) {
tokenize 44 $ifmatch
return $+(set -u %, ::c1 $1 $| set -u %, ::c2 $2 $| set -u %, ::c3 $3 $| set -u %, ::c4 $4)
}
return ;
}
alias -l _ktedyn::Pt {
var %pt | set -n %pt $dll($ktedir $+ kte.dll, MTSPrecompile, $__cl($hget(Kte.Theme, ParenText)))
return alias -l _pt if (* iswm % $+ ::text) $chr(123) set -nu % $+ ::parentext %pt $chr(125) $| else $chr(123) unset % $+ ::parentext $chr(125)
}
alias -l _ktedyn::Pre {
if ($hget(Kte.Theme, Prefix) != $null) { return set -nu % $+ ::pre $dll($ktedir $+ kte.dll, MTSPrecompile, $__cl($ifmatch)) }
return ;
}
alias -l _ktedyn::Timestamp {
if ($hget(Kte.Theme, TimestampFormat) != $null) {
return var % $+ ts = $_cl($dll($ktedir $+ kte.dll, MTSPrecompile, $ifmatch)) $chr(124) set -nu % $+ ::timestamp $!time(%ts)
}
return ;
}
alias -l | return $chr(124)
; Loading...
alias -l apply.colors {
var %h = Kte.Theme, %hx = Kte.Data, %i, %colors = back action ctcp high info info2 invite join kick mode nick normal notice notify other own $&
part quit topic wallops whois edit editbox-t list listbox-t gray $iif(($version >= 6), title inactive)
if ($isbit(%_kte.apply, 3)) {
status.show 1 $iif((%_kte.loading), Applying, Restoring) colors...
if ($hget(%h, Colors)) {
var %cl = $ifmatch, %i = 1, %t = $numtok(%cl, 44)
if ($numtok(%colors, 32) < %t) { %t = $ifmatch }
while (%i <= %t) { status.prog %i %t | _color $gettok(%colors, %i, 32) $gettok(%cl, %i, 44) | inc %i }
}
else {
var %i = 1, %t = $numtok(%colors, 32)
while (%i <= %t) { _color $gettok(%colors, %i, 32) $gettok(0 6 4 5 2 3 3 3 3 3 3 1 5 7 6 1 3 2 3 5 1 0 1 0 1 15 6 0, %i, 32) | inc %i }
}
status.show 1 Defining RGB values...
if ($hget(%h, RGBColors)) {
var %cl = $ifmatch, %i = 0, %ccl, %re | %re = /^[0-9]{1,3},[0-9]{1,3},[0-9]{1,3}$/
while (%i <= 15) {
status.prog %i %t | %ccl = $gettok(%cl, $calc(%i + 1), 32)
if ($regex(%ccl, %re)) { _color %i $rgb( [ %ccl ] ) } | else { _color -r %i }
inc %i
}
}
}
; do not apply nicklist if restoring previous colors
if (%_kte.loading) && ($isbit(%_kte.apply, 6)) {
status.show 0 Applying nicklist colors...
var %i = $cnick(0) | while (%i) { .cnick -r 1 | dec %i }
if ($hget(%h, CLineMe) isnum) { .cnick -an $!me $calc($ifmatch % 16) }
if ($hget(%h, CLineEnemy) isnum) { .cnick -i * $calc($ifmatch % 16) }
if ($hget(%h, CLineFriend) isnum) {
.cnick -o * $calc($ifmatch % 16) | .cnick -v * $calc($ifmatch % 16)
.cnick -p * $calc($ifmatch % 16) | .cnick -y * $calc($ifmatch % 16)
}
apply.colors.modes
if ($hget(%h, CLineRegular) isnum) { .cnick -n * $calc($ifmatch % 16) }
}
}
alias -l apply.colors.modes {
; mixes up modes that use the same color
var %h = Kte.Theme, %modes = Owner .;Op @;HOp % $+ ;Voice +, %i = 1, %t = $numtok(%modes, 59), %cl, %cllist
while (%i <= %t) {
tokenize 32 $gettok(%modes, %i, 59)
if ($hget(%h, CLine $+ $1) isnum) {
%cl = $calc($ifmatch % 16)
; blah S2FtZWsgbWFkZSBpdA== ;)
if ($wildtok(%cllist, %cl *, 1, 59)) { %cllist = $instok($remtok(%cllist, $ifmatch, 1, 59), $ifmatch $+ $2, 1, 59) }
else { %cllist = $instok(%cllist, %cl $2, 1, 59) }
}
inc %i
}
%i = $numtok(%cllist, 59) | while (%i) { .cnick * $gettok(%cllist, %i, 59) | dec %i }
}
alias -l _color tokenize 46 $+($replace($1, -, $chr(32)), ., $2) | if ($color($1) != $2) { color $1-2 }
alias -l apply.fonts {
var %h = Kte.Theme, %write = writeini $+(", $mircini, ") fonts, %nserv, %i, %j, %k, %p
status.show 0 Applying fonts...
if ($hget(%h, FontDefault)) {
var %font = $ifmatch, %f = $iif((b isin $gettok(%font, 3, 44)), b), %fnt = $gettok(%font, 2, 44) $gettok(%font, 1, 44), %fini = $mkinifont(%font)
if ($hget(Kte.Data, FRep.Status)) && ($hget(Kte.Data, FRep.Rep. $+ $replace($gettok(%font, 1, 44), $chr(32), \~)) != $null) {
%fnt = $ifmatch | %font = $puttok(%font, %fnt, 1, 44)
}
if ($version >= 6) { %nserv = $scon(0) }
else { %nserv = 1 }
while (%nserv) {
if ($version >= 6) { scon %nserv }
font $+(-s, %f) %fnt
dec %nserv
}
if ($window(Finger Window)) { font -g $+ %f %fnt } | else { %write ffinger %fini }
%write flinks %fini | %write flist %fini | %write fwwwlist %fini | %write fnotify %fini
if (!$hget(%h, FontChan)) { hadd %h FontChan %font }
if (!$hget(%h, FontQuery)) { hadd %h FontQuery %font }
}
if ($hget(%h, FontChan)) {
var %font = $ifmatch
if ($hget(Kte.Data, FRep.Status)) && ($hget(Kte.Data, FRep.Rep. $+ $replace($gettok(%font, 1, 44), $chr(32), \~)) != $null) {
%font = $puttok(%font, $ifmatch, 1, 44)
}
if ($version >= 6) { %nserv = $scon(0) }
else { %nserv = 1 }
%p = -d
if (b isin $gettok(%font, 3, 44)) { %p = %p $+ b }
while (%nserv) {
if ($version >= 6) { scon %nserv }
%i = $chan(0)
while (%i) { font %p $chan(%i) $gettok(%font, 2, 44) $gettok(%font, 1, 44) | dec %i }
dec %nserv
}
else { %write fchannel $mkinifont(%font) }
}
if ($hget(%h, FontQuery)) {
var %font = $ifmatch
if ($hget(Kte.Data, FRep.Status)) && ($hget(Kte.Data, FRep.Rep. $+ $replace($gettok(%font, 1, 44), $chr(32), \~)) != $null) {
%font = $puttok(%font, $ifmatch, 1, 44)
}
if ($version >= 6) { %nserv = $scon(0) }
else { %nserv = 1 }
%p = -d
if (b isin $gettok(%font, 3, 44)) { %p = %p $+ b }
while (%nserv) {
if ($version >= 6) { scon %nserv }
var %i = $query(0), %j = $chat(0), %k = $fserv(0)
while (%i) { font %p $query(%i) $gettok(%font, 2, 44) $gettok(%font, 1, 44) | dec %i }
while (%j) { font %p = $+ $chat(%j) $gettok(%font, 2, 44) $gettok(%font, 1, 44) | dec %j }
while (%j) { font %p = $+ $fserv(%k) $gettok(%font, 2, 44) $gettok(%font, 1, 44) | dec %j }
dec %nserv
}
else { %write fquery $mkinifont(%font) }
%write fmessage $mkinifont(%font)
}
}
alias -l mkinifont {
tokenize 44 $1
var %weight = $iif((b isin $3), 700, 400), %h = $2
if (%h < 0) {
; my attemp to convert negative size -> height -> real size...
var %h = $int($calc($2 * $height(A, $1, 1000) / -1000 + 0.999)), %n = 10, %diff
while (%n) {
%diff = $calc($height(A, $1, %h) - $height(A, $1, $2))
if (!%diff) { break } | elseif (%diff > 0) { dec %h } | else { inc %h }
dec %n
}
}
return $+($1, $chr(44), $calc(%weight + %h), $chr(44), 1)
}
alias -l apply.bg {
var %h = Kte.Theme, %dir = $nofile($1-), %fn, %i, %write = writeini $+(", $mircini, ") background
status.show 1 Applying background pictures...
if ($isbit(%_kte.apply, 2)) {
; channels
status.prog 1 5
if ($hget(%h, ImageChan)) {
var %ln = $ifmatch, %p = -e $+ $imgpos(%ln), %fn = $+(", %dir, $gettok(%ln, 2-, 32), ")
%i = $chan(0)
if (%i) { while (%i) { $bg(%p $chan(%i), %fn) | dec %i } }
else { %write wchannel $+($shortfn(%fn), $chr(44), $calc($findtok(center fill normal stretch tile photo, $gettok(%ln, 1, 32), 1, 32) - 1)) }
}
; query windows
status.prog 2 5
if ($hget(%h, ImageQuery)) {
var %ln = $ifmatch, %p = -e $+ $imgpos(%ln) | %fn = $+(", %dir, $gettok(%ln, 2-, 32), ")
$bg(%p $+ g, %fn)
%i = $query(0)
if (%i) { while (%i) { $bg(%p $query(%i), %fn) | dec %i } }
else { %write wquery $+($shortfn(%fn), $chr(44), $calc($findtok(center fill normal stretch tile photo, $gettok(%ln, 1, 32), 1, 32) - 1)) }
%i = $chat(0) | while (%i) { $bg(%p $chat(%i), %fn) | dec %i }
}
; status, finger and mdi
status.prog 3 5
if ($hget(%h, ImageStatus)) { $bg(-sg $+ $imgpos($ifmatch), $+(", %dir, $gettok($ifmatch, 2-, 32), ")) }
if ($hget(%h, ImageMirc)) { $bg(-m $+ $imgpos($ifmatch), $+(", %dir, $gettok($ifmatch, 2-, 32), ")) }
}
if ($isbit(%_kte.apply, 10)) {
; toolbar, switchbar
status.prog 4 5
if ($hget(%h, ImageToolbar)) { $bg(-l, $+(", %dir, $gettok($ifmatch, 2-, 32), ")) }
if ($hget(%h, ImageSwitchbar)) { $bg(-h, $+(", %dir, $gettok($ifmatch, 2-, 32), ")) }
}
if ($isbit(%_kte.apply, 9)) {
status.prog 5 5
if ($hget(%h, ImageButtons)) { $bg(-u, $+(", %dir, $ifmatch, ")) }
}
else { status.prog 5 5 }
}
alias -l bg if ($isfile($2)) { background $1- }
alias -l imgpos return $mid(cfnrtp, $findtok(center fill normal stretch tile photo, $gettok($1, 1, 32), 1, 32), 1)
alias -l status.open {
var %w = @Kte.Status, %cw = $calc($dbuw * 100), %ch = $calc($dbuh * 24)
window -hndkpfCBi +fL %w -1 -1 %cw %ch
drawrect -rf %w $rgb(face) 0 0 0 %cw %ch
window -o %w
window -hpBi +d @Kte.Cover 0 0 $window(-3).w $window(-3).h
drawrect -nrf @Kte.Cover $rgb(128, 128, 128) 0 0 0 $window(-3).w $window(-3).h
window -a @Kte.Cover
}
alias -l status.close close -@ @Kte.Status @Kte.Cover
alias -l status.show {
var %w = @Kte.Status, %cw = $window(@Kte.Status).dw
drawrect -nrf %w $rgb(face) 0 0 0 %cw $window(@Kte.Status).dh
drawtext -nro %w $rgb(text) Tahoma -8 $calc((%cw - $width($2-, Tahoma, -8, 1, 0)) / 2) $calc(4 * $dbuh) $2-
if ($1) {
var %rx = $calc(3 * $dbuw), %ry = $calc(15 * $dbuh), %rw = $calc(94 * $dbuw), %rh = $calc(5 * $dbuh), %xywh = %rx %ry %rw %rh
drawrect -nrf %w $rgb(hilight) 0 %xywh
drawrect -nr %w $rgb(shadow) 0 %xywh
drawline -nr %w $rgb(hilight) 0 $calc(%rx + %rw - 1) $calc(%ry + 1) $calc(%rx + %rw - 1) $calc(%ry + %rh - 1) %rx $calc(%ry + %rh - 1)
;drawrect -nr %w $rgb(frame) 0 %xywh
}
drawdot %w
}
alias -l status.prog {
var %w = @Kte.Status
drawrect -rf %w $rgb(0, 0, 128) 0 $calc(3 * $dbuw + 1) $calc(15 * $dbuh + 1) $calc((94 * $dbuw - 2) * $1 / $2) $calc(5 * $dbuh - 2)
}
; the dialog
alias -l dlg if ($dialog($2)) { dialog -v $2 } | else { dialog $1-2 $2 }
dialog kte.load {
title ":: KTE :: Load theme ::"
; bad fix, but it's the best I have for now
size -1 -1 209 $iif(($version >= 6), 140, 149)
option dbu
box "", 1, -1 -3 215 4
button "&...", 3, 51 3 10 10
text "", 4, 0 0 0 0, hide
text "&Themes available:", 24, 3 5 43 7
list 2, 3 14 59 85, sort size vsbar
text "Apply &scheme:", 20, 3 102 35 7, disable
combo 21, 3 110 59 80, disable drop
tab "Information", 1000, 66 2 140 118
text "Name:", 5, 72 35 16 7, disable tab 1000
text "", 6, 100 35 100 7, disable tab 1000
text "Version:", 7, 72 46 19 7, disable tab 1000
text "", 8, 100 46 100 7, disable tab 1000
text "Author:", 9, 72 57 17 7, disable tab 1000
text "", 10, 100 57 100 7, disable tab 1000
link "", 11, 100 64 100 7, disable tab 1000
text "URL:", 12, 72 75 13 7, disable tab 1000
link "", 13, 100 75 100 7, disable tab 1000
edit "", 14, 72 91 129 24, disable tab 1000 read multi vsbar
text "", 19, 72 20 128 7, tab 1000
box "", 26, 72 27 128 4, tab 1000
tab "Preview", 1001
text "Preview:", 15, 72 21 21 7, disable tab 1001
button "Generate &preview", 16, 151 19 49 10, disable tab 1001
box "", 17, 73 29 127 85, tab 1001
icon 18, 73 32 127 82, $mircexe, 0, hide tab 1001 noborder
tab "Apply", 1002
text "When loading, apply:", 28, 72 21 50 7, tab 1002
check "&Everything", 29, 134 21 35 7, tab 1002
box "", 30, 72 28 128 4, hide tab 1002
check "&Background images", 33, 72 36 57 7, tab 1002
check "&Colors", 34, 72 45 24 7, tab 1002
check "Event &messages", 35, 72 54 49 7, tab 1002
check "F&onts", 36, 72 63 23 7, tab 1002
check "&Nicklist colors", 37, 134 36 42 7, tab 1002
check "Soun&ds", 38, 72 72 28 7, hide disable tab 1002
check "T&imestamp", 39, 134 45 35 7, tab 1002
check "Toolbar b&uttons", 40, 134 54 47 7, tab 1002
check "Too&lbar/switchbar bgs", 41, 134 63 63 7, tab 1002
text "", 32, 72 82 130 20, tab 1002
box "", 2900, -1 121 211 20
button "Load", 2901, 124 128 40 10, disable default ok
button "Close", 2902, 167 128 40 10, cancel
menu "&File", 43
item "Change &folder...", 22, 43
item "E&xplore this folder", 45, 43
item break, 44, 43
item "&Settings...", 23, 43
item break, 47, 43
item "&Edit theme file", 46, 43
item break, 48, 43
item "&Close Esc", 25, 43
menu "&Help", 49
item "&Readme", 31, 49
item "&About...", 27, 49
}
on *:DIALOG:kte.load:init:0:{
load.list $kte.thmdir
if (!$isfile($ktedir $+ Kte-Readme.txt)) { did -b $dname 31 }
did -f $dname 2
var %did = 29 33 34 35 36 37 38 39 40 41, %i = $numtok(%did, 32), %set = $hget(Kte.Data, Apply)
while (%i) { if ($isbit(%set, %i)) { did -c $dname $gettok(%did, %i, 32) } | dec %i }
if ($did($dname, 29).state) { did -b $dname 33,34,35,36,37,38,39,40,41 }
did -o $dname 32 1 It is highly recommended that you apply the theme's event messages; also, most themes look weird if you don't apply their $&
color settings.
var %dir = $r.get(kte,dir)
did -f $dname 2
if (!$isdir(%dir)) { return }
load.list %dir
}
on *:DIALOG:kte.load:sclick,menu:3,22:{
var %dir = $sdir($did($dname, 4), Choose theme directory) | did -f $dname 2 | if (!$isdir(%dir)) { return }
r.set kte dir %dir | load.list %dir
}
on *:DIALOG:kte.load:sclick:2:load.sel
on *:DIALOG:kte.load:dclick:2:if ($did($dname, 2901).enabled) { dialog -k $dname } | else { beep }
on *:DIALOG:kte.load:sclick:11:var %e = $did($dname, 11) | if (?*@?*.?* iswm %e) { .run mailto: $+ %e } | else { beep }
on *:DIALOG:kte.load:sclick:13:{
var %url = $did($dname, 13) | if ($chr(32) isin %url) || (!%url) { beep | return }
if (*:/* !iswm %url) { %url = http:// $+ %url } | .run %url
}
on *:DIALOG:kte.load:sclick:16:{
var %f = $gettok($did($dname, 2, $did($dname, 2, 1).sel), 2, 63), %ngz = $kte.gzdir $+ ngzipn.dll
if ($dialog($dname).focus = 16) { did -f $dname 2 }
if (!$isfile(%f)) { beep | return }
did -b $dname 16
if (*.mts.gz iswm %f) {
if (!$isfile(%ngz)) { beep | return }
if (!$dll(%ngz, unzip, $left(%f, -3))) { beep | return }
var %of = %f, %f = $left(%f, -3)
}
elseif (*.vpk iswm %f) || (*.vpk.gz iswm %f) {
var %nf = %f
if (*.gz iswm %f) {
%nf = $left(%f, -3)
if (!$isfile(%ngz)) { beep | return }
if (!$dll(%ngz, unzip, $left(%f, -3))) { beep | return }
}
vPak.extract $+(", %nf, ") $+(", $kte.xthmtmpdir, ") | if (*.gz iswm %f) { .remove $+(", %nf, ") }
var %killtmp = $true
if ($result) { beep | goto clear }
var %of = %f, %f = $findfile($kte.xthmtmpdir, *.mts, 1, 9)
if (!%f) { beep | goto clear }
}
set -u %_kte.realname %of
load.preview %f
:clear | did -e $dname 16 | if (%of) { .remove $+(", %f, ") } | if (%killtmp) { killtmp }
}
on *:DIALOG:kte.load:sclick:21:load.sel.preview
on *:DIALOG:kte.load:menu:23:dlg -am kte.settings
on *:DIALOG:kte.load:menu:25:dialog -c $dname
on *:DIALOG:kte.load:menu:27:$dialog(kte.about, kte.about, -4)
on *:DIALOG:kte.load:sclick:29:did $iif(($did($dname, 29).state), -b, -e) $dname 33,34,35,36,37,39,40,41
on *:DIALOG:kte.load:menu:31:run $+(", $ktedir, Kte-Readme.txt")
on *:DIALOG:kte.load:menu:45:run explorer /n,/e, $+ $did($dname, 4)
on *:DIALOG:kte.load:menu:46:{
var %fn = $gettok($did($dname, 2, $did($dname, 2, 1).sel), 2, 63)
if (!$isfile(%fn)) { beep | load.sel } | elseif ($isalias(kthm)) { kthm %fn } | else { run notepad %fn }
}
on *:DIALOG:kte.load:sclick:1000,1001:did -f $dname 2
on *:DIALOG:kte.load:sclick:1002:did -f $dname 29
on *:DIALOG:kte.load:sclick:2901:{
var %sch, %apply = $base($+($ds(41), $ds(40), $ds(39), $ds(38), $ds(37), $ds(36), $ds(35), $ds(34), $ds(33), $ds(29)), 2, 10)
if ($did($dname, 21, 1).sel > 1) { %sch = -s $+ $calc($ifmatch - 1) }
; 29 33 34 35 36 37 38 39 40 41
if (!%apply) { %apply = 1 }
hadd Kte.Data Apply %apply
.timer -oi 1 0 if ($isfile( $+ $gettok($did($dname, 2, $did($dname, 2, 1).sel), 2, 63) $+ )) $chr(123) $&
theme.load %sch $gettok($did($dname, 2, $did($dname, 2, 1).sel), 2, 63) $chr(125)
}
alias -l load.list {
var %d = kte.load, %s
did -r %d 2
%s = $findfile($1-, *.mts, 0, 9, did -a %d 2 $nopath($1-) $+($str(Â , 30), ?, $1-))
inc %s $findfile($1-, *.mts.gz, 0, 9, did -a %d 2 $nopath($1-) $+($str(Â , 30), ?, $1-))
inc %s $findfile($1-, *.vpk, 0, 9, did -a %d 2 $nopath($1-) $+($str(Â , 30), ?, $1-))
inc %s $findfile($1-, *.vpk.gz, 0, 9, did -a %d 2 $nopath($1-) $+($str(Â , 30), ?, $1-))
if (%s) {
if ($didwm(%d, 2, $+(*, $str(Â , 30), ?, $longfn($hget(Kte.Data, CurOTheme))))) { did -c %d 2 $ifmatch }
else { did -c %d 2 1 }
load.sel
}
else { did -b %d 5,6,7,8,9,10,11,12,13,14,15,16,20,21,2901 | did -r %d 6,8,10,11,13,14,19,21 }
did -o %d 4 1 $1-
}
alias -l load.sel {
var %d = kte.load, %f = $gettok($did(%d, 2, $did(%d, 2, 1).sel), 2, 63), %mtsver, %ln, %ln = $readn, %df = %f, $&
%ngz = $kte.gzdir $+ ngzipn.dll, %cache = $kte.cachedir $+ thminfo.ini, %top = $hash($lower($longfn(%f)), 32), $&
%t.gotinfo = $false, %t.name, %t.version, %t.author, %t.email, %t.website, %t.description
did $iif((*.mts iswm %f), -e, -b) %d 46
if ($width(%df, MS Shell Dlg, -8, 0, 0) > $calc($dbuw * 128)) {
%df = $puttok(%df, ..., 2, 92)
while ($width(%df, MS Shell Dlg, -8, 0, 0) > $calc($dbuw * 128)) { %df = $deltok(%df, 3, 92) | if ($numtok(%df, 92) <= 3) { break } }
}
did -o %d 19 1 %df
did -r %d 6,8,10,11,13,14
if (!$isfile(%f)) { did -o %d 6 1 (file not found) | did -b %d 14,16,20,21,2901 | did -v %d 17 | did -h %d 18 | did -r %d 21 | return }
if ($readini(%cache, %top, Filename) == $gettok($longfn(%f), 1-, 32)) && ($readini(%cache, %top, CRC) == $crc(%f)) {
%t.gotinfo = $true
%mtsver = $readini(%cache, %top, MTSVersion)
%t.name = $readini(%cache, %top, Name)
%t.version = $readini(%cache, %top, Version)
%t.author = $readini(%cache, %top, Author)
%t.email = $readini(%cache, %top, EMail)
%t.website = $readini(%cache, %top, Website)
%t.description = $readini(%cache, %top, Description)
var %schi = 1
while ($readini(%cache, %top, Scheme $+ %schi) != $null) { var %t.scheme [ $+ [ %schi ] ] | %t.scheme [ $+ [ %schi ] ] = $ifmatch | inc %schi }
}
elseif (*.mts.gz iswm %f) {
if (!$isfile(%ngz)) {
did -o %d 6 1 (nGZIPn is needed to open this file) | did -b %d 14,16,20,21,2901 | did -v %d 17 | did -h %d 18 | did -r %d 21 | return
}
if (!$dll(%ngz, unzip, $left(%f, -3))) {
did -o %d 6 1 (nGZIPn was unable to extract this file) | did -b %d 14,16,20,21,2901 | did -v %d 17 | did -h %d 18 | did -r %d 21 | return
}
var %of = %f, %f = $left(%f, -3)
}
elseif (*.vpk iswm %f) || (*.vpk.gz iswm %f) {
var %nf = %f
if (*.gz iswm %f) {
%nf = $left(%f, -3)
if (!$isfile(%ngz)) {
did -o %d 6 1 (nGZIPn is needed to open this file) | did -b %d 14,16,20,21,2901 | did -v %d 17 | did -h %d 18 | did -r %d 21 | return
}
if (!$dll(%ngz, unzip, $left(%f, -3))) {
did -o %d 6 1 (nGZIPn was unable to extract this file) | did -b %d 14,16,20,21,2901 | did -v %d 17 | did -h %d 18 | did -r %d 21 | return
}
}
vPak.extract -t $+(", %nf, ") $+(", $kte.xthmtmpdir, ") | if (*.gz iswm %f) { .remove $+(", %nf, ") }
var %killtmp = $true
if ($result) { did -o %d 6 1 ( $+ $ifmatch $+ ) | did -b %d 14,16,20,21,2901 | did -v %d 17 | did -h %d 18 | did -r %d 21 | goto clear }
var %of = %f, %f = $findfile($kte.xthmtmpdir, *.mts, 1, 9)
if (!%f) { did -o %d 6 1 (invalid theme vPak) | did -b %d 14,16,20,21,2901 | did -v %d 17 | did -h %d 18 | did -r %d 21 | goto clear }
}
if (!%t.gotinfo) {
%ln = $read(%f, nw, [mts])
set -n %mtsver $gettok($read(%f, nw, MTSVersion *, %ln), 2-, 32)
if (!%ln) || (!$istok(1 1.1, $calc(%mtsver), 32)) { goto inv }
%t.name = $gettok($read(%f, nw, Name *, %ln), 2-, 32)
%t.version = $gettok($read(%f, nw, Version *, %ln), 2-, 32)
%t.author = $gettok($read(%f, nw, Author *, %ln), 2-, 32)
%t.email = $gettok($read(%f, nw, EMail *, %ln), 2-, 32)
%t.website = $gettok($read(%f, nw, Website *, %ln), 2-, 32)
%t.description = $gettok($read(%f, nw, Description *, %ln), 2-, 32)
var %schi = 1
while ($gettok($read(%f, nw, Scheme $+ %schi *, %ln), 2-, 32) != $null) {
var %t.scheme [ $+ [ %schi ] ] | %t.scheme [ $+ [ %schi ] ] = $ifmatch | inc %schi
}
}
did -e %d 5,6,7,8,9,10,11,12,13,14,15
if (!$istok(1 1.1, $calc(%mtsver), 32)) { goto inv }
if (%t.name != $null) { did -o %d 6 1 %t.name } | else { goto inv }
did -o %d 8 1 %t.version (standard v $+ %mtsver $+ )
did -o %d 10 1 %t.author
did -o %d 11 1 %t.email
did -o %d 13 1 %t.website
did -a %d 14 %t.description
did -c %d 14 1
did -rac %d 21 <default scheme>
var %schi = 1
while ($var(%t.scheme*, %schi).value != $null) { did -a %d 21 $ifmatch | inc %schi }
did $iif((%schi > 1), -e, -b) %d 20,21
if (%of) {
.remove $+(", %f, ") | if (%killtmp) { killtmp }
%f = %of
%cache = $+(", %cache, ")
writeini %cache %top Filename %f
writeini %cache %top CRC $crc(%f)
writeini %cache %top MTSVersion %mtsver
if (%t.name != $null) { writeini %cache %top Name %t.name }
if (%t.version != $null) { writeini %cache %top Version %t.version }
if (%t.author != $null) { writeini %cache %top Author %t.author }
if (%t.email != $null) { writeini %cache %top EMail %t.email }
if (%t.website != $null) { writeini %cache %top Website %t.website }
if (%t.description != $null) { writeini %cache %top Description %t.description }
var %schi = 1
while ($var(%t.scheme*, %schi).value != $null) { writeini %cache %top Scheme $+ %schi $ifmatch | inc %schi }
}
load.sel.preview
did -e %d 16,2901
return
:inv | did -o %d 6 1 (invalid theme file) | did -b %d 14,16,20,21,2901 | did -v %d 17 | did -h %d 18 | did -r %d 21
:clear | if (%of) { .remove $+(", %f, ") } | if (%killtmp) { killtmp }
}
alias -l load.sel.preview {
var %d = kte.load, %sch, %f = $gettok($did(%d, 2, $did(%d, 2, 1).sel), 2, 63)
if ($did(%d, 21, 1).sel > 1) { %sch = -S $+ $calc($ifmatch - 1) }
var %pfn = $+(", $kte.cachedir, $nopath(%f), %sch, .bmp")
if ($isfile(%pfn)) { did -h %d 17 | did -g %d 18 %pfn | did -v %d 18 }
else { did -v %d 17 | did -h %d 18 }
}
alias -l killxthm var %x = $findfile($kte.xthmdir, *, 0, 9, .remove $+(", $1-, ")) | _rmdir $kte.xthmdir
alias -l killtmp var %x = $findfile($kte.xthmtmpdir, *, 0, 9, .remove $+(", $1-, ")) | _rmdir $kte.xthmtmpdir
; preview
alias -l load.preview {
var %sch
if ($did($dname, 21, 1).sel > 1) { %sch = $calc($ifmatch - 1) }
var %pfn = $+(", $kte.cachedir, $nopath($iif((%_kte.realname), %_kte.realname, $1-)), $iif((%sch), -S $+ %sch), .bmp"), $&
%w = @Kte.Preview, %lw = @Kte.Preview-, %cw = $calc(127 * $dbuw), %ch = $calc(82 * $dbuh)
if (!$isdir($kte.cachedir)) { mkdir $+(", $kte.cachedir, ") }
window -hkliB %lw
; on preview, we must load the scheme first, not after
if (%sch) && ($read($1-, w, $+([Scheme, %sch, ]))) { loadbuf -tScheme $+ %sch %lw $+(", $1-, ") }
loadbuf -tmts %lw $shortfn($1-)
if ($fline(%lw, ?* !Script ?*, 1)) && ($_set(Script)) {
var %scriptf = $+(", $nofile($1-), $ifmatch, ") | if ($isfile(%scriptf)) && (!$script($longfn(%scriptf))) { .reload -rs %scriptf } | else { %scriptf = }
}
var %cl = $_set(Colors), %rgb = $_set(RGBColors)
if ($numtok(%cl, 44) = 25) { %cl = %cl $+ ,15 }
elseif ($numtok(%cl, 44) != 26) { %cl = 0,6,4,5,2,3,3,3,3,3,3,1,5,7,6,1,3,2,3,5,1,0,1,0,1,15 }
if ($numtok(%rgb, 32) != 16) {
%rgb = 255,255,255 0,0,0 0,0,128 0,144,0 255,0,0 128,0,0 160,0,160 255,128,0 255,255,0 0,255,0 0,144,144 0,255,255 0,0,255 255,0,255 $&
128,128,128 208,208,208
}
pv Init %cw %ch
if ($isfile($nofile($1-) $+ $gettok($_set(ImageChan), 2-, 32))) {
window -hpfkniB +d %w -1 -1 %cw %ch
drawrect -nrf %w $_rgb(%cl, %rgb, 1) 0 2 2 %cw %ch
preview.bg %w $1-
drawsave %w %pfn
close -@ %w
pv SetBg $_rgb(%cl, %rgb, 1) %pfn
}
else { pv SetBg $_rgb(%cl, %rgb, 1) }
if ($_set(FontChan)) || ($_set(FontDefault)) {
var %f, %fsize = $gettok($ifmatch, 2, 44), %fb = $gettok($ifmatch, 3, 44)
set -n %f $gettok($ifmatch, 1, 44)
if ("*" iswm %f) { set -n %f $mid(%f, 2, -1) }
if ($hget(Kte.Data, FRep.Status)) && ($hget(Kte.Data, FRep.Rep. $+ $replace(%f, $chr(32), \~)) != $null) { set -n %f $ifmatch }
if (%fsize !isnum) { %fsize = -10 }
if (%fb != b) { var %fb }
pv SetFont %fb %fsize %f
}
else { pv SetFont $iif(($window(Status Window).fontbold), b) $window(Status Window).fontsize $window(Status Window).font }
pv SetColors %rgb
preview.text - %lw %cl %rgb
pv DrawBorder
pv Save %pfn
pv Cleanup
close -@ %lw
if ($script($longfn(%scriptf))) { .unload -rsn %scriptf }
did -h $dname 17 | did -g $dname 18 %pfn | did -v $dname 18
if (!$isbit($hget(Kte.Data, Cache), 1)) { .remove %pfn }
unset %_kte.*
}
alias -l _rgb return $rgb( [ $gettok($2, $calc($gettok($1, $3, 44) + 1), 32) ] )
; /preview.bg str <pwnd>, str <filename>
alias -l preview.bg {
var %set = $_set(ImageChan), %style = $gettok(%set, 1, 32), %fn = $+(", $nofile($2-), $gettok(%set, 2-, 32), "), $&
%dw = $calc($window($1).dw - 4), %dh = $calc($window($1).dh - 4), %px = 2, %py = 2, %pw, %ph
if (!%set) || (!$istok(center fill normal stretch tile photo, %style, 32)) || (!$pic(%fn).width) { return $false }
%pw = $pic(%fn).width | %ph = $pic(%fn).height
if (%style == center) { %px = $calc(2 + (%dw - %pw) / 2) | %py = $calc(2 + (%dh - %ph) / 2) }
elseif ($istok(fill tile, %style, 32)) { %pw = %dw | %ph = %dh }
elseif (%style == stretch) {
if (%pw > %dw) { %ph = $calc(%ph * %dw / %pw) | %pw = %dw }
if (%ph > %dh) { %pw = $calc(%pw * %dh / %ph) | %ph = %dh }
%px = $calc(2 + (%dw - %pw) / 2) | %py = $calc(2 + (%dh - %ph) / 2)
}
elseif (%style == photo) {
var %hdw = $calc(%dw * 0.5), %hdh = $calc(%dh * 0.5)
if (%pw > %hdw) { %ph = $calc(%ph * %hdw / %pw) | %pw = %hdw }
if (%ph > %hdh) { %pw = $calc(%pw * %hdh / %ph) | %ph = %hdh }
%px = $calc(2 + %dw - %pw)
}
drawpic -ns $+ $iif((%style == tile), l) $1 $int(%px) $int(%py) $int(%pw) $int(%ph) %fn
unset %_kte.*
return $true
}
; /preview.text str <pwnd>, str <lwnd>, int[](44) <colors>, (int[3](44))[](32) <rgb>
alias -l preview.text {
var %ch = $calc($window($1).dh - 4)
%_kte.time = $calc($ctime - $r(0, 86400))
var %bcl = $_set(BaseColors)
%::c1 = $gettok(%bcl, 1, 44) | %::c2 = $gettok(%bcl, 2, 44) | %::c3 = $gettok(%bcl, 3, 44) | %::c4 = $gettok(%bcl, 4, 44)
if ($_set(MTSVersion) = 1.1) && ($_set(Timestamp) == on) && ($_set(TimestampFormat)) { set -n %_kte.timestamp $ifmatch }
elseif ($calc($_set(MTSVersion)) = 1) && ($_set(Timestamp)) { if ($ifmatch != off) { set -n %_kte.timestamp $ifmatch } }
if (*<c*>* iswm %_kte.timestamp) { set -n %_kte.timestamp $replace(%_kte.timestamp, <c1>, %::c1, <c2>, %::c2, <c3>, %::c3, <c4>, %::c4) }
%::me = $me | if (!%::me) || ($istok(Dude GuY pal, %::me, 32)) { %::me = Myself }
%::server = irc.kte.kamek.net | %::port = 6667
.timer.kte 1 0 % $+ ::pre = $dll($ktedir $+ kte.dll, MTSPrecompile, $_set(Prefix)) | .timer.kte -e
%::chan = #Preview | %::target = #Preview
%:echo = _kte.drawpreview
%_kte.color = $_rgb($3, $4-, 8)
%::nick = %::me
_show JoinSelf
%_kte.color = $_rgb($3, $4-, 12)
inc %_kte.time $r(1, 5)
%::nick = Dude | %::cmode = @
%::text = $gettok(hi welcome wb, $r(1, 3), 32) %::me :)
_show TextChan
%_kte.color = $_rgb($3, $4-, 16)
inc %_kte.time $r(5, 10)
%::nick = %::me | %::cmode =
%::text = $gettok(hi howdy hello, $r(1, 3), 32) Dude
_show TextChanSelf
%_kte.color = $_rgb($3, $4-, 8)
inc %_kte.time $r(30, 50)
%::nick = pal
%::address = $+(palscript@, $r(1, 255), ., $r(0, 255), ., $r(0, 255), ., $r(0, 255))
_show Join
%_kte.color = $_rgb($3, $4-, 21)
inc %_kte.time $r(10, 20)
%::realname = Your pal | %::chan = #Preview @#Pals
%::wserver = %::server | %::serverinfo = Preview server | %::text = | %::isregd = is not | %::isoper = is not
%::idletime = $duration($r(1, 30)) | %::signontime = $asctime($calc(%_kte.time - $r(360, 7200)))
if ($_set(Whois)) { _show Whois | _show Raw.311 | _show Raw.319 | _show Raw.312 | _show Raw.317 | _show Raw.318 }
else { _showr 311 | _showr 319 | _showr 312 | _showr 317 | _showr 318 }
%_kte.color = $_rgb($3, $4-, 12)
inc %_kte.time $r(10, 20)
%::text = what's up guys?
%::chan = #Preview
_show TextChan
inc %_kte.time $r(3, 10)
%::nick = GuY | %::cmode = + | %::address =
%::text = the sky, pal
_show TextChan
%_kte.color = $_rgb($3, $4-, 9)
inc %_kte.time $r(3, 10)
%::nick = Dude | %::cmode = @ | %::knick = GuY
%::text = sample kick!
if ($_set(ParenText)) { set -n %::parentext $ifmatch } | else { %::parentext = (<text>) }
set -n %::parentext $eval($dll($ktedir $+ kte.dll, MTSPrecompile, $ifmatch), 2)
_show Kick | %::knick = | %::parentext =
%_kte.color = $_rgb($3, $4-, 2)
inc %_kte.time $r(40, 180)
%::text = is away (brb)
_show ActionChan
:end
unset %:echo %::*
}
alias -l pv dll $+(", $ktedir, Kte.dll") Preview $+ $1-
alias _kte.drawpreview pv DrawText %_kte.color %::timestamp $1-
alias -l _set return $gettok($line(@Kte.Preview-, $fline(@Kte.Preview-, $1 *)), 2-, 32)
alias -l _show {
if (* iswm $_set($1)) {
var %ln | set -n %ln $_set($1) | if (%_kte.timestamp) { %::timestamp = $asctime(%_kte.time, %_kte.timestamp) }
if ($gettok(%ln, 1, 32) == !Script) { set -n %ln $gettok(%ln, 2-, 32) }
else { set -n %ln % $+ :echo $dll($ktedir $+ kte.dll, MTSPrecompile, %ln) }
if (%ln) { .timer.theme 1 0 %ln | .timer.theme -e }
return 1
}
}
alias -l _showr _show Raw. $+ $1 | if (!$result) { _show Raw.Other }
; about
dialog kte.about {
title ":: KTE :: About ::"
size -1 -1 100 47
option dbu
icon $mircexe, 16
check "3", 1, 0 0 0 0
icon 2, 3 3 16 16, $mircexe, 0, noborder
text "Kamek's Theme Engine", 3, 27 3 56 7
text "", 4, 27 12 70 7
link "Kamek's MTS page", 5, 27 21 47 7
box "", 2900, -1 28 102 20
button "OK", 2902, 58 35 40 10, default ok cancel
}
on *:DIALOG:kte.about:init:0:did -o $dname 4 1 Version $kte.ver for MTS $kte.mtsver
on *:DIALOG:kte.about:rclick:0:.timer.kte.about -om 12 100 kte.about.ck
on *:DIALOG:kte.about:sclick:1:var %v = $calc($did($dname, 1) - 1) | did -o $dname 1 1 %v | if (!%v) { dialog -t $dname Cookie! }
on *:DIALOG:kte.about:sclick,dclick:2:did -g $dname 2 $xor($gettok($did($dname, 2), 1, 32), 2) $+(", $mircexe, ")
on *:DIALOG:kte.about:sclick:5:.run http://www3.brinkster.com/ircweb/mts/
alias -l kte.about.ck {
var %d = kte.about
if (!$dialog(%d)) { .timer.kte.about off | return }
if (. isin $did(%d, 4)) { did -o %d 4 1 $replace($did(%d, 4), ., ·) }
elseif (· isin $did(%d, 4)) { did -o %d 4 1 $replace($did(%d, 4), ·, -) }
elseif (- isin $did(%d, 4)) { did -o %d 4 1 $replace($did(%d, 4), -, $chr(44)) }
elseif (, isin $did(%d, 4)) { did -o %d 4 1 $replace($did(%d, 4), $chr(44), .) }
}
; settings
dialog kte.settings {
title ":: KTE :: Settings ::"
size -1 -1 136 104
option dbu
icon $mircexe, 16
check "", 1, 0 0 0 0
tab "Paths", 1000, 3 0 130 84
text "&Themes path:", 2, 8 22 33 7, tab 1000
edit "", 5, 48 20 68 11, tab 1000 read autohs
button "...", 6, 118 21 10 10, tab 1000
text "n&GZIPn path:", 3, 8 38 32 7, tab 1000
edit "", 4, 48 36 68 11, tab 1000 read autohs
button "...", 9, 118 37 10 10, tab 1000
tab "Cache", 1001
text "Cache:", 10, 8 18 17 7, tab 1001
check "&Previews", 11, 15 28 31 7, tab 1001
check "Compiled &scripts", 15, 56 28 48 7, tab 1001
box "", 18, 8 40 121 4, tab 1001
text "", 7, 8 51 121 13, tab 1001
button "&Clear cache", 8, 48 69 40 10, tab 1001
tab "Events", 1002
text "You can hide the following events by checking their boxes:", 19, 8 18 120 13, tab 1002
text "On connect:", 20, 8 38 30 7, tab 1002
check "&Welcome messages", 12, 8 47 57 7, tab 1002
check "&Statistics (/lusers)", 13, 8 56 51 7, tab 1002
check "&Message of the day", 14, 8 65 56 7, tab 1002
text "On join:", 21, 75 38 18 7, tab 1002
check "&User list (/names)", 16, 75 47 51 7, tab 1002
check "&Channel info", 17, 75 56 39 7, tab 1002
tab "Fonts", 1003
check "&Enable font replacement", 22, 8 18 67 7, tab 1003
box "", 23, 8 24 53 13, tab 1003
text "Font", 24, 11 29 11 7, tab 1003
box "", 25, 60 24 68 13, tab 1003
text "Replacement", 26, 63 29 32 7, tab 1003
list 27, 8 38 120 29, tab 1003 sort size vsbar
button "&Add...", 28, 31 70 30 10, tab 1003
button "E&dit...", 29, 64 70 30 10, disable tab 1003
button "&Remove", 30, 97 70 30 10, disable tab 1003
box "", 2900, -1 85 138 20
button "OK", 2901, 51 92 40 10, default ok
button "Cancel", 2902, 94 92 40 10, cancel
}
on *:DIALOG:kte.settings:init:0:{
var %size = 0, %nf = $findfile($ktedir $+ Cache\, *, 0, 1, inc %size $file($1-).size), %i
did -o $dname 5 1 $kte.thmdir
did -o $dname 4 1 $kte.gzdir
if (%nf) {
did -o $dname 7 1 There $iif((%nf = 1), is, are) currently %nf file $+ $iif((%nf != 1), s) on your cache directory, wasting $_size(%size) of $&
disk space.
}
else { did -o $dname 7 1 There are no files on your cache directory. | did -b $dname 8 }
var %did = 12 13 14 16 17, %i = $numtok(%did, 32), %set = $hget(Kte.Data, Hide)
while (%i) { if ($isbit(%set, %i)) { did -c $dname $gettok(%did, %i, 32) } | dec %i }
var %did = 11 15, %i = $numtok(%did, 32), %set = $hget(Kte.Data, Cache)
while (%i) { if ($isbit(%set, %i)) { did -c $dname $gettok(%did, %i, 32) } | dec %i }
if ($hget(Kte.Data, FRep.Status)) { did -c $dname 22 }
else { did -b $dname 27,28 }
%i = 1 | while ($hmatch(Kte.Data, FRep.Rep.*, %i)) { did -a $dname 27 $frep.disp($mid($ifmatch, 10), $hget(Kte.Data, $ifmatch)) | inc %i }
}
on *:DIALOG:kte.settings:sclick:6:{
var %dir = $sdir($did($dname, 5), Choose theme directory) | if (!$isdir(%dir)) { return }
did -o $dname 5 1 %dir | did -c $dname 5 1 $len(%dir + 1)
}
on *:DIALOG:kte.settings:sclick:8:{
var %x = $findfile($ktedir $+ Cache\, *, 0, 1, .remove $+(", $1-, "))
did -o $dname 7 1 There are no files on your cache directory. | did -b $dname 8
}
on *:DIALOG:kte.settings:sclick:9:{
var %dir = $sdir($did($dname, 4), Choose nGZIPn.dll directory) | if (!$isdir(%dir)) { return }
did -o $dname 4 1 %dir | did -c $dname 4 1 $len(%dir + 1)
}
on *:DIALOG:kte.settings:sclick:22:{
if ($did($dname, 22).state) { did -e $dname 27,28 }
else { did -b $dname 27,28,29,30 | did -u $dname 27 }
}
on *:DIALOG:kte.settings:sclick:27:did -e $dname 29,30
on *:DIALOG:kte.settings:dclick:27:$dialog(kte.frep.edit, kte.frep, -4)
on *:DIALOG:kte.settings:sclick:28:$dialog(kte.frep.add, kte.frep, -4) | did -f $dname 27
on *:DIALOG:kte.settings:sclick:29:$dialog(kte.frep.edit, kte.frep, -4) | did -f $dname 27
on *:DIALOG:kte.settings:sclick:30:{
var %s = $did($dname, 27, 1).sel
did -d $dname 27 %s
if ($did($dname, 27).lines >= %s) { did -c $dname 27 %s }
elseif ($did($dname, 27).lines) { did -c $dname 27 $calc(%s - 1) }
else { did -b $dname 29,30 }
}
on *:DIALOG:kte.settings:sclick:1000:did -f $dname 1
on *:DIALOG:kte.settings:sclick:1001:did -f $dname 11
on *:DIALOG:kte.settings:sclick:1002:did -f $dname 12
on *:DIALOG:kte.settings:sclick:1003:did -f $dname 22
on *:DIALOG:kte.settings:sclick:2901:{
var %refresh = 0, %i, %ln
if ($shortfn($did(kte.load, 4)) == $shortfn($kte.thmdir)) && ($shortfn($did(kte.load, 4)) != $did($dname, 5)) { %refresh = 1 }
hadd Kte.Data ThmDir $did($dname, 5) | hadd Kte.Data GZipDir $did($dname, 4)
hadd Kte.Data Hide $base($+($ds(17), $ds(16), $ds(14), $ds(13), $ds(12)), 2, 10)
hadd Kte.Data Cache $base($+($ds(15), $ds(11)), 2, 10)
hadd Kte.Data FRep.Status $ds(22)
hdel -w Kte.Data FRep.Rep.*
%i = $did($dname, 27).lines
while (%i) { %ln = $did($dname, 27, %i) | hadd Kte.Data FRep.Rep. $+ $replace($gettok(%ln, 2, 124), $chr(32), \~) $gettok(%ln, 3, 124) | dec %i }
if (%refresh) && ($isdir($did($dname, 5))) { load.list $did($dname, 5) }
}
alias -l ds return $did($dname, $1).state
alias -l _size {
var %l = $1, %s = bytes
if (%l = 1) { return 1 byte }
if (%l > 900) { %l = %l / 1024 | %s = KB }
if (%l > 900) { %l = %l / 1024 | %s = MB }
if (%l > 900) { %l = %l / 1024 | %s = GB }
return $round(%l, 2) %s
}
alias -l frep.disp {
var %a = $replace($1, \~, $chr(32)), %b = $2, %s
if ($calc($calc(53 * $dbuw) - $width(%a, MS Shell Dlg, -8)) > 5) { %s = $str(Â , $int($calc($ifmatch / $width(Â , MS Shell Dlg, -8) - 1.99999))) }
else { %s = / }
return %a %s %b $str(Â , 40) $+(|, %a, |, %b)
}
; add/edit font replacement
dialog kte.frep {
title ""
size -1 -1 114 46
option dbu
icon $mircexe, 16
text "&Original font:", 1, 3 3 30 7
combo 2, 39 1 72 50, edit drop
text "&Replacement:", 3, 3 17 33 7
combo 4, 39 15 72 30, edit drop
box "", 2900, -1 27 116 20
button "OK", 2901, 29 34 40 10, disable default ok
button "Cancel", 2902, 72 34 40 10, cancel
text "", 5, 0 0 0 0, hide
}
on *:DIALOG:kte.frep.*:init:0:{
if ($gettok($dname, 3, 46) == add) { dialog -t $dname Add replacement }
else {
dialog -t $dname Edit replacement
tokenize 124 $did(kte.settings, 27, $did(kte.settings, 27, 1).sel)
did -o $dname 2 0 $2 | did -o $dname 4 0 $3
did -o $dname 5 1 $2 | did -e $dname 2901
}
didtok $dname 2 59 GwdTE_437;IBMPC;PC8X16;Tahoma
}
on *:DIALOG:kte.frep.*:edit,sclick:2,4:{
var %txt, %rep, %i = $did($dname, 4).lines | set -n %txt $remove($did($dname, 2), |, \~) | set -n %rep $remove($did($dname, 4), |, \~)
if ($did = 2) {
while (%i) { did -d $dname 4 %i | dec %i }
if ($istok(GwdTE_437;IBMPC;PC8X16, %txt, 59)) { did -a $dname 4 Terminal }
if (%txt == Tahoma) { did -a $dname 4 Verdana }
}
if (%txt = $null) || (%rep = $null) || ((%txt != $did($dname, 5)) && ($didwm(kte.settings, 27, %txt *| $+ %txt $+ |*))) || (%txt == %rep) {
did -b $dname 2901
}
else { did -e $dname 2901 }
}
on *:DIALOG:kte.frep.add:sclick:2901:{
did -fac kte.settings 27 $frep.disp($remove($did($dname, 2), |, \~), $remove($did($dname, 4), |, \~)) | did -e kte.settings 29,30
}
on *:DIALOG:kte.frep.edit:sclick:2901:{
did -foc kte.settings 27 $did(kte.settings, 27, 1).sel $frep.disp($remove($did($dname, 2), |, \~), $remove($did($dname, 4), |, \~))
}
; vPak support
; based on Variant's code
; /vPak.extract [-t] [filename.vpk] [Path]
; This is a MUCH simpler and customized /vPak alias. If you want the original one, look for it at http://www.mircscripts.org/
; -t - extract only the first .mts file found
alias -l vPak.extract {
if ($left($1,1) == -) { var %Options = $1 | tokenize 32 $2- }
;Parse command line for long filenames
if (" isin $1-) { tokenize 34 $1- | set -u %vPakFile $1 | set -u %vPakPath $3 }
else { set -u %vPakFile $1 | set -u %vPakPath $2- }
if ($right(%vPakPath,1) != \) { set -u %vPakPath $+(%vPakPath,\) }
if (!$isfile(%vPakFile)) { return }
var %Total = $ExtractFileList, %Counter = 1, %Line
if (%Total == BadFile) { return }
while (%Counter <= %Total) {
%Line = $hget(vPakFileList,%Counter)
if (t !isin %Options) || (($gettok(%Line, 1, 32) isnum) && (*.mts iswm $gettok(%Line, 3-, 32))) {
if ($gettok(%Line,1,32) == DIR) { mkpath $+(%vPakPath,$gettok(%Line,2-,32)) }
else { mkpath $nofile($+(%vPakPath,$gettok(%Line,3-,32))) | ExtractFile $gettok(%Line,1-2,32) $+(%vPakPath,$gettok(%Line,3-,32)) }
if (t isin %Options) { break }
}
inc %Counter
}
hfree -w vPak*
}
alias -l vPakVersion return 1.1
alias -l vPakFileVersion return 2
alias -l d2h return $base($longip($replace($1, $chr(32), .)), 10, 16)
;alias -l d2h {
; dec2hex function
; var %Text, %Counter = 1
; while (%Counter <= $numtok($1,32)) { %Text = %Text $base($gettok($1-,%Counter,32),10,16,2) | inc %Counter }
; return $remove(%Text,$chr(32))
;}
alias -l mkpath {
var %counter = 1
while (%counter <= $numtok($1-,92)) {
if (!$isdir($gettok($1-,$+(1-,%counter),92))) { mkdir $+(",$gettok($1-,$+(1-,%counter),92),") }
inc %counter
}
}
alias -l ExtractFileList {
;Read file list to hash table
if ($hget(vPakFileList)) { hfree vPakFileList } | hmake vPakFileList 20
bread $+(",%vPakFile,") 0 20 &Header
var %FilePos = $base($d2h($bvar(&Header,1,4)),16,10), %FileSize = $file(%vPakFile).size,%Counter = 1,%Len
if ($bvar(&Header,11,1).text != $vPakFileVersion) { return BadFile }
while (%FilePos < %FileSize) {
bread $+(",%vPakFile,") %FilePos 1000 &Data
%Len = $base($d2h($bvar(&Data,1,2)),16,10)
hadd vPakFileList %Counter $bvar(&Data,3,%Len).text
inc %FilePos $calc(%Len + 2)
inc %Counter
}
return $calc(%Counter - 1)
}
alias -l ExtractFile {
if ($left($1,1) == -) { var %Options = $1 | tokenize 32 $2- }
var %BytePos = 0,%BytesRead
while (%BytePos < $2) {
bread $+(",%vPakFile,") $calc($1 + %BytePos) 8192 &Bytes
%BytesRead = $iif($calc(%BytePos + 8192) < $2,8192,$calc($2 - %BytePos))
bwrite $+(",$3-,") %BytePos %BytesRead &Bytes
inc %BytePos %BytesRead
}
}
; event hiding
raw 001:*:kte_hidewcome
raw 002:*:kte_hidewcome
raw 003:*:kte_hidewcome
raw 004:*:kte_hidewcome
raw 005:*:if (!$kte_v(connected)) { kte_hidewcome }
alias -l kte_hidewcome if ($isbit($hget(Kte.Data, Hide), 1)) { haltdef }
raw 250:*:kte_hidelusers
raw 251:*:kte_hidelusers
raw 252:*:kte_hidelusers
raw 253:*:kte_hidelusers
raw 254:*:kte_hidelusers
raw 255:*:kte_hidelusers
raw 256:*:kte_hidelusers
raw 265:*:kte_hidelusers
raw 266:*:kte_hidelusers
alias -l kte_hidelusers if (!$kte_v(connected)) && ($isbit($hget(Kte.Data, Hide), 2)) { haltdef }
raw 372:*:kte_hidemotd
raw 375:*:kte_hidemotd
raw 376:*:kte_hidemotd
raw 377:*:kte_hidemotd
raw 378:*:kte_hidemotd
raw 422:*:kte_hidemotd
alias -l kte_hidemotd if (!$kte_v(connected)) && ($isbit($hget(Kte.Data, Hide), 3)) { haltdef }
on *:JOIN:#:if ($nick == $me) && ($hget(Kte.Data, Hide)) { kte_v joining $kte_v(joining) $chan }
on *:PART:#:kte_left $chan
on *:KICK:#:if ($knick == $me) { kte_left $chan }
alias -l kte_left var %jn = $kte_v(joining) | if ($istok(%jn, $1, 32)) { kte_v joining $remtok(%jn, $1, 1, 32) }
raw 353:*:kte_hidenames $3
raw 366:*:kte_hidenames $2
alias -l kte_hidenames if ($istok($kte_v(joining), $1, 32)) && ($isbit($hget(Kte.Data, Hide), 4)) { haltdef }
raw 331:*:kte_hidejinfo $2
raw 332:*:kte_hidejinfo $2
raw 333:*:kte_hidejinfo $2
raw 324:*:kte_hidejinfo $2
raw 329:*:kte_hidejinfo $2 | var %jn = $kte_v(joining) | if ($findtok(%jn, $2, 1, 32)) { kte_v joining $deltok(%jn, $ifmatch, 32) }
alias -l kte_hidejinfo if ($istok($kte_v(joining), $1, 32)) && ($isbit($hget(Kte.Data, Hide), 5)) { haltdef }
alias -l kte_v {
var %n = $+(c, $cid, :, $1)
if ($isid) { return $hget(Kte.Data, %n) }
if ($0 = 1) { hdel Kte.Data %n }
else { hadd Kte.Data %n $2- }
}
; default /theme.text
#Kte.DefTheme on
alias theme.text {
var %ln | set -n %ln $hget(Kte.Theme, $1)
if (!$var(%:echo)) || (* !iswm %ln) { return $false }
set -nu %::me $me | set -u %::server $server | set -u %::port $port
set -u %::Pre *** | set -nu %::Timestamp $timestamp
if ($gettok(%ln, 1, 32) == !Script) { set -n %ln $deltok(%ln, 1, 32) }
else { set -n %ln % $+ :echo $dll($ktedir $+ kte.dll, MTSPrecompile, %ln) $!+ % $+ :comment }
if ($istok(%ln, |, 32)) { .timer.theme 1 0 %ln | .timer.theme -e }
else { $eval(%ln, 2) }
return $true
}
alias _kte.void
#Kte.DefTheme end