alias converttheme { var %colorfile $adiircdircolors.conf var %eventfile $adiircdirpevents.conf ; Set theme name var %themename HexTheme var %themefolder $adiircdirThemes\ $+ %themename if (!$exists(%themefolder)) { mkdir %themefolder } set %themepath $qt(%themefolder $+ \ $+ %themename $+ .mts) write -c %themepath [mts] write -a %themepath Name HexTheme write -a %themepath FontDefault Consolas,10 write -a %themepath NickColumn ON write -a %themepath Timestamp ON if ($hget(themecolors)) { hfree themecolors } hmake themecolors var %s 0, %c = $lines(%colorfile) while (%s < %c) { inc %s var %text = $read(%colorfile, %s) hadd themecolors $gettok(%text, 1, 61) $rgb($getcolor($gettok($gettok(%text, 2, 61), 1, 32)), $getcolor($gettok($gettok(%text, 2, 61), 2, 32)), $getcolor($gettok($gettok(%text, 2, 61), 3, 32))) } var %s 0, %rgbcolors ; Add mirc colors (0-15) while (%s < 16) { inc %s %rgbcolors = %rgbcolors $rgb($hget(themecolors, color_ $+ $calc(%s - 1))) } ; Add messages forecolor %rgbcolors = %rgbcolors 17= $+ $rgb($hget(themecolors, color_258)) ; Add messages backcolor %rgbcolors = %rgbcolors 22= $+ $rgb($hget(themecolors, color_259)) ; Add unread line marker color %rgbcolors = %rgbcolors 78= $+ $rgb($hget(themecolors, color_260)) ; Add selected messages forecolor %rgbcolors = %rgbcolors 121= $+ $rgb($hget(themecolors, color_256)) ; Add selected messages backcolor %rgbcolors = %rgbcolors 120= $+ $rgb($hget(themecolors, color_257)) ; Add selected nicklist forecolor %rgbcolors = %rgbcolors 123= $+ $rgb($hget(themecolors, color_256)) ; Add selected nicklist backcolor %rgbcolors = %rgbcolors 122= $+ $rgb($hget(themecolors, color_257)) writeline RGBColors %rgbcolors ; Messages colors ; 16 forecolor/normal (because N + 1) ; 21 backcolor (because N + 1) var %s 0, %colors = 21, while (%s < 20) { inc %s %colors = %colors $+ 16 $+ , } ; Topicbox/Editbox back color %colors = %colors $+ 21 $+ , ; Topicbox/Editbox fore color %colors = %colors $+ 16 $+ , ; Nicklist back color %colors = %colors $+ 21 $+ , ; Nicklist fore color %colors = %colors $+ 16 $+ , writeline Colors %colors var %s 0, %c = $lines(%eventfile) ; Convert events to MTS format while (%s < %c) { inc %s var %text = $read(%eventfile, n, %s) if (event_name=Change Nick == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Nick $replace_control_codes(%text2, , ) } else if (event_name=Your Nick Changing == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline NickSelf $replace_control_codes(%text2, , ) } else if (event_name=Channel Action == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline ActionChan $replace_control_codes(%text2, , ) ; No equal in hex, use Channel Action syntax instead writeline ActionChanSelf $replace_control_codes(%text2, , ) } else if (event_name=Channel Message == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline TextChan $replace_control_codes(%text2, , ) } else if (event_name=Private Message to Dialog == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline TextQuery $replace_control_codes(%text2, , ) } else if (event_name=Your Message == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline TextChanSelf $replace_control_codes(%text2, , ) } else if (event_name=Message Send == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline TextQuerySelf $replace_control_codes(%text2, , ) } else if (event_name=Part == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Part $replace_control_codes(%text2, ,
, ) } else if (event_name=Quit == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Quit $replace_control_codes(%text2, , ) } else if (event_name=Join == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Join $replace_control_codes(%text2, , ,
) } else if (event_name=You Join == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline JoinSelf $replace_control_codes(%text2, , ,
) } else if (event_name=Topic == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.332 $replace_control_codes(%text2, , ) } else if (event_name=Topic Creation == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.333 $replace_control_codes(%text2, , , ) } else if (event_name=Topic Change == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Topic $replace_control_codes(%text2, , ,
) } else if (event_name=Kick == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Kick $replace_control_codes(%text2, , , , ,
) } else if (event_name=You Kicked == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline KickSelf $replace_control_codes(%text2, , , , ) } else if (event_name=Channel Mode Generic == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Mode $replace_control_codes(%text2, , ) ; Abusing this for user modes as well writeline ModeUser $replace_control_codes(%text2, , ) } else if (event_name=CTCP Generic == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Ctcp $replace_control_codes(%text2, , ) } else if (event_name=CTCP Send == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline CtcpSelf $replace_control_codes(%text2, , ) ; Abusing this for chan self as well writeline CtcpChanSelf $replace_control_codes(%text2, , ) } else if (event_name=Channel Notice == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline NoticeChan $replace_control_codes(%text2, , , ) } else if (event_name=Notice == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Notice $replace_control_codes(%text2, , ) ; Same syntax is used for ctcp replies writeline CtcpReply $replace_control_codes(%text2, , ) } else if (event_name=Server Notice == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline NoticeServer $replace_control_codes(%text2, ) } else if (event_name=Notice Send == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline NoticeSelf $replace_control_codes(%text2, , ) ; No equal in hex, use Notice Send syntax instead writeline NoticeSelfChan $replace_control_codes(%text2, , ) } else if (event_name=WhoIs Away Line == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.301 $replace_control_codes(%text2, , ) } else if (event_name=WhoIs Channel/Oper Line == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.313 $replace_control_codes(%text2, , ) writeline RAW.319 $replace_control_codes(%text2, , ) } else if (event_name=WhoIs End == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.318 $replace_control_codes(%text2, ) } else if (event_name=WhoIs Identified == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.307 $replace_control_codes(%text2, , ) writeline RAW.320 $replace_control_codes(%text2, , ) } else if (event_name=WhoIs Authenticated == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.330 $replace_control_codes(%text2, , , ) } else if (event_name=WhoIs Idle Line with Signon == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.317 $replace_control_codes(%text2, , , ) } else if (event_name=WhoIs Name Line == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.311 $replace_control_codes(%text2, , , , ) writeline RAW.314 $replace_control_codes(%text2, , , , ) } else if (event_name=WhoIs Server Line == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.312 $replace_control_codes(%text2, , ) } else if (event_name=Channel Modes == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.324 $replace_control_codes(%text2, , ) } else if (event_name=Channel Creation == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.329 $replace_control_codes(%text2, , ) } else if (event_name=Motd == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.372 $replace_control_codes(%text2, ) } else if (event_name=MOTD Skipped == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.376 $replace_control_codes(%text2, ) writeline RAW.422 $replace_control_codes(%text2, ) } else if (event_name=Connected == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Logon $replace_control_codes(%text2) } else if (event_name=Disconnected == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Disconnect $replace_control_codes(%text2) } else if (event_name=Server Error == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline ServerError $replace_control_codes(%text2, ) } else if (event_name=Connection Failed == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline ConnectError $replace_control_codes(%text2, ) } else if (event_name=Server Text == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) ; Hack, read up to $t to get "server prefix" ; Look for the $T nick column variable var %pos $pos(%text2, $ $+ T, 1) if (%pos > 1) { %text2 = $left(%text2, $calc(%pos - 1)) writeline PrefixSys $replace_control_codes(%text2) } } else if (event_name=Ban List == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) ; Uses same format for all list types writeline RAW.367 $replace_control_codes(%text2, ,
, , ) writeline RAW.348 $replace_control_codes(%text2, ,
, , ) writeline RAW.346 $replace_control_codes(%text2, ,
, , ) writeline RAW.728 $replace_control_codes(%text2, ,
, , ) } else if (event_name=Channel List == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.321 $replace_control_codes(%text2) } else if (event_name=Receive Wallops == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline Wallop $replace_control_codes(%text2, , ) } else if (event_name=Keyword == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.475 $replace_control_codes(%text2, ) } else if (event_name=Banned == %text) { inc %s var %text2 = $replace($read(%eventfile, n, %s), event_text=,) writeline RAW.474 $replace_control_codes(%text2, ) } } hfree themecolors unset %themepath echo -ag $prefixsys Conversion done } alias -l getcolor { return $int($calc($base($1,16,10) / 257)) } alias -l writeline { ; echo -ag $1- write -a %themepath $1- } alias -l replace_control_codes { ; Replace "local colors" 16 to 31 with direct rgb values instead var %text = $regsubex($1, /%C(1[6-9]|2[0-9]|3[01])/, $chr(4) $+ $rgb($hget(themecolors, \1)).hex) ; Look for the $T nick column variable var %pos $pos(%text, $ $+ T, 1) if (%pos == 1) { ; Add a fake whitespace before nick column %text = $chr(160) $replace(%text, $ $+ T,) } else if (%pos > 1) { ; Remove spaces with fake whitespace in the left of nick column text %text = $replace($left(%text, $calc(%pos - 1)), $chr(32), $chr(160)) $right(%text, $calc($len(%text) - %pos - 1)) } ; Replace control codes variables and $N variables with similar MTS %::variables %text = $replacex(%text, % $+ B, $chr(2), % $+ U, $chr(31),% $+ O, $chr(15),% $+ C, $chr(3), $ $+ 1, $2, $ $+ 2, $3, $ $+ 3, $4, $ $+ 4, $5) return %text }