nX2kII (n·2k·) — File Browser
nX2kIIn2kv1.02b / nX2kIIn2kv1.02b / nX2kII / CORE / MTS / KTE.MRC
KTE.MRC — 71.96 KB — Download this file
; Kte - Kamek's Theme Engine v1.5
; MTS-compatible theme engine (standard v1.0/1.1) -- homepage: http://www3.brinkster.com/ircweb/mts/
; Dialogs made using Dialog Studio
alias kte.load if (!$isid) { kte_load $1- }
alias kte.unload if (!$isid) { kte_unload $1- }
alias kte.scheme if (!$isid) { kte_scheme $1- }
alias kte.refresh if (!$isid) { kte_refresh $1- }
alias kte.echo if (!$isid) { kte_echo $1- }
alias kte.error if (!$isid) { kte_error $1- }
alias theme.setting return $hget(Kte_Theme, $1)
alias theme.load if (!$isid) { kte_load $1- }
alias theme.unload if (!$isid) { kte_unload $1- }
alias theme.scheme if (!$isid) { kte_scheme $1- }
alias mtsversion return $kte_mtsver
alias -l _isfile if (?*"?* iswm $1) { return } | if ($isfile($1)) { return $1 }
alias -l _hmake if ($hget($1)) { hfree $1 } | hmake $1-
alias -l kte_ver return 1.5
alias -l kte_dynver return 1.5
alias -l kte_mtsver return 1.1
alias -l kte_file return $+(", $scriptdir, $1, ")
alias -l kte_usrfile return $+(", $scriptdir, $1, ")
alias -l kte_dll return $+(", $scriptdir, kte.dll")
alias -l kte_thmdir if ($hget(Kte_Data, ThmDir)) { return $ifmatch } | if ($isdir($mircdir $+ Themes)) { return $mircdir $+ Themes\ } | return $mircdir
alias -l kte_gzdir if ($hget(Kte_Data, GZipDir)) { return $ifmatch } | return $scriptdir
alias -l kte_munzdir if ($hget(Kte_Data, mUnzipDir)) { return $ifmatch } | return $scriptdir
alias -l kte_cachedir return $scriptdir $+ Cache\
alias -l kte_xthmdir return $scriptdir $+ Extracted theme\
alias -l kte_xthmtmpdir return $scriptdir $+ Extracted theme.tmp\
alias -l kte_fontexists return $dll($kte_dll, FontExists, $1)
alias -l _noparse {
var %i = 1, %t = $numtok($1, 32), %r
while (%i <= %t) {
%r = %r $airc_noparse_safetok($gettok($1, %i, 32))
inc %i
}
return %r
}
alias -l airc_noparse_safetok {
if ($istok(35 91 124, $asc($1), 32) && $len($1) == 1) { return $!chr( $+ $asc($1) $+ ) }
if ($1 == [[ $+ [[) { return [[ $+ [[ $!+ [[ $+ [[ }
if ($1 == ]] $+ ]]) { return ] $+ ] $!+ ] $+ ] }
if ($!* iswm $1) { return $+($, !, $mid($1, 2)) }
if (% $+ * iswm $1) { return % $!+ $airc_noparse__safetok($mid($1, 2)) }
return $1
}
alias -l airc_noparse__safetok return $airc_noparse_safetok($1)
alias -l kte_listschemes {
var %s = $hget(Kte_Theme, Scheme $+ $1)
if (!%s) || ($1 !isnum) { return }
return $iif(($hget(Kte_Data, CurScheme) = $1), $style(1)) $_noparse(%s) $+ :kte_scheme $1
}
on *:START:kte_onstart
on *:LOAD:kte_onload
on *:UNLOAD:kte_onunload
on *:CONNECT:kte_v connected 1
on *:DISCONNECT:hdel -w Kte_Data $+(c, $cid, :*)
on *:EXIT:hdel -w Kte_Data c*:* | kte_savedata
on *:JOIN:#:kte_onjoin
on *:PART:#:if ($nick == $me) { kte_left $chan }
on *:KICK:#:if ($knick == $me) { kte_left $chan }
alias -l kte_onstart {
_hmake Kte_Theme 16
if ($isfile($kte_file(Kte-Theme.dat))) { hload -b Kte_Theme $kte_file(Kte-Theme.dat) }
elseif ($isfile($kte_file(Kte-DefTheme.dat))) { hload -b Kte_Theme $kte_file(Kte-DefTheme.dat) }
_hmake Kte_Data 8 | if ($isfile($kte_file(Kte-Data.dat))) { hload -b Kte_Data $kte_file(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) && (!$lock(dll)) {
; add some font replacements
var %rep = 0, %bestrep = Terminal, %msss = Microsoft Sans Serif
if (!$kte_fontexists(IBMPC)) { hadd Kte_Data FRep.Rep.IBMPC Terminal | %rep = 1 }
else { %bestrep = IBMPC }
if (!$kte_fontexists(GwdTE_437)) { hadd Kte_Data FRep.Rep.GwdTE_437 %bestrep | %rep = 1 }
if (!$kte_fontexists(PC8X16)) { hadd Kte_Data FRep.Rep.PC8X16 %bestrep | %rep = 1 }
if ($kte_fontexists(%msss)) { 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 -a Please enable the /dll command in mIRC Options (Alt+O), General\Lock section. }
unset %kte__* %_kte_*
}
alias -l kte_onload {
if ($version < 6.01) { echo -ati2 Please use this add-on on mIRC 6.01 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 }
}
alias -l kte_onunload {
var %p
if ($isfile($kte_file(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($kte_usrfile(Kte-Dyn.mrc))) { .unload -rs $+(", $ifmatch, ") }
hdel Kte_Data CurTheme
hdel Kte_Data Extracted
}
if ($dll($kte_dll)) { dll -u $kte_dll }
hfree Kte_Theme | kte_savedata | hfree Kte_Data
.remove $kte_file(Kte-Theme.dat)
.remove $kte_file(Kte-Restore.dat)
.remove $kte_usrfile(Kte-Dyn.mrc)
unset %kte_* %_kte_*
hfree -w Kte_*
}
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)
hadd Kte_Events Active.Away $gettok($readini($mircini, options, n4), 32, 44)
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 kte_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, %zfn, %ngz = $kte_gzdir $+ ngzipn.dll, %xthmdir = $kte_xthmtmpdir
if (!$isdir($kte_cachedir)) { mkdir $+(", $kte_cachedir, ") }
if (!$0) { kte_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) && (*.zip !iswm %fn) { %zfn = %fn $+ .zip | %fn = %fn $+ .mts }
:zipsearch
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)) {
if (%zfn) { %fn = %zfn | var %zfn | goto zipsearch }
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 }
}
kte_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 }
}
elseif (*.zip iswm %fn) {
var %munz = $+(", $kte_munzdir, mUnzip.dll")
if (!$isfile(%munz)) { kte_error -a mUnzip is needed to decompress this file | goto end }
if (S_OK* !iswm $dll(%munz, Unzip, -Q2do $+(", %fn, ") $+(", $kte_xthmtmpdir, "))) {
kte_error -a mUnzip was unable to decompress this file | goto end
}
var %killtmp = $true
var %ofn = %fn, %fn = $findfile($kte_xthmtmpdir, *.mts, 1, 9)
if (!%fn) { kte_error -a No theme file was found on the specified zip archive | goto clear }
}
%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
kte_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
kte_doload
kte_savedata
:end
if (%ofn) { var %x = $findfile($kte_xthmtmpdir, *, 0, 9, .remove $+(", $1-, ")) } | if (%killtmp) { kte_killtmp }
unset %_kte_*
}
alias kte_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
kte_doload
kte_savedata
}
alias kte_unload {
if ($isid) { return }
if (!$isfile($kte_file(Kte-Restore.dat))) && (!$hget(Kte_Data, CurTheme)) && ($1 != -f) { kte_error -a You're not currently using a theme. | return }
if (!%_kte_loading) && ($isfile($kte_file(Kte-Restore.dat))) {
kte_status_open | kte_status_show 0 Unloading current theme...
if ($hget(Kte_Restore)) { hfree Kte_Restore }
_hmake Kte_Restore 8
hload -b Kte_Restore $kte_file(Kte-Restore.dat)
}
kte_dounload
if ($script($kte_usrfile(Kte-Dyn.mrc))) { .unload -rs $+(", $ifmatch, ") | .remove $+(", $ifmatch, ") }
.enable #Kte_DefTheme
if ($hget(Kte_Restore)) { hfree Kte_Restore | .remove $kte_file(Kte-Restore.dat) | kte_status_close }
}
alias -l kte_savedata {
if ($hget(Kte_Theme)) { hsave -ob Kte_Theme $kte_file(Kte-Theme.dat) }
hsave -ob Kte_Data $kte_file(Kte-Data.dat)
}
alias -l kte_rmdir var %x = $finddir($1-, *, 0, 1, kte_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 kte_out Echo $color(info) $1-
alias kte_error kte_out Error $color(info) $1-
; /kte_out str <type>, int <color>, str <target>, str <text>
alias -l kte_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 kte_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 $kte_file(Kte-Restore.dat)
hfree Kte_Restore
}
; /kte_doload
alias -l kte_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)
kte_status_open
kte_status_show 0 Preparing to load...
%_kte_loading = $true
if ($isbit(%apply, 1)) || (!%apply) { %apply = 1023 }
if (!%_kte_chscheme) {
if ($hget(%dat, CurTheme)) { kte_dounload }
else { kte_dobackup }
if (%ofn) { hadd %dat Extracted $true } | else { hdel %dat Extracted }
}
.disable #Kte_DefTheme
window -lhBi %w
hdel -w %h * | if ($isfile($kte_file(Kte-DefTheme.dat))) { hload -ob %h $kte_file(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($kte_bc($1) $kte_bc($2) $kte_bc($3) $kte_bc($4), $chr(32), $chr(44))
}
%_kte_apply = %apply
if ($isbit(%apply, 3)) || ($isbit(%apply, 6)) { kte_apply_colors }
if ($isbit(%apply, 5)) { kte_apply_fonts }
if ($isbit(%apply, 2)) || ($isbit(%apply, 9)) || ($isbit(%apply, 10)) { kte_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 $kte__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($kte_file(Kte-Dyn.dat)) $crc(%fn)) {
.copy -o %cfn $kte_usrfile(Kte-Dyn.mrc)
write -l3 $kte_usrfile(Kte-Dyn.mrc) ;
%cached = 1
}
}
if (!%cached) {
kte_buildfile
if ($isbit($hget(Kte_Data, Cache), 2)) {
.copy -o $kte_usrfile(Kte-Dyn.mrc) %cfn
write -il3 %cfn ; Kte-Dyn $kte_dynver $crc($kte_file(Kte-Dyn.dat)) $crc(%_kte_fn)
}
}
kte_status_show 0 Loading theme script...
.reload -rs $+ $calc($script(0) + 1) $kte_usrfile(Kte-Dyn.mrc)
}
else { .enable #Kte_DefTheme | if ($script($kte_usrfile(Kte-Dyn.mrc))) { .unload -rs $+(", $ifmatch, ") } }
unset %_kte_loading %_kte_apply
if (%sch) { hadd Kte_Data CurScheme %sch }
else { hdel Kte_Data CurScheme }
kte_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 kte_bc return $right(0 $+ $int($calc($1 % 16)), 2)
alias -l kte_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) { kte_killxthm }
hdel -w Kte_Theme *
var %i = 1, %item
while ($hget(Kte_Data, %i).item) {
%item = $ifmatch
if ($istok(ThmDir GZipDir mUnzipDir 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)
kte_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)
kte_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
scon -a var %i = $!chan(0) $chr(124) while (%i) $chr(123) background -ex $!chan(%i) $chr(124) dec % $+ i $chr(125)
remini $+(", $mircini, ") background wchannel
; query windows
scon -a var %i = $!query(0) $chr(124) while (%i) $chr(123) background -ex $!query(%i) $chr(124) dec % $+ i $chr(125)
scon -a var %i = $!chat(0) $chr(124) while (%i) $chr(123) background -ex $!chat(%i) $chr(124) dec % $+ i $chr(125)
remini $+(", $mircini, ") background wquery
; others
scon -a background -sx $chr(124) background -gx $chr(124) background -mx $chr(124) background -dx
scon -a background -lx $chr(124) background -hx $chr(124) background -ux
; finishing...
if (!%_kte_loading) && ($isfile($kte_file(Kte-DefTheme.dat))) { hload -ob Kte_Theme $kte_file(Kte-DefTheme.dat) }
unset %_kte_apply
}
alias -l kte_buildfile {
var %w = @kte_File, %a = aline %w, %i = 1, %t, %rawt, %reali = 0, %realt, %ln, %x, %delta, %lastset, %lntmp
kte_status_show 0 Preparing to build script...
window -hliB %w
loadbuf %w $kte_file(Kte-Dyn.dat)
set -n %kte__pre $dll($kte_dll, MTSPrecompile, $kte__cl($remove($hget(Kte_Theme, Prefix), <pre>)))
%t = $line(%w, 0)
%rawt = $hmatch(Kte_Theme, Raw.???, 0)
%realt = $calc(%t + %rawt)
kte_buildfile_loadsnippets
kte_status_show 1 Building theme script...
while (%i <= %t) {
inc %reali
kte_status_prog %reali %realt
%ln = $line(%w, %i)
if (kte_set isin %ln) && ($gettok(%ln, 1, 32) == kte_set) {
%lastset = %ln
dline %w %i
%delta = $kte_buildfile_usesnippets(%ln, %w, %i)
inc %i %delta
inc %t $calc(%delta - 1)
continue
}
elseif (kte_unset isin %ln) && ($gettok(%ln, 1, 32) == kte_unset) {
if ($numtok(%ln, 32) = 1) { rline %w %i $kte_buildfile_unsetvars(%lastset) }
elseif ($gettok(%ln, 2, 32) == +) { rline %w %i $kte_buildfile_unsetvars(%lastset $gettok(%ln, 3-, 32)) }
else { rline %w %i $kte_buildfile_unsetvars(%ln) }
}
elseif (kte:: isin %ln) { %x = $wildtok(%ln, kte::?*, 1, 32) }
;elseif ($gettok(%ln, 1, 32) == #KteDyn#) { rline %w %i $kte_dyn_ [ $+ [ $gettok(%ln, 2, 32) ] ] }
if (%x) {
%x = $numtok(%ln, 32)
while (%x) {
if (kte::?* iswm $gettok(%ln, %x, 32)) {
if ($kte_pcomp($mid($gettok(%ln, %x, 32), 6)) != $null) {
set -n %lntmp $ifmatch
if ($gettok(%ln, $calc(%x + 1), 32) == !) { %ln = $deltok(%ln, $calc(%x + 1), 32) }
else { %lntmp = %lntmp $chr(124) haltdef }
%ln = $puttok(%ln, %lntmp, %x, 32)
}
else {
%ln = $deltok(%ln, %x, 32)
if ($gettok(%ln, %x, 32) == !) { %ln = $deltok(%ln, %x, 32) }
if ($gettok(%ln, $calc(%x - 1), 32) == |) { %ln = $deltok(%ln, $calc(%x - 1), 32) | dec %x }
}
break
}
dec %x
}
%x =
if (* !iswm %ln) || (%ln == $chr(32)) { dline %w %i | continue }
rline %w %i %ln
}
inc %i
}
if ($hget(kte_snippets)) { hfree kte_snippets }
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 $kte_pcomp(%item)
inc %i
}
%i = 1
while ($hmatch(Kte_Theme, Raw.???, %i)) {
kte_status_prog %reali %realt
%item = $ifmatch
aline %w alias -l kte:: $+ %item $kte_pcomp(%item)
inc %i
inc %reali
}
savebuf %w $kte_usrfile(Kte-Dyn.mrc)
close -@ %w
unset %kte__*
}
alias -l kte_pcomp {
var %v | set -n %v $hget(Kte_Theme, $1)
if ($gettok(%v, 1, 32) == !Script) { set -n %v $kte_cl($gettok(%v, 2-, 32)) }
elseif (* iswm %v) { %v = % $+ :echo $dll($kte_dll, MTSPrecompile, $kte__cl(%v)) $!+ % $+ :comments }
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
}
; this will cache some pieces of code that are used a lot
alias -l kte_buildfile_loadsnippets {
var %h = kte_snippets, %a = hadd %h, %stdline, %set = set -nu1 % $+ ::, %| = $chr(124), %pt
if ($hget(%h)) { hfree %h }
set -n %pt $dll($kte_dll, MTSPrecompile, $kte__cl($hget(Kte_Theme, ParenText)))
hmake %h 8
%stdline = %set $+ me $!me %| %set $+ server $!server %| %set $+ port $!port
; "pre" and "colors" are automatically added with "std"
if ($hget(Kte_Theme, Prefix) != $null) { %a pre %set $+ pre $dll($kte_dll, MTSPrecompile, $kte__cl($hget(Kte_Theme, Prefix))) }
if ($hget(Kte_Theme, BaseColors) != $null) {
var %ln = $ifmatch, %i = 1, %t = $numtok(%ln, 44), %rln
while (%i <= %t) {
%rln = %rln %| $+(%set, c, %i) $gettok(%ln, %i, 44)
inc %i
}
;%a colors %set $+ c1 $1 %| %set $+ c2 $2 %| %set $+ c3 $3 %| %set $+ c4 $4
%a colors $gettok(%rln, 2-, 32)
}
%a std %stdline
%a nick %set $+ nick $!nick
%a chan %set $+ chan $!chan
%a address %set $+ address $!address
%a target %set $+ target $!target
%a chanstd if ($nick($chan, $!nick).pnick != $!nick) $chr(123) %set $+ cmode $!left($ifmatch, 1) $chr(125) %| %set $+ cnick $!nick($chan, $!nick).color
%a parentext if (* iswm % $+ ::text) $chr(123) %set $+ parentext %pt $chr(125)
}
; $kte_buildfile_usesnippets(<line>, <window>, <insert-pos>)
; return the number of lines added
alias -l kte_buildfile_usesnippets {
var %i = 2, %t = $numtok($1, 32), %item, %nlines = 0, %w = $2, %p = $3
while (%i <= %t) {
%item = $gettok($1, %i, 32)
if ($hget(kte_snippets, %item)) { iline %w %p $ifmatch | inc %p | inc %nlines }
if (%item == std) {
if ($hget(kte_snippets, pre)) { iline %w %p $ifmatch | inc %p | inc %nlines }
if ($hget(kte_snippets, colors)) { iline %w %p $ifmatch | inc %p | inc %nlines }
}
if (%item == chanstd) {
if ($hget(kte_snippets, chan)) { iline %w %p $ifmatch | inc %p | inc %nlines }
}
inc %i
}
return %nlines
}
alias -l kte_buildfile_unsetvars {
var %vars = $gettok($1, 2-, 32)
if ($findtok(%vars, std, 1, 32)) { %vars = $deltok(%vars, $ifmatch, 32) me server port pre c? }
if ($findtok(%vars, chanstd, 1, 32)) { %vars = $deltok(%vars, $ifmatch, 32) chan cmode cnick }
if ($istok(%vars, parentext, 32)) { %vars = %vars text }
return unset % $+ :echo $iif((%vars), $+(%, ::, $replace(%vars, $chr(32), $+($chr(32), %, ::))))
}
; $kte_cl(str <text>) - replaces base colors for script code
alias -l kte_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
}
; $kte__cl(str <text>) - replaces base colors for simple event lines
alias -l kte__cl {
var %v | set -n %v $1
tokenize 44 $hget(Kte_Theme, BaseColors)
return $replace(%v, <c1>, $1, <c2>, $2, <c3>, $3, <c4>, $4)
}
; Loading...
alias -l kte_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 title inactive
if ($isbit(%_kte_apply, 3)) {
kte_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) { kte_status_prog %i %t | kte_color $gettok(%colors, %i, 32) $gettok(%cl, %i, 44) | inc %i }
if ($numtok(%cl, 44) < 28) && ($numtok(%cl, 44) >= 22) { kte_color inactive $gettok(%cl, 22, 44) }
}
else {
var %i = 1, %t = $numtok(%colors, 32)
while (%i <= %t) { kte_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 }
}
kte_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) {
kte_status_prog %i %t | %ccl = $gettok(%cl, $calc(%i + 1), 32)
if ($regex(%ccl, %re)) { kte_color %i $rgb( [ %ccl ] ) } | else { kte_color -r %i }
inc %i
}
}
}
; do not apply nicklist if restoring previous colors
if (%_kte_loading) && ($isbit(%_kte_apply, 6)) {
kte_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)
}
kte_apply_colors_modes
if ($hget(%h, CLineRegular) isnum) { .cnick -n * $calc($ifmatch % 16) }
}
}
alias -l kte_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 kte_color tokenize 46 $+($replace($1, -, $chr(32)), ., $2) | if ($color($1) != $2) { color $1-2 }
alias -l kte_apply_fonts {
var %h = Kte_Theme, %write = writeini $+(", $mircini, ") fonts, %nserv, %i, %j, %k, %p, %applied
kte_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 = $kte_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)
}
%nserv = $scon(0)
while (%nserv) {
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)
}
%nserv = $scon(0)
%p = -d
if (b isin $gettok(%font, 3, 44)) { %p = %p $+ b }
%applied = 0
while (%nserv) {
scon %nserv
%i = $chan(0)
inc %applied %i
while (%i) { font %p $chan(%i) $gettok(%font, 2, 44) $gettok(%font, 1, 44) | dec %i }
dec %nserv
}
if (!%applied) { %write fchannel $kte_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)
}
%nserv = $scon(0)
%p = -d
if (b isin $gettok(%font, 3, 44)) { %p = %p $+ b }
%applied = 0
while (%nserv) {
scon %nserv
var %i = $query(0), %j = $chat(0), %k = $fserv(0)
inc %applied $calc(%i + %j + %k)
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
}
if (!%applied) { %write fquery $kte_mkinifont(%font) }
%write fmessage $kte_mkinifont(%font)
}
}
alias -l kte_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 kte_apply_bg {
var %h = Kte_Theme, %dir = $nofile($1-), %fn, %i, %write = writeini $+(", $mircini, ") background, %applied, %c
kte_status_show 1 Applying background pictures...
if ($isbit(%_kte_apply, 2)) {
; channels
kte_status_prog 1 5
if ($hget(%h, ImageChan)) {
var %ln = $ifmatch, %p = -e $+ $kte_imgpos(%ln), %fn = $+(", %dir, $gettok(%ln, 2-, 32), "), %c = $scon(0), %applied = 0
while (%c) {
scon %c
%i = $chan(0)
if (%i) { %applied = 1 }
while (%i) { $kte_setbg(%p, $chan(%i), %fn) | dec %i }
dec %c
}
if (!%applied) { %write wchannel $+($shortfn(%fn), $chr(44), $calc($findtok(center fill normal stretch tile photo, $gettok(%ln, 1, 32), 1, 32) - 1)) }
}
; query windows
kte_status_prog 2 5
if ($hget(%h, ImageQuery)) {
var %ln = $ifmatch, %p = -e $+ $kte_imgpos(%ln), %fn = $+(", %dir, $gettok(%ln, 2-, 32), "), %c = $scon(0), %applied = 0
$kte_setbg(%p $+ g, %fn)
while (%c) {
scon %c
%i = $query(0)
if (%i) { %applied = 1 }
while (%i) { $kte_setbg(%p, $query(%i), %fn) | dec %i }
dec %c
}
if (!%applied) { %write wquery $+($shortfn(%fn), $chr(44), $calc($findtok(center fill normal stretch tile photo, $gettok(%ln, 1, 32), 1, 32) - 1)) }
%c = $scon(0) | %applied = 0
while (%c) {
scon %c
%i = $chat(0)
if (%i) { %applied = 1 }
while (%i) { $kte_setbg(%p, = $+ $chat(%i), %fn) | dec %i }
dec %c
}
if (!%applied) { %write wchat $+($shortfn(%fn), $chr(44), $calc($findtok(center fill normal stretch tile photo, $gettok(%ln, 1, 32), 1, 32) - 1)) }
}
; status, finger and mdi
kte_status_prog 3 5
if ($hget(%h, ImageStatus)) { $kte_setbg(-sg $+ $kte_imgpos($ifmatch), $+(", %dir, $gettok($ifmatch, 2-, 32), ")) }
if ($hget(%h, ImageMirc)) { $kte_setbg(-m $+ $kte_imgpos($ifmatch), $+(", %dir, $gettok($ifmatch, 2-, 32), ")) }
}
if ($isbit(%_kte_apply, 10)) {
; toolbar, switchbar
kte_status_prog 4 5
if ($hget(%h, ImageToolbar)) { $kte_setbg(-l, $+(", %dir, $gettok($ifmatch, 2-, 32), ")) }
if ($hget(%h, ImageSwitchbar)) { $kte_setbg(-h, $+(", %dir, $gettok($ifmatch, 2-, 32), ")) }
}
if ($isbit(%_kte_apply, 9)) {
kte_status_prog 5 5
if ($hget(%h, ImageButtons)) { $kte_setbg(-u, $+(", %dir, $ifmatch, ")) }
}
else { kte_status_prog 5 5 }
}
; //$kte_setbg(<switches>, <window>, <filename>)
; //$kte_setbg(<switches>, <filename>)
alias -l kte_setbg {
; /background is really buggy, this is my "hack"
if ($0 == 3) && ($isfile($3)) {
background $remove($1, e) $2-3
background $remove($1, e) $2-3
background $1-3
remini $+(", $mircini, ") background $2
}
elseif ($0 == 2) && ($isfile($2)) { background $1- }
}
alias -l kte_imgpos return $mid(cfnrtp, $findtok(center fill normal stretch tile photo, $gettok($1, 1, 32), 1, 32), 1)
alias -l kte_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 kte_status_close close -@ @Kte_Status @Kte_Cover
alias -l kte_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 kte_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 kte_dlg if ($dialog($2)) { dialog -v $2 } | else { dialog $1-2 $2 }
dialog -l kte_load {
title "MTS Themes (/themes)"
size -1 -1 182 197
option dbu
button "&Themes...", 3, 4 2 39 10
text "", 4, 0 0 0 0, hide
list 2, 3 13 59 35, sort size vsbar
list 21, 3 49 59 37, size
box "Theme Info", 2900, 65 1 113 96
button "Apply", 2901, 97 184 25 10, disable
button "Done", 2902, 153 184 25 10, cancel
button "Unload", 42, 125 184 25 10
icon 18, 4 101 174 79, $mircexe, 0, hide noborder
box "", 17, 4 98 174 84
icon 24, 4 102 174 78, $mircexe, 16, noborder
text "Preview Area (double-click here)", 30, 46 134 91 7, center
text "Name:", 5, 71 11 16 7, disable
text "", 6, 91 11 80 7, disable
text "Version:", 7, 71 24 19 7, disable
text "", 8, 91 24 80 7, disable
text "Author:", 9, 71 33 18 7, disable
text "", 10, 91 33 80 7, disable
link "", 11, 91 41 80 7, disable
text "URL:", 12, 71 53 13 7, disable
link "", 13, 91 54 80 14, disable
edit "", 14, 71 72 102 20, disable read multi vsbar
check "Auto Preview", 15, 4 89 44 10
check "Disable nX2k's /whois", 1, 4 184 77 10
}
on *:DIALOG:kte_load:init:0:{
%pvcheck | %whocheck
kte_load_list $kte_thmdir
if (!$isfile($kte_file(Kte-Readme.txt))) { did -b $dname 31 }
did -f $dname 2
while (%i) { if ($isbit(%set, %i)) { did -c $dname $gettok(%did, %i, 32) } | dec %i }
var %xthmdir = $kte_xthmtmpdir
if (!$isdir(%xthmdir)) { mkdir $+(", %xthmdir, ") }
}
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 }
kte_load_list %dir
}
on *:DIALOG:kte_load:sclick:1:{
if ($did(1).state) { set %whoisdisp On | set %whocheck did -c kte_load 1 }
else { set %whoisdisp Off | unset %whocheck }
}
on *:DIALOG:kte_load:sclick:2:kte_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:15:{
if ($did(15).state) { set %autopreview On | set %pvcheck did -c kte_load 15 }
else { unset %autopreview | unset %pvcheck }
}
on *:DIALOG:kte_load:sclick:42:theme.unload | .timerunload -o 1 3 .unload -rs kte-dyn.mrc | background -sc $shortfn($mircdircore\images\logow.jpg)
on *:DIALOG:kte_load:dclick:18,24,30:.timerkte_load_preview -o 1 0 kte_preview_click
on *:DIALOG:kte_load:sclick:21:{
kte_load_sel_preview
if (%autopreview == On) { .timerkte_load_preview -o 1 0 kte_preview_click }
}
on *:DIALOG:kte_load:menu:25:dialog -c $dname
on *:DIALOG:kte_load:sclick:1000,1001:did -f $dname 2
on *:DIALOG:kte_load:sclick:2901:{
background -sx
var %sch, $&
%apply = $base($+($kte_ds(41), $kte_ds(40), $kte_ds(39), $kte_ds(38), $kte_ds(37), $kte_ds(36), $kte_ds(35), $kte_ds(34), $kte_ds(33), $kte_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) $&
kte_load %sch $gettok($did($dname, 2, $did($dname, 2, 1).sel), 2, 63) $chr(125)
}
; /kte_preview_click [big]
alias -l kte_preview_click {
var %d = kte_load
if (!$dialog(%d)) || (!$did(%d, 2, 1).sel) { return }
var %f = $gettok($did(%d, 2, $did(%d, 2, 1).sel), 2, 63), %ngz = $kte_gzdir $+ ngzipn.dll
if (%f = $null) { return }
if ($dialog(%d).focus = 16) { did -f %d 2 }
if (!$isfile(%f)) { beep | return }
if ($1 == big) { did -b %d 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 }
}
kte_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 }
}
elseif (*.zip iswm %f) {
var %munz = $+(", $kte_munzdir, mUnzip.dll")
if (!$isfile(%munz)) { beep | return }
if (S_OK* !iswm $dll(%munz, Unzip, -Q2do $+(", %f, ") $+(", $kte_xthmtmpdir, "))) { beep | return }
var %killtmp = $true
var %of = %f, %f = $findfile($kte_xthmtmpdir, *.mts, 1, 9)
if (!%f) { beep | goto clear }
}
set -u %_kte_realname %of
dll $kte_dll SetBusyState 1
$+(kte_load_, $1, preview) %f
:clear
if ($1 == big) { did -e %d 16 }
if (%of) { .remove $+(", %f, ") }
if (%killtmp) { kte_killtmp }
dll $kte_dll SetBusyState 0
}
alias -l kte_load_list {
var %d = kte_load, %s, %gzexists = $isfile($kte_gzdir $+ ngzipn.dll)
did -r %d 2
%s = $findfile($1-, *.mts, 0, 9, did -a %d 2 $nopath($1-) $+($str( , 30), ?, $1-))
if (%gzexists) { 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-))
if (%gzexists) { inc %s $findfile($1-, *.vpk.gz, 0, 9, did -a %d 2 $nopath($1-) $+($str( , 30), ?, $1-)) }
if ($isfile($kte_munzdir $+ mUnzip.dll)) { inc %s $findfile($1-, *.zip, 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 }
kte_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 -h %d 18,30
did -v %d 24,17
}
did -o %d 4 1 $1-
}
alias -l kte_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
if ($width(%df, MS Shell Dlg, -8, 0, 0) > $calc($dbuw * 134)) {
%df = $puttok(%df, ..., 2, 92)
while ($width(%df, MS Shell Dlg, -8, 0, 0) > $calc($dbuw * 134)) { %df = $deltok(%df, 3, 92) | if ($numtok(%df, 92) <= 3) { break } }
}
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
}
}
kte_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 }
}
elseif (*.zip iswm %f) {
var %munz = $+(", $kte_munzdir, mUnzip.dll")
if (!$isfile(%munz)) {
did -o %d 6 1 (mUnzip 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
}
var %rpl = $dll(%munz, Unzip, -Q2SMo KteInfo *.mts $+(", %f, ") $+(", $kte_xthmtmpdir, "))
if (S_OK * !iswm %rpl) {
var %msg = (mUnzip was unable to extract this file)
if (E_NOMATCH * iswm %rpl) { %msg = (this is not a valid theme zip) }
did -o %d 6 1 %msg | did -b %d 14,16,20,21,2901 | did -v %d 17 | did -h %d 18 | did -r %d 21 | return
}
var %killtmp = $true
var %of = %f, %f = $findfile($kte_xthmtmpdir, *.mts, 1, 1)
if (!%f) { did -o %d 6 1 (invalid theme zip) | 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 }
if (%f == $longfn($hget(Kte_Data, CurOTheme))) && ($hget(Kte_Data, CurScheme)) { did -c %d 21 $calc($ifmatch + 1) }
if (%of) {
.remove $+(", %f, ") | if (%killtmp) { kte_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 }
}
kte_load_sel_preview
did -e %d 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,24,30 | did -r %d 21
:clear | if (%of) && ($isfile(%f)) { .remove $+(", %f, ") } | if (%killtmp) { kte_killtmp }
}
on *:SIGNAL:mUnzip_KteInfo:if ($1 == extracted) { dll $+(", $kte_munzdir, mUnzip.dll") Reply stop }
alias -l kte_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), %pfnpng = %pfn $+ .png", %pfn = %pfn $+ .bmp"
if ($_isfile(%pfn)) || ($_isfile(%pfnpng)) {
var %file = $ifmatch
if ($pic(%file).size) {
did -h %d 17,24,30
did -g %d 18 %file
did -v %d 18
}
else { did -v %d 17,24,30 | did -h %d 18 }
}
else { did -v %d 17,24,30 | did -h %d 18 }
}
alias -l kte_killxthm var %x = $findfile($kte_xthmdir, *, 0, 99, .remove $+(", $1-, ")) | kte_rmdir $kte_xthmdir
alias -l kte_killtmp var %x = $findfile($kte_xthmtmpdir, *, 0, 99, .remove $+(", $1-, ")) | kte_rmdir $kte_xthmtmpdir
; preview
alias -l kte_load_preview {
var %sch, %d = kte_load
if ($did(%d, 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(179 * $dbuw), %ch = $calc(75 * $dbuh), %istmp = 0
if (!$isdir($kte_cachedir)) { mkdir $+(", $kte_cachedir, ") }
if (!$isbit($hget(Kte_Data, Cache), 1)) { %istmp = 1 }
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 $+(", $1-, ")
if ($fline(%lw, ?* !Script ?*, 1)) && ($kte_set(Script)) {
var %scriptf = $+(", $nofile($1-), $ifmatch, ")
if ($isfile(%scriptf)) && (!$script($longfn(%scriptf))) { .reload -rs %scriptf }
else { %scriptf = }
}
var %cl = $kte_set(Colors), %rgb = $kte_set(RGBColors), %defcl = 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
if ($remove(%cl, $chr(44)) !isnum) { %cl = %defcl }
else { %cl = $gettok(%cl, 1-, 44) $+ $gettok(%defcl, $calc($numtok(%cl, 44) + 1) $+ -, 44) }
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
}
kte_pv Init %cw %ch
if ($isfile($nofile($1-) $+ $gettok($kte_set(ImageChan), 2-, 32))) {
window -hpfkniB +d %w -1 -1 %cw %ch
drawrect -nrf %w $kte_rgb(%cl, %rgb, 1) 0 2 2 %cw %ch
kte_preview_bg %w $1-
drawsave %w %pfn
close -@ %w
kte_pv SetBg $kte_rgb(%cl, %rgb, 1) %pfn
}
else { kte_pv SetBg $kte_rgb(%cl, %rgb, 1) }
if ($kte_set(FontChan)) || ($kte_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 }
kte_pv SetFont %fb %fsize %f
}
else { kte_pv SetFont $iif(($window(Status Window).fontbold), b) $window(Status Window).fontsize $window(Status Window).font }
kte_pv SetColors %rgb
kte_preview_text - %lw %cl %rgb
kte_pv DrawBorder
; remove the extension (the DLL will add one on return value)
%pfn = $deltok($gettok(%pfn, 1, 34), -1, 46)
kte_pv Save $iif((%istmp), ~) $+ %pfn
if ($result) {
var %tfn = $result, %other = $puttok(%tfn, $remtok(bmp png, $gettok(%tfn, -1, 46), 1, 32), -1, 46)
%pfn = $+(", %tfn, ")
if ($isfile(%other)) { .remove $+(", %other, ") }
}
else { var %pfn }
kte_pv Cleanup
close -@ %lw
if ($script($longfn(%scriptf))) { .unload -rsn %scriptf }
if ($pic(%pfn).size) { did -h %d 17,24,30 | did -g %d 18 %pfn | did -v %d 18 }
else { beep | did -v %d 17,24,30 | did -h %d 18 }
if (%istmp) && ($isfile(%pfn)) { .remove %pfn }
unset %_kte_*
}
alias -l kte_rgb return $rgb( [ $gettok($2, $calc($gettok($1, $3, 44) + 1), 32) ] )
alias -l kte_load_bigpreview {
var %sch, %d = kte_load
if ($did(%d, 21, 1).sel > 1) { %sch = $calc($ifmatch - 1) }
var %pfn = $+(", $kte_cachedir, $nopath($iif((%_kte_realname), %_kte_realname, $1-)), $iif((%sch), -S $+ %sch), -BIG.bmp"), $&
%w = @Kte_Preview, %lw = @Kte_Preview-, %cw = $calc(200 * $dbuw), %ch = $calc(180 * $dbuh), %istmp = 1
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 $+(", $1-, ")
if ($fline(%lw, ?* !Script ?*, 1)) && ($kte_set(Script)) {
var %scriptf = $+(", $nofile($1-), $ifmatch, ")
if ($isfile(%scriptf)) && (!$script($longfn(%scriptf))) { .reload -rs %scriptf }
else { %scriptf = }
}
var %cl = $kte_set(Colors), %rgb = $kte_set(RGBColors), %defcl = 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
if ($remove(%cl, $chr(44)) !isnum) { %cl = %defcl }
else { %cl = $gettok(%cl, 1-, 44) $+ $gettok(%defcl, $calc($numtok(%cl, 44) + 1) $+ -, 44) }
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
}
kte_pv Init %cw %ch
if ($isfile($nofile($1-) $+ $gettok($kte_set(ImageChan), 2-, 32))) {
window -hpfkniB +d %w -1 -1 %cw %ch
drawrect -nrf %w $kte_rgb(%cl, %rgb, 1) 0 2 2 %cw %ch
kte_preview_bg %w $1-
drawsave %w %pfn
close -@ %w
kte_pv SetBg $kte_rgb(%cl, %rgb, 1) %pfn
}
else { kte_pv SetBg $kte_rgb(%cl, %rgb, 1) }
if ($kte_set(FontChan)) || ($kte_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 }
kte_pv SetFont %fb %fsize %f
}
else { kte_pv SetFont $iif(($window(Status Window).fontbold), b) $window(Status Window).fontsize $window(Status Window).font }
kte_pv SetColors %rgb
kte_preview_bigtext - %lw %cl %rgb
kte_pv DrawBorder
; remove the extension (the DLL will add one on return value)
%pfn = $deltok($gettok(%pfn, 1, 34), -1, 46)
kte_pv Save $iif((%istmp), ~) $+ %pfn
if ($result) {
var %tfn = $result, %other = $puttok(%tfn, $remtok(bmp png, $gettok(%tfn, -1, 46), 1, 32), -1, 46)
%pfn = $+(", %tfn, ")
if ($isfile(%other)) { .remove $+(", %other, ") }
}
else { var %pfn }
kte_pv Cleanup
close -@ %lw
if ($script($longfn(%scriptf))) { .unload -rsn %scriptf }
if ($pic(%pfn).size) {
%kte__pfn = %pfn
$dialog(kte_preview, kte_preview, -4)
unset %kte__pfn
}
else { beep }
if (%istmp) && ($isfile(%pfn)) { .remove %pfn }
unset %_kte_*
}
; /kte_preview_bg str <pwnd>, str <filename>
alias -l kte_preview_bg {
var %set = $kte_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
}
; /kte_preview_text str <pwnd>, str <lwnd>, int[](44) <colors>, (int[3](44))[](32) <rgb>
alias -l kte_preview_text {
%_kte_time = $calc($ctime - $r(0, 86400))
var %bcl = $kte_set(BaseColors)
%::c1 = $gettok(%bcl, 1, 44) | %::c2 = $gettok(%bcl, 2, 44) | %::c3 = $gettok(%bcl, 3, 44) | %::c4 = $gettok(%bcl, 4, 44)
if ($kte_set(MTSVersion) = 1.1) && ($kte_set(Timestamp) == on) && ($kte_set(TimestampFormat)) { set -n %_kte_timestamp $ifmatch }
elseif ($calc($kte_set(MTSVersion)) = 1) && ($kte_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
.timerkte_kte 1 0 % $+ ::pre = $dll($kte_dll, MTSPrecompile, $kte_set(Prefix)) | .timerkte_kte -e
%::chan = #Preview | %::target = #Preview
%:echo = kte_drawpreview
%_kte_color = $kte_rgb($3, $4-, 8)
%::nick = %::me
kte_show JoinSelf
%_kte_color = $kte_rgb($3, $4-, 12)
inc %_kte_time $r(1, 5)
%::nick = Dude | %::cmode = @
%::text = $gettok(hi welcome wb, $r(1, 3), 32) %::me :)
kte_show TextChan
%_kte_color = $kte_rgb($3, $4-, 16)
inc %_kte_time $r(5, 10)
%::nick = %::me | %::cmode =
%::text = $gettok(hi howdy hello, $r(1, 3), 32) Dude
kte_show TextChanSelf
%_kte_color = $kte_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))
kte_show Join
%_kte_color = $kte_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 = $r(1, 30) | %::signontime = $asctime($calc(%_kte_time - $r(360, 7200)))
if ($kte_set(Whois)) { kte_show Whois | kte_show Raw.311 | kte_show Raw.319 | kte_show Raw.312 | kte_show Raw.317 | kte_show Raw.318 }
else { kte_showr 311 | kte_showr 319 | kte_showr 312 | kte_showr 317 | kte_showr 318 }
%_kte_color = $kte_rgb($3, $4-, 12)
inc %_kte_time $r(10, 20)
%::text = what's up guys?
%::chan = #Preview
kte_show TextChan
inc %_kte_time $r(3, 10)
%::nick = GuY | %::cmode = + | %::address =
%::text = the sky, pal
kte_show TextChan
%_kte_color = $kte_rgb($3, $4-, 9)
inc %_kte_time $r(3, 10)
%::nick = Dude | %::cmode = @ | %::knick = GuY
%::text = sample kick!
if ($kte_set(ParenText)) { set -n %::parentext $ifmatch } | else { %::parentext = (<text>) }
set -n %::parentext $($dll($kte_dll, MTSPrecompile, %::parentext), 2)
kte_show Kick | %::knick = | %::parentext =
%_kte_color = $kte_rgb($3, $4-, 2)
inc %_kte_time $r(40, 180)
%::text = is away (brb)
kte_show ActionChan
:end
unset %:echo %::*
}
alias -l kte_pv return $dll($kte_dll, Preview $+ $1, $2-)
alias kte_drawpreview kte_pv DrawText %_kte_color %::timestamp $1-
alias -l kte_set {
var %f = $fline(@Kte_Preview-, $1 *, 1)
if ($fline(@Kte_Preview-, $1, 1)) { if ($ifmatch < %f) { %f = $ifmatch } }
return $gettok($line(@Kte_Preview-, %f), 2-, 32)
}
alias -l kte_show {
if (* iswm $kte_set($1)) {
var %ln | set -n %ln $kte_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($kte_dll, MTSPrecompile, %ln) }
if (%ln) { .timerkte_theme 1 0 %ln | .timerkte_theme -e }
return 1
}
}
alias -l kte_showr kte_show Raw. $+ $1 | if (!$result) { kte_show Raw.Other }
alias -l kte_preview_bigtext {
%_kte_time = $calc($ctime - $r(0, 86400))
var %bcl = $kte_set(BaseColors)
%::c1 = $gettok(%bcl, 1, 44) | %::c2 = $gettok(%bcl, 2, 44) | %::c3 = $gettok(%bcl, 3, 44) | %::c4 = $gettok(%bcl, 4, 44)
if ($kte_set(MTSVersion) = 1.1) && ($kte_set(Timestamp) == on) && ($kte_set(TimestampFormat)) { set -n %_kte_timestamp $ifmatch }
elseif ($calc($kte_set(MTSVersion)) = 1) && ($kte_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
.timerkte_kte 1 0 % $+ ::pre = $dll($kte_dll, MTSPrecompile, $kte_set(Prefix)) | .timerkte_kte -e
%::chan = #Preview | %::target = #Preview
%:echo = kte_drawpreview
var %addr_me, %addr_pal, %addr_guy, %addr_dude, %randip = $($+(@, $r(1, 255), ., $r(0, 255), ., $r(0, 255), ., $r(0, 255)), 0)
%addr_me = preview $+ $(%randip, 2)
%addr_guy = guy $+ $(%randip, 2)
%addr_dude = airc $+ $(%randip, 2)
%addr_pal = palscript $+ $(%randip, 2)
%_kte_color = $kte_rgb($3, $4-, 8)
%::nick = %::me | %::address = %addr_me
kte_show JoinSelf | %::address =
%_kte_color = $kte_rgb($3, $4-, 6)
inc %_kte_time $r(0, 1)
%::target = %::me
%::text = now we have a silly topic.
kte_showr 332
%::nick = Dude
%::value = $asctime($calc($ctime - $r(5, 864000)))
if ($kte_set(Raw.333)) { %::text = %::value }
else { %::text = Topic set by %::nick on %::value }
kte_showr 333
%::value = $asctime($calc($ctime(%::value) - $r(5, 864000)))
if ($kte_set(Raw.329)) { %::text = %::value }
else { %::text = Channel was created on %::value }
kte_showr 329 | %::value = | %::target = %::chan
%_kte_color = $kte_rgb($3, $4-, 12)
inc %_kte_time $r(1, 5)
%::nick = Dude | %::cmode = @
%::address = %addr_dude
%::text = $gettok(hi welcome wb, $r(1, 3), 32) %::me :)
kte_show TextChan
%_kte_color = $kte_rgb($3, $4-, 16)
inc %_kte_time $r(5, 10)
%::nick = %::me | %::cmode =
%::address = %addr_me
%::text = $gettok(hi howdy hello, $r(1, 3), 32) Dude
kte_show TextChanSelf
%_kte_color = $kte_rgb($3, $4-, 8)
inc %_kte_time $r(30, 50)
%::nick = pal
%::address = %addr_pal
kte_show Join
%_kte_color = $kte_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 = $r(1, 30) | %::signontime = $asctime($calc(%_kte_time - $r(360, 7200)))
if ($kte_set(Whois)) { kte_show Whois | kte_show Raw.311 | kte_show Raw.319 | kte_show Raw.312 | kte_show Raw.317 | kte_show Raw.318 }
else { kte_showr 311 | kte_showr 319 | kte_showr 312 | kte_showr 317 | kte_showr 318 }
%::chan = #Preview
%_kte_color = $kte_rgb($3, $4-, 12)
inc %_kte_time $r(10, 20)
%::text = what's up guys?
kte_show TextChan
inc %_kte_time $r(3, 10)
%::nick = GuY | %::cmode = +
%::address = %addr_guy
%::text = the sky, pal
kte_show TextChan
%_kte_color = $kte_rgb($3, $4-, 9)
inc %_kte_time $r(3, 10)
%::nick = Dude | %::cmode = @ | %::knick = GuY
%::address = %addr_dude
%::text = sample kick!
if ($kte_set(ParenText)) { set -n %::parentext $ifmatch } | else { %::parentext = (<text>) }
set -n %::parentext $($dll($kte_dll, MTSPrecompile, %::parentext), 2)
kte_show Kick | %::knick = | %::parentext =
%_kte_color = $kte_rgb($3, $4-, 10)
inc %_kte_time $r(40, 180)
%::text =
%::modes = +o %::me
kte_show Mode
%_kte_color = $kte_rgb($3, $4-, 2)
inc %_kte_time $r(5, 50)
%::text = is away (brb)
kte_show ActionChan
%_kte_color = $kte_rgb($3, $4-, 16)
inc %_kte_time $r(5, 10)
%::nick = %::me
%::address = %addr_me
%::text = cya later Dude
kte_show TextChanSelf
%_kte_color = $kte_rgb($3, $4-, 13)
inc %_kte_time $r(0, 2)
%::nick = Dude | %::cmode =
%::address = %addr_dude
%::target = %::me
%::text = this is a sample notice to tell you I'm away
kte_show Notice
%_kte_color = $kte_rgb($3, $4-, 2)
inc %_kte_time $r(5, 10)
%::nick = %::me | %::cmode = @
%::address = %addr_me
%::text = hates automatic notices
kte_show ActionChanSelf
%_kte_color = $kte_rgb($3, $4-, 19)
inc %_kte_time $r(10, 30)
%::text = I hate automatic notices
kte_show Topic
%_kte_color = $kte_rgb($3, $4-, 7)
%::nick = pal | %::cmode =
%::address = %addr_pal
%::chan = #imaspammah
kte_show Invite | %::chan = #Preview
%_kte_color = $kte_rgb($3, $4-, 18)
%::text = Killed (Banned from this network)
if ($kte_set(ParenText)) { set -n %::parentext $ifmatch } | else { %::parentext = (<text>) }
set -n %::parentext $($dll($kte_dll, MTSPrecompile, %::parentext), 2)
kte_show Quit | %::parentext =
%_kte_color = $kte_rgb($3, $4-, 8)
inc %_kte_time $r(1, 50)
%::nick = GuY
%::address = %addr_guy
%::text =
kte_show Join
%_kte_color = $kte_rgb($3, $4-, 3)
inc %_kte_time $r(3, 10)
%::nick = %::me
%::address = %addr_me
%::target = GuY
%::ctcp = PING
kte_show CTCPSelf | %::target = %::me
%_kte_color = $kte_rgb($3, $4-, 3)
inc %_kte_time 2
%::nick = GuY
%::address = %addr_guy
%::ctcp = PING
%::text = $duration(2)
kte_show CTCPReply
:end
unset %:echo %::*
}
;alias -l kte_ds return $did($dname, $1).state
; I know there's $bytes(), but I prefer this one.
alias -l kte_size {
var %l = $1, %s = bytes
if (%l = 1) { return 1 byte }
if (%l > 900) {
%l = $calc(%l / 1024) | %s = KB
if (%l > 900) {
%l = $calc(%l / 1024) | %s = MB
if (%l > 900) { %l = $calc(%l / 1024) | %s = GB }
}
}
return $round(%l, 2) %s
}
alias -l kte_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)
}
; vPak support
; based on Variant's code
; /kte_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 kte_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 %kte_vpakFile $1 | set -u %kte_vpakPath $3 }
else { set -u %kte_vpakFile $1 | set -u %kte_vpakPath $2- }
if ($right(%kte_vpakPath,1) != \) { set -u %kte_vpakPath $+(%kte_vpakPath,\) }
if (!$isfile(%kte_vpakFile)) { return }
var %Total = $kte_vpak_extractfileList, %Counter = 1, %Line
if (%Total == BadFile) { return }
while (%Counter <= %Total) {
%Line = $hget(kte_vpakFileList,%Counter)
if (t !isin %Options) || (($gettok(%Line, 1, 32) isnum) && (*.mts iswm $gettok(%Line, 3-, 32))) {
if ($gettok(%Line,1,32) == DIR) { kte_mkpath $+(%kte_vpakPath,$gettok(%Line,2-,32)) }
else { kte_mkpath $nofile($+(%kte_vpakPath,$gettok(%Line,3-,32))) | kte_vpak_extractfile $gettok(%Line,1-2,32) $+(%kte_vpakPath,$gettok(%Line,3-,32)) }
if (t isin %Options) { break }
}
inc %Counter
}
hfree -w kte_vpak*
}
alias -l kte_vpakVersion return 1.1
alias -l kte_vpakFileVersion return 2
alias -l kte_vpakd2h return $base($longip($replace($1, $chr(32), .)), 10, 16)
alias -l kte_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 kte_vpak_extractfileList {
;Read file list to hash table
if ($hget(kte_vpakFileList)) { hfree kte_vpakFileList } | hmake kte_vpakFileList 20
bread $+(",%kte_vpakFile,") 0 20 &Header
var %FilePos = $base($kte_vpakd2h($bvar(&Header,1,4)),16,10), %FileSize = $file(%kte_vpakFile).size,%Counter = 1,%Len
if ($bvar(&Header,11,1).text != $kte_vpakFileVersion) { return BadFile }
while (%FilePos < %FileSize) {
bread $+(",%kte_vpakFile,") %FilePos 1000 &Data
%Len = $base($kte_vpakd2h($bvar(&Data,1,2)),16,10)
hadd kte_vpakFileList %Counter $bvar(&Data,3,%Len).text
inc %FilePos $calc(%Len + 2)
inc %Counter
}
return $calc(%Counter - 1)
}
alias -l kte_vpak_extractfile {
if ($left($1,1) == -) { var %Options = $1 | tokenize 32 $2- }
var %BytePos = 0,%BytesRead
while (%BytePos < $2) {
bread $+(",%kte_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 }
alias -l kte_onjoin if ($nick == $me) && ($hget(Kte_Data, Hide)) { kte_v joining $kte_v(joining) $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_raw329 $2
alias -l kte_raw329 {
kte_hidejinfo $1
var %jn = $kte_v(joining)
if ($findtok(%jn, $1, 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 -nu1 %::me $me | set -u1 %::server $server | set -u1 %::port $port
set -u1 %::pre * | set -nu1 %::timestamp $timestamp
if ($gettok(%ln, 1, 32) == !Script) { set -n %ln $deltok(%ln, 1, 32) }
else { set -n %ln % $+ :echo $dll($kte_dll, MTSPrecompile, %ln) $!+ % $+ :comments }
if ($istok(%ln, |, 32)) { .timerkte_theme 1 0 %ln | .timerkte_theme -e }
else { $eval(%ln, 2) }
unset %::me %::server %::port %::pre %::timestamp
return $true
}
alias kte_void
#Kte_DefTheme end