rendered paste bodyon *:LOAD:{
if ($version < 6.1) || ($version > 6.14) {
var %i = $$input(Sorry $+ $chr(44) TEMX was meant for mIRC versions 6.1 to 6.14 $+ $chr(44) you are using version $version $+ . $crlf $crlf $+ If you are using an older version $+ $chr(44) please upgrade $+ $chr(44) preferably to version 6.14. $crlf $crlf $+ If you are using a newer version $+ $chr(44) please see if an update of this engine is available. $crlf $crlf $+ When you click ok the engine will be unloaded...,wod,Theme Engine MX)
unload -rs $script
}
else {
if (!$hget(theme.settings)) { hmake theme.settings 20 }
theme.opt.restoreevents
theme.opt.restoreraws
ha theme.load.back 1 | ha theme.load.color 1 | ha theme.load.events 1 | ha theme.load.everything 1 | ha theme.load.font 1 | ha theme.load images 1 | ha theme.load.nick 1 | ha theme.load.rgb 1 | ha theme.load.schemes 0 | ha theme.load.sound 1 | ha theme.load.timestamp 1
ha theme.add.clear 0 | ha theme.add.everything 0 | ha theme.add.minimize 0 | ha theme.add.preview 0 | ha theme.add.unload 0 | ha theme.add.progress 1 | ha theme.add.cache 1
ha theme.ontop 0 | ha theme.desktop 0 | ha theme.startrefresh 0 | ha theme.list.name 1 | ha theme.list.format 1
ha mdxfolder $scriptdirdll\ | ha xmlfolder $scriptdirdll\ | ha szipfolder $scriptdirdll\ | ha fontfolder $scriptdirdll\
ha theme.frep.GwdTE_437 IBMPC | ha theme.frep.MS\~Sans\~Serif Microsoft Sans Serif | ha theme.frep.PC8X16 IBMPC
if (!$isfile($mdxdir $+ mdx.dll)) || ($findfile($mdxdir,*.mdx,0) != 4) {
var %m = $input(MDX.DLL or one or more of it's needed plugins were not found $+ $chr(44) make sure all are present. $crlf $crlf $+ If the files can be found in a different location $+ $chr(44) you can set it there. Would you like to do that? $crlf $crlf $+ Note that the script will load regardless of what you do.,wyd,Theme Engine MX)
if (%m) { ha mdxfolder $$sdir($scriptdir,Choose a new folder for MDX.DLL and it's plugins) }
}
if (!$isfile($xmldir $+ xml.dll)) {
var %x = $input(XML.DLL was not found $+ $chr(44) make sure it is in the right location. $crlf $crlf $+ If it can be found somewhere else on your harddrive you can set it to that location. Would you like to do that? $crlf $crlf $+ Note that the script will load regardless of what you do $+ $chr(44) and the dll is only needed for XTS themes.,wyd,Theme Engine MX)
if (%x) { ha xmlfolder $$sdir($scriptdir,Choose a new folder for XML.DLL) }
}
if (!$isfile($szipdir $+ xml.dll)) {
var %s = $input(SZIP.DLL was not found $+ $chr(44) make sure it is in the right location. $crlf $crlf $+ If it can be found somewhere else on your harddrive you can set it to that location. Would you like to do that? $crlf $crlf $+ Note that the script will load regardless of what you do $+ $chr(44) and the dll is only needed for zipped themes.,wyd,Theme Engine MX)
if (%s) { ha szipfolder $$sdir($scriptdir,Choose a new folder for SZIP.DLL) }
}
if (!$isfile($fontdir $+ xml.dll)) {
var %f = $input(FONT.DLL was not found $+ $chr(44) make sure it is in the right location. $crlf $crlf $+ If it can be found somewhere else on your harddrive you can set it to that location. Would you like to do that? $crlf $crlf $+ Note that the script will load regardless of what you do $+ $chr(44) and the dll is only needed for font selection.,wyd,Theme Engine MX)
if (%f) { ha fontfolder $$sdir($scriptdir,Choose a new folder for FONT.DLL) }
}
if (!$themesdir) {
var %t = $input(There is currently no theme folder set $+ $chr(44) would you like to do that now?,qyd,Theme Engine MX)
if (%t) { dialog -m theme.folders theme.folders }
}
hsave -o theme.settings " $+ $scriptdirsettings.src $+ "
var %i = $input(Successfully loaded the TEMX $+ $chr(44) written by $crlf $+ Voice of Power (marckuiper@hotmail.com). $crlf $crlf $+ The script is all set to go $+ $chr(44) simply type /themes to open the loading dialog or access it via the menu popups. $crlf $crlf $+ $+ To access the engine's help file type /themes help. $crlf $crlf $+ Enjoy!,iod,Theme Engine MX)
}
}
on *:UNLOAD:{
theme.unload
if ($dialog(themes)) { dialog -x themes }
if ($hget(theme.settings)) { hfree theme.settings }
if ($hget(theme.current)) { hfree theme.current }
if ($isfile($shortfn($scriptdir) $+ settings.src)) { .remove $shortfn($scriptdir) $+ settings.src }
if ($isfile($shortfn($scriptdir) $+ current.src)) { .remove $shortfn($scriptdir) $+ current.src }
}
on *:START:{ theme.start }
alias -l theme.start {
if (!$hget(theme.current)) { hmake theme.current 15 }
if ($exists($scriptdircurrent.src)) { hload theme.current " $+ $scriptdircurrent.src $+ " }
if (!$hget(theme.settings)) { hmake theme.settings 20 }
if ($exists($scriptdirsettings.src)) { hload theme.settings " $+ $scriptdirsettings.src $+ " }
$eval($hgt(init),2)
if ($isfile($hgt(script))) && (!$script($hgt(script))) { .load -rs " $+ $hgt(script) $+ " }
if ($hgt(timestampformat)) { .timestamp -f $theme.parse($iif($theme.current == mts,m,x),$hgt(timestampformat)) }
if ($hg(theme.startrefresh)) { theme.refresh }
theme.sound start
}
on *:EXIT:{
hsave -o theme.settings " $+ $scriptdirsettings.src $+ "
hsave -o theme.current " $+ $scriptdircurrent.src $+ "
}
menu menubar {
-
Theme System
.Load/Setup:themes
.$iif($hgt(schemenames),Change Scheme)
..$iif(!$hgt(scheme),$style(1)) $iif($theme.current == mts,Default,$gettok($hgt(schemenames),1,59) (default)):theme.scheme
..-
..$submenu($theme.menu.schemes($1))
.-
.Refresh colors:theme.refresh
.-
.Links
..Support forum:url -n http://www.voiceofpower.us/forum/
..-
..mIRCscripts.org:url -n http://www.mircscripts.org/archive/themes
..ScriptsDB.org:url -n http://www.scriptsdb.org/files.php?type=theme
.Help:themes help
-
}
alias -l theme.menu.schemes {
if ($1 == begin) || ($1 == end) { return - }
var %s = $gettok($hgt(schemenames),$1,59)
if (!%s) || (($theme.current == xts) && ($1 == 1)) { return - }
return $iif($hgt(scheme) == %s,$style(1)) $iif($theme.current == mts,$1,$calc($1 - 1)) $+ . %s $+ :theme.scheme $iif($theme.current == mts,$1,$calc($1 - 1))
}
alias mtsversion { return 1.3 }
alias xtsversion { return 0.1 }
alias themesversion { return 1.12 }
alias themesengine { return Theme Engine MX by Voice of Power version $themesversion for MTS 1.3 and XTS 0.1 }
alias theme.current {
if ($hgt($1)) { return $ifmatch }
else {
if ($right($hgt(file),4) == .mts) { return mts }
elseif ($right($hgt(file),4) == .xml) { return xts }
}
}
alias theme.setting { if ($hgt($1)) { return $ifmatch } }
alias themesdir {
var %t = $hg(theme.folder)
if (!$1) { return $numtok(%t,59) }
elseif ($1 isnum) { return $gettok(%t,$1,59) }
}
alias lt { return < }
alias gt { return > }
alias amp { return & }
alias lp { return ( }
alias rp { return ) }
alias lb { return [ }
alias rb { return ] }
alias la { return $chr(123) }
alias ra { return $chr(125) }
alias nsym { return $left($remove($nick($chan,$iif($nick,$nick,$me)).pnick,$iif($nick,$nick,$me)),1) }
alias tstamp { return $eval($timestamp,2) }
alias pre {
var %pre = $theme.parse($iif($theme.current == mts,m,x),$hgt(prefix))
return $eval(%pre,2)
}
alias -l cmdchar { return $ri(text,commandchar) }
alias -l cdef { return 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 }
alias -l rgbdef { return 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 }
alias -l ha { hadd theme.settings $1- }
alias -l hg { return $hget(theme.settings,$1) }
alias -l hat { hadd theme.current $1- }
alias -l hgt { return $hget(theme.current,$1) }
alias -l hap { hadd theme.preview $1- }
alias -l hgp { return $hget(theme.preview,$1) }
alias -l wi { if ($3) { writeini " $+ $mircini $+ " $1- } }
alias -l remi { if ($1) { remini " $+ $mircini $+ " $1- } }
alias -l ri { return $readini($mircini,n,$1,$2) }
alias -l mdx { return $dll($mdxdir $+ mdx.dll,$1,$2-) }
alias -l mdxdir { return $shortfn($hg(mdxfolder)) }
alias -l xml { return $dll($xmldir $+ xml.dll,$1,$2-) }
alias -l xmldir { return $shortfn($hg(xmlfolder)) }
alias -l szip { return $dll($szipdir $+ szip.dll,$1,$2-) }
alias -l szipdir { return $shortfn($hg(szipfolder)) }
alias -l fontdll { return $dll($fontdir $+ font.dll,Font,Select a font) }
alias -l fontdir { return $shortfn($hg(fontfolder)) }
alias -l cell { return $gettok($gettok($gettok($did($1,$2,$3),$4,9),$iif($4 = 1,6,5) $+ -,32),1,4) }
alias -l shorten {
if ($prop == cutpath) && ($len($2-) > $1) {
var %i = 2,%n = $1,%p = $2-
while (%i <= $numtok($2-,92)) {
%p = $replace($remove(%p,...\),$gettok($2-,%i,92),...)
if ($len(%p) <= $1) { return %p }
inc %i
}
}
elseif ($1 > 3) && ($len($2-) > $1) { return $left($2-,$calc($1 - 3)) $+ ... }
return $2-
}
alias -l isfont {
var %x = i oW
if ($width(%x,$$1,10) == $width(%x,MS Shell Dlg,10)) && ($height(%x,$$1,10) == $height(%x,MS Shell Dlg,10)) || ($$1 == $hg(theme.defaultfont)) { return $true }
elseif ($width(%x,$$1,10) == $width(%x,x,10)) && ($height(%x,$$1,10) == $height(%x,x,10)) { return $false }
else { return $true }
}
alias -l wins {
var %s = 1
while ($scon(%s)) {
scon %s
if ($left($1,1) == $chr(45)) {
var %i = 1
while ($window(*,%i)) {
var %t = $window(*,%i)
window $1 $iif($left(%t,1) == $chr(61),%t,$+(",%t,"))
inc %i
}
}
inc %s
}
}
alias -l theme.colornum {
var %i = 1
while ($ini($shortfn($nofile($mircini)) $+ $nopath($mircini),colors,%i)) {
var %m = $ifmatch
if ($gettok($ri(colors,%m),1,44) == $1-) { var %p = %m }
inc %i
}
if (!%p) { return n $+ $calc($right(%m,-1) + 1) }
return %p
}
alias -l theme.options {
if ($1 == load) {
var %l
if ($hg(theme.load.everything)) { %l = a }
if ($hg(theme.load.font)) { %l = %l $+ f }
if ($hg(theme.load.color)) { %l = %l $+ c }
if ($hg(theme.load.nick)) { %l = %l $+ n }
if ($hg(theme.load.sound)) { %l = %l $+ s }
if ($hg(theme.load.back)) { %l = %l $+ b }
if ($hg(theme.load.images)) { %l = %l $+ i }
if ($hg(theme.load.timestamp)) { %l = %l $+ t }
if ($hg(theme.load.events)) { %l = %l $+ e }
if ($hg(theme.load.schemes)) { %l = %l $+ h }
return %l
}
if ($1 == add) {
var %a
if ($hg(theme.add.everything)) { %a = a }
if ($hg(theme.add.minimize)) { %a = %a $+ w }
if ($hg(theme.add.clear)) { %a = %a $+ l }
if ($hg(theme.add.unload)) { %a = %a $+ u }
if ($hg(theme.add.preview)) { %a = %a $+ p }
if ($hg(theme.add.cache)) { %a = %a $+ c }
if ($hg(theme.add.progress)) { %a = %a $+ g }
return %a
}
}
alias theme.echo {
if (!$theme.current) { echo $1- }
else {
var %i = $iif($hgt(indent),i $+ $ifmatch)
if ($left($1,1) == -) {
if ($window($2)) { theme.vars echo $color(info) $1 $+ %i $2 | set -u %::text $3- | set -u %::target $2 }
else { theme.vars echo $color(info) $1 $+ %i | set -u %::text $2- }
}
else {
if ($window($1)) { theme.vars echo $color(info) $iif(%i,- $+ %i) $1 | set -u %::text $2- | set -u %::target $1 }
else { theme.vars echo $color(info) -a $+ %i | set -u %::text $1- }
}
if ($theme.current == mts) { theme.text echo $+ $iif($numtok(%:echo,32) == 4,target) }
elseif ($theme.current == xts) { %:echo %::pre %::text }
}
}
alias theme.error {
if (!$theme.current) { echo $1- }
else {
var %i = $iif($hgt(indent),i $+ $ifmatch)
if ($left($1,1) == -) {
if ($window($2)) { theme.vars echo $color(info) $1 $+ %i $2 | set -u %::text $3- }
else { theme.vars echo $color(info) $1 $+ %i | set -u %::text $2- }
}
else {
if ($window($1)) { theme.vars echo $color(info) $iif(%i,- $+ %i) $1 | set -u %::text $2- }
else { theme.vars echo $color(info) -a $+ %i | set -u %::text $1- }
}
if ($theme.current == mts) { theme.text error }
elseif ($theme.current == xts) { theme.text error %::text }
}
}
alias ptext {
if ($1) {
set -nu %::text $1-
if ($hgt(parentext)) { return $theme.parse(m,$hgt(parentext)) }
else { return ( $+ $1- $+ ) }
}
}
;################# PARSING ################
alias theme.info {
if ($0 == 4) { var %s = $1,%c = $2,%e = $3,%f = $4 }
elseif ($0 == 3) {
if ($1 isnum) { var %s = $1,%e = $2,%f = $3 }
else { var %s = 0,%c = $1,%e = $2,%f = $3 }
}
elseif ($0 == 2) { var %e = $1,%f = $2 }
if (!$isfile(%f)) { return }
var %t = $iif($right(%f,4) == .mts,m,x)
if (%t == m) {
var %s = $iif(%s,%s,0)
if ($fopen(parse)) { .fclose parse }
.fopen parse " $+ %f $+ "
if ($ferr) { .fclose parse | return }
if (%e == schemenames) {
.fseek -w parse scheme*
while (!$feof) {
var %r = $fread(parse)
if (scheme* iswm %r) { var %n = $addtok(%n,$gettok(%r,2-,32),59) }
elseif ($+($chr(91),scheme*,$chr(93)) iswm $1) { .fclose parse | break }
}
.fclose parse | return %n
}
else {
if (%s) { .fseek -w parse $+($chr(91),scheme $+ %s,$chr(93)) | var %l = $fread(parse) }
while (!$feof) {
if ($fread(parse)) {
tokenize 32 $ifmatch
if ($1 == [mts]) || (!$1) || ($left($1,1) == $chr(59)) { continue }
elseif ($+($chr(91),scheme*,$chr(93)) iswm $1) { .fclose parse | return }
elseif ($1 == %e) { .fclose parse | return $2- }
}
}
}
if ($fopen(parse)) { .fclose parse }
}
elseif (%t == x) {
if ($0 == 2) { var %s = info }
var %s = $iif((%s) && (%s != info),scheme $+ %s,$iif(%s == info,info,default))
xml CreateParser xts.parse
xml StartElement xts.parse theme.xtsparse -s $+ $iif(%c,c) $+ $iif(%s,h) %e %c %s
xml EndElement xts.parse theme.xtsparse -e %e
xml Data xts.parse theme.xtsparse -d
if (%e == schemenames) { xml Attribute xts.parse theme.xtsparse -a }
xml File xts.parse " $+ %f $+ "
xml ParseFile xts.parse
xml FreeParser xts.parse
var %r = $iif(%schemes,$ifmatch,%event)
unset %scheme %section %item %event %schemes
return %r
}
}
alias theme.xtsparse {
if (-s isin $1) {
if (h isin $1) && (c !isin $1) && ($3 == $5) { %scheme = $3 }
elseif (h isin $1) && (c isin $1) && ($4 == $6) { %scheme = $4 }
if (%scheme) {
if (c isin $1) && ($3 == $iif(h isin $1,$6,$5)) { %section = $3 }
elseif (%scheme == info) || (c !isin $1) { %section = 1 }
}
if (%section) {
if (ch isin $1) && ($2 == $6) { %item = $2 }
elseif ((c isin $1) || (h isin $1)) && ($2 == $5) { %item = $2 }
elseif ($2 == $4) { %item = $2 }
}
}
elseif ($1 == -e) {
if ($3 == %scheme) { xml FreeParser xts }
}
elseif ($1 == -d) && (%item) { xml FreeParser xts.parse | %event = $3- }
elseif ($1 == -a) && ($4 == name) { %schemes = $addtok(%schemes,$5-,59) }
}
alias theme.parse {
if ($1 == m) {
var %t = $replace($2,<pre>,%::pre,<timestamp>,%::timestamp,<c1>,$bc(1),<c2>,$bc(2),<c3>,$bc(3),<c4>,$bc(4))
var %t = $replace(%t,<me>,%::me,<server>,%::server,<port>,%::port,<nick>,%::nick,<chan>,%::chan,<address>,%::address,<me>,%::nick)
var %t = $replace(%t,<cmode>,%::cmode,<cnick>,%::cnick,<target>,%::target,<knick>,%::knick,<kaddress>,%::kaddress,<newnick>,%::newnick)
var %t = $replace(%t,<modes>,%::modes,<ctcp>,%::ctcp,<numeric>,%::numeric,<value>,%::value,<fromserver>,%::fromserver,<users>,%::users)
var %t = $replace(%t,<away>,%::away,<realname>,%::realname,<isoper>,%::isoper,<operline>,%::operline,<isregd>,%::isregd)
var %t = $replace(%t,<wserver>,%::wserver,<serverinfo>,%::serverinfo,<idletime>,%::idletime,<signontime>,%::signontime,<iaddress>,%::iaddress,<naddress>,%::naddress,<raddress>,%::raddress)
var %t = $replace(%t,<ts>,,<lt>,<,<gt>,>,<parentext>,%::parentext,<text>,%::text)
return %t
}
elseif ($1 == x) {
var %t = $replace($2,$!pre,%::pre,$!timestamp,%::timestamp)
var %t = $replace(%t,$!me,%::me,$!server,%::server,$!port,%::port,$!nick,%::nick,$!chan,%::chan,$!address,%::address,$!me,%::nick)
var %t = $replace(%t,$!nsym,%::cmode,$!cnick,%::cnick,$!target,%::target,$!knick,%::knick,$!kaddress,%::kaddress,$!newnick,%::newnick)
var %t = $replace(%t,$!modes,%::modes,$!ctcp,%::ctcp,$!numeric,%::numeric,$!value,%::value,$!fromserver,%::fromserver,$!users,%::users)
var %t = $replace(%t,$!away,%::away,$!realname,%::realname,$!isoper,%::isoper,$!operline,%::operline,$!isregd,%::isregd)
var %t = $replace(%t,$!wserver,%::wserver,$!serverinfo,%::serverinfo,$!idletime,%::idletime,$!signontime,%::signontime,$!iaddress,%::iaddress,$!naddress,%::naddress,$!raddress,%::raddress)
var %t = $replace(%t,$!text,%::text)
return %t
}
return $2
}
alias -l bc { if ($1 isnum) && ($hgt(basecolors)) { return $+ $gettok($hgt(basecolors),$1,44) } }
alias theme.vars {
set -nu %:echo $1-
set -nu %::me $me
set -nu %::server $server
set -nu %::port $port
set -nu %::pre $pre
set -nu %::target $target
set -nu %::c1 $bc(1)
set -nu %::c2 $bc(2)
set -nu %::c3 $bc(3)
set -nu %::c4 $bc(4)
set -nu %::timestamp $time($theme.parse($iif($theme.current == mts,m,x),$hgt(timestampformat)))
if ($theme.current == xts) { set -nu %::timestamp $eval(%::timestamp,2) }
}
alias theme.text {
if (%::text) { set -nu %::parentext $ptext(%::text) }
if ($1) { set -nu %:text $hgt($1) }
if (!%:text) && ($theme.current == xts) && ($1 == RAW.other) { set -nu %:text RAW.Other }
if (!%:text) { halt }
if (RAW. isin $1) { var %e = $calc($2 + 1) }
else { var %e = $gettok($hg(theme.event. $+ $2),1,32) }
if (!%e) { %e = 3 }
if (%e == 1) { halt }
elseif (%e == 2) || (!$theme.current) { goto end }
elseif (%e == 3) {
if ($theme.current == mts) {
set -nu %:text $theme.parse(m,%:text)
if ($gettok(%:text,1,32) != !script) { $eval(%:echo,2) %:text %:comments }
else {
if (!$gettok(%:text,2,32)) {
if (raw. isin $1) { halt }
}
else { $eval($gettok(%:text,2-,32),2) }
}
}
elseif ($theme.current == xts) {
tokenize 32 $3-
if (%:text == RAW.Other) { $eval(%:echo,2) $2- }
else {
set -nu %:text $theme.parse(x,%:text)
if ($gettok(%:text,1,32) != !xts) { $eval(%:echo,2) $eval(%:text,2) }
else { $eval($gettok(%:text,2,32),2) $1- }
}
}
haltdef
}
elseif (%e == 4) {
if (RAW. isin $1) { var %h = $gettok($hg($hfind(theme.settings,theme.raw.*. $+ $gettok($1,2,46),1,w)),3-,32) }
else { var %h = $gettok($hg(theme.event. $+ $2),2-,32) }
if ($theme.current == mts) { set -nu %:text $theme.parse(m,%:text) }
elseif ($theme.current == xts) {
tokenize 32 $3-
set -nu %:text $eval($theme.parse(x,%:text),2)
}
$eval(%h,2)
haltdef
}
:end
}
alias xecho {
if (-r* iswm $1) { %:echo $2- }
elseif ($1 == -w) { %:echo $3- }
}
alias cmode { return $left($remove($nick($2,$1).pnick,$1),1) }
alias theme.sound {
var %f = $shortfn($nofile($hgt(file))) $+ $hgt(snd $+ $1)
if ($isfile(%f)) {
if ($right(%f,4) == .wav) { var %p = -w }
elseif ($right(%f,4) == .mid) { var %p = -m }
elseif ($right(%f,4) == .mp3) { var %p = -p }
.splay %p %f
}
}
;################## MAIN DIALOG #####################
alias themes {
if ($1 == help) { run $shortfn($scriptdir) $+ Readme.html }
elseif (!$dialog(themes)) { dialog -m $+ $iif($hg(theme.desktop),d) $+ $iif($hg(theme.ontop),o) themes themes } | else { dialog -v themes themes }
}
dialog -l themes {
title "Theme Engine MX"
size -1 -1 230 160
option dbu
list 1, 2 2 65 100, size extsel
list 2, 2 104 65 40, size
button "&Load", 3, 133 148 30 10, default
button "&Unload", 4, 165 148 30 10
button "&Close", 5, 198 148 30 10, cancel
;text "For more, goto:", 6, 3 149 38 8
;link "mircscripts.org", 7, 43 149 35 8
;text "or", 8, 80 149 5 8
;link "scriptsdb.org", 9, 87 149 35 8
tab "Preview", 10, -20 -20 0 0
tab "Information", 30
tab "Apply", 50
tab "RAW Events", 100
list 21, 71 1 160 10, size
text "", 17, 0 0 230 1
text "", 18, 70 12 160 1
text "", 19, 0 145 230 1
text "", 20, 70 0 1 146
text "Preview: none", 11, 77 17 80 8, tab 10
button "&Preview", 12, 164 15 30 10, tab 10
button "L&arger", 13, 196 15 30 10, tab 10
box "", 14, 75 25 151 116, tab 10
text "No preview generated at the moment.", 15, 105 77 120 8, tab 10
icon 16, 72 29 156 112, $mircexe, 0, border hide tab 10
box "", 31, 75 14 151 14, tab 30
text "No theme file selected...", 32, 78 19 144 8, tab 30
text "Name:", 33, 78 34 30 8, tab 30
text "", 34, 115mu 34 80 8, tab 30
text "Version:", 35, 78 45 30 8, tab 30
text "", 36, 115 45 80 8, tab 30
text "Author:", 37, 78 56 30 8, tab 30
text "", 38, 115 56 80 8, tab 30
text "E-mail:", 39, 78 67 30 8, tab 30
link "", 40, 115 67 80 8, tab 30
text "Website:", 41, 78 77 30 8, tab 30
link "", 42, 115 77 80 8, tab 30
text "Description:", 44, 78 92 40 8, tab 30
edit "", 43, 75 100 151 38, read multi vsbar tab 30
text "When loading a theme, apply:", 51, 77 16 120 8, tab 50
check "E&verything", 52, 192 16 35 8, tab 50
check "&Fonts", 53, 80 25 60 8, tab 50
check "&Colors", 54, 80 33 60 8, tab 50
check "&Sounds", 55, 80 49 60 8, tab 50
check "&Nicklist colors", 56, 80 41 60 8, tab 50
check "&Background images", 57, 150 25 70 8, tab 50
check "Toolbar/switchbar &images", 58, 150 33 70 8, tab 50
check "&Timestamp", 59, 150 41 70 8, tab 50
check "Scripted &events", 60, 150 49 70 8, tab 50
text "", 61, 73 60 155 1, tab 50
text "Event options:", 62, 77 63 100 8, tab 50
list 63, 77 71 50 70, tab 50 size vsbar
text "Description:", 64, 131 71 30 8, tab 50
box "", 65, 130 76 96 20, tab 50
text "Description of event here.", 66, 133 81 86 14, tab 50
text "Action:", 67, 131 98 30 8, tab 50
combo 68, 130 106 96 10, drop tab 50
text "Custom format command:", 69, 131 120 70 8, tab 50
edit "", 70, 130 128 96 10, autohs tab 50
text "RAW event settings:", 101, 77 17 129 8, tab 100
combo 102, 165 15 60 10, tab 100 drop
text "", 103, 73 28 155 1, tab 100
text "Included RAWs:", 104, 77 32 50 8, tab 100
list 105, 77 40 40 101, tab 100 size vsbar
text "Description:", 106, 121 40 50 8, tab 100
box "", 107, 120 45 106 34, tab 100
text "Description of raw here.", 108, 123 50 96 28, tab 100
text "Display in:", 109, 121 81 30 8, tab 100
combo 110, 120 89 106 10, drop tab 100
text "Action:", 111, 121 102 30 8, tab 100
combo 112, 120 110 106 10, drop tab 100
text "Custom format command:", 113, 121 121 70 8, tab 100
edit "", 114, 120 129 106 10, autohs tab 100
menu "&File", 151
item "Open file", 152, 151
item "Open folder", 153, 151
item break, 154, 151
item "Refresh list", 155, 151
item "Clear list", 156, 151
item break, 159, 151
item "Exit", 160, 151
menu "&Options", 171
menu "On load", 172, 171
item "Load all schemes", 173, 172
item break, 174, 172
item "Show progress", 175, 172
item "Clear windows", 176, 172
item "Minimize windows", 177, 172
item "Unload old theme", 178, 172
menu "Previews", 179, 171
item "Preview on click", 180, 179
item "Cache previews", 181, 179
item break, 182, 179
item "Destroy previews", 183, 179
item break, 184, 171
item "Refresh on start", 185, 171
item break, 186, 171
item "Show on desktop", 187, 171
item "Always on top", 188, 171
menu "&Edit", 201
menu "Folders", 202, 201
item "Theme folders", 203, 202
item break, 204, 202
item "Set MDX.dll folder...", 205, 202
item "Set XML.dll folder...", 206, 202
item "Set SZIP.dll folder...", 221, 202
item "Set FONT.dll folder...", 224, 202
menu "Listing", 207, 201
item "List zipped themes", 222, 207
item break, 223, 207
item "Theme name", 208, 207
item "File name", 209, 207
item break, 210, 207
item "Format", 211, 207
item "Version", 212, 207
item "Nothing", 213, 207
item break, 214, 201
item "Edit timestamp", 215, 201
item "Change fonts", 216, 201
item break, 218, 201
item "Restore events to default", 219, 201
item "Restore raws to default", 220, 201
menu "&Help", 231
item "Help", 232, 231
item break, 233, 231
item "About", 234, 231
}
on *:dialog:themes:*:*:{
if ($devent == init) {
mdx SetMircVersion $version
mdx MarkDialog $dname
mdx SetControlMDX $dname 1 ListView rowselect report single showsel sortascending noheader labeltip > $mdxdir $+ views.mdx
mdx SetControlMDX $dname 21 ToolBar nodivider flat arrows list > $mdxdir $+ bars.mdx
did -i $dname 1 1 headerdims 74:1 35:2 0:3
did -i $dname 1 1 headertext Theme Format File
mdx SetColor $dname 43 background $rgb(hilight)
mdx SetColor $dname 43 textbg $rgb(hilight)
mdx SetColor $dname 43 text $rgb(text)
mdx SetBorderStyle $dname 17,18,19,20,61,103 staticedge
mdx SetBorderStyle $dname 21
did -i $dname 21 1 bmpsize 16 16
did -i $dname 21 1 setimage 0 icon small 0, $+ $shortfn($scriptdir) $+ icons.icl
did -i $dname 21 1 setimage 0 icon small 1, $+ $shortfn($scriptdir) $+ icons.icl
did -i $dname 21 1 setimage 0 icon small 2, $+ $shortfn($scriptdir) $+ icons.icl
didtok -a $dname 21 59 +acgx 1 Preview;+acg 2 Information;+acg 3 Apply;+acg 3 RAW Events
theme.list
var %l = $theme.options(load)
if (a isin %l) { did -c $dname 52 | did -b $dname 53,54,55,56,57,58,59,60 }
if (f isin %l) { did -c $dname 53 }
if (c isin %l) { did -c $dname 54 }
if (s isin %l) { did -c $dname 55 }
if (n isin %l) { did -c $dname 56 }
if (b isin %l) { did -c $dname 57 }
if (i isin %l) { did -c $dname 58 }
if (t isin %l) { did -c $dname 59 }
if (e isin %l) { did -c $dname 60 }
if (h isin %l) { did -c $dname 173 }
didtok -a $dname 63 59 on INPUT;on TEXT;on ACTION;on NOTICE;on CHAT;on JOIN;on PART;on NICK;on QUIT;on NOTIFY;on UNOTIFY;on DNS;on USERMODE;on ERROR;on SNOTICE;on INVITE;on TOPIC;on KICK;on RAWMODE;on WALLOPS;on CTCPREPLY;CTCP
didtok -a $dname 68 59 Hide;Use mIRC default;Apply theme format;Apply custom format
did -c $dname 63,68 1
theme.opt.dispevent $did(63).seltext
var %a = $theme.options(add)
if (g isin %a) { did -c $dname 175 }
if (l isin %a) { did -c $dname 176 }
if (w isin %a) { did -c $dname 177 }
if (u isin %a) { did -c $dname 178 }
if (p isin %a) { did -c $dname 180 }
if (c isin %a) { did -c $dname 181 }
if ($hg(theme.startrefresh)) { did -c $dname 185 }
if ($hg(theme.desktop)) { did -c $dname 187 }
if ($hg(theme.ontop)) { did -c $dname 188 }
if ($hg(theme.list.zip)) { did -c $dname 222 }
if ($hg(theme.list.name)) { did -c $dname 208 }
else { did -c $dname 209 }
if ($hg(theme.list.format) == 1) { did -c $dname 211 }
elseif ($hg(theme.list.format) == 2) { did -c $dname 212 }
else { did -c $dname 213 }
didtok -a $dname 102 59 Connection;Join;Whois;Who;Mode;Error;Stats;Admin;Misc;All
didtok -a $dname 110 59 Target window, else in active;Target window, else in status;Always in active window;Always in status window;None
didtok -a $dname 112 59 Use mIRC default;Apply theme format;Apply custom format
did -c $dname 102,110,112 1
theme.opt.listraw 1
if (!$theme.current) { did -b $dname 4 }
}
if ($devent == sclick) {
if ($did == 21) {
var %b = $did(21).sel
if (%b == 2) { did -f $dname 10 }
elseif (%b == 3) { did -f $dname 30 }
elseif (%b == 4) { did -f $dname 50 }
elseif (%b == 5) { did -f $dname 100 }
}
if ($did == 1) && ($gettok($did(1,1),1,32) == sclick) { theme.dispinfo $cell(themes,1,$did(1).sel,3) }
if ($did == 2) { if (p isin $theme.options(add)) || (a isin $theme.options(add)) { theme.preview $iif($did(2).sel > 1,$calc($did(2).sel - 1)) $cell(themes,1,$did(1).sel,3) } }
if ($did == 3) { $iif(!$hg(theme.add.progress),.) $+ theme.load - $+ $iif(a isin $theme.options(load),fcnsbite,$theme.options(load)) $+ $iif(h isin $theme.options(load),h) $+ $iif(a isin $theme.options(add),wlu,$theme.options(add)) $iif($did(2).sel != 1,$calc($did(2).sel - 1)) $cell(themes,1,$did(1).sel,3) }
if ($did == 4) { $iif(!$hg(theme.add.progress),.) $+ theme.unload - $+ $iif(a isin $theme.options(add),wl,$theme.options(add)) }
if ($did == 12) && ($did(1).sel) { theme.preview $iif($did(2).sel > 1,$calc($did(2).sel - 1)) $cell(themes,1,$did(1).sel,3) }
if ($did == 13) && ($did(1).sel) { theme.preview -l $iif($did(2).sel > 1,$calc($did(2).sel - 1)) $cell(themes,1,$did(1).sel,3) }
if ($did == 40) && ($did(40)) { url -n $did(40) }
if ($did == 42) && ($did(42)) { url -n $did(42) }
if ($did == 52) {
if ($did(52).state) { did -b $dname 53,54,55,56,57,58,59,60 }
else { did -e $dname 53,54,55,56,57,58,59,60 }
ha theme.load.everything $did(52).state
}
if ($did == 53) { ha theme.load.font $did(53).state }
if ($did == 54) { ha theme.load.color $did(54).state }
if ($did == 55) { ha theme.load.sound $did(55).state }
if ($did == 56) { ha theme.load.nick $did(56).state }
if ($did == 57) { ha theme.load.back $did(57).state }
if ($did == 58) { ha theme.load.images $did(58).state }
if ($did == 59) { ha theme.load.timestamp $did(59).state }
if ($did == 60) { ha theme.load.events $did(60).state }
if ($did == 63) { theme.opt.dispevent $did(63).seltext }
if ($did == 68) {
if ($did(68).sel == 4) { did -e $dname 69,70 }
else { did -b $dname 69,70 }
theme.opt.editevent -a $iif($did(63).seltext == CTCP,$ifmatch,$right($did(63).seltext,-3)) $did(68).sel
}
if ($did == 102) { theme.opt.listraw $did(102).sel }
if ($did == 105) { var %r = $iif($did(102).seltext == Connection,con,$iif($lower($did(102).seltext) != all,$ifmatch)) | theme.opt.dispraw $iif(%r,%r $+ .) $+ $did(105).seltext }
if ($did == 110) {
if ($did(110).sel == 5) { did -b $dname 111,112 }
else { did -e $dname 111,112 }
var %r = $iif($did(102).seltext == Connection,con,$lower($did(102).seltext))
theme.opt.editraw -d $iif(%r,%r $+ .) $+ $did(105).seltext $theme.opt.inforaw($did(110).sel)
}
if ($did == 112) {
if ($did(112).sel == 3) { did -e $dname 113,114 | did -b $dname 109,110 }
else { did -b $dname 113,114 | did -e $dname 109,110 }
var %r = $iif($did(102).seltext == Connection,con,$lower($did(102).seltext))
theme.opt.editraw -a $iif(%r,%r $+ .) $+ $did(105).seltext $did(112).sel
}
}
if ($devent == dclick) {
if ($did == 1) || ($did == 2) { $iif(!$hg(theme.add.progress),.) $+ theme.load - $+ $iif(a isin $theme.options(load),fcnsbite,$theme.options(load)) $+ $iif(h isin $theme.options(load),h) $+ $iif(a isin $theme.options(add),wlu,$theme.options(add)) $iif($did(2).sel != 1,$calc($did(2).sel - 1)) $cell(themes,1,$did(1).sel,3) }
}
if ($devent == edit) {
if ($did == 70) { theme.opt.editevent -f $iif($did(63).seltext == CTCP,$ifmatch,$right($did(63).seltext,-3)) $did(70) }
if ($did == 114) {
var %r = $iif($did(102).seltext == Connection,con,$lower($did(102).seltext))
theme.opt.editraw -f $iif(%r,%r $+ .) $+ $did(105).seltext $did(114)
}
}
if ($devent == menu) {
if ($did == 152) {
var %f = $$sfile($scriptdir*.mts;*.xml,Choose a theme file,Choose)
theme.list -a %f
}
if ($did == 153) {
var %f = $$sdir($scriptdir,Choose a theme folder)
var %m = $findfile(%f,*.mts,0,theme.list -a $1-)
var %x = $findfile(%f,*.xml,0,theme.list -a $1-)
}
if ($did == 155) { theme.list }
if ($did == 156) { did -r $dname 1,2 }
if ($did == 160) { dialog -x themes }
if ($did == 173) { did $iif($did(173).state,-u,-c) $dname 173 | ha theme.load.schemes $did(173).state }
if ($did == 175) { did $iif($did(175).state,-u,-c) $dname 175 | ha theme.add.progress $did(175).state }
if ($did == 176) { did $iif($did(176).state,-u,-c) $dname 176 | ha theme.add.clear $did(176).state }
if ($did == 177) { did $iif($did(177).state,-u,-c) $dname 177 | ha theme.add.minimize $did(177).state }
if ($did == 178) { did $iif($did(178).state,-u,-c) $dname 178 | ha theme.add.unload $did(178).state }
if ($did == 180) { did $iif($did(180).state,-u,-c) $dname 180 | ha theme.add.preview $did(180).state }
if ($did == 181) { did $iif($did(181).state,-u,-c) $dname 181 | ha theme.add.cache $did(181).state }
if ($did == 183) { theme.clearcache -p }
if ($did == 185) { did $iif($did(185).state,-u,-c) $dname 185 | ha theme.startrefresh $did(185).state }
if ($did == 187) { did $iif($did(187).state,-u,-c) $dname 187 | ha theme.desktop $did(187).state }
if ($did == 188) { did $iif($did(188).state,-u,-c) $dname 188 | ha theme.ontop $did(188).state }
if ($did == 203) { $dialog(theme.folders,theme.folders,-4) }
if ($did == 205) { ha mdxfolder $$sdir($iif($mdxdir,$ifmatch,$scriptdir),Choose the folder for MDX.DLL and it's plugins) }
if ($did == 206) { ha xmlfolder $$sdir($iif($xmldir,$ifmatch,$scriptdir),Choose the folder for XML.DLL) }
if ($did == 221) { ha szipfolder $$sdir($iif($szipdir,$ifmatch,$scriptdir),Choose the folder for SZIP.DLL) }
if ($did == 224) { ha fontfolder $$sdir($iif($fontdir,$ifmatch,$scriptdir),Choose the folder for FONT.DLL) }
if ($did == 222) { did $iif($did(222).state,-u,-c) $dname 222 | ha theme.list.zip $did(222).state }
if ($did == 208) { did -c $dname 208 | did -u $dname 209 | ha theme.list.name 1 }
if ($did == 209) { did -c $dname 209 | did -u $dname 208 | ha theme.list.name 0 }
if ($did == 211) { did -c $dname 211 | did -u $dname 212,213 | ha theme.list.format 1 }
if ($did == 212) { did -c $dname 212 | did -u $dname 211,213 | ha theme.list.format 2 }
if ($did == 213) { did -c $dname 213 | did -u $dname 211,212 | ha theme.list.format 0 }
if ($did == 215) { $dialog(theme.tstamp,theme.tstamp,-4) }
if ($did == 216) { $dialog(theme.font,theme.font,-4) }
if ($did == 219) { if ($input(Are you sure you wish to restore all event settings to default? $crlf $crlf $+ All old settings will be lost.,yw,Theme Engine MX)) { theme.opt.restoreevents } }
if ($did == 220) { if ($input(Are you sure you wish to restore all raw event settings to default? $crlf $crlf $+ All old settings will be lost.,yw,Theme Engine MX)) { theme.opt.restoreraws } }
if ($did == 232) { themes help }
if ($did == 234) { var %a = $input(Theme Engine MX version $themesversion $+ . $crlf $crlf $+ Written by Voice of Power. $crlf $chr(32) $chr(32) $chr(32) Contact: marckuiper@hotmail.com $crlf $crlf $+ Support forum: $crlf $chr(32) $chr(32) $chr(32) http://www.voiceofpower.us/forum $crlf $crlf $+ Supported theme formats: $crlf $chr(32) $chr(32) $chr(32) MTS (mIRC Theme Standard) 1.3 $crlf $chr(32) $chr(32) $chr(32) XTS (XML Theme Standard) 0.1 $crlf $crlf $+ Credits and other info in the help file.,io,Theme Engine MX) }
}
if ($devent == close) {
window -c @theme.desc
window -c @theme.filter
theme.clearcache -z
}
}
alias -l theme.opt.dispevent {
if (!$window(@theme.desc)) { window -h @theme.desc }
if (!$window(@theme.filter)) { window -h @theme.filter }
clear @theme.desc
loadbuf -tEvents @theme.desc $shortfn($scriptdir) $+ desc.src
var %e = $iif($1 == CTCP,$1,$2)
filter -ww @theme.desc @theme.filter %e *
if ($filtered) {
tokenize 9 $line(@theme.filter,$line(@theme.filter,0))
did -ra themes 66 $gettok($1,2-,32)
did -c themes 68 $gettok($hg(theme.event. $+ %e),1,32)
did $iif($gettok($hg(theme.event. $+ %e),1,32) == 4,-e,-b) themes 69,70
did -ra themes 70 $gettok($hg(theme.event. $+ %e),2-,32)
}
}
alias -l theme.opt.editevent {
var %o = $hg(theme.event. $+ $2)
if (a isin $1) { ha theme.event. $+ $2 $3 $gettok(%o,2-,32) }
elseif (f isin $1) { ha theme.event. $+ $2 $gettok(%o,1,32) $3- }
}
alias -l theme.opt.restoreevents {
ha theme.event.ACTION 3 | ha theme.event.CHAT 3 | ha theme.event.CTCP 3 | ha theme.event.CTCPREPLY 3 | ha theme.event.DNS 3 | ha theme.event.ERROR 3 | ha theme.event.INPUT 3 | ha theme.event.INVITE 3 | ha theme.event.SNOTICE 3 | ha theme.event.TEXT 3 | ha theme.event.TOPIC 3 | ha theme.event.WALLOPS 3
ha theme.event.JOIN 3 | ha theme.event.JOIN 3 | ha theme.event.KICK 3 | ha theme.event.NICK 3 | ha theme.event.NOTICE 3 | ha theme.event.NOTIFY 3 | ha theme.event.PART 3 | ha theme.event.QUIT 3 | ha theme.event.RAWMODE 3 | ha theme.event.UNOTIFY 3 | ha theme.event.USERMODE 3
}
alias -l theme.opt.listraw {
did -ra themes 105 All
if ($1 == 1) { didtok -a themes 105 59 001;002;003;004;005;221;250;251;252;253;254;255;265;266;372;375;376;391 | var %r = con }
elseif ($1 == 2) { didtok -a themes 105 59 331;332;333;353;366;471;473;474;475 | var %r = join }
elseif ($1 == 3) { didtok -a themes 105 59 301;307;311;312;313;314;317;318;319;330;338;369;406;431 | var %r = whois }
elseif ($1 == 4) { didtok -a themes 105 59 315;352;416 | var %r = who }
elseif ($1 == 5) { didtok -a themes 105 59 324;329;367;368;467;472;478;484;501;502 | var %r = mode }
elseif ($1 == 6) { didtok -a themes 105 59 263;401;403;404;405;411;421;432;433;436;442;451;481;482 | var %r = error }
elseif ($1 == 7) { didtok -a themes 105 59 211;212;213;214;215;216;217;218;219;223;243;244;247;248;249 | var %r = stats }
elseif ($1 == 8) { didtok -a themes 105 59 256;257;258;259;423 | var %r = admin }
elseif ($1 == 9) { didtok -a themes 105 59 006;007;271;272;302;303;305;306;323;381;382;438;443;603;604;606 | var %r = misc }
elseif ($1 == 10) { didtok -a themes 105 59 001;002;003;004;005;006;007;212;213;214;215;216;217;218;219;221;223;243;244;247;248;249;250;251;252;253;254;255;256;257;258;259;263;265;266;271;272;301;302;303;305;306;307;311;312;313;314;315;317;318;319;323;330;331;332;333;338;352;353;366;369;372;375;381;382;391;401;403;404;405;406;411;416;421;423;431;432;433;436;438;442;443;451;471;473;474;475;481;482;483;603;604;606 }
if (!$window(@theme.desc)) { window -h @theme.desc }
if (!$window(@theme.filter)) { window -h @theme.filter }
clear @theme.desc
loadbuf -tRaws @theme.desc $shortfn($scriptdir) $+ desc.src
did -c themes 105 1
theme.opt.dispraw $iif(%r,%r $+ .) $+ $did(105).seltext
}
alias -l theme.opt.dispraw {
filter -ww @theme.desc @theme.filter $iif(($numtok($1,46) == 2) || ($gettok($1,1,46) == All),$1,*. $+ $1) *
if ($filtered) {
tokenize 32 $line(@theme.filter,$line(@theme.filter,0))
did -ra themes 108 $3-
did -c themes 110 $theme.opt.inforaw($gettok($hg(theme.raw. $+ $1),1,32))
did -c themes 112 $gettok($hg(theme.raw. $+ $1),2,32)
if ($did(themes,110).sel == 5) { did -b themes 111,112,113,114 | did -e themes 109,110 }
else {
did -e themes 110,111,112
if ($did(themes,112).sel == 3) { did -b themes 109,110 | did -e themes 113,114 }
else { did -e themes 109,110 | did -b themes 113,114 }
}
did -ra themes 114 $gettok($hg(theme.raw. $+ $1),3-,32)
}
}
alias -l theme.opt.editraw {
if ($gettok($2,1,46) != all) { var %r = $2 }
elseif ($gettok($2,2,46) == All) { var %r = all }
else {
var %h = $hfind(theme.settings,theme.raw.*. $+ $gettok($2,2,46),1,w)
var %r = $gettok(%h,3-,46)
}
if (all isin %r) {
var %h = $hfind(theme.settings,theme.raw. $+ $iif(%r == all,*,$gettok(%r,1,46) $+ .*),0,w),%i = 1
while (%i <= %h) {
var %t = $hfind(theme.settings,theme.raw. $+ $iif(%r == all,*,$gettok(%r,1,46) $+ .*),%i,w),%o = $hg(%t)
if (d isin $1) { ha %t $3 $gettok(%o,2-,32) }
elseif (a isin $1) { ha %t $gettok(%o,1,32) $3 $gettok(%o,3-,32) }
elseif (f isin $1) { ha %t $gettok(%o,1-2,32) $3- }
inc %i
}
}
else {
var %o = $hg(theme.raw. $+ %r)
if (d isin $1) { ha theme.raw. $+ %r $3 $gettok(%o,2-,32) }
elseif (a isin $1) { ha theme.raw. $+ %r $gettok(%o,1,32) $3 $gettok(%o,3-,32) }
elseif (f isin $1) { ha theme.raw. $+ %r $gettok(%o,1-2,32) $3- }
}
}
alias -l theme.opt.inforaw {
if ($1 == 5) { return 0 }
if ($1 == 4) { return 1 }
if ($1 == 3) { return 2 }
if ($1 == 2) { return 3 }
if ($1 == 1) { return 4 }
return 5
}
alias -l theme.opt.restoreraws {
window -h @theme.restore
loadbuf -tRaws @theme.restore $shortfn($scriptdir) $+ desc.src
var %l = $line(@theme.restore,0),%i = 1
while (%i <= %l) {
if ($line(@theme.restore,%i)) { ha theme.raw. $+ $gettok($ifmatch,1-2,32) 2 }
inc %i
}
window -c @theme.restore
}
alias -l theme.list {
if ($dialog(themes)) {
if ($1 == -a) && ($isfile($2-)) {
if ($right($2-,4) == .mts) && ($theme.info(mtsversion,$2-)) && ($theme.info(name,$2-)) { var %n = $ifmatch,%t = MTS }
elseif ($right($2-,4) == .xml) && ($theme.info(xtsversion,$2-)) { var %n = $left($nopath($2-),-4),%t = XTS }
else { var %n = $left($nopath($2-),-4),%t = ZIP }
if (!$hg(theme.list.name)) { var %n = $nopath($2-)) }
if ($hg(theme.list.format) == 2) { var %t = $theme.info(version,$2-) }
did -a themes 1 0 0 0 0 %n 0 0 0 %t 0 0 0 $2-
}
else {
did -r themes 1
if ($hg(theme.list.format) == 1) { did -i $dname 1 1 headerdims 74:1 35:2 0:3 }
elseif ($hg(theme.list.format) == 2) { did -i $dname 1 1 headerdims 72:1 37:2 0:3 }
else { did -i $dname 1 1 headerdims 109:1 0:2 0:3 }
var %i = 1
while ($themesdir(%i)) {
var %f = $ifmatch
var %m = $findfile(%f,*.mts,0,theme.list -a $1-)
var %x = $findfile(%f,*.xml,0,theme.list -a $1-)
if ($hg(theme.list.zip)) { var %z = $findfile(%f,*.zip,0,theme.list -a $1-) }
if (!$did(themes,1).sel) && ($hgt(file)) {
if (%f isin $hgt(file)) { did -c themes 1 $didwm(themes,1,* $hgt(file)) }
elseif ($scriptdirextracted\ isin $hgt(file)) { did -c themes 1 $didwm(themes,1,* $+ $left($nopath($hgt(file)),-4) $+ .zip) }
}
inc %i
}
if (!$did(themes,1).sel) { did -c themes 1 2 }
theme.dispinfo $cell(themes,1,$did(themes,1).sel,3)
}
}
}
alias -l theme.dispinfo {
if ($1 == -p) { var %f = $2- }
else { var %f = $1- }
if ($right(%f,4) == .mts) { var %t = m }
elseif ($right(%f,4) == .xml) { var %t = x }
elseif ($right(%f,4) == .zip) { var %t = z }
if ($dialog(themes)) && ($isfile(%f)) {
if (%t == z) {
var %z = $scriptdirextracted\ $+ $left($nopath(%f),-4) $+ \
ha theme.extract $+(disp, ,%f, ,%z)
if (!$isdir(%z)) { szip SUnZipFile %f > %z }
else { .signal SZIP Z_OK %f }
return
}
elseif (%t == m) && (($theme.info(mtsversion,%f) > $mtsversion) || ($theme.info(mtsversion,%f) < 1.0) || (!$theme.info(mtsversion,%f)) || (!$theme.info(name,%f))) { var %e = 1 }
elseif (%t == x) && (($theme.info(xtsversion,%f) > $xtsversion) || (!$theme.info(xtsversion,%f))) { var %e = 1 }
did -ra themes 32 $shorten(55,%f).cutpath
if (%e) {
did -b themes 2,3,12,13,33,34,35,36,37,38,39,40,41,42,43,44
did -r themes 36,38,40,42,43
did -ra themes 34 (invalid theme file)
did -ra themes 2 Default
did -c themes 2 1
}
else {
did -e themes 2,3,12,13,33,34,35,36,37,38,39,40,41,42,43,44
did -ra themes 34 $theme.info($iif(%t == x,th) $+ name,%f)
did -ra themes 36 $theme.info(version,%f) ( $+ $upper(%t) $+ TS standard v $+ $theme.info(%t $+ tsversion,%f) $+ )
did -ra themes 38 $theme.info(author,%f)
did -ra themes 40 $theme.info(email,%f)
did -ra themes 42 $theme.info(website,%f)
if (%t == m) {
did -ra themes 43 $theme.info(description,%f)
did -ra themes 2 Default
var %i = 1,%s = $theme.info(schemenames,%f)
while ($gettok(%s,%i,59)) { did -a themes 2 $ifmatch | inc %i }
}
elseif (%t == x) {
did -ra themes 43 Date of creation: $theme.info(cdate,%f) $crlf $+ Last update: $theme.info(udate,%f) $crlf $crlf $+ Desc: $theme.info(desc,%f)
did -r themes 2
var %i = 1,%s = $theme.info(schemenames,%f)
while ($gettok(%s,%i,59)) { did -a themes 2 $ifmatch $iif(%i == 1,(default)) | inc %i }
}
did -c themes 2 1
if ($did(themes,2).lines > 1) { did -e themes 2 }
else { did -b themes 2 }
if ($hgt(scheme)) && ($hg(theme.folder) isin $hgt(file)) { did -c themes 2 $didwm(themes,2,$hgt(scheme)) }
else { did -c themes 2 1 }
if ($1 == -p) || (p isin $theme.options(add)) || (a isin $theme.options(add)) { theme.preview $iif($did(themes,2).sel > 1,$calc($did(themes,2).sel - 1)) %f }
}
}
}
alias -l theme.clearcache {
if ((p isin $1) || (!$1)) && ($findfile($scriptdirpreview\,*.bmp,0)) {
if ($input(Are you sure you wish to delete all cached previews? $crlf $crlf $+ There are currently $ifmatch previews cached.,yw,Theme Engine MX)) {
did -ra themes 11 Preview: none | did -h themes 16 | did -v themes 14,15
var %p = $findfile($scriptdirpreview\,*.bmp,0,.remove " $+ $1- $+ ")
}
}
if ((z isin $1) || (!$1)) && ($finddir($scriptdirextracted\,*,0)) {
var %i = $ifmatch
if ($dll(szip.dll)) { dll -u $ifmatch }
while ($finddir($scriptdirextracted\,*,%i)) {
var %f = $ifmatch $+ \
if ($nofile($hgt(file)) isin %f) { dec %i | if (%i == 0) { break } | else { continue } }
var %d = $findfile(%f,*,0,.remove " $+ $1- $+ ")
.rmdir " $+ %f $+ "
dec %i
if (%i == 0) { break }
}
}
}
on *:SIGNAL:SZIP:{
if ($1 == Z_OK) && ($hg(theme.extract)) {
var %a = $gettok($ifmatch,1,9),%z = $gettok($ifmatch,2,9),%f = $gettok($ifmatch,3,9),%o = $gettok($ifmatch,4,9)
if ($2- == %z) && (($findfile(%f,*.mts,1,var %t = $1-)) || ($findfile(%f,*.xml,1,var %t = $1-))) {
if (%a == disp) { theme.dispinfo %t }
elseif (%a == load) { theme.load %o %t }
elseif (%a == preview) { theme.preview %o %t }
}
hdel theme.settings theme.extract
}
}
dialog -l theme.folders {
title "Theme folders"
size -1 -1 150 99
option dbu
list 1, 2 2 146 85, size extsel
button "&Add", 2, 2 88 25 10
button "&Remove", 3, 29 88 30 10
button "&Ok", 4, 86 88 30 10, ok default
button "&Cancel", 5, 118 88 30 10, cancel
}
on *:dialog:theme.folders:*:*:{
if ($devent == init) {
mdx SetMircVersion $version
mdx MarkDialog $dname
mdx SetControlMDX $dname 1 ListView rowselect report single showsel labeltip > $mdxdir $+ views.mdx
did -i $dname 1 1 headerdims 211:1 60:2
did -i $dname 1 1 headertext Folder Themes
var %i = 1
while ($themesdir(%i)) {
var %f = $ifmatch,%m = $findfile(%f,*.mts,0),%x = $findfile(%f,*.xml,0),%z = $findfile(%f,*.zip,0)
did -a $dname 1 0 0 0 0 %f 0 0 0 $calc(%m + %x + %z)
inc %i
}
}
if ($devent == sclick) {
if ($did == 2) {
var %f = $$sdir($mircdir,Choose a theme folder)
var %m = $findfile(%f,*.mts,0),%x = $findfile(%f,*.xml,0)
did -a $dname 1 0 0 0 0 %f 0 0 0 $calc(%m + %x + %z)
}
if ($did == 3) {
var %d = $$input(Are you sure you wish to delete the folder: $crlf $crlf $+ $cell($dname,1,$did(1).sel,1),wy,Theme folders)
did -d $dname 1 $did(1).sel
}
if ($did == 4) {
ha theme.folder
var %f = 2
while ($did(1,%f)) {
var %a = $gettok($gettok($ifmatch,6-,32),1,9)
ha theme.folder $addtok($hg(theme.folder),%a,59)
inc %f
}
}
}
}
dialog -l theme.tstamp {
title "Edit timestamp"
size -1 -1 120 38
option dbu
edit "", 1, 3 2 114 10, autohs
button "", 2, 3 14 114 10
text "", 3, 2 25 116 1
button "&Reset", 4, 3 27 25 10
button "&Ok", 5, 60 27 25 10, ok
button "&Cancel", 6, 87 27 30 10, cancel
}
on *:dialog:theme.tstamp:*:*:{
var %t = $iif($theme.current == mts,m,x)
if ($devent == init) {
mdx SetMircVersion $version
mdx MarkDialog $dname
mdx SetControlMDX $dname 2 Window > $mdxdir $+ dialog.mdx
mdx SetBorderStyle $dname 3 staticedge
if ($window(@theme.tstamp)) { window -c @theme.tstamp }
window -hl @theme.tstamp
did -a $dname 2 grab $window(@theme.tstamp).hwnd @theme.tstamp
if (!$hfind(theme.current,timestampformatold,1)) { hat timestampformatold $hgt(timestampformat) }
did -a $dname 1 $eval($hgt(timestampformat))
aline @theme.tstamp $eval($time($theme.parse(%t,$hgt(timestampformat))))
}
if ($devent == sclick) {
if ($did == 4) {
did -ra $dname 1 $eval($hgt(timestampformatold))
clear @theme.tstamp
aline @theme.tstamp $eval($time($theme.parse(%t,$hgt(timestampformatold))))
}
if ($did == 5) {
hat timestampformat $did(1)
.timestamp -f $theme.parse(%t,$did(1))
}
}
if ($devent == edit) && ($did == 1) {
clear @theme.tstamp
if ($did(1)) { aline @theme.tstamp $eval($time($theme.parse(%t,$ifmatch))) }
}
}
dialog theme.font {
title "Change fonts"
size -1 -1 130 95
option dbu
tab "Set fonts", 10, 2 0 126 80
tab "Font replacement", 30
button "&Ok", 1, 66 83 30 10, ok
button "&Cancel", 2, 98 83 30 10, cancel
text "Change font for:", 11, 6 16 50 8, tab 10
text "&Default:", 12, 6 28 50 8, tab 10
combo 13, 60 27 64 50, drop size tab 10
text "(status, @windows, finger, serv, etc..)", 18, 6 35 50 16, disable tab 10
text "C&hannels:", 14, 6 50 50 8, tab 10
combo 15, 60 49 64 50, drop size tab 10
text "&Queries:", 16, 6 64 50 8, tab 10
combo 17, 60 63 64 50, drop size tab 10
text "", 19, 0 0 0 0, tab 10
check "Enable &font replacement", 31, 6 16 70 8, tab 30
list 32, 6 26 118 42, size extsel tab 30
button "&Add", 33, 6 69 25 10, tab 30
button "&Edit", 34, 33 69 25 10, tab 30
button "&Remove", 35, 94 69 30 10, tab 30
}
on *:dialog:theme.font:*:*:{
if ($devent == init) {
mdx SetMircVersion $version
mdx MarkDialog $dname
mdx SetControlMDX $dname 32 ListView rowselect report single showsel labeltip sortascending > $mdxdir $+ views.mdx
did -i $dname 32 1 headerdims 108:1 107:2
did -i $dname 32 1 headertext Font Replacement
var %l = 1,%n,%c
while (%l <= 3) {
if (%l == 1) { %n = default | %c = 13 }
elseif (%l == 2) { %n = chan | %c = 15 }
else { %n = query | %c = 17 }
if ($hgt(font $+ %n)) {
var %f = $ifmatch,%i = 1
while ($gettok(%f,%i,59)) {
var %font = $gettok($ifmatch,1,44),%size = $gettok(%f,2,44),%bold = $gettok(%f,3,44)
if ($isfont(%font)) { did -a $dname %c $+(%font,$chr(44),$chr(32),%size,$iif(%bold,$chr(44) b)) }
inc %i
}
}
inc %l
}
did -a $dname 13,15,17 Other...
did -c $dname 13,15,17 1
if ($hg(theme.fontreplace)) { did -c $dname 31 }
var %i = 1,%h
while ($hfind(theme.settings,theme.frep.*,%i,w)) {
did -a $dname 32 0 0 0 0 $replace($mid($ifmatch,12),\~,$chr(32)) 0 0 0 $hg($ifmatch)
inc %i
}
}
if ($devent == sclick) {
if ($did == 1) {
if ($istok($did(19),13,59)) { tokenize 44 $did(13).seltext | theme.load.font default $1- }
if ($istok($did(19),15,59)) { tokenize 44 $did(15).seltext | theme.load.font chan $1- }
if ($istok($did(19),17,59)) { tokenize 44 $did(17).seltext | theme.load.font query $1- }
ha theme.fontreplace $did(31).state
var %f = 2
while ($did(32,%f)) {
ha theme.frep. $+ $replace($cell($dname,32,%f,1),$chr(32),\~) $cell($dname,32,%f,2)
inc %f
}
}
if ($did == 13) || ($did == 15) || ($did == 17) {
var %d = $did
if ($did(%d).sel == $did(%d).lines) && ($fontdll) {
tokenize 44 $ifmatch
did -i $dname %d 1 $+($4,$chr(44),$chr(32),$1,$iif(b isin $3,$chr(44) b))
}
did -c $dname %d 1
did -ra $dname 19 $addtok($did(19),%d,59)
}
if ($did == 33) { $dialog(theme.font.add,theme.font.frep,-4) }
if ($did == 34) && ($did(32).sel) { $dialog(theme.font.edit,theme.font.frep,-4) }
if ($did == 35) && ($did(32).sel) {
hdel theme.settings theme.frep. $+ $replace($cell($dname,32,$did(32).sel,1),$chr(32),\~)
did -d $dname 32 $did(32).sel
}
}
}
dialog -l theme.font.frep {
size -1 -1 145 44
option dbu
text "Original font:", 1 , 3 4 32 7
edit "", 2, 39 2 72 10, autohs
text "Replacement:", 4, 3 18 33 7
edit "", 5, 39 16 72 10, autohs
button "&Choose", 3, 113 2 30 10
button "C&hoose", 6, 113 16 30 10
text "", 7, 1 29 143 1
button "&Ok", 8, 81 32 30 10, default
button "&Cancel", 9, 113 32 30 10, cancel
}
on *:dialog:theme.font.*:*:*:{
if ($devent == init) {
mdx SetMircVersion $version
mdx MarkDialog $dname
mdx SetBorderStyle $dname 7 staticedge
if ($dname == theme.font.add) { dialog -t $dname Add replacement }
else {
dialog -t $dname Edit replacement
did -a $dname 2 $cell(theme.font,32,$did(theme.font,32).sel,1)
did -a $dname 5 $cell(theme.font,32,$did(theme.font,32).sel,2)
}
}
if ($devent == sclick) {
if ($did == 3) { if ($fontdll) { did -ra $dname 2 $gettok($ifmatch,4,44) } }
if ($did == 6) {
if ($fontdll) {
tokenize 44 $ifmatch
did -ra $dname 5 $+($4,$chr(44),$chr(32),$1,$iif(b isin $3,$+($chr(44),$chr(32),b)))
}
}
if ($did == 8) {
if (!$isfont($iif($gettok($did(5),1,44),$ifmatch,Font does not exist))) { var %f = $input(The font $+(',$gettok($did(5),1,44),') is not installed on your system!,ow,Font replacements) }
else {
var %a = $iif($dname == theme.font.add,-a theme.font 32,-o theme.font 32 $did(theme.font,32).sel)
did %a 0 0 0 0 $gettok($did(2),1,44) 0 0 0 $did(5)
dialog -x $dname
}
}
}
}
;############## LOADING AND UNLOADING ##################
alias theme.load {
var %fl,%s,%f
if ($left($1,1) == -) { if ($2 isnum) { %s = $2 | %f = $3- } | else { %f = $2- } }
elseif ($1 isnum) { %s = $1 | %f = $2- }
else { %f = $1- }
if ($right(%f,4) == .mts) { %fl = m }
elseif ($right(%f,4) == .xml) { %fl = x }
elseif ($right(%f,4) == .zip) { %fl = z }
%fl = %fl $+ $iif(a isin $1,frcnbteuwl,$right($1,-1))
if (%s) { %s = scheme $+ %s }
else { %s = $iif(m isin %fl,mts,default) }
if ($isfile(%f)) {
;; STEP ONE: VERSION CHECKING / UNZIPPING
if (z isin %fl) {
var %z = $scriptdirextracted\ $+ $left($nopath(%f),-4) $+ \
ha theme.extract $+(load, ,%f, ,%z, ,$iif($remove(%fl,m,x,z),- $+ $ifmatch) $iif($2 isnum,$2))
if (!$isdir(%z)) { szip SUnZipFile %f > %z }
else { .signal SZIP Z_OK %f }
return
}
elseif (m isin %fl) && ($theme.info(mtsversion,%f) > $mtsversion) {
var %v = $$input(This theme file is invalid $+ $chr(44) it is made for MTS format $ifmatch $+ . This theme engine supports up to format $mtsversion $+ $chr(44) errors might occur. $crlf $crlf $+ Proceed?,yvwd,Invalid theme file)
if (%v == $no) { return }
}
elseif (x isin %fl) && ($theme.info(xtsversion,%f) > $xtsversion) {
var %v = $$input(This theme file is invalid $+ $chr(44) it is made for XTS format $ifmatch $+ . This theme engine supports up to format $xtsversion $+ $chr(44) errors might occur. $crlf $crlf $+ Proceed?,yvwd,Invalid theme file)
if (%v == $no) { return }
}
if ($dialog(themes)) { did -b themes 3 }
if ($dialog(theme.load)) { dialog -x theme.load }
if ($show) { dialog -m theme.load theme.load }
theme.load.show 3 1 0 2
if (w isin %fl) { wins -n }
if (l isin %fl) { scid -a clearall }
theme.load.show 2 1 0 11
theme.load.show 3 2 0 2
;; STEP TWO: UNLOADING OLD THEME
theme.load.show 1 Unloading current theme
if (u isin %fl) && ($theme.current) { .theme.unload }
elseif ($script($hgt(script))) { .unload -rsn " $+ $hgt(script) $+ " }
if ($dialog(theme.load)) { dialog -t theme.load Loading Theme... }
theme.load.show 2 2 0 11
;; STEP THREE: LOADING HASH TABLE
theme.load.show 3 0 0 2
theme.load.show 1 Generating source
if ($hget(theme.current)) { hfree theme.current }
hmake theme.current 15
theme.load.show 3 1 0 2
hat file %f
if (m isin %fl) { hat scheme $theme.info(%s,%f) }
elseif (x isin %fl) { hat scheme $gettok($theme.info(schemenames,%f),$iif(%s != default,$calc($right(%s,-6) + 1)),59) }
theme.load.hash $iif(h isin %fl,-h) %f
theme.load.show 2 3 0 11
theme.load.show 3 2 0 2
;; STEP FOUR: SCHEME OVERLAY
theme.load.show 3 0 0 1
theme.load.show 1 Overlaying scheme
if ($hgt(scheme)) { theme.load.hash $right(%s,-6) %f }
if (!$hgt(colors)) { hat colors 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 (!$hgt(rgbcolors)) { hat rgbcolors $rgbdef }
hsave -o theme.current $shortfn($scriptdir) $+ current.src
theme.load.show 2 4 0 11
;; STEP FIVE: LOADING THEME FILE
theme.load.show 3 0 0 3
if (e isin %fl) {
theme.load.show 1 Loading scripted events
if (m isin %fl) { hat script $nofile(%f) $+ $hgt(script) }
elseif (x isin %fl) { hat script %f }
theme.load.show 3 1 0 3
if ($isfile($hgt(script))) { .load -rs " $+ $hgt(script) $+ " }
theme.load.show 3 2 0 3
}
theme.load.show 2 5 0 11
theme.load.show 3 3 0 3
;; STEP SIX: TIMESTAMP APPLYING
theme.load.show 3 0 0 2
if (t isin %fl) {
theme.load.show 1 Applying timestamp settings
.timestamp on
theme.load.show 3 1 0 2
if (m isin %fl) { .timestamp -f $theme.parse(m,$hgt(timestampformat)) }
elseif (x isin %fl) { .timestamp -f $theme.parse(x,$hgt(timestampformat)) }
}
else { .timestamp off | .timestamp -f [HH:nn] }
theme.load.show 2 6 0 11
theme.load.show 3 2 0 2
;; STEP SEVEN: LOAD EVENT
theme.load.show 1 Applying load event
theme.load.show 3 0 0 1
if (m isin %fl) && ($hgt(load)) {
theme.vars echo $color(info) $+(-at,$iif($hgt(indent),i $+ $ifmatch))
if ($gettok($hgt(load),1,32) == !script) { $eval($gettok( [ $hgt(load) ] ,2-,32),2) }
else { %:echo $theme.parse(m,$hgt(load)) }
}
elseif (x isin %fl) {
if ($hgt(init)) { $eval($hgt(init),2)) }
if ($hgt(load)) { echo -a $hgt(load) }
}
theme.load.show 2 7 0 11
theme.load.show 3 1 0 1
;; STEP EIGHT: COLOR LOADING
theme.load.show 3 0 0 15
if (c isin %fl) {
theme.load.show 1 Loading colors
.theme.load.resetcolors
if (h isin %fl) {
var %c = 1
while ($gettok($hgt(rgbcolors.theme),%c,32)) {
var %r = %r $+ , $+ $rgb( [ $theme.load.color($ifmatch) ] )
inc %c
}
wi palettes $theme.colornum($hgt(name)) $right(%r,-1)
hat rgbpalette.theme $right(%r,-1)
var %c = $hgt(colors.theme)
if ($numtok(%c,44) == 26) { var %c = %c $+ , $+ $gettok(%c,-1,44) }
if ($numtok(%c,44) == 27) { var %c = %c $+ , $+ $gettok(%c,22,44) }
wi colors $theme.colornum($hgt(name)) $hgt(name) $+ , $+ %c
hat colorspalette.theme $hgt(name) $+ , $+ %c
var %i = 1,%s = $hgt(schemenames)
while ($gettok(%s,$iif(m isin %fl,%i,$calc(%i + 1)),59)) {
var %n = $ifmatch
var %c = 1,%r,%g = $iif($hgt(rgbcolors.scheme $+ %i),$ifmatch,$hgt(rgbcolors.theme))
while ($gettok(%g,%c,32)) {
var %r = %r $+ , $+ $rgb( [ $theme.load.color($ifmatch) ] )
inc %c
}
wi palettes $theme.colornum($hgt(name) - %n) $right(%r,-1)
hat rgbpalette.scheme $+ %i $right(%r,-1)
var %c = $iif($hgt(colors.scheme $+ %i),$ifmatch,$hgt(colors.theme))
if ($numtok(%c,44) == 26) { var %c = %c $+ , $+ $gettok(%c,-1,44) }
if ($numtok(%c,44) == 27) { var %c = %c $+ , $+ $gettok(%c,22,44) }
wi colors $theme.colornum($hgt(name) - %n) $hgt(name) - %n $+ , $+ %c
hat colorspalette.scheme $+ %i $hgt(name) - %n $+ , $+ %c
theme.load.show 3 %i 0 $numtok(%s,59)
inc %i
}
.color -ls $hgt(name) $iif($hgt(scheme),- $hgt(scheme))
}
else {
var %c = 1,%g = $hgt(rgbcolors)
while ($gettok(%g,%c,32)) {
var %r = %r $+ , $+ $rgb( [ $theme.load.color($ifmatch) ] )
inc %c
}
wi palettes $theme.colornum($hgt(name)) $right(%r,-1)
hat rgbpalette.theme $right(%r,-1)
var %c = $hgt(colors)
if ($numtok(%c,44) == 26) { var %c = %c $+ , $+ $gettok(%c,-1,44) }
if ($numtok(%c,44) == 27) { var %c = %c $+ , $+ $gettok(%c,22,44) }
wi colors $theme.colornum($hgt(name)) $hgt(name) $+ , $+ %c
hat colorspalette.theme $hgt(name) $+ , $+ %c
.color -ls $hgt(name)
}
}
theme.load.show 2 8 0 11
;; STEP NINE: NICKLIST COLOR APPLYING
theme.load.show 3 0 0 1
if (n isin %fl) {
theme.load.show 1 Applying nicklist colors
.cnick -r $!me
theme.load.show 3 1 0 1
while ($cnick(0)) { .cnick -r * }
theme.load.show 3 2 0 2
theme.load.nicks m0 clineme
theme.load.show 3 8 0 3
theme.load.nicks m0 clineowner .
theme.load.show 3 3 0 4
theme.load.nicks m0 clineop @
theme.load.show 3 4 0 5
theme.load.nicks m0 clinehop %
theme.load.show 3 5 0 6
theme.load.nicks m0 clinevoice +
theme.load.show 3 6 0 7
theme.load.nicks m0 clineregular
theme.load.show 3 7 0 8
theme.load.nicks ovpym0 clinefriend
theme.load.show 3 9 0 9
theme.load.nicks im0 clineenemy
theme.load.show 3 10 0 10
theme.load.nicks m0 clineircop
theme.load.show 3 11 0 11
}
theme.load.show 2 9 0 11
;; STEP TEN: FONT APPLYING
theme.load.show 3 0 0 1
if (f isin %fl) {
theme.load.show 1 Applying font settings
remi fonts
theme.load.show 3 1 0 3
if (!$hgt(fontchan)) { hat fontchan $hgt(fontdefault) }
if (!$hgt(fontquery)) { hat fontquery $hgt(fontdefault) }
var %l = 1,%n
while (%l <= 3) {
if (%l == 1) { %n = default }
elseif (%l == 2) { %n = chan }
else { %n = query }
if ($hgt(font $+ %n)) {
var %font = $ifmatch,%i = 1
while ($gettok(%font,%i,59)) {
var %fnt = $gettok($ifmatch,1,44),%size = $gettok(%font,2,44),%bold = $gettok(%font,3,44)
if ($isfont(%fnt)) { theme.load.font %n %fnt %size %bold }
inc %i
}
}
inc %l
}
}
else { theme.load.resetfont }
theme.load.show 2 10 0 11
theme.load.show 3 3 0 3
;; STEP ELEVEN: BACKGROUND IMAGES APPLYING
theme.load.show 3 0 0 1
theme.load.resetback
if (b isin %fl) {
theme.load.show 1 Applying background images
remi background
if ($hgt(imagestatus)) { theme.load.background status $ifmatch }
if ($hgt(imagechan)) { theme.load.background chan $ifmatch }
if ($hgt(imagequery)) { theme.load.background query $ifmatch }
if ($hgt(imagemirc)) { theme.load.background mirc $ifmatch }
if ($hgt(imagetoolbar)) { theme.load.background toolbar $ifmatch }
if ($hgt(imagebuttons)) { theme.load.background buttons $ifmatch }
if ($hgt(imageswitchbar)) { theme.load.background switchbar $ifmatch }
}
theme.load.show 2 11 0 11
theme.load.show 3 4 0 4
if (w isin %fl) { wins -r }
if ($dialog(theme.load)) { dialog -x theme.load }
if ($dialog(themes)) { did -e themes 3,4 }
}
else { themes }
}
alias -l theme.load.hash {
if ($left($1,1) == -) && ($2 isnum) { var %fl = $1,%s = $2,%f = $3- }
elseif ($left($1,1) == -) && ($2 !isnum) { var %fl = $1,%f = $2- }
elseif ($1 isnum) { var %s = $1,%f = $2- }
else { var %f = $1- }
var %t = $iif($right(%f,4) == .mts,m,x),%ha = $iif(p isin %fl,hap,hat)
if (%t == m) {
if ($fopen(pre)) { .fclose pre }
.fopen pre " $+ %f $+ "
if ($ferr) { .fclose pre | return }
if (%s) { .fseek -w pre $+($chr(91),scheme $+ %s,$chr(93)) | var %l = $fread(pre) }
var %r1 = 1,%r2 = $lines(%f)
while (!$feof) {
if ($fread(pre)) {
tokenize 32 $ifmatch
if ($1 == [mts]) || (!$1) || ($left($1,1) == $chr(59)) { continue }
elseif ($+($chr(91),scheme*,$chr(93)) iswm $1) { .fclose pre | break }
else { %ha $lower($1) $2- }
}
theme.load.show 3 %r1 0 %r2
inc %r1
}
if ($fopen(pre)) { .fclose pre }
did -ra theme.load 3 0 0 1
hat schemenames $theme.info(schemenames,%f)
if (h isin %fl) {
var %i = 1,%sn = $hgt(schemenames)
while ($gettok(%sn,%i,59)) {
hat colors.scheme $+ %i $theme.info(%i,colors,%f)
hat rgbcolors.scheme $+ %i $theme.info(%i,rgbcolors,%f)
theme.load.show 3 %i 0 $numtok(%sn,59)
inc %i
}
hat allschemesloaded 1
}
hat colors.theme $hgt(colors)
hat rgbcolors.theme $hgt(rgbcolors)
theme.load.show 3 1 0 1
}
elseif (%t == x) {
xml CreateParser xts
xml StartElement xts theme.xts.parse -s $+ %s
xml EndElement xts theme.xts.parse -e
xml Data xts theme.xts.parse -dt
xml File xts " $+ %f $+ "
xml ParseFile xts
xml FreeParser xts
unset %section %item %scheme
hat name $left($nopath(%f),-4)
theme.load.show 3 0 0 1
hat schemenames $theme.info(schemenames,%f)
if (h isin %fl) {
var %i = 1,%sn = $hgt(schemenames)
while ($gettok(%sn,$calc(%i + 1),59)) {
hat colors.scheme $+ %i $theme.info(%i,colors,%f)
hat rgbcolors.scheme $+ %i $theme.info(%i,rgbcolors,%f)
theme.load.show 3 %i 0 $numtok(%sn,59)
inc %i
}
hat allschemesloaded 1
}
hat colors.theme $hgt(colors)
hat rgbcolors.theme $hgt(rgbcolors)
theme.load.show 3 1 0 1
}
}
alias theme.xts.parse {
if (-s isin $1) {
if ($3 == info) && ($right($1,-2) !isnum) { %section = info | unset %item }
elseif ($3 == default) || ((scheme* iswm $3) && ($3 != schemes)) && (!%scheme) {
if ($right($1,-2) isnum) && ($3 == scheme $+ $right($1,-2)) { %scheme = $3 }
elseif ($1 == -s) { %scheme = default }
unset %section %item
}
elseif (%section == info) { %item = $iif($3 == desc,description,$3) }
elseif (%scheme) {
if (($3 == font) || ($3 == image) || ($3 == cnick) || ($3 == text) || ($3 == notice) || ($3 == action) || ($3 == event) || ($3 == ctcp) || ($3 == raw)) && (%scheme) { %section = $3 | unset %item }
elseif (!%section) {
if ($3 == pre) { %item = prefix }
elseif ($3 == timestamp) { %item = timestampformat }
else { %item = $3 }
}
elseif (%section == font) { %item = font $+ $iif($3 == base,default,$3) }
elseif (%section == image) { %item = image $+ $3 }
elseif (%section == cnick) { %item = cline $+ $iif($3 == reg,regular,$3) }
elseif (%section == text) { %item = text $+ $iif($3 == targetself,msgself,$3) }
elseif (%section == notice) {
if ($3 == reg) { %item = notice }
elseif ($3 == regself) { %item = noticeself }
elseif ($3 == chanself) { %item = noticeselfchan }
else { %item = notice $+ $3 }
}
elseif (%section == action) { %item = action $+ $3 }
elseif (%section == event) {
if ($3 == modechan) { %item = mode }
elseif ($3 == unnotify) { %item = unotify }
elseif ($3 == wallops) { %item = wallop }
elseif ($3 == snotice) { %item = noticeserver }
elseif ($3 == dnsstart) { %item = dns }
elseif ($3 == dnsfind) { %item = dnsresolve }
else { %item = $3 }
}
elseif (%section == ctcp) {
if ($3 == reg) { %item = ctcp }
elseif ($3 == regself) { %item = ctcpself }
else { %item = ctcp $+ $3 }
}
elseif (%section == raw) { %item = raw. $+ $right($3,-1) }
else { unset %item }
}
}
elseif ($1 == -e) {
if ($3 == info) { unset %section %item }
elseif ($3 == %scheme) { xml FreeParser xts }
}
elseif (-d isin $1) && (%item) {
if (image* iswm %item) { $iif(t isin $1,hat,hap) $lower(%item) $gettok($3-,2,44) $gettok($3-,1,44) }
else { $iif(t isin $1,hat,hap) $lower(%item) $3- }
}
}
alias -l theme.load.resetcolors {
remini $shortfn($nofile($mircini)) $+ $nopath($mircini) colors
remini $shortfn($nofile($mircini)) $+ $nopath($mircini) palettes
wi colors n0 mIRC Classic,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,7,0
wi colors n1 mIRC Modern,0,6,4,7,2,3,4,3,3,3,3,1,5,2,6,1,14,2,3,5,1,0,1,0,1,14,5,0
wi colors n2 Monochrome State,1,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,1,15,1,15,15,15,14
wi colors n3 Placid Hues,0,2,4,7,2,3,3,3,3,15,3,1,5,7,6,1,3,2,3,5,1,0,1,0,1,15,6,0
wi colors n4 Rainbow Sky,0,7,4,5,1,1,3,3,8,13,3,14,2,7,13,5,3,8,3,4,14,0,5,0,3,14,10,0
wi palettes n0 16777215,0,8323072,37632,255,127,10223772,32764,65535,64512,9671424,16776960,16515072,16711935,8355711,13816530
wi palettes n1 16777215,0,11010048,3299627,240,4737160,8388720,26832,1632504,57344,94740,16776960,16515072,16711935,8355711,13816530
wi palettes n2 16777215,0,8323072,37632,255,127,10223772,32764,65535,64512,9671424,16776960,16515072,16711935,8355711,13816530
wi palettes n3 15658734,0,12140,1508038,255,10964547,6579262,33023,65535,4227072,9474048,9920537,16711680,16711935,6579300,8553090
wi palettes n4 16777215,3618615,12087408,16744448,255,32764,65535,43008,9671424,16776960,16515072,16711935,8355711,16711808,8355711,13816530
if ($show) { color -ls mIRC Classic }
}
alias -l theme.load.color {
if ($remove($1,$chr(44)) isnum) { return $1- }
else {
if ($1 == Aliceblue) { return 240,248,255 }
elseif ($1 == Antiquewhite) { return 250,235,215 }
elseif ($1 == Aqua) { return 0,255,255 }
elseif ($1 == Aquamarine) { return 127,255,212 }
elseif ($1 == Azure) { return 240,255,255 }
elseif ($1 == Beige) { return 245,245,220 }
elseif ($1 == Bisque) { return 255,228,196 }
elseif ($1 == Black) { return 0,0,0 }
elseif ($1 == Blanchedalmond) { return 255,235,205 }
elseif ($1 == Blue) { return 0,0,255 }
elseif ($1 == Blueviolet) { return 138,43,226 }
elseif ($1 == Brown) { return 165,42,42 }
elseif ($1 == Burlywood) { return 222,184,135 }
elseif ($1 == Cadetblue) { return 95,158,160 }
elseif ($1 == Chartreuse) { return 127,255,0 }
elseif ($1 == Chocolate) { return 210,105,30 }
elseif ($1 == Coral) { return 255,127,80 }
elseif ($1 == Cornflowerblue) { return 100,149,237 }
elseif ($1 == Cornsilk) { return 255,248,220 }
elseif ($1 == Crimson) { return 220,20,60 }
elseif ($1 == Cyan) { return 0,255,255 }
elseif ($1 == Darkblue) { return 0,0,139 }
elseif ($1 == Darkcyan) { return 0,139,139 }
elseif ($1 == Darkgoldenrod) { return 184,134,11 }
elseif ($1 == Darkgray) { return 169,169,169 }
elseif ($1 == Darkgreen) { return 0,100,0 }
elseif ($1 == Darkkhaki) { return 189,183,107 }
elseif ($1 == Darkmagenta) { return 139,0,139 }
elseif ($1 == Darkolivegreen) { return 85,107,47 }
elseif ($1 == Darkorange) { return 255,140,0 }
elseif ($1 == Darkorchid) { return 153,50,204 }
elseif ($1 == Darkred) { return 139,0,0 }
elseif ($1 == Darksalmon) { return 233,150,122 }
elseif ($1 == Darkseagreen) { return 143,188,143 }
elseif ($1 == Darkslateblue) { return 72,61,139 }
elseif ($1 == Darkslategray) { return 47,79,79 }
elseif ($1 == Darkturquoise) { return 0,206,209 }
elseif ($1 == Darkviolet) { return 148,0,211 }
elseif ($1 == Deeppink) { return 255,20,147 }
elseif ($1 == Deepskyblue) { return 0,191,255 }
elseif ($1 == Dimgray) { return 105,105,105 }
elseif ($1 == Dodgerblue) { return 30,144,255 }
elseif ($1 == Firebrick) { return 178,34,34 }
elseif ($1 == Floralwhite) { return 255,250,240 }
elseif ($1 == Forestgreen) { return 34,139,34 }
elseif ($1 == Fuchsia) { return 255,0,255 }
elseif ($1 == Gainsboro) { return 220,220,220 }
elseif ($1 == Ghostwhite) { return 248,248,255 }
elseif ($1 == Gold) { return 255,215,0 }
elseif ($1 == Goldenrod) { return 218,165,32 }
elseif ($1 == Gray) { return 128,128,128 }
elseif ($1 == Green) { return 0,128,0 }
elseif ($1 == Greenyellow) { return 173,255,47 }
elseif ($1 == Honeydew) { return 240,255,240 }
elseif ($1 == Hotpink) { return 255,105,180 }
elseif ($1 == Indianred) { return 205,92,92 }
elseif ($1 == Indigo) { return 75,0,130 }
elseif ($1 == Ivory) { return 255,255,240 }
elseif ($1 == Khaki) { return 240,230,140 }
elseif ($1 == Lavender) { return 230,230,250 }
elseif ($1 == Lavenderblush) { return 255,240,245 }
elseif ($1 == Lawngreen) { return 124,252,0 }
elseif ($1 == Lemonchiffon) { return 255,250,205 }
elseif ($1 == Lightblue) { return 173,216,230 }
elseif ($1 == Lightcoral) { return 240,128,128 }
elseif ($1 == Lightcyan) { return 224,255,255 }
elseif ($1 == Lightgoldenrodyellow) { return 250,250,210 }
elseif ($1 == Lightgreen) { return 144,238,144 }
elseif ($1 == Lightgrey) { return 211,211,211 }
elseif ($1 == Lightpink) { return 255,182,193 }
elseif ($1 == Lightsalmon) { return 255,160,122 }
elseif ($1 == Lightseagreen) { return 32,178,170 }
elseif ($1 == Lightskyblue) { return 135,206,250 }
elseif ($1 == Lightslategray) { return 119,136,153 }
elseif ($1 == Lightsteelblue) { return 176,196,222 }
elseif ($1 == Lightyellow) { return 255,255,224 }
elseif ($1 == Lime) { return 0,255,0 }
elseif ($1 == Limegreen) { return 50,205,50 }
elseif ($1 == Linen) { return 250,240,230 }
elseif ($1 == Magenta) { return 255,0,255 }
elseif ($1 == Maroon) { return 128,0,0 }
elseif ($1 == Mediumauqamarine) { return 102,205,170 }
elseif ($1 == Mediumblue) { return 0,0,205 }
elseif ($1 == Mediumorchid) { return 186,85,211 }
elseif ($1 == Mediumpurple) { return 147,112,216 }
elseif ($1 == Mediumseagreen) { return 60,179,113 }
elseif ($1 == Mediumslateblue) { return 123,104,238 }
elseif ($1 == Mediumspringgreen) { return 0,250,154 }
elseif ($1 == Mediumturquoise) { return 72,209,204 }
elseif ($1 == Mediumvioletred) { return 199,21,133 }
elseif ($1 == Midnightblue) { return 25,25,112 }
elseif ($1 == Mintcream) { return 245,255,250 }
elseif ($1 == Mistyrose) { return 255,228,225 }
elseif ($1 == Moccasin) { return 255,228,181 }
elseif ($1 == Navajowhite) { return 255,222,173 }
elseif ($1 == Navy) { return 0,0,128 }
elseif ($1 == Oldlace) { return 253,245,230 }
elseif ($1 == Olive) { return 128,128,0 }
elseif ($1 == Olivedrab) { return 104,142,35 }
elseif ($1 == Orange) { return 255,165,0 }
elseif ($1 == Orangered) { return 255,69,0 }
elseif ($1 == Orchid) { return 218,112,214 }
elseif ($1 == Palegoldenrod) { return 238,232,170 }
elseif ($1 == Palegreen) { return 152,251,152 }
elseif ($1 == Paleturquoise) { return 175,238,238 }
elseif ($1 == Palevioletred) { return 216,112,147 }
elseif ($1 == Papayawhip) { return 255,239,213 }
elseif ($1 == Peachpuff) { return 255,218,185 }
elseif ($1 == Peru) { return 205,133,63 }
elseif ($1 == Pink) { return 255,192,203 }
elseif ($1 == Plum) { return 221,160,221 }
elseif ($1 == Powderblue) { return 176,224,230 }
elseif ($1 == Purple) { return 128,0,128 }
elseif ($1 == Red) { return 255,0,0 }
elseif ($1 == Rosybrown) { return 188,143,143 }
elseif ($1 == Royalblue) { return 65,105,225 }
elseif ($1 == Saddlebrown) { return 139,69,19 }
elseif ($1 == Salmon) { return 250,128,114 }
elseif ($1 == Sandybrown) { return 244,164,96 }
elseif ($1 == Seagreen) { return 46,139,87 }
elseif ($1 == Seashell) { return 255,245,238 }
elseif ($1 == Sienna) { return 160,82,45 }
elseif ($1 == Silver) { return 192,192,192 }
elseif ($1 == Skyblue) { return 135,206,235 }
elseif ($1 == Slateblue) { return 106,90,205 }
elseif ($1 == Slategray) { return 112,128,144 }
elseif ($1 == Snow) { return 255,250,250 }
elseif ($1 == Springgreen) { return 0,255,127 }
elseif ($1 == Steelblue) { return 70,130,180 }
elseif ($1 == Tan) { return 210,180,140 }
elseif ($1 == Teal) { return 0,128,128 }
elseif ($1 == Thistle) { return 216,191,216 }
elseif ($1 == Tomato) { return 255,99,71 }
elseif ($1 == Turquoise) { return 64,224,208 }
elseif ($1 == Violet) { return 238,130,238 }
elseif ($1 == Wheat) { return 245,222,179 }
elseif ($1 == White) { return 255,255,255 }
elseif ($1 == Whitesmoke) { return 245,245,245 }
elseif ($1 == Yellow) { return 255,255,0 }
elseif ($1 == YellowGreen) { return 154,205,50 }
}
}
alias -l theme.load.nicks {
if ($hgt($2)) { .cnick - $+ $1 $iif($2 == clineme,$!me,*) $iif($hgt($2),$ifmatch) $3 }
}
alias -l theme.load.font {
if ($gettok($2-,-1,32) == b) { var %f = $gettok($2-,1- $+ $calc($0 - 3),32),%s = $gettok($2-,-2,32),%b = b }
else { var %f = $gettok($2-,1- $+ $calc($0 - 2),32),%s = $gettok($2-,-1,32) }
var %ini = $+(%f,$chr(44),$calc(%s + $iif(%b,700,400)),$chr(44),1)
if ($hg(theme.fontreplace)) && ($hg(theme.frep. $+ $replace(%f,$chr(32),\~))) {
tokenize 44 default, $+ $ifmatch
%f = $2
if ($remove($3,$chr(32)) isnum) { %s = $3 }
if ($4 == b) { var %b = b }
}
if ($isfont(%f)) && (%s) {
if ($1 == default) {
var %serv = $scon(0),%win = $window(0)
while (%serv) { scon %serv | font -ds $+ %b %s %f | dec %serv }
while (%win) { font -d $window(%win) %s %f | dec %win }
if ($window(Finger Window)) { font -dg $+ %b %s %f }
else { wi fonts ffinger %ini }
wi fonts flinks %ini
wi fonts flist %ini
wi fonts fwwwlist %ini
wi fonts fnotify %ini
wi fonts fdccg %ini
wi fonts fdccs %ini
}
elseif ($1 == chan) {
var %serv = $scon(0),%a,%p = -d $+ %b
while (%serv) {
scon %serv
var %i = $chan(0)
while (%i) { font %p $chan(%i) %s %f | dec %i | inc %a }
dec %serv
}
if (!%a) { wi fonts fchannel %ini }
}
elseif ($1 == query) {
var %serv = $scon(0),%a,%a2,%a3,%p = -d $+ %b
while (%serv) {
scon %serv
var %i = $query(0),%c = $chat(0),%j = $fserv(0)
while (%i) { font %p $query(%i) %s %f | dec %i | inc %a }
while (%c) { font %p $chat(%c) %s %f | dec %c | inc %a2 }
while (%j) { font %p $fserv(%j) %s %f | dec %j | inc %a3 }
dec %serv
}
if (!%a) { wi fonts fquery %ini }
if (!%a2) { wi fonts fchat %ini }
if (!%a3) { wi fonts fserv %ini }
wi fonts fmessage %ini
}
}
}
alias -l theme.load.resetfont {
remi fonts
theme.load.font default fixedsys 9
theme.load.font chan fixedsys 9
theme.load.font query fixedsys 9
}
alias -l theme.load.background {
var %s = $iif($1 != buttons,$2),%f = $nofile($hgt(file)) $+ $iif($1 != buttons,$3-,$2-),%ini = $+(",%f,",$chr(44),$calc($findtok(center fill normal stretch tile photo,%s,1,32) -1))
if ($isfile(%f)) {
%s = $iif(%s == stretch,r,$left(%s,1))
if ($1 == mirc) { background -me $+ %s " $+ %f $+ " }
elseif ($1 == toolbar) { background -l $+ %s " $+ %f $+ " }
elseif ($1 == buttons) { background -u " $+ %f $+ " }
elseif ($1 == switchbar) { background -h $+ %s " $+ %f $+ " }
else {
var %serv = $scon(0)
while (%serv) {
scon %serv
if ($1 == status) { background -se $+ %s " $+ %f $+ " }
elseif ($1 == chan) {
var %c = $chan(0),%a
while (%c) { background -e $+ %s $chan(%s) " $+ %f $+ " | dec %c | inc %a }
if (!%a) { wi background wchannel %ini }
}
elseif ($1 == query) {
var %q = $query(0),%c = $chat(0),%a,%a2
while (%q) { background -e $+ %s $query(%q) " $+ %f $+ " | dec %q | inc %a }
while (%c) { background -e $+ %s $chat(%s) " $+ %f $+ " | dec %c | inc %a2 }
if (!%a) { wi background wquery %ini }
if (!%a2) { wi background wchat %ini }
}
dec %serv
}
}
}
}
alias -l theme.load.resetback {
remi background
var %s = $scon(0)
while (%s) {
scon %s
background -xs
background -xm
background -xl
background -xu
background -xh
background -xg
var %c = $chan(0),%q = $query(0),%d = $chat(0),%w = $window(0)
while (%c) { background -x $chan(%c) | dec %c }
while (%q) { background -x $query(%q) | dec %q }
while (%d) { background -x $+(=,$chat(%d)) | dec %d }
while (%w) { if ($window(%w).type != picture) background -x $window(%w) | dec %w }
dec %s
}
}
alias theme.unload {
if (!$theme.current) { return }
if (w isin $1) || (a isin $1) { wins -n }
if (l isin $1) || (a isin $1) { scid -a clearall }
if ($dialog(themes)) { did -b themes 4 }
if ($dialog(theme.load)) { dialog -x theme.load }
if ($show) { dialog -m theme.load theme.load | dialog -t theme.load Unloading theme... }
if ($theme.current == mts) && ($hgt(unload)) {
theme.vars echo $color(info) $+(-at,$iif($hgt(indent),i $+ $ifmatch))
if ($gettok($hgt(unload),1,32) == !script) { $eval($gettok( [ $hgt(unload) ] ,2-,32),2) }
else { %:echo $theme.parse(m,$hgt(unload)) }
}
;; STEP ONE
theme.load.show 1 Restoring colors
theme.load.resetcolors
theme.load.show 2 1 0 7
;; STEP TWO
theme.load.show 1 Removing nickcolors
.cnick -r $!me
while ($cnick(0)) { .cnick -r * }
theme.load.show 2 2 0 7
;; STEP THREE
theme.load.show 1 Restoring rgb colors
theme.load.show 2 3 0 7
;; STEP FOUR
theme.load.show 1 Removing background images
theme.load.resetback
theme.load.show 2 4 0 7
;; STEP FIVE
theme.load.show 1 Restoring fonts
theme.load.resetfont
theme.load.show 2 5 0 7
;; STEP SIX
theme.load.show 1 Restoring timestamp
.timestamp on
.timestamp -f [HH:nn]
theme.load.show 2 6 0 7
;; STEP SEVEN
theme.load.show 1 Unloading files
if ($script($hgt(script))) { .unload -rsn $shortfn($nofile($hgt(script))) $+ $nopath($hgt(script)) }
if ($hget(theme.current)) { hfree theme.current }
if ($isfile($shortfn($scriptdir) $+ current.src)) { .remove $shortfn($scriptdir) $+ current.src }
theme.load.show 2 7 0 7
if ($dialog(theme.load)) { dialog -x theme.load }
if (w isin $1) { wins -r }
}
alias theme.scheme {
ha theme.edit.curscheme $iif($1,scheme $+ $1,theme)
if ($1) { hat scheme $gettok($hgt(schemenames),$iif($theme.current == mts,$1,$calc($1 + 1)),59) }
else { hat scheme }
if ($hgt(allschemesloaded)) {
if ($iif($hgt(scheme),$hgt(name) - $hgt(scheme),$hgt(name)) $+ ,* iswm $ri(colors,$theme.colornum($hgt(name) $iif($hgt(scheme),- $hgt(scheme))))) { .color -ls $hgt(name) $iif($hgt(scheme),- $hgt(scheme)) }
else { .theme.refresh | .color -ls $hgt(name) $iif($hgt(scheme),- $hgt(scheme)) }
}
else {
$iif(!$show,.) $+ theme.load - $+ $iif(a isin $theme.options(load),fcnsbite,$theme.options(load)) $+ $iif(h isin $theme.options(load),h) $+ $iif(a isin $theme.options(add),wlu,$theme.options(add)) $iif($1,$1) $hgt(file)
}
}
alias theme.refresh {
.theme.load.resetcolors
wi text theme $hgt(name) $iif($hgt(scheme),- $hgt(scheme))
wi palettes $theme.colornum($hgt(name)) $hgt(rgbpalette.theme)
wi colors $theme.colornum($hgt(name)) $hgt(colorspalette.theme)
var %i = 1,%s = $hgt(schemenames)
while ($gettok(%s,$iif($theme.current == mts,%i,$calc(%i + 1)),59)) {
wi palettes $theme.colornum($hgt(name) - $ifmatch) $hgt(rgbpalette.scheme $+ %i)
wi colors $theme.colornum($hgt(name) - $ifmatch) $hgt(colorspalette.scheme $+ %i)
inc %i
}
if ($show) && ($hgt(allschemesloaded)) { .color -ls $hgt(name) $iif($hgt(scheme),- $hgt(scheme)) }
}
;###################### ALIASES #########################
alias say {
if (!$theme.current) || (!$server) { say $1- }
elseif ($1 != $null) && (($active ischan) || ($query($active)) || ($left($active,1) == $chr(61))) { msg $active $1- }
}
alias say {
if (!$theme.current) || (!$server) {
if ($active == Status Window) { echo -a * You can't do this in the status window }
else { say $1- }
}
elseif ($1 != $null) && (($active ischan) || ($query($active)) || ($left($active,1) == $chr(61))) { msg $active $1- }
}
alias msg {
if (!$theme.current) || (!$server) { msg $1- }
elseif ($2 != $null) {
if ($show) {
if (!$window($1)) || ($1 != $active) { var %t = textmsgself }
elseif ($1 ischan) { var %t = textchanself }
else { var %t = textqueryself }
if ($hgt(%t)) && ($gettok($hg(theme.event.INPUT),1,32) != 2) {
var %i = $iif($hgt(indent),i $+ $ifmatch)
theme.vars echo $color(own) $iif(%t == textmsgself,-ta $+ %i,-tm $+ %i $1)
set -nu %::nick $me
set -nu %::chan $1
set -nu %::target $1
set -nu %::address $address($me,5)
if ($1 ischan) { set -u %::cmode $cmode($me,$1) }
set -u %::cnick $hgt(clineme)
set -nu %::me $me
set -nu %::text $2-
var %m = .msg
set -nu %:raw $1-
theme.text %t INPUT $iif($target,$ifmatch,$active) %::text
if ($window($1)) && ($1 != $active) {
theme.vars echo $color(own) -tm $+ %i $1
theme.text textqueryself $targe %::text
}
}
else { var %m = msg }
}
else { var %m = .msg }
%m $1-
}
}
alias dns {
if (!$theme.current) || (!$server) { dns $1- }
elseif ($hgt(dns)) {
if ($left($1,1) == -) { var %t = $2 }
else { var %t = $1 }
theme.vars echo $color(other) -a $+ $iif($hgt(indent),i $+ $ifmatch)
set -u %::nick %t
set -u %::address %t
set -u %:raw $1-
.dns $1-
if ($show) { theme.text dns DNS %t }
}
else { $iif($show,dns,.dns) $1- }
}
alias describe {
if (!$theme.current) || (!$server) { describe $1- }
else {
if ($1 ischan) || ($1 == Status) { var %t = actionchanself }
else { var %t = actionqueryself }
if ($1 != $null) && ($1 ischan) || ($query($1)) || ($left($1,1) == $chr(61)) {
if ($show) {
if ($hgt($iif($active ischan,actionchanself,actionqueryself))) && ($gettok($hg(theme.event.ACTION),1,32) != 2) {
theme.vars echo $color(action) -tm $+ $iif($hgt(indent),i $+ $ifmatch) $1
set -nu %::nick $active
set -nu %::chan $active
set -nu %::address $address($me,5)
if ($active ischan) { set -u %::cmode $cmode($me,$active) }
set -u %::cnick $cnick($me).color
set -nu %::me $me
set -nu %::text $2-
set -u %:raw $1-
var %m = .describe
theme.text %t ACTION %::text
}
else { var %m = describe }
}
else { var %m = .describe }
%m $1-
}
}
}
alias me {
if (!$theme.current) || (!$server) { me $1- }
elseif ($1 != $null) && (($active ischan) || ($query($active)) || ($left($active,1) == $chr(61))) { describe $active $1- }
}
alias amsg {
if (!$theme.current) || (!$server) { amsg $1- }
elseif ($1 != $null) {
set -u %:raw $1-
theme.msg amsg textchanself $1-
%m $1-
}
}
alias ame {
if (!$theme.current) || (!$server) { ame $1- }
elseif ($1 != $null) {
set -u %:raw $1-
theme.msg ame actionchanself $1-
%m $1-
}
}
alias qmsg {
if (!$theme.current) || (!$server) { qmsg $1- }
elseif ($1 != $null) {
set -u %:raw $1-
theme.msg qmsg textqueryself
%m $1-
}
}
alias qme {
if (!$theme.current) || (!$server) { qme $1- }
elseif ($1 != $null) {
set -u %:raw $1-
theme.msg qme textqueryself
%m $1-
}
}
alias notice {
if (!$theme.current) || (!$server) { notice $1- }
elseif ($2 != $null) {
if ($show) {
if ($hgt($iif($left($1,1) == $chr(35),noticechanself,noticeself))) {
theme.vars echo $color(notice) -ta $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::nick $1
set -nu %::target $1
set -nu %::chan $1
set -nu %::address $address($me,5)
if ($1 ischan) { set -u %::cmode $cmode($me,$1) }
set -u %::cnick $cnick($me).color
set -nu %::me $me
set -nu %::text $2-
var %m = .notice
set -u %:raw $1-
theme.text $iif($left($1,1) == $chr(35),noticechanself,noticeself) NOTICE
}
else { var %m = notice }
}
else { var %m = .notice }
%m $1-
}
}
alias ctcp {
if (!$theme.current) || (!$server) { ctcp $1- }
elseif ($2 != $null) {
set -u %:raw $1-
theme.ctcp ctcp CTCP $1-
%m $iif($2 == PING,$1 $2 $ctime,$1-)
theme.sound ctcpself
}
}
alias ctcpreply {
if (!$theme.current) || (!$server) { ctcpreply $1- }
elseif ($2 != $null) {
set -u %:raw $1-
theme.ctcp ctcpreply CTCPREPLY $1-
%m $1-
theme.sound ctcpreplyself
}
}
alias -l theme.msg {
if ($show) {
set -u %::address $address($me,5)
set -u %::cnick $cnick($me).color
set -u %::text $3-
set -u %m . $+ $1
var %i = 1
while ($chan(%i)) {
theme.vars echo $color($iif(($1 == amsg) || ($1 == qmsg),own,action)) -t $+ $iif($hgt(indent),i $+ $ifmatch) $chan(%i)
set -u %::me $me
set -u %::cmode $cmode($me,$chan(%i))
set -u %::nick $nick
set -u %::chan $chan(%i)
theme.text $2 $iif(($1 == amsg) || ($1 == qmsg),INPUT,ACTION) $iif(($2 == textchanself) || ($2 == textqueryself),$me) %::text
inc %i
}
}
else { set -u %m . $+ $1 }
}
alias -l theme.ctcp {
if ($show) {
if ($hgt($+($1,$iif($left($3,1) == $chr(35),chanself,self)))) {
theme.vars echo $color(own) -at $+ $iif($hgt(indent),i $+ $ifmatch)
set -u %::nick $3
set -u %::target $3
set -u %::chan $3
set -u %::ctcp $upper($4)
set -u %::text $5-
set -nu %m . $+ $1
var %t = $iif($1 == ctcpreply,ctcpreplyself,ctcp)
theme.text %t $2-
}
else { set -nu %m $1 }
}
else { set -nu %m . $+ $1 }
}
alias -l theme.textevent {
var %i = $iif($hgt(indent),i $+ $ifmatch)
if ($chan) {
var %t = -tlm $+ %i $chan
if ($event == text) { var %e = textchan }
elseif ($event == action) { var %e = actionchan }
else { var %e = noticechan }
set -nu %::chan $chan
set -u %::cmode $cmode($nick,$chan)
set -u %::cnick $nick($chan,$nick).color
}
else {
var %t = $iif($event != notice,$iif($query($nick),-tlm $+ %i $nick,-tldm $+ %i),-tlam $+ %i)
if ($event == text) { var %e = $iif($query($nick),textquery,textmsg) }
elseif ($event == action) { var %e = actionquery }
else { var %e = notice }
set -u %::cnick $cnick($nick).color
}
if ($hgt(%e)) {
if ($highlight($nick).nicks) && ($highlight) {
if ($highlight($nick).sound != none) {
var %s = $ifmatch
$iif(%s == beep,%s,.splay -wmp $+(",%s,"))
}
if ($highlight($nick).color) { var %c = $ifmatch - 1 }
if ($highlight($nick).flash) { flash $+(-r,$ifmatch) $highlight($nick).message }
}
theme.vars echo $iif(%c != $null,%c,$color($iif($event == text,normal,$event))) %t
set -nu %::nick $nick
set -nu %::address $iif($address,$ifmatch,N/A)
set -nu %::text $1-
theme.text %e $upper($event) %::text
}
}
alias -l theme.joinpart {
if ($hgt($1)) {
theme.vars echo $color($event) -t $+ $iif($hgt(indent),i $+ $ifmatch) $chan
set -nu %::nick $nick
set -nu %::address $iif($address,$ifmatch,N/A)
set -nu %::chan $chan
set -nu %::text $2-
theme.text $1 $upper($event) %::text
}
}
alias -l theme.nickquit {
var %i = 1
while ($comchan($2,%i)) {
theme.vars echo $color($event) -t $+ $iif($hgt(indent),i $+ $ifmatch) $comchan($2,%i)
theme.text $1 $upper($event) %::text
inc %i
}
}
alias -l theme.notify {
if ($hgt($event)) {
theme.vars echo $color(notify) -at $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::nick $nick
set -nu %::address $notify($nick).addr
set -nu %::text $notify($nick).note
theme.text $event $upper($event) %::text
}
}
;####################### EVENTS #######################
on &*:INPUT:*:{
if ($hgt(file)) && ($left($1,1) != $cmdchar) && ($left($1,1) != /) && ($theme.current) {
say $1-
halt
}
}
on ^&*:TEXT:*:*:{
if ($theme.current) {
set -u %:raw $1-
theme.textevent $1-
}
}
on ^&*:ACTION:*:*:{
if ($theme.current) {
set -u %:raw $1-
theme.textevent $1-
}
}
on ^&*:NOTICE:*:*:{
if ($theme.current) {
set -u %:raw $1-
theme.textevent $1-
theme.sound notice $+ $iif($nick == $me,self)
}
}
on ^&*:CHAT:*:{
if ($hgt(textquery)) && ($theme.current) {
theme.vars echo $color(normal) -mlt $+ $iif($hgt(indent),i $+ $ifmatch) = $+ $nick
set -nu %::nick $nick
set -nu %::address $iif($address,$ifmatch,N/A)
set -nu %::text $1-
set -u %::cnick $cnick($nick).color
set -nu %::nick $nick
set -u %:raw $1-
theme.text textquery CHAT %::text
}
theme.sound chat
}
on ^&*:JOIN:#:{
if ($theme.current) {
set -u %:raw $1-
theme.joinpart $event $+ $iif($nick == $me,self)
theme.sound join $+ $iif($nick == $me,self)
}
}
on ^&*:PART:#:{
if ($theme.current) {
if ($nick != $me) { set -u %:raw $1- | theme.joinpart $event $1- }
theme.sound part $+ $iif($nick == $me,self)
}
}
on ^&*:NICK:{
if ($hgt($iif($nick == $me,nickself,nick))) && ($theme.current) {
set -nu %::nick $nick
set -nu %::newnick $newnick
set -nu %::address $iif($address,$ifmatch,N/A)
set -u %:raw $1-
theme.nickquit $iif($nick == $me,nickself,nick) $newnick
}
theme.sound nick $+ $iif($nick == $me,self)
}
on ^&*:QUIT:{
if ($hgt(quit)) && ($theme.current) {
set -nu %::nick $nick
set -nu %::address $iif($address != $null,$ifmatch,N/A)
set -nu %::text $1-
set -u %:raw $1-
theme.nickquit quit $nick
}
theme.sound quit $+ $iif($nick == $me,self)
}
on ^*:NOTIFY:{
if ($theme.current) {
set -u %:raw $1-
theme.notify
theme.sound notify
}
}
on ^*:UNOTIFY:{
if ($theme.current) {
set -u %:raw $1-
theme.notify
theme.sound unotify
}
}
on &*:DNS:{
var %t = $iif($dns(0) > 0,dnsresolve,dnserror)
if ($hgt(%t)) && ($theme.current) {
theme.vars echo $color(other) -a $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::nick $nick
set -nu %::address $address
set -nu %::iaddress $iaddress
set -nu %::naddress $naddress
if (%t == dnsresolve) {
var %i = 1
while ($dns(%i)) {
set -nu %::address $dns(%i).ip
set -nu %::raddress $dns(%i)
set -u %:raw $1-
theme.text %t DNS $address $iaddress $naddress $nick
inc %i
}
}
else { theme.text %t DNS $address $iaddress $naddress $nick }
}
}
on ^&*:USERMODE:{
if ($hgt(modeuser)) && ($theme.current) {
theme.vars echo $color(mode) -st $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::nick $nick
set -nu %::modes $1-
set -u %:raw $1-
theme.text modeuser USERMODE %::modes
}
theme.sound usermode
}
on ^&*:ERROR:*:{
if ($hgt(servererror)) && ($theme.current) {
theme.vars echo $color(info) -st $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::text $1-
set -u %:raw $1-
theme.text servererror ERROR %::text
halt
}
theme.sound error
}
on ^&*:SNOTICE:*:{
if ($hgt(noticeserver)) && ($theme.current) {
theme.vars echo $color(info) -st $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::nick $nick
set -nu %::address $iif($address != $null,$ifmatch,N/A)
set -nu %::text $1-
set -u %:raw $1-
theme.text noticeserver SNOTICE %::text
}
theme.sound snotice
}
on ^&*:INVITE:#:{
if ($hgt(invite)) && ($theme.current) {
theme.vars echo $color(invite) -at $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::nick $nick
set -nu %::address $iif($address != $null,$ifmatch,N/A)
set -nu %::chan $chan
set -nu %::text $1-
set -u %:raw $1-
theme.text invite INVITE %::text
}
theme.sound invite $+ $iif($nick == $me,self)
}
on ^&*:TOPIC:#:{
if ($hgt(topic)) && ($theme.current) {
theme.vars echo $color(topic) -t $+ $iif($hgt(indent),i $+ $ifmatch) $chan
set -u %::nick $nick
set -u %::address $iif($address,$ifmatch,N/A)
set -u %::chan $chan
set -u %::text $1-
set -u %:raw $1-
theme.text topic TOPIC %::text
}
theme.sound topic $+ $iif($nick == $me,self)
}
on ^&*:KICK:#:{
var %t = $iif($knick == $me,kickself,$event),%i = $iif($hgt(indent),i $+ $ifmatch)
if ($hgt(%t)) && ($theme.current) {
theme.vars echo $color(kick) -t $+ %i $chan
set -u %::nick $nick
set -u %::address $address
set -u %::chan $chan
set -u %::knick $knick
set -u %::kaddress $address($knick,5)
set -u %::text $1-
set -u %:raw $1-
theme.text %t KICK %::text
if %t == kickself {
theme.vars echo $color(kick) -st $+ %i
theme.text %t KICK %::text
}
}
theme.sound kick $+ $iif($nick == $me,self)
}
on ^&*:RAWMODE:#:{
if ($hgt(mode)) && ($theme.current) {
theme.vars echo $color(mode) -t $+ $iif($hgt(indent),i $+ $ifmatch) $chan
set -u %::nick $nick
set -u %::address $iif($address,$ifmatch,N/A)
set -u %::chan $chan
set -u %::modes $1-
set -u %:raw $1-
theme.text mode RAWMODE %::modes
}
}
on ^&*:WALLOPS:*:{
if ($hgt(wallops)) && ($theme.current) {
theme.vars echo $color(wallops) -st $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::nick $nick
set -nu %::address $iif($address != $null,$ifmatch,N/A)
set -nu %::text $1-
set -u %:raw $1-
theme.text wallops WALLOPS %::text
}
}
ctcp &*:*:*:{
if ($hgt($iif($chan,ctcpchan,ctcp))) && ($theme.current) {
if ($1 == VERSION) || ($1 == DCC) { return }
theme.vars echo $color(ctcp) -at $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::nick $nick
set -nu %::address $iif($address,$ifmatch,N/A)
set -nu %::chan $chan
set -nu %::ctcp $1
set -nu %::text $2-
if ($1 == PING) { set -un %ctcpreply $2- }
elseif ($1- == TIME) { set -un %ctcpreply $fulldate }
elseif ($1- == FINGER) { set -un %ctcpreply $fullname ( $+ $emailaddr $+ ) Idle $idle second(s) $readini(mirc.ini,text,finger) }
if (%ctcpreply) { .ctcpreply $nick $1 %ctcpreply }
set -u %:raw $1-
theme.text $iif($chan,ctcpchan,ctcp) CTCP
}
theme.sound ctcp
}
on &*:CTCPREPLY:*:{
if ($hgt(ctcpreply)) && ($theme.current) {
theme.vars echo $color(ctcp) -at $+ $iif($hgt(indent),i $+ $ifmatch)
set -nu %::nick $nick
set -nu %::chan $chan
set -nu %::ctcp $1
set -nu %::text $2-
set -u %:raw $1-
theme.text ctcpreply CTCPREPLY $1-
}
theme.sound ctcpreply
}
on *:CONNECT:{ theme.sound connect }
on *:DISCONNECT:{ theme.sound disconnect }
on *:OP:#:{ theme.sound op $+ $iif($nick == $me,self) }
on *:DEOP:#:{ theme.sound deop $+ $iif($nick == $me,self) }
on *:HELP:#:{ theme.sound hop $+ $iif($nick == $me,self) }
on *:DEHELP:#:{ theme.sound dehop $+ $iif($nick == $me,self) }
on *:VOICE:#:{ theme.sound voice $+ $iif($nick == $me,self) }
on *:DEVOICE:#:{ theme.sound devoice $+ $iif($nick == $me,self) }
on *:BAN:#:{ theme.sound ban $+ $iif($nick == $me,self) }
on *:MODE:#:{ theme.sound mode $+ $iif($nick == $me,self) }
on *:OPEN:?:{ theme.sound query }
on *:OPEN:@:{ theme.sound open }
on *:OPEN:=:{ theme.sound open }
on *:OPEN:!:{ theme.sound open }
on *:SERV:*:{ theme.sound serv }
on *:FILESENT:*:{ theme.sound filesent }
on *:FILERCVD:*:{ theme.sound filercvd }
on *:SENDFAIL:*:{ theme.sound sendfail }
on *:GETFAIL:*:{ theme.sound getfail }
;################# RAW EVENT HANDLING ##################
RAW *:*:{
var %n = $theme.rawdigit($numeric)
if ($halted) { return }
if ($hgt(raw. $+ %n)) { var %r = RAW. $+ %n }
if (!%r) { var %r = RAW.Other }
if (%r) && ($theme.current) {
if (%n == 001) { set -nu %::text $2- | set -nu %::nick $8 }
elseif (%n == 002) { set -nu %::value $8 }
elseif (%n == 003) { set -nu %::value $5- }
elseif (%n == 004) { set -nu %::value $3- }
elseif (%n == 005) { set -nu %::text $2-15 }
elseif (%n == 219) { set -nu %::value $2 | set -nu %::text $3- }
elseif (%n == 221) { set -nu %::nick $1 | set -nu %::modes $2 }
elseif (%n == 250) { set -nu %::value $4- }
elseif (%n == 251) { set -nu %::users $4 | set -nu %::text $7 | set -nu %::value $10 }
elseif (%n == 252) { set -nu %::value $2 }
elseif (%n == 253) { set -nu %::value $2 }
elseif (%n == 254) { set -nu %::value $2 }
elseif (%n == 255) { set -nu %::users $4 | set -nu %::value $7 }
elseif (%n == 256) { set -nu %::value $5 }
elseif (%n == 265) { set -nu %::users $5 | set -nu %::value $7 }
elseif (%n == 266) { set -nu %::users $5 | set -nu %::value $7 }
elseif (%n == 271) { set -nu %::nick $2 | set -nu %::text $3- }
elseif (%n == 301) { set -nu %::nick $2 | set -nu %::text $3- }
elseif (%n == 302) { set -nu %::nick $gettok($2,1,61) | set -nu %::address $gettok($2,2,64) | set -nu %::value $2 }
elseif (%n == 321) || (%n == 322) { return }
elseif (%n == 324) { set -nu %::chan $2 | set -nu %::modes $3 }
elseif (%n == 329) { set -nu %::chan $2 }
elseif (%n == 331) { set -nu %::chan $2 }
elseif (%n == 332) { set -nu %::chan $2 }
elseif (%n == 333) { set -nu %::chan $2 | set -nu %::nick $3 | set -nu %::text $4- }
elseif (%n == 338) { set -nu %::nick $2 | set -nu %::value $3 | set -nu %::value $4 | set -nu %::text $5- }
elseif (%n == 352) { set -nu %::nick $6 | set -nu %::address $4 | set -nu %::cmode $right($7,1) | set -nu %::away $iif($left($7,1) == G,yes,no) | set -nu %::chan $2 | set -nu %::wserver $5 | set -nu %::realname $3 | set -nu %::value $8 | set -nu %::text $1- | set -nu %::isoper $iif(* isin $7,is,is not) }
elseif (%n == 353) { set -nu %::chan $3 | set -nu %::text $4- }
elseif (%n == 364) || (%n == 365) { return }
elseif (%n == 366) { set -nu %::chan $2 }
elseif (%n == 382) { set -nu %::value $2 }
elseif (%n == 391) { set -nu %::text $3- }
elseif (%n == 401) || (%n == 403) || (%n == 406) || (%n == 421) || (%n == 433) || (%n == 471) || (%n == 473) || (%n == 474) || (%n == 475) || (%n == 482) { set -nu %::chan $2 | set -nu %::nick $2 | set -nu %::text $3- }
elseif (%n == 404) { set -nu %::chan $7- | set -nu %::nick $2 | set -nu %::text $3- }
elseif (%n == 405) { set -nu %::chan $2 }
elseif (%n == 416) { set -nu %::value $2 }
elseif (%n == 432) { set -nu %::nick $2 }
elseif (%n == 436) { set -nu %::nick $2 }
elseif (%n == 438) { set -nu %::nick $2 }
elseif (%n == 442) { set -nu %::chan $2 }
elseif (%n == 443) { set -nu %::nick $2 | set -nu %::chan $3 }
elseif (%n == 451) { set -nu %::value $2 }
elseif (%n == 603) { set -nu %::value $3 | set -nu %::text $7 }
elseif (%n == 604) { set -nu %::nick $2 | set -nu %::value $3 | set -nu %::text $4- }
elseif (%n == 606) { set -nu %::nick $2 }
elseif (%n == 311) || (%n == 314) { set -nu %::nick $2 | set -nu %::address $3 $+ @ $+ $4 | set -nu %::realname $6- | if ($hgt(whois)) { set %whois.nick $2 | set %whois.address $3 $+ @ $+ $4 | set %whois.realname $6- | halt } }
elseif (%n == 319) { set -nu %::nick $2 | set -nu %::chan $3- | if ($hgt(whois)) { set %whois.chan %whois.chan $3- | halt } }
elseif (%n == 312) { set -nu %::nick $2 | set -nu %::wserver $3 | set -nu %::serverinfo $4- | if ($hgt(whois)) { set %whois.wserver $3 | set %whois.serverinfo $4- | halt } }
elseif (%n == 301) { set -nu %::nick $2 | set -nu %::away $3- | if ($hgt(whois)) { set %whois.away $3- | halt } }
elseif (%n == 307) { set -nu %::nick $2 | set -nu %::isregd is | if $hgt(whois)) { set %whois.isregd is | halt } }
elseif (%n == 313) { set -nu %::nick $2 | set -nu %::isoper is | set -nu %::operline $3- | if $hgt(whois)) { set %whois.isoper is | set %whois.operline $3- | halt } }
elseif (%n == 317) { set -nu %::nick $2 | set -nu %::idletime $3 | set -nu %::signontime $asctime($4) | if ($hgt(whois)) { set %whois.idletime $3 | set %whois.signontime $asctime($4) | halt } }
elseif (%n == 330) { set -nu %::nick $2 }
elseif (%n == 318) {
set -nu %::nick $2
if ($hgt(whois)) && ($theme.current == mts) && ($gettok($theme.raw.echo(318),1,9)) && (%whois.nick) {
set -nu %::nick %whois.nick
set -nu %::address %whois.address
set -nu %::realname %whois.realname
set -nu %::chan %whois.chan
set -nu %::wserver %whois.wserver
set -nu %::serverinfo %whois.serverinfo
set -nu %::away %whois.away
set -nu %::isregd %whois.isregd
set -nu %::isoper %whois.isoper
set -nu %::operline %whois.operline
set -nu %::idletime %whois.idletime
set -nu %::signontime %whois.signontime
theme.vars echo $color(whois) $iif($hgt(indent),-i $+ $ifmatch) $gettok($theme.raw.echo(318),1,9)
theme.text whois $gettok($theme.raw.echo(318),2,9) $1-
unset %whois.*
halt
}
}
elseif (%n == 369) {
set -nu %::nick $2
if ($hgt(whowas)) && ($theme.current == mts) && ($gettok($theme.raw.echo(369),1,9)) && (%whois.nick) {
set -nu %::nick %whois.nick
set -nu %::address %whois.address
set -nu %::realname %whois.realname
set -nu %::wserver %whois.wserver
set -nu %::serverinfo %whois.serverinfo
theme.vars echo $color(whois) $iif($hg(indent),-i $+ $ifmatch) $gettok($theme.raw.echo(369),1,9)
theme.text whowas $gettok($theme.raw.echo(369),2,9) $1-
unset %whois.*
halt
}
}
if (%::chan == $2) || (%::nick == $2) || (%::value == $2) { set -nu %::text $3- }
if (!%::value) { set -nu %::value $2 }
if (!%::text) { set -nu %::text $2- }
if (!%:target) { set -nu %:target $2 }
set -nu %::fromserver $nick
set -nu %::numeric %n
var %e = $theme.raw.echo(%n,%:target)
if (%e) {
if ($gettok(%e,2,9) == 2) || ($gettok(%e,2,9) == 3) {
theme.vars echo $color(info) $gettok(%e,1,9)
set -u %:raw $1-
theme.text %r $gettok(%e,2,9) $1-
}
}
else { halt }
}
}
alias -l theme.rawdigit {
if ($len($1) == 1) { return 00 $+ $1 }
elseif ($len($1) == 2) { return 0 $+ $1 }
return $1
}
alias -l theme.raw.echo {
var %i = $iif($hgt(indent),i $+ $ifmatch)
var %h = $hg($hfind(theme.settings,theme.raw.*. $+ $1,1,w))
if (%h == $null) { var %h = $hg(theme.raw.all) }
var %d = $gettok(%h,1,32),%a = $gettok(%h,2,32)
if (%d == 4) { return $iif($window($2),-t $+ %i $2,-ta $+ %i) $+ %a }
elseif (%d == 3) { return $iif($window($2),-t $+ %i $2,-ts $+ %i) $+ %a }
elseif (%d == 2) { return -ta $+ %i $+ %a }
elseif (%d == 1) { return -ts $+ %i $+ %a }
return
}
;################### PREVIEWING ######################
alias theme.preview {
if ($1 == -l) {
var %z = l
if ($2 isnum) { var %s = $2,%f = $3- }
else { var %f = $2- }
}
elseif ($1 isnum) { var %z = s,%s = $1,%f = $2- }
else { var %z = s,%f = $1- }
if ($right(%f,4) == .mts) { var %t = m }
elseif ($right(%f,4) == .xml) { var %t = x }
elseif ($right(%f,4) == .zip) { var %t = z }
if ($isfile(%f)) {
if (%t == z) {
var %z = $scriptdirextracted\ $+ $left($nopath(%f),-4) $+ \
ha theme.extract $+(preview, ,%f, ,%z, ,$iif($1 == -l,-l) %s)
if (!$isdir(%z)) { szip SUnZipFile %f > %z }
else { .signal SZIP Z_OK %f }
return
}
if ($dialog(themes)) { did -b themes $iif(%z == s,12,13) }
set -u %:theme $iif(%t == m,$theme.info(name,%f),$left($nopath(%f),-4))
set -u %:scheme $iif(%t == m,$theme.info(%s,%f),$gettok($theme.info(schemenames,%f),$calc(%s + 1),59))
var %p = $+($shortfn($scriptdirpreview\),$nopath(%f),$iif(%s,-),%s,-,%z,.bmp)
if ($isfile(%p)) { theme.preview.show %p | if ($dialog(themes)) { did -e themes $iif(%z == s,12,13) } | return }
if (!$hget(theme.preview)) { hmake theme.preview 15 }
if ($window(@theme.preview.text)) { window -c @theme.preview.text }
window -h @theme.preview.text
theme.preview.hash %f
if (%s) { theme.preview.hash %s %f }
if (!$hgp(colors)) { hap colors 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 (!$hgp(rgbcolors)) { hap colors $rgbdef }
if (%t == m) {
if (%s) { hap scheme $theme.info(%s,%f) }
if ($hgp(basecolors)) {
set -u %::c1 $+ $gettok($ifmatch,1,44)
set -u %::c2 $+ $gettok($ifmatch,2,44)
set -u %::c3 $+ $gettok($ifmatch,3,44)
set -u %::c4 $+ $gettok($ifmatch,4,44)
}
set -u %::pre $theme.parse(m,$hgp(prefix))
set -u %::timestampformat $hgp(timestampformat)
if (!%::timestampformat) { set -u %::timestampformat [HH:nn] }
set -u %::timestamp $iif($hgp(timestamp) == on,$theme.parse(m,%::timestampformat))
var %:script = $nofile(%f) $+ $hgp(script)
if ($isfile(%:script)) && (!$script(%:script)) {
.load -rs $+(",%:script,")
set -u %:unload 1
}
}
elseif (%t == x) {
if (%s) { hap scheme $gettok($theme.info(schemenames,%f),$calc(%s + 1),59) }
if ($hgp(timestamp)) { set -u %::timestamp $theme.parse(x,$hgp(timestamp)) }
var %:script = %f
if (!$script(%f)) {
.load -rs $+(",%f,")
set -u %:unload 1
}
if ($hgp(init)) { $eval($ifmatch,2) }
}
set -u %::me $me
set -u %::chan #preview
set -u %::address me@voiceofpower.us
theme.preview.add %t 8 joinself
if (%z == l) {
set -u %::text Download TEMX on mircscripts.org! || Latest version: $themesversion || For mIRC $version
set -u %::numeric 332
theme.preview.add %t 21 raw.332 %::me %::chan %::text
set -u %::nick Voice_of_Power
set -u %::text $asctime($calc($ctime - $r(5,864000)))
set -u %::numeric 333
theme.preview.add %t 21 raw.333 %::me %::chan %::nick %::text
set -u %::text $calc($ctime - $r(864000,8640000))
set -u %::numeric 329
theme.preview.add %t 21 raw.329 %::me %::chan %::text
}
set -u %::nick TheXenocide
set -u %::cmode @
set -u %::text $gettok(Greetings Welcome Hola Hey Aye Ahoy,$r(1,6),32) %::me :)
theme.preview.add %t 12 textchan %::text
unset %::cmode
set -u %::text $gettok(hi howdy hello,$r(1,3),32) Xeno
theme.preview.add %t 16 textchanself %::me %::text
set -u %::nick XhaKeR
set -u %::address xhaker@xpro.tk
theme.preview.add %t 8 join
if (%z == l) {
set -u %::fromserver XhaKeR
set -u %::isoper is
set -u %::isregd is
set -u %::realname Weird Dude
set -u %::chan #thescript +#whatever % $+ #preview @#mircscripts
set -u %::idletime 42
set -u %::signontime $asctime($calc(1063090795 - $r(360,7200)))
set -u %::wserver irc.voiceofpower.us
set -u %::serverinfo Preview server
set -u %::isoper is
if ($hgp(whois)) { var %whois1 = $ifmatch }
if (%whois1) {
set -u %::numeric 318
var %whois = $theme.parse(m,$ifmatch)
set -u %:echo aline @theme.preview.text 21 $time(%::timestamp)
if ($gettok(%whois,1,32) == !script) { $gettok(%whois,2-,32) }
else { %:echo %whois }
}
else {
set -u %::numeric 311
theme.preview.add %t 21 raw.311 %:me %::nick %::fromserver %::wserver * %::realname
set -u %::numeric 319
theme.preview.add %t 21 raw.319 %::me %::nick %::chan
set -u %::numeric 312
theme.preview.add %t 21 raw.312 %::me %::nick %::wserver %::serverinfo
set -u %::numeric 317
theme.preview.add %t 21 raw.317 %::me %::nick %::idletime %::signontime
set -u %::numeric 318
theme.preview.add %t 21 raw.318 %::me %::nick End of /WHOIS list
}
}
set -u %::nick Chanserv
set -u %::modes +h XhaKeR
theme.preview.add %t 10 mode %::modes
set -u %::nick XhaKeR
set -u %::cmode %
set -u %::text wassup $gettok(dudes? guys? girls? pigs?,$r(1,4),32)
theme.preview.add %t 12 textchan %::text
set -u %::nick VoP|away
set -u %::newnick Voice_of_Power
set -u %::chan #thescript
theme.preview.add %t 11 nick
set -u %::nick Voice_of_Power
set -u %::cmode +
set -u %::text desires to be opped.... NOW!
theme.preview.add %t 2 actionchan %::text
set -u %::nick TheXenocide
set -u %::knick Voice_of_Power
set -u %::chan #thechan
set -u %::text this is what you can get! :D
theme.preview.add %t 8 kick %::text
set -u %::nick XhaKeR
set -u %::modes +v %::me
theme.preview.add %t 10 mode %::modes
set -u %::nick Voice_of_Power
set -u %::address vop@voiceofpower.us
theme.preview.add %t 8 join
set -u %::nick Chanserv
set -u %::modes +o Voice_of_Power
theme.preview.add %t 10 mode %::modes
set -u %::nick $me
set -u %::cmode +
set -u %::text lol
theme.preview.add %t 16 textchanself %::me %::text
set -u %::nick Voice_of_Power
set -u %::text Kick me and fear ban!
theme.preview.add %t 19 topic %::text
set -u %::nick TheXenocide
set -u %::text ban me and fear g-line ;)
theme.preview.add %t 13 notice %::text
set -u %::target TheXenocide
set -u %::address xeno@blaat.org
set -u %::text oops, wrong guy =)
theme.preview.add %t 13 textmsg %::target %::text
set -u %::nick Syko
set -u %::address syko@galactic-quest.com
set -u %::text Quit: That load button's tempting.. isn't it? ;)
theme.preview.add %t 18 quit %::text
if (%z == l) { theme.preview.add %t 10 unotify }
set -u %::nick Peon
set -u %::ctcp PING
set -u %::text $ctime
theme.preview.add %t 3 ctcp %::ctcp %::text
if (%z == l) {
set -u %::target Peon
set -u %::text 1sec
theme.preview.add %t 3 ctcpreplyself %::text
set -u %::chan #omgthischannelnameislongisthatevenpossible?
theme.preview.add %t 7 invite
set -u %::modes +w
theme.preview.add %t 10 modeuser %::modes
set -u %::nick Syko
theme.preview.add %t 10 notify
set -u %::nick Voice_of_Power
set -u %::text Blaat! ;)
theme.preview.add %t 4 wallop %::text
set -u %::nick TheXenocide
set -u %::text shut up :P
theme.preview.add %t 4 wallop %::text
set -u %::nick Voice_of_Power
set -u %::cmode @
set -u %::text So %::me $+ , how do you like $hgp(name) $iif(theme !isin $hgp(name),theme) $+ ? :)
theme.preview.add %t 12 textchan %::text
set -u %::cmode +
set -u %::text I like it, $iif($hgp(scheme),$ifmatch,default) scheme.. wasn't it?
theme.preview.add %t 16 textchanself %::me %::text
set -u %::cmode @
set -u %::text yup
theme.preview.add %t 12 textchan %::text
theme.preview.add %t 12 load
set -u %::cmode +
set -u %::text :)
theme.preview.add %t 16 textchanself %::me %::text
}
var %:colors = $hgp(colors),%:rgbcolors = $hgp(rgbcolors),%:fontchan = $hgp(fontchan)
if ($window(@theme.preview)) { window -c @theme.preview }
window -Bph +d @theme.preview -1 -1 $iif(%z == s,300 222,499 540)
drawfill @theme.preview $gettok(%:colors,1,44) $gettok(%:colors,1,44) 1 1
var %back = $gettok(%:colors,1,44),%font = " $+ $gettok(%:fontchan,1,44) $+ ",%size = $gettok(%:fontchan,2,44),%i = 1
while ($line(@theme.preview.text,%i)) {
var %color = $gettok($ifmatch,1,32),%line = $gettok($ifmatch,2-,32)
drawtext -pb @theme.preview $gettok(%:colors,%color,44) %back %font %size 3 $iif(%i != 1,$calc(1 + ((%i - 1) * $height(%line,%font,%size))),1) %line
inc %i
}
var %i = 1
while (%i <= 16) {
var %r = $rgb( [ $gettok($theme.preview.falsecol,%i,32) ] )
if ($gettok(%r,2,44)) { var %r = $rgb( [ %r ] ) }
if (%r) { drawreplace -nr @theme.preview $color($calc(%i -1)).rgb %r }
inc %i
}
%i = 1
while (%i <= 16) {
var %r = $rgb( [ $gettok(%:rgbcolors,%i,32) ] )
if ($gettok(%r,2,44)) { var %r = $rgb( [ %r ] ) }
if (%r) { drawreplace -nr @theme.preview $rgb( [ $gettok($theme.preview.falsecol,%i,32) ] ) %r }
inc %i
}
drawsave @theme.preview %p
theme.preview.show %p
window -c @theme.preview
window -c @theme.preview.text
hfree theme.preview
if (%:unload) { .unload -rs " $+ %:script $+ " }
if ($dialog(themes)) { did -e themes $iif(%z == s,12,13) }
}
}
alias theme.preview.falsecol { return 1,1,1 2,2,2 3,3,3 4,4,4 5,5,5 6,6,6 7,7,7 8,8,8 9,9,9 10,10,10 11,11,11 12,12,12 13,13,13 14,14,14 15,15,15 16,16,16 }
alias theme.preview.hash {
if ($1 isnum) { var %s = $1,%f = $2- }
else { var %f = $1- }
var %t = $iif($right(%f,4) == .mts,m,x)
if ($isfile(%f)) {
if (%t == m) {
if ($fopen(pre)) { .fclose pre }
.fopen pre " $+ %f $+ "
if ($ferr) { .fclose pre | return }
if (%s) { .fseek -w pre $+($chr(91),scheme $+ %s,$chr(93)) | var %l = $fread(pre) }
while (!$feof) {
if ($fread(pre)) {
tokenize 32 $ifmatch
if ($1 == [mts]) || (!$1) || ($left($1,1) == $chr(59)) { continue }
elseif ($+($chr(91),scheme*,$chr(93)) iswm $1) { .fclose pre | return }
else { hap $lower($1) $2- }
}
}
.fclose pre
}
elseif (%t == x) {
xml CreateParser xts
xml StartElement xts theme.xts.parse -s $+ %s
xml EndElement xts theme.xts.parse -e
xml Data xts theme.xts.parse -dp
xml Attribute xts theme.xts.parse -a
xml File xts " $+ %f $+ "
xml ParseFile xts
xml FreeParser xts
unset %section %item %scheme
hap name $left($nopath(%f),-4)
}
}
}
alias -l theme.preview.add {
if ($hgp($3)) {
var %t = $ifmatch
set -nu %:echo aline @theme.preview.text $2 $time(%::timestamp)
set -nu %::parentext $ptext(%::text)
if (m isin $1) {
%t = $theme.parse(m,%t)
if ($gettok(%t,1,32) == !script) {
if ($gettok(%t,2-,32)) {
var %ifmatch = [ [ $ifmatch ] ]
%ifmatch
}
}
else { %:echo %t }
}
elseif (x isin $1) {
%t = $theme.parse(x,%t)
if ($4-) { tokenize 32 $ifmatch }
if ($gettok(%t,1,32) == !xts) { $eval($gettok(%t,2,32),2) $1- }
else { %:echo $eval(%t,2) }
}
}
}
alias -l theme.preview.show {
var %s = $mid($1-,-5,1)
if (%s == s) {
if (!$dialog(themes)) { themes }
did -ra themes 11 $shorten(32,Preview: %:theme $iif(%:scheme,- $ifmatch))
did -g themes 16 $1-
did -h themes 14,15
did -v themes 16
}
elseif (%s == l) {
if ($dialog(theme.large)) { dialog -x theme.large theme.large }
dialog -hm theme.large theme.large
did -g theme.large 4 $1-
did -ra theme.large 2 Preview: %:theme $iif(%:scheme,- $ifmatch)
}
if (c !isin $theme.options(add)) { .remove $1- }
}
dialog -l theme.large {
title " Large Theme Preview"
size -1 -1 517 565
text "Preview:", 2, 10 4 250 16
icon 4, 9 18 499 550, $mircexe, 0, border
}
on *:dialog:theme.large:init:*:{
mdx SetMircVersion $version
mdx MarkDialog $dname
mdx SetDialog $dname style title sysmenu tool
}
alias -l theme.load.show { if ($1 isnum) && ($dialog(theme.load)) { did -a theme.load $1 $2- } }
dialog -l theme.load {
title "Loading Theme..."
size -1 -1 87 38
option dbu
text "", 1, 5 4 76 8, center
text "", 3, 5 16 76 8
text "", 2, 5 26 76 8
}
on *:dialog:theme.load:init:*:{
mdx SetMircVersion $version
mdx MarkDialog $dname
mdx SetControlMDX $dname 2,3 progressbar smooth > $mdxdir $+ ctl_gen.mdx
}