// 2026 yonder function OnInit(init) { init.name = "Quick Tab Colors"; init.desc = "Quickly copy and transfer tab colors"; init.copyright = "2026 yonder"; init.version = "1.1"; init.default_enable = true; init.min_version = "13.1"; var cmd = init.AddCommand(); cmd.name = "TabColor"; cmd.label = "TabColor"; cmd.method = "TabColor"; cmd.desc = "Copy and clear tab colors quicker"; cmd.template = "COPY/S,CLEARALL/S,TABID/R"; } //----------------------------------------------- function OnTabClick(data) { if (data.qualifiers == "shift,ctrl") { var clip = DOpus.GetClip("text"); var df = DOpus.Create(); var cmd = df.Command(); cmd.SetSourceTab(data.tab); if (clip == "#clear") { cmd.RunCommand('Go TABCOLOR=reset'); return false; } if (!IsValidHexColor(clip) && !IsValidDecColor(clip)) return false; cmd.RunCommand('Go TABCOLOR ' + clip); return false; } } //----------------------------------------------- function TabColor(data) { var tabs = DOpus.Listers(0).tabs; var tabId = parseInt(data.func.args.tabid); if (data.func.args.got_arg.clearall) { var cmd = data.func.command; for (var i = 0; i < tabs.count; i++) { cmd.SetSourceTab(tabs(i)); cmd.RunCommand("Go TABCOLOR=reset"); } return; } if (data.func.args.tabid) { if (tabs(tabId).color == "none") { DOpus.Listers(0).vars("tab_color") = ""; return; } // Lister var used to pass color back to copy button tooltip evaluator DOpus.Listers(0).vars("tab_color") = RgbDecToHex(tabs(tabId).color); } if (data.func.args.got_arg.copy) { if (tabs(tabId).color == "none") return; else DOpus.SetClip(RgbDecToHex(tabs(tabId).color)); } } //----------------------------------------------- function RgbDecToHex(rgb) { var parts = rgb.split(","); var hex = "#"; for (var i = 0; i < 3; i++) { var val = parseInt(parts[i], 10); var h = val.toString(16); if (h.length < 2) h = "0" + h; hex += h; } return hex; } //----------------------------------------------- function IsValidDecColor(str) { var match = /^(\d{1,3}),(\d{1,3}),(\d{1,3})$/.exec(str); if (!match) return false; for (var i = 1; i <= 3; i++) { var val = parseInt(match[i], 10); if (val < 0 || val > 255) return false; } return true; } function IsValidHexColor(str) {return /^#[0-9A-Fa-f]{6}$/.test(str);}