[Refactor] config.pyへ、設定可能な範囲などを移動。設定値のソース一元化。
language.pyの中身はconfig.SELECTABLE_UI_LANGUAGES_DICTに移動しました。 設定可能な範囲、TRANSPARENCYが0~100になっていたので50~100に修正。
This commit is contained in:
52
config.py
52
config.py
@@ -5,7 +5,6 @@ from json import load as json_load
|
||||
from json import dump as json_dump
|
||||
import tkinter as tk
|
||||
from tkinter import font
|
||||
from languages import selectable_languages
|
||||
from models.translation.translation_languages import translatorEngine
|
||||
from models.transcription.transcription_utils import getInputDevices, getDefaultInputDevice
|
||||
from utils import generatePercentageStringsList, isUniqueStrings
|
||||
@@ -67,6 +66,30 @@ class Config:
|
||||
def DOCUMENTS_URL(self):
|
||||
return self._DOCUMENTS_URL
|
||||
|
||||
@property
|
||||
def TRANSPARENCY_RANGE(self):
|
||||
return self._TRANSPARENCY_RANGE
|
||||
|
||||
@property
|
||||
def APPEARANCE_THEME_LIST(self):
|
||||
return self._APPEARANCE_THEME_LIST
|
||||
|
||||
@property
|
||||
def UI_SCALING_LIST(self):
|
||||
return self._UI_SCALING_LIST
|
||||
|
||||
@property
|
||||
def TEXTBOX_UI_SCALING_RANGE(self):
|
||||
return self._TEXTBOX_UI_SCALING_RANGE
|
||||
|
||||
@property
|
||||
def MESSAGE_BOX_RATIO_RANGE(self):
|
||||
return self._MESSAGE_BOX_RATIO_RANGE
|
||||
|
||||
@property
|
||||
def SELECTABLE_UI_LANGUAGES_DICT(self):
|
||||
return self._SELECTABLE_UI_LANGUAGES_DICT
|
||||
|
||||
@property
|
||||
def MAX_MIC_ENERGY_THRESHOLD(self):
|
||||
return self._MAX_MIC_ENERGY_THRESHOLD
|
||||
@@ -211,7 +234,7 @@ class Config:
|
||||
|
||||
@TRANSPARENCY.setter
|
||||
def TRANSPARENCY(self, value):
|
||||
if isinstance(value, int) and 0 <= value <= 100:
|
||||
if isinstance(value, int) and self.TRANSPARENCY_RANGE[0] <= value <= self.TRANSPARENCY_RANGE[1]:
|
||||
self._TRANSPARENCY = value
|
||||
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
|
||||
|
||||
@@ -222,7 +245,7 @@ class Config:
|
||||
|
||||
@APPEARANCE_THEME.setter
|
||||
def APPEARANCE_THEME(self, value):
|
||||
if value in ["Light", "Dark", "System"]:
|
||||
if value in self.APPEARANCE_THEME_LIST:
|
||||
self._APPEARANCE_THEME = value
|
||||
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
|
||||
|
||||
@@ -233,7 +256,7 @@ class Config:
|
||||
|
||||
@UI_SCALING.setter
|
||||
def UI_SCALING(self, value):
|
||||
if value in generatePercentageStringsList(start=40,end=200, step=10):
|
||||
if value in self.UI_SCALING_LIST:
|
||||
self._UI_SCALING = value
|
||||
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
|
||||
|
||||
@@ -244,7 +267,7 @@ class Config:
|
||||
|
||||
@TEXTBOX_UI_SCALING.setter
|
||||
def TEXTBOX_UI_SCALING(self, value):
|
||||
if isinstance(value, int) and 50 <= value <= 200:
|
||||
if isinstance(value, int) and self.TEXTBOX_UI_SCALING_RANGE[0] <= value <= self.TEXTBOX_UI_SCALING_RANGE[1]:
|
||||
self._TEXTBOX_UI_SCALING = value
|
||||
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
|
||||
|
||||
@@ -255,7 +278,7 @@ class Config:
|
||||
|
||||
@MESSAGE_BOX_RATIO.setter
|
||||
def MESSAGE_BOX_RATIO(self, value):
|
||||
if isinstance(value, int) and 1 <= value <= 99:
|
||||
if isinstance(value, int) and self.MESSAGE_BOX_RATIO_RANGE[0] <= value <= self.MESSAGE_BOX_RATIO_RANGE[1]:
|
||||
self._MESSAGE_BOX_RATIO = value
|
||||
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
|
||||
|
||||
@@ -280,7 +303,7 @@ class Config:
|
||||
|
||||
@UI_LANGUAGE.setter
|
||||
def UI_LANGUAGE(self, value):
|
||||
if value in list(selectable_languages.keys()):
|
||||
if value in list(self.SELECTABLE_UI_LANGUAGES_DICT.keys()):
|
||||
self._UI_LANGUAGE = value
|
||||
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
|
||||
|
||||
@@ -627,7 +650,7 @@ class Config:
|
||||
def init_config(self):
|
||||
# Read Only
|
||||
self._VERSION = "2.0.1"
|
||||
self._ENABLE_SPEAKER2CHATBOX = False
|
||||
self._ENABLE_SPEAKER2CHATBOX = False # Speaker2Chatbox
|
||||
self._LOCAL_PATH = os_path.dirname(sys.argv[0])
|
||||
self._PATH_CONFIG = os_path.join(self._LOCAL_PATH, "config.json")
|
||||
self._PATH_LOGS = os_path.join(self._LOCAL_PATH, "logs")
|
||||
@@ -635,6 +658,17 @@ class Config:
|
||||
self._GITHUB_URL = "https://api.github.com/repos/misyaguziya/VRCT/releases/latest"
|
||||
self._BOOTH_URL = "https://misyaguziya.booth.pm/"
|
||||
self._DOCUMENTS_URL = "https://mzsoftware.notion.site/VRCT-Documents-be79b7a165f64442ad8f326d86c22246"
|
||||
self._TRANSPARENCY_RANGE = (50, 100)
|
||||
self._APPEARANCE_THEME_LIST = ["Light", "Dark", "System"]
|
||||
self._UI_SCALING_LIST = generatePercentageStringsList(start=40, end=200, step=10)
|
||||
self._TEXTBOX_UI_SCALING_RANGE = (50, 200)
|
||||
self._MESSAGE_BOX_RATIO_RANGE = (1, 99)
|
||||
self._SELECTABLE_UI_LANGUAGES_DICT = {
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어(일부 지원)"
|
||||
# If you want to add a new language and key, please append it here.
|
||||
}
|
||||
self._MAX_MIC_ENERGY_THRESHOLD = 2000
|
||||
self._MAX_SPEAKER_ENERGY_THRESHOLD = 4000
|
||||
|
||||
@@ -708,7 +742,7 @@ class Config:
|
||||
self._ENABLE_SEND_ONLY_TRANSLATED_MESSAGES = False
|
||||
self._ENABLE_NOTICE_XSOVERLAY = False
|
||||
self._ENABLE_SEND_MESSAGE_TO_VRC = True
|
||||
self._ENABLE_SEND_RECEIVED_MESSAGE_TO_VRC = False # speaker2Chatbox
|
||||
self._ENABLE_SEND_RECEIVED_MESSAGE_TO_VRC = False # Speaker2Chatbox
|
||||
self._ENABLE_LOGGER = False
|
||||
self._IS_CONFIG_WINDOW_COMPACT_MODE = False
|
||||
|
||||
|
||||
@@ -4,8 +4,7 @@ from threading import Thread
|
||||
from config import config
|
||||
from model import model
|
||||
from view import view
|
||||
from utils import get_key_by_value, isUniqueStrings
|
||||
from languages import selectable_languages
|
||||
from utils import getKeyByValue, isUniqueStrings
|
||||
import argparse
|
||||
|
||||
# Common
|
||||
@@ -420,8 +419,8 @@ def callbackSetFontFamily(value):
|
||||
|
||||
def callbackSetUiLanguage(value):
|
||||
print("callbackSetUiLanguage", value)
|
||||
value = get_key_by_value(selectable_languages, value)
|
||||
print("callbackSetUiLanguage__after_get_key_by_value", value)
|
||||
value = getKeyByValue(config.SELECTABLE_UI_LANGUAGES_DICT, value)
|
||||
print("callbackSetUiLanguage__after_getKeyByValue", value)
|
||||
config.UI_LANGUAGE = value
|
||||
view.showRestartButtonIfRequired(locale=config.UI_LANGUAGE)
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
selectable_languages = {
|
||||
"en": "English",
|
||||
"ja": "日本語",
|
||||
"ko": "한국어(일부 지원)"
|
||||
# 新しい言語とキーを追加する場合はここに追記してください
|
||||
}
|
||||
4
utils.py
4
utils.py
@@ -6,7 +6,7 @@ def getImageFile(file_name):
|
||||
img = Image_open(os_path.join(os_path.dirname(__file__), "img", file_name))
|
||||
return img
|
||||
|
||||
def get_key_by_value(dictionary, value):
|
||||
def getKeyByValue(dictionary, value):
|
||||
for key, val in dictionary.items():
|
||||
if val == value:
|
||||
return key
|
||||
@@ -24,7 +24,7 @@ def makeEven(number, minus:bool=False):
|
||||
return number if isEven(number) else number - 1
|
||||
return number if isEven(number) else number + 1
|
||||
|
||||
def generatePercentageStringsList(start=40, end=200, step=10):
|
||||
def generatePercentageStringsList(start:int, end:int, step:int):
|
||||
strings = []
|
||||
for percent in range(start, end + 1, step):
|
||||
strings.append(f"{percent}%")
|
||||
|
||||
34
view.py
34
view.py
@@ -5,12 +5,10 @@ from tkinter import font as tk_font
|
||||
import webbrowser
|
||||
import i18n
|
||||
|
||||
from languages import selectable_languages
|
||||
|
||||
from customtkinter import StringVar, IntVar, BooleanVar, END as CTK_END, get_appearance_mode
|
||||
from customtkinter import StringVar, IntVar, BooleanVar, get_appearance_mode
|
||||
from vrct_gui.ui_managers import ColorThemeManager, UiScalingManager
|
||||
from vrct_gui import vrct_gui
|
||||
from utils import callFunctionIfCallable, generatePercentageStringsList, intToPercentageStringsFormatter
|
||||
from utils import callFunctionIfCallable, intToPercentageStringsFormatter
|
||||
|
||||
from config import config
|
||||
|
||||
@@ -143,7 +141,7 @@ class View():
|
||||
CALLBACK_SELECTED_LANGUAGE_PRESET_TAB=None,
|
||||
|
||||
VAR_LABEL_YOUR_LANGUAGE=StringVar(value=i18n.t("main_window.your_language")),
|
||||
VAR_YOUR_LANGUAGE = StringVar(value="Japanese\n(Japan)"),
|
||||
VAR_YOUR_LANGUAGE = StringVar(value=f"{config.SOURCE_LANGUAGE}\n({config.SOURCE_COUNTRY})"),
|
||||
CALLBACK_OPEN_SELECTABLE_YOUR_LANGUAGE_WINDOW=None,
|
||||
IS_OPENED_SELECTABLE_YOUR_LANGUAGE_WINDOW=False,
|
||||
CALLBACK_SELECTED_YOUR_LANGUAGE=None,
|
||||
@@ -153,7 +151,7 @@ class View():
|
||||
CALLBACK_SWAP_LANGUAGES=None,
|
||||
|
||||
VAR_LABEL_TARGET_LANGUAGE=StringVar(value=i18n.t("main_window.target_language")),
|
||||
VAR_TARGET_LANGUAGE = StringVar(value="English\n(United States)"),
|
||||
VAR_TARGET_LANGUAGE = StringVar(value=f"{config.TARGET_LANGUAGE}\n({config.TARGET_COUNTRY})"),
|
||||
CALLBACK_OPEN_SELECTABLE_TARGET_LANGUAGE_WINDOW=None,
|
||||
IS_OPENED_SELECTABLE_TARGET_LANGUAGE_WINDOW=False,
|
||||
CALLBACK_SELECTED_TARGET_LANGUAGE=None,
|
||||
@@ -202,7 +200,7 @@ class View():
|
||||
# Appearance Tab
|
||||
VAR_LABEL_TRANSPARENCY=StringVar(value=i18n.t("config_window.transparency.label")),
|
||||
VAR_DESC_TRANSPARENCY=StringVar(value=i18n.t("config_window.transparency.desc")),
|
||||
SLIDER_RANGE_TRANSPARENCY=(50, 100),
|
||||
SLIDER_RANGE_TRANSPARENCY=config.TRANSPARENCY_RANGE,
|
||||
CALLBACK_SET_TRANSPARENCY=None,
|
||||
VAR_TRANSPARENCY=IntVar(value=config.TRANSPARENCY),
|
||||
CALLBACK_BUTTON_PRESS_TRANSPARENCY=self._closeTheCoverOfMainWindow,
|
||||
@@ -210,19 +208,19 @@ class View():
|
||||
|
||||
VAR_LABEL_APPEARANCE_THEME=StringVar(value=i18n.t("config_window.appearance_theme.label")),
|
||||
VAR_DESC_APPEARANCE_THEME=StringVar(value=i18n.t("config_window.appearance_theme.desc")),
|
||||
LIST_APPEARANCE_THEME=["Light", "Dark", "System"],
|
||||
LIST_APPEARANCE_THEME=config.APPEARANCE_THEME_LIST,
|
||||
CALLBACK_SET_APPEARANCE_THEME=None,
|
||||
VAR_APPEARANCE_THEME=StringVar(value=config.APPEARANCE_THEME),
|
||||
|
||||
VAR_LABEL_UI_SCALING=StringVar(value=i18n.t("config_window.ui_size.label")),
|
||||
VAR_DESC_UI_SCALING=None,
|
||||
LIST_UI_SCALING=generatePercentageStringsList(start=40,end=200, step=10),
|
||||
LIST_UI_SCALING=config.UI_SCALING_LIST,
|
||||
CALLBACK_SET_UI_SCALING=None,
|
||||
VAR_UI_SCALING=StringVar(value=config.UI_SCALING),
|
||||
|
||||
VAR_LABEL_TEXTBOX_UI_SCALING=StringVar(value=i18n.t("config_window.textbox_ui_size.label")),
|
||||
VAR_DESC_TEXTBOX_UI_SCALING=StringVar(value=i18n.t("config_window.textbox_ui_size.desc")),
|
||||
SLIDER_RANGE_TEXTBOX_UI_SCALING=(50, 200),
|
||||
SLIDER_RANGE_TEXTBOX_UI_SCALING=config.TEXTBOX_UI_SCALING_RANGE,
|
||||
CALLBACK_SET_TEXTBOX_UI_SCALING=None,
|
||||
VAR_TEXTBOX_UI_SCALING=IntVar(value=config.TEXTBOX_UI_SCALING),
|
||||
CALLBACK_BUTTON_PRESS_TEXTBOX_UI_SCALING=self._closeTheCoverOfMainWindow,
|
||||
@@ -230,7 +228,7 @@ class View():
|
||||
|
||||
VAR_LABEL_MESSAGE_BOX_RATIO=StringVar(value=i18n.t("config_window.message_box_ratio.label")),
|
||||
VAR_DESC_MESSAGE_BOX_RATIO=StringVar(value=i18n.t("config_window.message_box_ratio.desc")),
|
||||
SLIDER_RANGE_MESSAGE_BOX_RATIO=(1, 99),
|
||||
SLIDER_RANGE_MESSAGE_BOX_RATIO=config.MESSAGE_BOX_RATIO_RANGE,
|
||||
CALLBACK_SET_MESSAGE_BOX_RATIO=None,
|
||||
VAR_MESSAGE_BOX_RATIO=IntVar(value=config.MESSAGE_BOX_RATIO),
|
||||
CALLBACK_BUTTON_PRESS_MESSAGE_BOX_RATIO=self._closeTheCoverOfMainWindow,
|
||||
@@ -244,9 +242,9 @@ class View():
|
||||
|
||||
VAR_LABEL_UI_LANGUAGE=StringVar(value=i18n.t("config_window.ui_language.label")),
|
||||
VAR_DESC_UI_LANGUAGE=None,
|
||||
LIST_UI_LANGUAGE=list(selectable_languages.values()),
|
||||
LIST_UI_LANGUAGE=list(config.SELECTABLE_UI_LANGUAGES_DICT.values()),
|
||||
CALLBACK_SET_UI_LANGUAGE=None,
|
||||
VAR_UI_LANGUAGE=StringVar(value=selectable_languages[config.UI_LANGUAGE]),
|
||||
VAR_UI_LANGUAGE=StringVar(value=config.SELECTABLE_UI_LANGUAGES_DICT[config.UI_LANGUAGE]),
|
||||
|
||||
VAR_LABEL_ENABLE_RESTORE_MAIN_WINDOW_GEOMETRY=StringVar(value=i18n.t("config_window.to_restore_main_window_geometry.label")),
|
||||
VAR_DESC_ENABLE_RESTORE_MAIN_WINDOW_GEOMETRY=StringVar(value=i18n.t("config_window.to_restore_main_window_geometry.desc")),
|
||||
@@ -1111,13 +1109,13 @@ class View():
|
||||
|
||||
@staticmethod
|
||||
def setMainWindowMessageBoxRatio(message_box_ratio:int):
|
||||
if message_box_ratio <= 0 or message_box_ratio > 99:
|
||||
raise ValueError("Input must be between 1 and 99 (inclusive)")
|
||||
if message_box_ratio < config.MESSAGE_BOX_RATIO_RANGE[0] or message_box_ratio > config.MESSAGE_BOX_RATIO_RANGE[1]:
|
||||
raise ValueError(f"Input must be between {config.MESSAGE_BOX_RATIO_RANGE[0]} and {config.MESSAGE_BOX_RATIO_RANGE[1]} (inclusive)")
|
||||
|
||||
vrct_gui.main_bg_container.grid_rowconfigure(tuple(range(1, 101)), weight=1)
|
||||
textbox_ratio = int(100 - message_box_ratio)
|
||||
vrct_gui.main_bg_container.grid_rowconfigure(tuple(range(config.MESSAGE_BOX_RATIO_RANGE[0], config.MESSAGE_BOX_RATIO_RANGE[1]+2)), weight=1)
|
||||
textbox_ratio = int((config.MESSAGE_BOX_RATIO_RANGE[1]+1) - message_box_ratio)
|
||||
message_box_row = int(textbox_ratio + 1)
|
||||
message_box_rowwpan = int(100 - textbox_ratio)
|
||||
message_box_rowwpan = int((config.MESSAGE_BOX_RATIO_RANGE[1]+1) - textbox_ratio)
|
||||
# print(textbox_ratio, message_box_row, message_box_rowwpan)
|
||||
vrct_gui.main_textbox_container.grid(row=1, rowspan=textbox_ratio, column=0, sticky="nsew")
|
||||
vrct_gui.main_entry_message_container.grid(row=message_box_row, rowspan=message_box_rowwpan, column=0, sticky="nsew")
|
||||
|
||||
Reference in New Issue
Block a user