mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
feat: add gradent selector
This commit is contained in:
parent
2e339b7557
commit
660868df06
5 changed files with 47 additions and 4 deletions
|
@ -180,6 +180,9 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="gradient_selector"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
@ -373,16 +373,22 @@ class Preferences(QDialog):
|
|||
qconnect(self.form.resetWindowSizes.clicked, self.on_reset_window_sizes)
|
||||
|
||||
self.form.color_blind.setChecked(self.mw.pm.color_blind())
|
||||
qconnect(self.form.color_blind.stateChanged, self.on_my_checkbox_changed)
|
||||
qconnect(self.form.color_blind.stateChanged, self.on_color_blind_checkbox_changed)
|
||||
|
||||
self.form.gradient_selector.setVisible(not is_win)
|
||||
self.form.gradient_selector.addItems(["Default","Viridis","Inferno","Magma","Plasma","Cividis",])
|
||||
self.form.gradient_selector.setCurrentIndex(self.mw.pm.get_gradient_index())
|
||||
qconnect(
|
||||
self.form.gradient_selector.currentIndexChanged,
|
||||
self.mw.pm.set_gradient_index,
|
||||
)
|
||||
|
||||
self.setup_language()
|
||||
self.setup_video_driver()
|
||||
|
||||
self.setupOptions()
|
||||
|
||||
def on_my_checkbox_changed(self, state: int) -> None:
|
||||
print("color_blind state changed", state)
|
||||
def on_color_blind_checkbox_changed(self, state: int) -> None:
|
||||
if state == 2:
|
||||
# checkbox is checked
|
||||
self.mw.pm.set_color_blind(True)
|
||||
|
|
|
@ -540,6 +540,12 @@ create table if not exists profiles
|
|||
|
||||
def color_blind(self) -> bool:
|
||||
return self.meta.get("color_blind", False)
|
||||
|
||||
def set_gradient_index(self, index: int) -> None:
|
||||
self.meta["gradient_index"] = index
|
||||
|
||||
def get_gradient_index(self) -> int:
|
||||
return self.meta.get("gradient_index", 0)
|
||||
|
||||
def reduce_motion(self) -> bool:
|
||||
return self.meta.get("reduce_motion", True)
|
||||
|
|
|
@ -142,6 +142,9 @@ class NewDeckStats(QDialog):
|
|||
def on_load_finished(success: bool) -> None:
|
||||
if success:
|
||||
is_color_blind = self.mw.pm.color_blind()
|
||||
selected_gradient = self.mw.pm.get_gradient_index()
|
||||
js_code = f"window.selectedGradient = {str(selected_gradient).lower()};"
|
||||
self.form.web.eval(js_code)
|
||||
js_code = f"window.colorBlindMode = {str(is_color_blind).lower()};"
|
||||
self.form.web.eval(js_code)
|
||||
# Disconnect after running once to avoid multiple triggers
|
||||
|
|
|
@ -10,7 +10,7 @@ import * as tr from "@generated/ftl";
|
|||
import { localizedNumber } from "@tslib/i18n";
|
||||
import { dayLabel } from "@tslib/time";
|
||||
import type { Bin } from "d3";
|
||||
import { bin, extent, interpolateGreens, scaleLinear, scaleSequential, sum, interpolateViridis } from "d3";
|
||||
import { bin, extent, interpolateGreens, scaleLinear, scaleSequential, sum, interpolateViridis, interpolateInferno, interpolateMagma, interpolatePlasma,interpolateCividis } from "d3";
|
||||
|
||||
import type { SearchDispatch, TableDatum } from "./graph-helpers";
|
||||
import { getNumericMapBinValue, GraphRange, numericMap } from "./graph-helpers";
|
||||
|
@ -123,7 +123,32 @@ export function buildHistogram(
|
|||
adjustedRange = scaleLinear().range([0.7, 0.3]);
|
||||
}
|
||||
|
||||
const selectedGradient = (window as any).selectedGradient;
|
||||
console.log("Gradient selector:", selectedGradient);
|
||||
|
||||
switch (selectedGradient) {
|
||||
case 0:
|
||||
colourScale = scaleSequential((n) => interpolateGreens(adjustedRange(n)!)).domain([xMin!, xMax!]);
|
||||
break;
|
||||
case 1:
|
||||
colourScale = scaleSequential((n) => interpolateViridis(adjustedRange(n)!)).domain([xMin!, xMax!]);
|
||||
break;
|
||||
case 2:
|
||||
colourScale = scaleSequential((n) => interpolateInferno(adjustedRange(n)!)).domain([xMin!, xMax!]);
|
||||
break;
|
||||
case 3:
|
||||
colourScale = scaleSequential((n) => interpolateMagma(adjustedRange(n)!)).domain([xMin!, xMax!]);
|
||||
break;
|
||||
case 4:
|
||||
colourScale = scaleSequential((n) => interpolatePlasma(adjustedRange(n)!)).domain([xMin!, xMax!]);
|
||||
break;
|
||||
case 5:
|
||||
colourScale = scaleSequential((n) => interpolateCividis(adjustedRange(n)!)).domain([xMin!, xMax!]);
|
||||
break;
|
||||
default:
|
||||
colourScale = scaleSequential((n) => interpolateGreens(adjustedRange(n)!)).domain([xMin!, xMax!]);
|
||||
break;
|
||||
}
|
||||
|
||||
const total = sum(bins as any, getNumericMapBinValue);
|
||||
|
||||
|
|
Loading…
Reference in a new issue