From 6828c255a6ecf9994aa53ebaf7f28c60976fbf89 Mon Sep 17 00:00:00 2001
From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com>
Date: Mon, 30 Sep 2024 10:33:54 +0900
Subject: [PATCH] [Update] Add Message Log Ui Scaling.
---
src-python/config.py | 2 +-
src-ui/app/App.jsx | 3 ++
.../setting_box/appearance/Appearance.jsx | 44 +++++++++++++++++++
.../message_container/log_box/LogBox.jsx | 14 ++++++
.../log_box/LogBox.module.scss | 5 +--
.../MessageContainer.module.scss | 14 +++---
.../logics/configs/useMessageLogUiScaling.js | 24 ++++++++++
src-ui/logics/useReceiveRoutes.js | 5 +++
src-ui/store.js | 1 +
9 files changed, 100 insertions(+), 12 deletions(-)
create mode 100644 src-ui/logics/configs/useMessageLogUiScaling.js
diff --git a/src-python/config.py b/src-python/config.py
index 7b41b86f..74e0e7c0 100644
--- a/src-python/config.py
+++ b/src-python/config.py
@@ -377,7 +377,7 @@ class Config:
@TEXTBOX_UI_SCALING.setter
def TEXTBOX_UI_SCALING(self, value):
- if isinstance(value, int) and self.TEXTBOX_UI_SCALING_RANGE[0] <= value <= self.TEXTBOX_UI_SCALING_RANGE[1]:
+ if isinstance(value, int):
self._TEXTBOX_UI_SCALING = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
diff --git a/src-ui/app/App.jsx b/src-ui/app/App.jsx
index 43be2060..28cd4be8 100644
--- a/src-ui/app/App.jsx
+++ b/src-ui/app/App.jsx
@@ -32,6 +32,7 @@ import { useEnableAutoClearMessageBox } from "@logics_configs/useEnableAutoClear
import { useSendMessageButtonType } from "@logics_configs/useSendMessageButtonType";
import { useUiLanguage } from "@logics_configs/useUiLanguage";
import { useUiScaling } from "@logics_configs/useUiScaling";
+import { useMessageLogUiScaling } from "@logics_configs/useMessageLogUiScaling";
import { useIsMainPageCompactMode } from "@logics_main/useIsMainPageCompactMode";
import { useLanguageSettings } from "@logics_main/useLanguageSettings";
@@ -64,6 +65,7 @@ const StartPythonFacadeComponent = () => {
const { getSendMessageButtonType } = useSendMessageButtonType();
const { getUiLanguage } = useUiLanguage();
const { getUiScaling } = useUiScaling();
+ const { getMessageLogUiScaling } = useMessageLogUiScaling();
const {
getSelectedPresetTabNumber,
@@ -83,6 +85,7 @@ const StartPythonFacadeComponent = () => {
asyncStartPython().then((result) => {
getUiLanguage();
getUiScaling();
+ getMessageLogUiScaling();
getIsMainPageCompactMode();
getMessageInputBoxRatio();
diff --git a/src-ui/app/config_page/setting_section/setting_box/appearance/Appearance.jsx b/src-ui/app/config_page/setting_section/setting_box/appearance/Appearance.jsx
index 36f38671..ee5c7bd2 100644
--- a/src-ui/app/config_page/setting_section/setting_box/appearance/Appearance.jsx
+++ b/src-ui/app/config_page/setting_section/setting_box/appearance/Appearance.jsx
@@ -24,6 +24,7 @@ export const Appearance = () => {
<>
+
@@ -140,4 +141,47 @@ const UiScalingContainer = () => {
track={false}
/>
);
+};
+
+import { useMessageLogUiScaling } from "@logics_configs/useMessageLogUiScaling";
+
+const MessageLogUiScalingContainer = () => {
+ const { t } = useTranslation();
+ const { currentMessageLogUiScaling, setMessageLogUiScaling } = useMessageLogUiScaling();
+ const [ui_message_log_ui_scaling, setUiMessageLogUiScaling] = useState(currentMessageLogUiScaling.data);
+
+ const onchangeFunction = (value) => {
+ setUiMessageLogUiScaling(value);
+ };
+ const onchangeCommittedFunction = (value) => {
+ setMessageLogUiScaling(value);
+ };
+ useEffect(() => {
+ setUiMessageLogUiScaling(currentMessageLogUiScaling.data);
+ }, [currentMessageLogUiScaling.data]);
+
+ const createMarks = (min, max) => {
+ const marks = [];
+ for (let value = min; value <= max; value += 10) {
+ const label = ([50,70,130,140,160,170,190].includes(value)) ? "" : value;
+ marks.push({ value, label: `${label}` });
+ }
+ return marks;
+ };
+
+ const marks = createMarks(40, 200);
+
+ return (
+
+ );
};
\ No newline at end of file
diff --git a/src-ui/app/main_page/main_section/message_container/log_box/LogBox.jsx b/src-ui/app/main_page/main_section/message_container/log_box/LogBox.jsx
index b04ef63b..5df72203 100644
--- a/src-ui/app/main_page/main_section/message_container/log_box/LogBox.jsx
+++ b/src-ui/app/main_page/main_section/message_container/log_box/LogBox.jsx
@@ -41,9 +41,23 @@ export const LogBox = () => {
return (
+
{currentMessageLogs.data.map(message_data => (
))}
);
+};
+
+import { useMessageLogUiScaling } from "@logics_configs/useMessageLogUiScaling";
+const MessageLogUiSizeController = () => {
+ const { currentMessageLogUiScaling } = useMessageLogUiScaling();
+ const font_size = currentMessageLogUiScaling.data / 100;
+
+ useEffect(() => {
+ const log_container_el = document.getElementById("log_container");
+ log_container_el.style.setProperty("font-size", `${font_size}rem`);
+ }, [currentMessageLogUiScaling.data]);
+
+ return null;
};
\ No newline at end of file
diff --git a/src-ui/app/main_page/main_section/message_container/log_box/LogBox.module.scss b/src-ui/app/main_page/main_section/message_container/log_box/LogBox.module.scss
index 1a29c1dc..35d49601 100644
--- a/src-ui/app/main_page/main_section/message_container/log_box/LogBox.module.scss
+++ b/src-ui/app/main_page/main_section/message_container/log_box/LogBox.module.scss
@@ -6,8 +6,5 @@
overflow: auto;
border-radius: 0.8rem;
padding: 1rem;
-}
-
-.text {
- overflow-wrap: break-word;
+ font-size: 1rem; // This is the standard font size for message logs, and is controlled by JavaScript. All child elements this are generally expressed in "em" and are affected by the font size setting here.
}
\ No newline at end of file
diff --git a/src-ui/app/main_page/main_section/message_container/log_box/message_container/MessageContainer.module.scss b/src-ui/app/main_page/main_section/message_container/log_box/message_container/MessageContainer.module.scss
index c92335b1..6ac8ecee 100644
--- a/src-ui/app/main_page/main_section/message_container/log_box/message_container/MessageContainer.module.scss
+++ b/src-ui/app/main_page/main_section/message_container/log_box/message_container/MessageContainer.module.scss
@@ -1,7 +1,7 @@
@import "@scss_mixins";
.container {
- margin-bottom: 1rem;
+ margin-bottom: 1em;
width: 100%;
flex-direction: column;
display: flex;
@@ -18,7 +18,7 @@
.info_box {
position: relative;
display: flex;
- gap: 0.8rem;
+ gap: 0.8em;
justify-content: center;
&.sent_message {
align-items: end;
@@ -30,16 +30,16 @@
}
.loader {
- @include loader(0.8rem, 0.1rem, left, -1rem);
+ @include loader(0.8em, 0.1em, left, -1em);
}
.time {
- font-size: 1rem;
+ font-size: 1em;
color: var(--dark_600_color);
}
.category {
- font-size: 1rem;
+ font-size: 1em;
&.sent_message {
color: var(--sent_400_color);
}
@@ -63,11 +63,11 @@
.message_main {
color: var(--dark_basic_text_color);
user-select: text;
- font-size: 1.4rem;
+ font-size: 1.4em;
}
.message_second {
color: var(--dark_450_color);
user-select: text;
- font-size: 1rem;
+ font-size: 1em;
}
\ No newline at end of file
diff --git a/src-ui/logics/configs/useMessageLogUiScaling.js b/src-ui/logics/configs/useMessageLogUiScaling.js
new file mode 100644
index 00000000..625f6263
--- /dev/null
+++ b/src-ui/logics/configs/useMessageLogUiScaling.js
@@ -0,0 +1,24 @@
+import { useStore_MessageLogUiScaling } from "@store";
+import { useStdoutToPython } from "@logics/useStdoutToPython";
+
+export const useMessageLogUiScaling = () => {
+ const { asyncStdoutToPython } = useStdoutToPython();
+ const { currentMessageLogUiScaling, updateMessageLogUiScaling, pendingMessageLogUiScaling } = useStore_MessageLogUiScaling();
+
+ const getMessageLogUiScaling = () => {
+ pendingMessageLogUiScaling();
+ asyncStdoutToPython("/get/data/textbox_ui_scaling");
+ };
+
+ const setMessageLogUiScaling = (selected_ui_scaling) => {
+ pendingMessageLogUiScaling();
+ asyncStdoutToPython("/set/data/textbox_ui_scaling", selected_ui_scaling);
+ };
+
+ return {
+ currentMessageLogUiScaling,
+ getMessageLogUiScaling,
+ updateMessageLogUiScaling,
+ setMessageLogUiScaling,
+ };
+};
\ No newline at end of file
diff --git a/src-ui/logics/useReceiveRoutes.js b/src-ui/logics/useReceiveRoutes.js
index 0b07554f..c74e6681 100644
--- a/src-ui/logics/useReceiveRoutes.js
+++ b/src-ui/logics/useReceiveRoutes.js
@@ -28,6 +28,7 @@ import { useSendMessageButtonType } from "@logics_configs/useSendMessageButtonTy
import { useUiLanguage } from "@logics_configs/useUiLanguage";
import { useUiScaling } from "@logics_configs/useUiScaling";
+import { useMessageLogUiScaling } from "@logics_configs/useMessageLogUiScaling";
export const useReceiveRoutes = () => {
const { updateIsMainPageCompactMode } = useIsMainPageCompactMode();
@@ -65,6 +66,7 @@ export const useReceiveRoutes = () => {
const { updateSendMessageButtonType } = useSendMessageButtonType();
const { updateUiLanguage } = useUiLanguage();
const { updateUiScaling } = useUiScaling();
+ const { updateMessageLogUiScaling } = useMessageLogUiScaling();
const {
updateVolumeVariable_Mic,
updateVolumeVariable_Speaker,
@@ -203,6 +205,9 @@ export const useReceiveRoutes = () => {
"/get/data/ui_scaling": updateUiScaling,
"/set/data/ui_scaling": updateUiScaling,
+ "/get/data/textbox_ui_scaling": updateMessageLogUiScaling,
+ "/set/data/textbox_ui_scaling": updateMessageLogUiScaling,
+
// Others Tab
"/get/data/auto_clear_message_box": updateEnableAutoClearMessageBox,
"/set/enable/auto_clear_message_box": updateEnableAutoClearMessageBox,
diff --git a/src-ui/store.js b/src-ui/store.js
index 2bb8531d..7afbd47c 100644
--- a/src-ui/store.js
+++ b/src-ui/store.js
@@ -171,6 +171,7 @@ export const { atomInstance: Atom_EnableAutomaticSpeakerThreshold, useHook: useS
// Appearance
export const { atomInstance: Atom_UiLanguage, useHook: useStore_UiLanguage } = createAtomWithHook("en", "UiLanguage");
export const { atomInstance: Atom_UiScaling, useHook: useStore_UiScaling } = createAtomWithHook(100, "UiScaling");
+export const { atomInstance: Atom_MessageLogUiScaling, useHook: useStore_MessageLogUiScaling } = createAtomWithHook(100, "MessageLogUiScaling");
export const { atomInstance: Atom_IsOpenedWordFilterList, useHook: useStore_IsOpenedWordFilterList } = createAtomWithHook(false, "IsOpenedWordFilterList");