From 51e78ee8663c42661bc187218f3e089cfd993aef Mon Sep 17 00:00:00 2001 From: booploops <49113086+booploops@users.noreply.github.com> Date: Mon, 11 Apr 2022 12:39:19 -0700 Subject: [PATCH] adds style stack editor --- src/main/base/store.ts | 1 + src/renderer/main/vueapp.js | 31 ++++++- src/renderer/views/pages/settings.ejs | 125 +++++++++++++++++++++----- 3 files changed, 133 insertions(+), 24 deletions(-) diff --git a/src/main/base/store.ts b/src/main/base/store.ts index 6d59627f..6f1ea21e 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -115,6 +115,7 @@ export class Store { }, "visual": { "theme": "", + "styles": [], "scrollbars": 0, // 0 = show on hover, 2 = always hide, 3 = always show "refresh_rate": 0, "window_background_style": "artwork", // "none", "artwork", "color" diff --git a/src/renderer/main/vueapp.js b/src/renderer/main/vueapp.js index 1cb68db9..bffe6a59 100644 --- a/src/renderer/main/vueapp.js +++ b/src/renderer/main/vueapp.js @@ -465,9 +465,9 @@ const app = new Vue({ history.forward() }, getHTMLStyle() { - if(app.cfg.visual.uiScale != 1) { + if (app.cfg.visual.uiScale != 1) { document.querySelector("#app").style.zoom = app.cfg.visual.uiScale - }else{ + } else { document.querySelector("#app").style.zoom = "" } }, @@ -956,6 +956,31 @@ const app = new Vue({ less.refresh() } }, + async reloadStyles() { + const styles = this.cfg.visual.styles + document.querySelectorAll(`[id*='less']`).forEach(el => { + el.remove() + }); + this.chrome.appliedTheme.info = {} + await asyncForEach(styles, async (style) => { + let styleEl = document.createElement("link") + styleEl.id = `less-${style.replace(".less", "")}` + styleEl.rel = "stylesheet/less" + styleEl.href = `themes/${style}` + styleEl.type = "text/css" + document.head.appendChild(styleEl) + try { + let infoResponse = await fetch("themes/" + style.replace("index.less", "theme.json")) + this.chrome.appliedTheme.info = Object.assign(this.chrome.appliedTheme.info, await infoResponse.json()) + } catch (e) { + e = null + console.warn("failed to get theme.json") + } + }) + less.registerStylesheetsImmediately() + less.refresh(true, true, true) + this.$forceUpdate() + }, macOSEmu() { this.chrome.forceDirectives["macosemu"] = { value: true @@ -3811,7 +3836,7 @@ const app = new Vue({ ] } } - if(this.cfg.advanced.AudioContext) { + if (this.cfg.advanced.AudioContext) { menus.normal.items.find(i => i.id === 'audioLab').hidden = false menus.normal.items.find(i => i.id === 'equalizer').hidden = false } diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index a21bee83..3388d3dd 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -840,6 +840,17 @@ +
+ +
+ Style Stack Editor +
+
+ +
+ +
+
{{$root.getLz('settings.option.experimental.unknownPlugin')}} @@ -938,6 +949,77 @@
+ + + \ No newline at end of file