diff --git a/app/src/main/java/io/neoterm/customize/NeoTermColorScheme.kt b/app/src/main/java/io/neoterm/customize/NeoTermColorScheme.kt new file mode 100644 index 0000000..8b00ff0 --- /dev/null +++ b/app/src/main/java/io/neoterm/customize/NeoTermColorScheme.kt @@ -0,0 +1,24 @@ +package io.neoterm.customize + +import io.neoterm.terminal.TerminalColors +import io.neoterm.terminal.TerminalSession + +/** + * @author kiva + */ +class NeoTermColorScheme { + var foreground: String? = null + var background: String? = null + var cursor: String? = null + var color: MutableMap = mutableMapOf() + + fun apply(session: TerminalSession?) { + if (session == null) { + return + } + + val termSession = session + TerminalColors.COLOR_SCHEME.updateWith(foreground, background, cursor, color) + termSession.emulator.mColors.reset() + } +} \ No newline at end of file diff --git a/app/src/main/java/io/neoterm/tab/TermTab.kt b/app/src/main/java/io/neoterm/tab/TermTab.kt index 6563aae..c62298f 100644 --- a/app/src/main/java/io/neoterm/tab/TermTab.kt +++ b/app/src/main/java/io/neoterm/tab/TermTab.kt @@ -4,6 +4,7 @@ import android.os.Parcel import android.os.Parcelable import android.support.v7.widget.Toolbar import de.mrapp.android.tabswitcher.Tab +import io.neoterm.customize.NeoTermColorScheme import io.neoterm.terminal.TerminalSession /** @@ -20,6 +21,10 @@ class TermTab : Tab { private constructor(source: Parcel) : super(source) + fun changeColorScheme(colorScheme: NeoTermColorScheme?) { + colorScheme?.apply(termSession) + } + fun cleanup() { termSession?.finishIfRunning() viewClient?.termView = null diff --git a/app/src/main/java/io/neoterm/terminal/TerminalColorScheme.java b/app/src/main/java/io/neoterm/terminal/TerminalColorScheme.java index 881015a..6da8d33 100755 --- a/app/src/main/java/io/neoterm/terminal/TerminalColorScheme.java +++ b/app/src/main/java/io/neoterm/terminal/TerminalColorScheme.java @@ -69,6 +69,17 @@ public final class TerminalColorScheme { System.arraycopy(DEFAULT_COLORSCHEME, 0, mDefaultColors, 0, TextStyle.NUM_INDEXED_COLORS); } + public void updateWith(String foreground, String background, String cursor, Map color) { + Properties prop = new Properties(); + prop.put("foreground", foreground); + prop.put("background", background); + prop.put("cursor", cursor); + for (int i : color.keySet()) { + prop.put("color" + i, color.get(i)); + } + updateWith(prop); + } + public void updateWith(Properties props) { reset(); for (Map.Entry entries : props.entrySet()) {