From b264f1133e9df1a093bf3d67f4e887a2ec7ec692 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 6 Jun 2016 20:00:49 -0700 Subject: [PATCH] Add basic theming --- .../media/terminal.contribution.css | 4 ++-- .../electron-browser/terminalInstance.ts | 8 ------- .../electron-browser/terminalPanel.ts | 24 ++++++++++++++++++- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/media/terminal.contribution.css b/src/vs/workbench/parts/terminal/electron-browser/media/terminal.contribution.css index 39fe61b138b..98ff533f3b9 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/media/terminal.contribution.css +++ b/src/vs/workbench/parts/terminal/electron-browser/media/terminal.contribution.css @@ -143,7 +143,7 @@ background-color: rgba(204, 204, 204, 0.996); } -.terminal .xterm-color-0 { color: #2e3436; } +/*.terminal .xterm-color-0 { color: #2e3436; } .terminal .xterm-color-0::selection { background-color: #2e3436; } .terminal .xterm-bg-color-0 { background-color: #2e3436; } .terminal .xterm-bg-color-0::selection { color: #2e3436; } @@ -252,7 +252,7 @@ .terminal .xterm-bg-color-15 { background-color: #eeeeec; -} +}*/ .terminal .xterm-color-16 { color: #000000; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 15c981cb8f1..002f5c75d71 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -128,14 +128,6 @@ export class TerminalInstance { }); } - public setTheme(colors: string[]): void { - if (!this.terminal) { - return; - } - this.terminal.colors = colors; - this.terminal.refresh(0, this.terminal.rows); - } - public setFont(font: ITerminalFont): void { this.font = font; this.terminalDomElement.style.fontFamily = this.font.fontFamily; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts index 60f2e6e0fb7..199591d532e 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts @@ -88,7 +88,29 @@ export class TerminalPanel extends Panel { if (!themeId) { themeId = this.themeService.getTheme(); } - this.terminalInstance.setTheme(this.configurationHelper.getTheme(themeId)); + let theme = this.configurationHelper.getTheme(themeId); + + let css = ''; + theme.forEach((color: string, index: number) => { + let rgba = this.convertHexCssColorToRgba(color, 0.996); + css += `.terminal .xterm-color-${index} { color: ${color}; }` + + `.terminal .xterm-color-${index}::selection { background-color: ${rgba}; }` + + `.terminal .xterm-bg-color-${index} { background-color: ${color}; }` + + `.terminal .xterm-bg-color-${index}::selection { color: ${color}; }`; + }); + + // TODO: Create in constructor + // TODO: Reuse same element + let styleElement = document.createElement('style'); + styleElement.innerHTML = css; + this.parentDomElement.appendChild(styleElement); + } + + private convertHexCssColorToRgba(hex: string, alpha: number): string { + let r = parseInt(hex.substr(1, 2), 16); + let g = parseInt(hex.substr(3, 2), 16); + let b = parseInt(hex.substr(5, 2), 16); + return `rgba(${r}, ${g}, ${b}, ${alpha})`; } private updateFont(): void { -- GitLab