[Update] テキストボックスのフォントサイズを、UI全体のサイズとは別でユーザーが変えられるように。

(UI size, scalingを基準とした倍率)
This commit is contained in:
Sakamoto Shiina
2023-10-24 18:12:39 +09:00
parent 8cffee569a
commit 8f2934e510
8 changed files with 61 additions and 2 deletions

View File

@@ -225,6 +225,17 @@ class Config:
self._UI_SCALING = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
@property
@json_serializable('TEXTBOX_UI_SCALING')
def TEXTBOX_UI_SCALING(self):
return self._TEXTBOX_UI_SCALING
@TEXTBOX_UI_SCALING.setter
def TEXTBOX_UI_SCALING(self, value):
if type(value) is int and 50 <= value <= 200:
self._TEXTBOX_UI_SCALING = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
@property
@json_serializable('FONT_FAMILY')
def FONT_FAMILY(self):
@@ -546,6 +557,7 @@ class Config:
self._TRANSPARENCY = 100
self._APPEARANCE_THEME = "System"
self._UI_SCALING = "100%"
self._TEXTBOX_UI_SCALING = 100
self._FONT_FAMILY = "Yu Gothic UI"
self._UI_LANGUAGE = "en"
self._CHOICE_MIC_HOST = getDefaultInputDevice()["host"]["name"]

View File

@@ -352,6 +352,11 @@ def callbackSetUiScaling(value):
print("callbackSetUiScaling_new_scaling_float", new_scaling_float)
view.showRestartButtonIfRequired()
def callbackSetTextboxUiScaling(value):
print("callbackSetTextboxUiScaling", int(value))
config.TEXTBOX_UI_SCALING = int(value)
view.setMainWindowTextboxUiSize(config.TEXTBOX_UI_SCALING/100)
def callbackSetFontFamily(value):
print("callbackSetFontFamily", value)
config.FONT_FAMILY = value
@@ -694,6 +699,7 @@ def createMainWindow():
"callback_set_transparency": callbackSetTransparency,
"callback_set_appearance": callbackSetAppearance,
"callback_set_ui_scaling": callbackSetUiScaling,
"callback_set_textbox_ui_scaling": callbackSetTextboxUiScaling,
"callback_set_font_family": callbackSetFontFamily,
"callback_set_ui_language": callbackSetUiLanguage,

View File

@@ -95,6 +95,10 @@ config_window:
ui_size:
label: UI Size
textbox_ui_size:
label: Text Box Font Size
desc: You can adjust the font size used in the logs relative to the UI size.
font_family:
label: Font Family

View File

@@ -95,6 +95,10 @@ config_window:
ui_size:
label: UIサイズ
textbox_ui_size:
label: テキストボックス フォントサイズ
desc: ログに表示されるフォントのサイズを、UIサイズを基準にして倍率を変えられます。
font_family:
label: 使用フォント

14
view.py
View File

@@ -211,6 +211,14 @@ class View():
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),
CALLBACK_SET_TEXTBOX_UI_SCALING=None,
VAR_TEXTBOX_UI_SCALING=IntVar(value=config.TEXTBOX_UI_SCALING),
CALLBACK_BUTTON_PRESS_TEXTBOX_UI_SCALING=self._closeTheCoverOfMainWindow,
CALLBACK_BUTTON_RELEASE_TEXTBOX_UI_SCALING=self._openTheCoverOfMainWindow,
VAR_LABEL_FONT_FAMILY=StringVar(value=i18n.t("config_window.font_family.label")),
VAR_DESC_FONT_FAMILY=None,
LIST_FONT_FAMILY=self.getAvailableFonts(),
@@ -432,6 +440,7 @@ class View():
self.view_variable.CALLBACK_SET_APPEARANCE = config_window_registers.get("callback_set_appearance", None)
self.view_variable.CALLBACK_SET_UI_SCALING = config_window_registers.get("callback_set_ui_scaling", None)
self.view_variable.CALLBACK_SET_TEXTBOX_UI_SCALING = config_window_registers.get("callback_set_textbox_ui_scaling", None)
self.view_variable.CALLBACK_SET_FONT_FAMILY = config_window_registers.get("callback_set_font_family", None)
self.view_variable.CALLBACK_SET_UI_LANGUAGE = config_window_registers.get("callback_set_ui_language", None)
@@ -517,7 +526,7 @@ class View():
# Insert sample conversation for testing.
self._insertSampleConversationToTextbox()
# self._insertSampleConversationToTextbox()
@@ -776,6 +785,9 @@ class View():
def setMainWindowTransparency(transparency:float):
vrct_gui.wm_attributes("-alpha", transparency)
@staticmethod
def setMainWindowTextboxUiSize(custom_font_size_scale:float):
vrct_gui.print_to_textbox.setTagsSettings(custom_font_size_scale=custom_font_size_scale)
# Function
def _adjustUiSizeAndRestart(self):

View File

@@ -7,10 +7,12 @@ class _PrintToTextbox():
self,
vrct_gui,
settings,
init_scaling:float,
):
self.vrct_gui = vrct_gui
self.settings = settings
self.init_scaling = init_scaling
self._DEFAULT_TEXTBOX_FIRST_INSERT_SPACING = self.settings.uism.TEXTBOX_FIRST_INSERT_SPACING
self._DEFAULT_TEXTBOX_FONT_SIZE__LABEL = self.settings.uism.TEXTBOX_FONT_SIZE__LABEL
@@ -32,7 +34,7 @@ class _PrintToTextbox():
self.all_textbox_widgets = [self.vrct_gui.textbox_all, self.vrct_gui.textbox_system, self.vrct_gui.textbox_sent, self.vrct_gui.textbox_received]
self.setTagsSettings()
self.setTagsSettings(self.init_scaling)
def printToTextbox(self, target_type, original_message=None, translated_message=None, to_print_to_textbox_all:bool=True):
@@ -63,6 +65,8 @@ class _PrintToTextbox():
for each_textbox_widget in self.all_textbox_widgets:
self._setTagsSettings(target_textbox=each_textbox_widget)
each_textbox_widget.see("end")
def _setTagsSettings(self, target_textbox):

View File

@@ -18,6 +18,9 @@ def createSettingBox_Appearance(setting_box_wrapper, config_window, settings, vi
def optionmenu_ui_scaling_callback(value):
callFunctionIfCallable(view_variable.CALLBACK_SET_UI_SCALING, value)
def slider_text_box_ui_scaling_callback(value):
callFunctionIfCallable(view_variable.CALLBACK_SET_TEXTBOX_UI_SCALING, value)
def optionmenu_font_family_callback(value):
callFunctionIfCallable(view_variable.CALLBACK_SET_FONT_FAMILY, value)
@@ -64,6 +67,19 @@ def createSettingBox_Appearance(setting_box_wrapper, config_window, settings, vi
config_window.sb__ui_scaling.grid(row=row)
row+=1
config_window.sb__textbox_uis_scaling = createSettingBoxSlider(
for_var_label_text=view_variable.VAR_LABEL_TEXTBOX_UI_SCALING,
for_var_desc_text=view_variable.VAR_DESC_TEXTBOX_UI_SCALING,
slider_attr_name="sb__slider_transparency",
slider_range=view_variable.SLIDER_RANGE_TEXTBOX_UI_SCALING,
command=lambda value: slider_text_box_ui_scaling_callback(value),
variable=view_variable.VAR_TEXTBOX_UI_SCALING,
slider_bind__ButtonPress=view_variable.CALLBACK_BUTTON_PRESS_TEXTBOX_UI_SCALING,
slider_bind__ButtonRelease=view_variable.CALLBACK_BUTTON_RELEASE_TEXTBOX_UI_SCALING,
)
config_window.sb__textbox_uis_scaling.grid(row=row)
row+=1
config_window.sb__font_family = createSettingBoxDropdownMenu(
for_var_label_text=view_variable.VAR_LABEL_FONT_FAMILY,

View File

@@ -136,6 +136,7 @@ class VRCT_GUI(CTk):
self.print_to_textbox = _PrintToTextbox(
vrct_gui=self,
settings=self.settings.main,
init_scaling=(self._view_variable.VAR_TEXTBOX_UI_SCALING.get()/100)
)