1#################################################################### 2# Theme.awk # 3#################################################################### 4 5# Prettify a string using corresponding SGR option. 6function prettify(name, string, i, temp) { 7 temp = string 8 if ("sgr-" name in Option) 9 if (isarray(Option["sgr-" name])) 10 for (i in Option["sgr-" name]) 11 temp = ansi(Option["sgr-" name][i], temp) 12 else 13 temp = ansi(Option["sgr-" name], temp) 14 return temp 15} 16 17# Return a string representing a random color. 18function randomColor( i) { 19 i = int(5 * rand()) 20 switch (i) { 21 case 0: return "green" 22 case 1: return "yellow" 23 case 2: return "blue" 24 case 3: return "magenta" 25 case 4: return "cyan" 26 default: return "default" 27 } 28} 29 30# Set theme to: random. 31function setRandomTheme( i, n, temp) { 32 srand(systime()) 33 for (i = 0; i < 3; i++) { 34 do temp = randomColor(); while (belongsTo(temp, n)) 35 n[i] = temp 36 } 37 38 Option["sgr-prompt-message"] = Option["sgr-languages"] = n[0] 39 Option["sgr-original-dictionary-detailed-word-class"][1] = n[0] 40 Option["sgr-original-dictionary-detailed-word-class"][2] = "bold" 41 Option["sgr-original-dictionary-synonyms"] = n[0] 42 Option["sgr-original-dictionary-synonyms-word-class"][1] = n[0] 43 Option["sgr-original-dictionary-synonyms-word-class"][2] = "bold" 44 Option["sgr-original-dictionary-examples"] = n[0] 45 Option["sgr-original-dictionary-see-also"] = n[0] 46 Option["sgr-dictionary-word-class"][1] = n[0] 47 Option["sgr-dictionary-word-class"][2] = "bold" 48 49 Option["sgr-original"][1] = Option["sgr-original-phonetics"][1] = n[1] 50 Option["sgr-original"][2] = Option["sgr-original-phonetics"][2] = "bold" 51 Option["sgr-prompt-message-original"][1] = n[1] 52 Option["sgr-prompt-message-original"][2] = "bold" 53 Option["sgr-languages-sl"] = n[1] 54 Option["sgr-original-dictionary-detailed-explanation"][1] = n[1] 55 Option["sgr-original-dictionary-detailed-explanation"][2] = "bold" 56 Option["sgr-original-dictionary-detailed-example"] = n[1] 57 Option["sgr-original-dictionary-detailed-synonyms"] = n[1] 58 Option["sgr-original-dictionary-detailed-synonyms-item"][1] = n[1] 59 Option["sgr-original-dictionary-detailed-synonyms-item"][2] = "bold" 60 Option["sgr-original-dictionary-synonyms-synonyms"] = n[1] 61 Option["sgr-original-dictionary-synonyms-synonyms-item"][1] = n[1] 62 Option["sgr-original-dictionary-synonyms-synonyms-item"][2] = "bold" 63 Option["sgr-original-dictionary-examples-example"] = n[1] 64 Option["sgr-original-dictionary-examples-original"][1] = n[1] 65 Option["sgr-original-dictionary-examples-original"][2] = "bold" 66 Option["sgr-original-dictionary-examples-original"][3] = "underline" 67 Option["sgr-original-dictionary-see-also-phrases"] = n[1] 68 Option["sgr-original-dictionary-see-also-phrases-item"][1] = n[1] 69 Option["sgr-original-dictionary-see-also-phrases-item"][2] = "bold" 70 Option["sgr-dictionary-explanation"] = n[1] 71 Option["sgr-dictionary-explanation-item"][1] = n[1] 72 Option["sgr-dictionary-explanation-item"][2] = "bold" 73 Option["sgr-alternatives-original"][1] = n[1] 74 Option["sgr-alternatives-original"][2] = "bold" 75 76 Option["sgr-translation"][1] = Option["sgr-translation-phonetics"][1] = n[2] 77 Option["sgr-translation"][2] = Option["sgr-translation-phonetics"][2] = "bold" 78 Option["sgr-languages-tl"] = n[2] 79 Option["sgr-dictionary-word"][1] = n[2] 80 Option["sgr-dictionary-word"][2] = "bold" 81 Option["sgr-alternatives-translations"] = n[2] 82 Option["sgr-alternatives-translations-item"][1] = n[2] 83 Option["sgr-alternatives-translations-item"][2] = "bold" 84 Option["sgr-brief-translation"][1] = Option["sgr-brief-translation-phonetics"][1] = n[2] 85 Option["sgr-brief-translation"][2] = Option["sgr-brief-translation-phonetics"][2] = "bold" 86 87 Option["fmt-welcome-message"] = Name 88 Option["sgr-welcome-message"][1] = n[0] 89 Option["sgr-welcome-message"][2] = "bold" 90 Option["fmt-welcome-submessage"] = "(:q to quit)" 91 Option["sgr-welcome-submessage"] = n[0] 92 Option["fmt-prompt"] = "%s> " 93 Option["sgr-prompt"][1] = n[1] 94 Option["sgr-prompt"][2] = "bold" 95} 96 97# Set theme to: default. 98function setDefaultTheme() { 99 Option["sgr-translation"] = Option["sgr-translation-phonetics"] = "bold" 100 Option["sgr-prompt-message-original"] = "underline" 101 Option["sgr-languages-sl"] = "underline" 102 Option["sgr-languages-tl"] = "bold" 103 Option["sgr-original-dictionary-detailed-explanation"] = "bold" 104 Option["sgr-original-dictionary-detailed-synonyms-item"] = "bold" 105 Option["sgr-original-dictionary-synonyms-synonyms-item"] = "bold" 106 Option["sgr-original-dictionary-examples-original"][1] = "bold" 107 Option["sgr-original-dictionary-examples-original"][2] = "underline" 108 Option["sgr-original-dictionary-see-also-phrases-item"] = "bold" 109 Option["sgr-dictionary-word"] = "bold" 110 Option["sgr-alternatives-original"] = "underline" 111 Option["sgr-alternatives-translations-item"] = "bold" 112 Option["fmt-welcome-message"] = Name 113 Option["sgr-welcome-message"] = "bold" 114 Option["fmt-welcome-submessage"] = "(:q to quit)" 115 Option["fmt-prompt"] = "%s> " 116 Option["sgr-prompt"] = "bold" 117} 118 119# Set theme using corresponding option. 120function setTheme( file, line, script) { 121 if (Option["theme"] && Option["theme"] != "default" \ 122 && Option["theme"] != "none" && Option["theme"] != "random") { 123 file = Option["theme"] 124 if (!fileExists(file)) { 125 file = ENVIRON["HOME"] "/.translate-shell/" Option["theme"] 126 if (!fileExists(file)) { 127 file = ENVIRON["HOME"] "/.config/translate-shell/" Option["theme"] 128 if (!fileExists(file)) return 129 } 130 } 131 } 132 133 if (file && fileExists(file)) { 134 # Read from theme file 135 script = NULLSTR 136 while (getline line < file) 137 script = script "\n" line 138 loadOptions(script) 139 } else if (Option["theme"] == "none") 140 ;# skip 141 else if (Option["theme"] == "random") 142 setRandomTheme() 143 else 144 setDefaultTheme() 145} 146