webconfig: Allow transferring modifiers and backgrounds

This just simply passed the "color" value, which is just the
foreground color string.

Instead, we pass the actual object back, with the modifiers as bools
and foreground/background separate.

Our themes don't use background a lot, except in the pager, so this
never really came up.
This commit is contained in:
Fabian Homborg 2021-12-13 21:28:16 +01:00
parent 235581e8dc
commit ba0b7133ad
2 changed files with 32 additions and 2 deletions

View File

@ -73,6 +73,7 @@ controllers.controller("colorsController", function($scope, $http) {
$scope.changeSelectedTextColor = function(color) {
$scope.selectedColorScheme[$scope.selectedColorSetting] = color;
$scope.selectedColorScheme["colordata-" + $scope.selectedColorSetting].color = color;
$scope.noteThemeChanged();
}
@ -102,9 +103,15 @@ controllers.controller("colorsController", function($scope, $http) {
}
if (scheme["url"]) currentScheme["url"] = scheme["url"];
var cols = [];
for (var i in data) {
if (isValidColor(data[i].color)) {
currentScheme[data[i].name] = data[i].color;
// HACK: For some reason the colors array is cleared later
// So we cheesily encode the actual objects as colordata-, so we can send them.
// TODO: We should switch to keeping the objects, and also displaying them
// with underlines and such.
currentScheme["colordata-" + data[i].name] = data[i];
}
}
$scope.colorSchemes.push(currentScheme);
@ -167,13 +174,14 @@ controllers.controller("colorsController", function($scope, $http) {
}
for (var name of settingNames) {
var selected;
var realname = "colordata-" + name;
// Skip colors undefined in the current theme
// js is dumb - the empty string is false,
// but we want that to mean unsetting a var.
if (!$scope.selectedColorScheme[name] && $scope.selectedColorScheme[name] !== '') {
if (!$scope.selectedColorScheme[realname] && $scope.selectedColorScheme[realname] !== '') {
selected = '';
} else {
selected = $scope.selectedColorScheme[name];
selected = $scope.selectedColorScheme[realname];
}
postdata.colors.push({
"what" : name,

View File

@ -226,6 +226,26 @@ def parse_color(color_str):
"reverse": reverse,
}
def unparse_color(col):
"""A basic function to return the fish version of a color dict"""
if isinstance(col, str):
return col
ret = ""
if col["color"]:
ret += col["color"]
if col["bold"]:
ret += " --bold"
if col["underline"]:
ret += " --underline"
if col["italics"]:
ret += " --italics"
if col["dim"]:
ret += " --dim"
if col["reverse"]:
ret += " --reverse"
if col["background"]:
ret += " --background=" + col["background"]
return ret
def parse_bool(val):
val = val.lower()
@ -1114,6 +1134,8 @@ class FishConfigHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
raise ValueError
if not color and not color == "":
color = "normal"
else:
color = unparse_color(color)
if not name.startswith("fish_pager_color_"):
varname = "fish_color_" + name
# If the name already starts with "fish_", use it as the varname