Merge remote-tracking branch 'origin/develop' into installer

This commit is contained in:
misyaguziya
2023-11-01 06:28:01 +09:00
16 changed files with 923 additions and 554 deletions

View File

@@ -356,7 +356,7 @@ class Config:
@INPUT_MIC_WORD_FILTER.setter @INPUT_MIC_WORD_FILTER.setter
def INPUT_MIC_WORD_FILTER(self, value): def INPUT_MIC_WORD_FILTER(self, value):
if type(value) is list: if type(value) is list:
self._INPUT_MIC_WORD_FILTER = value self._INPUT_MIC_WORD_FILTER = sorted(set(value), key=value.index)
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
@property @property

View File

@@ -487,19 +487,40 @@ def callbackSetMicMaxPhrases(value):
except: except:
view.showErrorMessage_MicMaxPhrases() view.showErrorMessage_MicMaxPhrases()
def callbackSetMicWordFilter(value): def callbackSetMicWordFilter(values):
print("callbackSetMicWordFilter", value) print("callbackSetMicWordFilter", values)
word_filter = str(value) values = str(values)
word_filter = [w.strip() for w in word_filter.split(",") if len(w.strip()) > 0] values = [w.strip() for w in values.split(",") if len(w.strip()) > 0]
word_filter = ",".join(word_filter) # Copy the list
print("callbackSetMicWordFilter_afterSplitting", word_filter) new_input_mic_word_filter_list = config.INPUT_MIC_WORD_FILTER
if len(word_filter) > 0: new_added_value = []
config.INPUT_MIC_WORD_FILTER = word_filter.split(",") for value in values:
else: if value in new_input_mic_word_filter_list:
config.INPUT_MIC_WORD_FILTER = [] # If the value is already in the list, do nothing.
pass
else:
new_input_mic_word_filter_list.append(value)
new_added_value.append(value)
config.INPUT_MIC_WORD_FILTER = new_input_mic_word_filter_list
view.addValueToList_WordFilter(new_added_value)
view.clearEntryBox_WordFilter()
view.setLatestConfigVariable("MicMicWordFilter")
model.resetKeywordProcessor() model.resetKeywordProcessor()
model.addKeywords() model.addKeywords()
def callbackDeleteMicWordFilter(value):
print("callbackDeleteMicWordFilter", value)
try:
new_input_mic_word_filter_list = config.INPUT_MIC_WORD_FILTER
new_input_mic_word_filter_list.remove(str(value))
config.INPUT_MIC_WORD_FILTER = new_input_mic_word_filter_list
view.setLatestConfigVariable("MicMicWordFilter")
except:
print("There was no the target word in config.INPUT_MIC_WORD_FILTER")
def callbackSetSpeakerEnergyThreshold(value): def callbackSetSpeakerEnergyThreshold(value):
print("callbackSetSpeakerEnergyThreshold", value) print("callbackSetSpeakerEnergyThreshold", value)
if value == "": return if value == "": return
@@ -718,6 +739,7 @@ def createMainWindow():
"callback_set_mic_phrase_timeout": callbackSetMicPhraseTimeout, "callback_set_mic_phrase_timeout": callbackSetMicPhraseTimeout,
"callback_set_mic_max_phrases": callbackSetMicMaxPhrases, "callback_set_mic_max_phrases": callbackSetMicMaxPhrases,
"callback_set_mic_word_filter": callbackSetMicWordFilter, "callback_set_mic_word_filter": callbackSetMicWordFilter,
"callback_delete_mic_word_filter": callbackDeleteMicWordFilter,
# Transcription Tab (Speaker) # Transcription Tab (Speaker)
"callback_set_speaker_energy_threshold": callbackSetSpeakerEnergyThreshold, "callback_set_speaker_energy_threshold": callbackSetSpeakerEnergyThreshold,

BIN
img/cancel_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
img/redo_white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -138,7 +138,9 @@ config_window:
mic_word_filter: mic_word_filter:
label: Mic Word Filter label: Mic Word Filter
desc: "It will not send the sentence if the word(s) included in the set list of words.\nHow to set: e.g. AAA,BBB,CCC" desc: "If a registered word is detected, the text will not be sent. To add multiple words at once, separate them with a \",\" (comma). \n*Duplicate words will not be registered."
add_button_label: Add
count_desc: "Current registered word count: %{count}"
speaker_dynamic_energy_threshold: speaker_dynamic_energy_threshold:

View File

@@ -138,7 +138,9 @@ config_window:
mic_word_filter: mic_word_filter:
label: ワードフィルター label: ワードフィルター
desc: "設定された単語を検出すると、その文章は送信されません。\n設定の例: AAA,BBB,CCC" desc: "登録された単語を検出すると、その文章は送信されません。\n「,」カンマで区切ると、まとめて複数の単語を追加できます。\n※重複した単語は登録されません。"
add_button_label: 追加
count_desc: "現在登録されている単語数: %{count}"
speaker_dynamic_energy_threshold: speaker_dynamic_energy_threshold:

93
view.py
View File

@@ -8,7 +8,7 @@ import i18n
from languages import selectable_languages from languages import selectable_languages
from customtkinter import StringVar, IntVar, BooleanVar, END as CTK_END, get_appearance_mode from customtkinter import StringVar, IntVar, BooleanVar, END as CTK_END, get_appearance_mode
from vrct_gui.ui_managers import ColorThemeManager, ImageFileManager, UiScalingManager from vrct_gui.ui_managers import ColorThemeManager, UiScalingManager
from vrct_gui import vrct_gui from vrct_gui import vrct_gui
from utils import callFunctionIfCallable, generatePercentageStringsList, intToPercentageStringsFormatter from utils import callFunctionIfCallable, generatePercentageStringsList, intToPercentageStringsFormatter
@@ -37,10 +37,9 @@ class View():
theme = "Dark" theme = "Dark"
all_ctm = ColorThemeManager(theme) all_ctm = ColorThemeManager(theme)
all_uism = UiScalingManager(config.UI_SCALING) all_uism = UiScalingManager(config.UI_SCALING)
image_file = ImageFileManager(theme)
common_args = { common_args = {
"image_file": image_file, "image_file": all_ctm.image_file,
"FONT_FAMILY": config.FONT_FAMILY, "FONT_FAMILY": config.FONT_FAMILY,
} }
@@ -69,7 +68,6 @@ class View():
) )
self.settings.error_message_window = SimpleNamespace( self.settings.error_message_window = SimpleNamespace(
ctm=all_ctm.error_message_window,
uism=all_uism.error_message_window, uism=all_uism.error_message_window,
**common_args **common_args
) )
@@ -286,10 +284,15 @@ class View():
VAR_MIC_MAX_PHRASES=StringVar(value=config.INPUT_MIC_MAX_PHRASES), VAR_MIC_MAX_PHRASES=StringVar(value=config.INPUT_MIC_MAX_PHRASES),
CALLBACK_FOCUS_OUT_MIC_MAX_PHRASES=self.callbackBindFocusOut_MicMaxPhrases, CALLBACK_FOCUS_OUT_MIC_MAX_PHRASES=self.callbackBindFocusOut_MicMaxPhrases,
CALLBACK_ARROW_SWITCH_MIC_WORD_FILTER_LIST_OPEN=self._openMicWordFilterList,
CALLBACK_ARROW_SWITCH_MIC_WORD_FILTER_LIST_CLOSE=self._closeMicWordFilterList,
VAR_LABEL_MIC_WORD_FILTER=StringVar(value=i18n.t("config_window.mic_word_filter.label")), VAR_LABEL_MIC_WORD_FILTER=StringVar(value=i18n.t("config_window.mic_word_filter.label")),
VAR_DESC_MIC_WORD_FILTER=StringVar(value=i18n.t("config_window.mic_word_filter.desc")), VAR_DESC_MIC_WORD_FILTER=StringVar(value=i18n.t("config_window.mic_word_filter.desc")),
VAR_SWITCH_DESC_MIC_WORD_FILTER=StringVar(value=i18n.t("config_window.mic_word_filter.count_desc", count=len(config.INPUT_MIC_WORD_FILTER))),
VAR_LABEL_MIC_WORD_FILTER_ADD_BUTTON=StringVar(value=i18n.t("config_window.mic_word_filter.add_button_label")),
CALLBACK_SET_MIC_WORD_FILTER=None, CALLBACK_SET_MIC_WORD_FILTER=None,
VAR_MIC_WORD_FILTER=StringVar(value=",".join(config.INPUT_MIC_WORD_FILTER) if len(config.INPUT_MIC_WORD_FILTER) > 0 else ""), MIC_WORD_FILTER_LIST=config.INPUT_MIC_WORD_FILTER,
# Transcription Tab (Speaker) # Transcription Tab (Speaker)
@@ -464,6 +467,7 @@ class View():
self.view_variable.CALLBACK_SET_MIC_PHRASE_TIMEOUT = config_window_registers.get("callback_set_mic_phrase_timeout", None) self.view_variable.CALLBACK_SET_MIC_PHRASE_TIMEOUT = config_window_registers.get("callback_set_mic_phrase_timeout", None)
self.view_variable.CALLBACK_SET_MIC_MAX_PHRASES = config_window_registers.get("callback_set_mic_max_phrases", None) self.view_variable.CALLBACK_SET_MIC_MAX_PHRASES = config_window_registers.get("callback_set_mic_max_phrases", None)
self.view_variable.CALLBACK_SET_MIC_WORD_FILTER = config_window_registers.get("callback_set_mic_word_filter", None) self.view_variable.CALLBACK_SET_MIC_WORD_FILTER = config_window_registers.get("callback_set_mic_word_filter", None)
self.view_variable.CALLBACK_DELETE_MIC_WORD_FILTER = config_window_registers.get("callback_delete_mic_word_filter", None)
# Transcription Tab (Speaker) # Transcription Tab (Speaker)
self.view_variable.CALLBACK_SET_SPEAKER_ENERGY_THRESHOLD = config_window_registers.get("callback_set_speaker_energy_threshold", None) self.view_variable.CALLBACK_SET_SPEAKER_ENERGY_THRESHOLD = config_window_registers.get("callback_set_speaker_energy_threshold", None)
@@ -605,10 +609,12 @@ class View():
def enableConfigWindowCompactMode(self): def enableConfigWindowCompactMode(self):
for additional_widget in vrct_gui.config_window.additional_widgets: for additional_widget in vrct_gui.config_window.additional_widgets:
additional_widget.grid_remove() additional_widget.grid_remove()
self._closeMicWordFilterList()
def disableConfigWindowCompactMode(self): def disableConfigWindowCompactMode(self):
for additional_widget in vrct_gui.config_window.additional_widgets: for additional_widget in vrct_gui.config_window.additional_widgets:
additional_widget.grid() additional_widget.grid()
self._closeMicWordFilterList()
def showRestartButtonIfRequired(self, locale:Union[None,str]=None): def showRestartButtonIfRequired(self, locale:Union[None,str]=None):
@@ -743,27 +749,85 @@ class View():
self.view_variable.VAR_MIC_DEVICE.set(default_selected_mic_device_name) self.view_variable.VAR_MIC_DEVICE.set(default_selected_mic_device_name)
@staticmethod def updateSetProgressBar_MicEnergy(self, new_mic_energy):
def updateSetProgressBar_MicEnergy(new_mic_energy): self.updateProgressBar(
vrct_gui.config_window.sb__progressbar_x_slider__progressbar_mic_energy_threshold.set(new_mic_energy/config.MAX_MIC_ENERGY_THRESHOLD) target_progressbar_widget=vrct_gui.config_window.sb__progressbar_x_slider__progressbar_mic_energy_threshold,
new_energy=new_mic_energy,
max_energy=config.MAX_MIC_ENERGY_THRESHOLD,
energy_threshold=config.INPUT_MIC_ENERGY_THRESHOLD,
)
@staticmethod @staticmethod
def initProgressBar_MicEnergy(): def initProgressBar_MicEnergy():
vrct_gui.config_window.sb__progressbar_x_slider__progressbar_mic_energy_threshold.set(0) vrct_gui.config_window.sb__progressbar_x_slider__progressbar_mic_energy_threshold.set(0)
@staticmethod def updateSetProgressBar_SpeakerEnergy(self, new_speaker_energy):
def updateSetProgressBar_SpeakerEnergy(new_speaker_energy): self.updateProgressBar(
vrct_gui.config_window.sb__progressbar_x_slider__progressbar_speaker_energy_threshold.set(new_speaker_energy/config.MAX_SPEAKER_ENERGY_THRESHOLD) target_progressbar_widget=vrct_gui.config_window.sb__progressbar_x_slider__progressbar_speaker_energy_threshold,
new_energy=new_speaker_energy,
max_energy=config.MAX_SPEAKER_ENERGY_THRESHOLD,
energy_threshold=config.INPUT_SPEAKER_ENERGY_THRESHOLD,
)
@staticmethod @staticmethod
def initProgressBar_SpeakerEnergy(): def initProgressBar_SpeakerEnergy():
vrct_gui.config_window.sb__progressbar_x_slider__progressbar_speaker_energy_threshold.set(0) vrct_gui.config_window.sb__progressbar_x_slider__progressbar_speaker_energy_threshold.set(0)
def updateProgressBar(
self,
target_progressbar_widget,
new_energy,
max_energy,
energy_threshold,
):
target_progressbar_widget.set(new_energy/max_energy)
if new_energy >= energy_threshold:
target_progressbar_widget.configure(progress_color=self.settings.config_window.ctm.SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_PROGRESS_EXCEED_THRESHOLD_BG_COLOR)
else:
target_progressbar_widget.configure(progress_color=self.settings.config_window.ctm.SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_PROGRESS_BG_COLOR)
def _openMicWordFilterList(self):
target_widget = vrct_gui.config_window.sb__widgets["sb__arrow_switch_mic_word_filter"]
target_widget.arrow_switch_open.grid_remove()
target_widget.arrow_switch_close.grid()
vrct_gui.config_window.sb__mic_word_filter_list.grid()
def _closeMicWordFilterList(self):
target_widget = vrct_gui.config_window.sb__widgets["sb__arrow_switch_mic_word_filter"]
target_widget.arrow_switch_close.grid_remove()
target_widget.arrow_switch_open.grid()
vrct_gui.config_window.sb__mic_word_filter_list.grid_remove()
def addValueToList_WordFilter(self, values:list):
target_widget = vrct_gui.config_window.sb__widgets["sb__add_and_delete_able_list_mic_word_filter_list"]
for t_item in target_widget.items:
if t_item.label in values:
values.remove(t_item.label)
t_item.redoFunction()
mic_word_filter_item_row_wrapper, accumulated_labels_width, last_row, last_column = target_widget.addValues(
values,
target_widget.mic_word_filter_item_row_wrapper,
target_widget.accumulated_labels_width,
target_widget.last_row,
target_widget.last_column
)
target_widget.mic_word_filter_item_row_wrapper = mic_word_filter_item_row_wrapper
target_widget.accumulated_labels_width = accumulated_labels_width
target_widget.last_row = last_row
target_widget.last_column = last_column
def clearEntryBox_WordFilter(self):
self._clearEntryBox(vrct_gui.config_window.sb__entry_mic_word_filter_list)
# Widget Control (Whole) # Widget Control (Whole)
def foregroundOnIfForegroundEnabled(self): def foregroundOnIfForegroundEnabled(self):
if config.ENABLE_FOREGROUND: if config.ENABLE_FOREGROUND:
@@ -905,6 +969,7 @@ class View():
def _closeConfigWindow(self): def _closeConfigWindow(self):
callFunctionIfCallable(self.view_variable.CALLBACK_CLOSE_CONFIG_WINDOW) callFunctionIfCallable(self.view_variable.CALLBACK_CLOSE_CONFIG_WINDOW)
self._closeMicWordFilterList()
vrct_gui._closeConfigWindow() vrct_gui._closeConfigWindow()
# Window Control (Main Window Cover) # Window Control (Main Window Cover)
@@ -962,7 +1027,8 @@ class View():
def setGuiVariable_MicMaxPhrases(self, value): def setGuiVariable_MicMaxPhrases(self, value):
self.view_variable.VAR_MIC_MAX_PHRASES.set(str(value)) self.view_variable.VAR_MIC_MAX_PHRASES.set(str(value))
def setGuiVariable_MicWordFilter_Length(self, value):
self.view_variable.VAR_SWITCH_DESC_MIC_WORD_FILTER.set(i18n.t("config_window.mic_word_filter.count_desc", count=value))
def setGuiVariable_SpeakerRecordTimeout(self, value): def setGuiVariable_SpeakerRecordTimeout(self, value):
self.view_variable.VAR_SPEAKER_RECORD_TIMEOUT.set(str(value)) self.view_variable.VAR_SPEAKER_RECORD_TIMEOUT.set(str(value))
@@ -992,6 +1058,9 @@ class View():
self.setGuiVariable_MicPhraseTimeout(config.INPUT_MIC_PHRASE_TIMEOUT) self.setGuiVariable_MicPhraseTimeout(config.INPUT_MIC_PHRASE_TIMEOUT)
case "MicMaxPhrases": case "MicMaxPhrases":
self.setGuiVariable_MicMaxPhrases(config.INPUT_MIC_MAX_PHRASES) self.setGuiVariable_MicMaxPhrases(config.INPUT_MIC_MAX_PHRASES)
case "MicMicWordFilter":
self.setGuiVariable_MicWordFilter_Length(len(config.INPUT_MIC_WORD_FILTER))
case "SpeakerRecordTimeout": case "SpeakerRecordTimeout":
self.setGuiVariable_SpeakerRecordTimeout(config.INPUT_SPEAKER_RECORD_TIMEOUT) self.setGuiVariable_SpeakerRecordTimeout(config.INPUT_SPEAKER_RECORD_TIMEOUT)
case "SpeakerPhraseTimeout": case "SpeakerPhraseTimeout":

View File

@@ -5,8 +5,9 @@ from typing import Union
from customtkinter import CTkOptionMenu, CTkFont, CTkFrame, CTkLabel, CTkRadioButton, CTkEntry, CTkSlider, CTkSwitch, CTkCheckBox, CTkProgressBar from customtkinter import CTkOptionMenu, CTkFont, CTkFrame, CTkLabel, CTkRadioButton, CTkEntry, CTkSlider, CTkSwitch, CTkCheckBox, CTkProgressBar
from CTkToolTip import * from CTkToolTip import *
from vrct_gui.ui_utils import createButtonWithImage, getLatestWidth, createOptionMenuBox from vrct_gui.ui_utils import createButtonWithImage, getLatestWidth, createOptionMenuBox, getLatestHeight, bindButtonFunctionAndColor
from vrct_gui import vrct_gui from vrct_gui import vrct_gui
from utils import isEven, callFunctionIfCallable
SETTING_BOX_COLUMN = 1 SETTING_BOX_COLUMN = 1
@@ -17,6 +18,8 @@ class _SettingBoxGenerator():
self.parent_widget = parent_widget self.parent_widget = parent_widget
self.settings = settings self.settings = settings
self.MAIN_INNER_AREA_MIN_WIDTH = int(self.settings.uism.MAIN_AREA_MIN_WIDTH - self.settings.uism.SB__IPADX)
self.dropdown_menu_window = vrct_gui.vrct_gui.dropdown_menu_window self.dropdown_menu_window = vrct_gui.vrct_gui.dropdown_menu_window
def _createSettingBoxFrame(self, sb__attr_name, for_var_label_text=None, for_var_desc_text=None): def _createSettingBoxFrame(self, sb__attr_name, for_var_label_text=None, for_var_desc_text=None):
@@ -274,6 +277,7 @@ class _SettingBoxGenerator():
message=getSliderValueWAfterFormatting(), message=getSliderValueWAfterFormatting(),
delay=0, delay=0,
bg_color=self.settings.ctm.SB__SLIDER_TOOLTIP_BG_COLOR, bg_color=self.settings.ctm.SB__SLIDER_TOOLTIP_BG_COLOR,
corner_radius=0,
text_color=self.settings.ctm.SB__SLIDER_TOOLTIP_TEXT_COLOR, text_color=self.settings.ctm.SB__SLIDER_TOOLTIP_TEXT_COLOR,
font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.SB__SLIDER_TOOLTIP_FONT_SIZE, weight="normal"), font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.SB__SLIDER_TOOLTIP_FONT_SIZE, weight="normal"),
) )
@@ -448,6 +452,315 @@ class _SettingBoxGenerator():
return setting_box_frame return setting_box_frame
def createSettingBoxArrowSwitch(
self,
for_var_label_text, for_var_desc_text,
arrow_switch_attr_name,
open_command,
close_command,
var_switch_desc=None,
):
(setting_box_frame, setting_box_item_frame) = self._createSettingBoxFrame(arrow_switch_attr_name, for_var_label_text, for_var_desc_text)
ARROW_BUTTON_COLUMN = SETTING_BOX_COLUMN
if var_switch_desc is not None:
label_widget = CTkLabel(
setting_box_item_frame,
textvariable=var_switch_desc,
height=0,
corner_radius=0,
font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.SB__ARROW_SWITCH_DESC_FONT_SIZE, weight="normal"),
anchor="w",
text_color=self.settings.ctm.LABELS_DESC_TEXT_COLOR,
)
label_widget.grid(row=1, column=SETTING_BOX_COLUMN)
ARROW_BUTTON_COLUMN = SETTING_BOX_COLUMN + 1
for_opening_button_wrapper = createButtonWithImage(
parent_widget=setting_box_item_frame,
button_fg_color=self.settings.ctm.SB__ARROW_SWITCH_BUTTON_COLOR,
button_enter_color=self.settings.ctm.SB__ARROW_SWITCH_BUTTON_HOVERED_COLOR,
button_clicked_color=self.settings.ctm.SB__ARROW_SWITCH_BUTTON_CLICKED_COLOR,
button_image_file=self.settings.image_file.ARROW_LEFT.rotate(270),
button_image_size=self.settings.uism.SB__ARROW_SWITCH_BUTTON_ICON_SIZE,
button_ipadxy=self.settings.uism.SB__ARROW_SWITCH_BUTTON_IPADXY,
button_command=open_command,
)
for_opening_button_wrapper.grid(row=1, column=ARROW_BUTTON_COLUMN, padx=self.settings.uism.SB__ARROW_SWITCH_LEFT_PADX, sticky="e")
self.config_window.sb__widgets[arrow_switch_attr_name].arrow_switch_open = for_opening_button_wrapper
for_closing_button_wrapper = createButtonWithImage(
parent_widget=setting_box_item_frame,
button_fg_color=self.settings.ctm.SB__ARROW_SWITCH_BUTTON_COLOR,
button_enter_color=self.settings.ctm.SB__ARROW_SWITCH_BUTTON_HOVERED_COLOR,
button_clicked_color=self.settings.ctm.SB__ARROW_SWITCH_BUTTON_CLICKED_COLOR,
button_image_file=self.settings.image_file.ARROW_LEFT.rotate(90),
button_image_size=self.settings.uism.SB__ARROW_SWITCH_BUTTON_ICON_SIZE,
button_ipadxy=self.settings.uism.SB__ARROW_SWITCH_BUTTON_IPADXY,
button_command=close_command,
)
for_closing_button_wrapper.grid(row=1, column=ARROW_BUTTON_COLUMN, padx=self.settings.uism.SB__ARROW_SWITCH_LEFT_PADX, sticky="e")
for_closing_button_wrapper.grid_remove()
self.config_window.sb__widgets[arrow_switch_attr_name].arrow_switch_close = for_closing_button_wrapper
return setting_box_frame
# I've added it for the word filter, but it's not currently generalized. If you want to use it in the same way elsewhere, it will require refactoring.
def createSettingBoxAddAndDeleteAbleList(
self,
add_and_delete_able_list_attr_name,
entry_attr_name,
entry_width,
mic_word_filter_list,
):
(setting_box_frame, setting_box_item_frame) = self._createSettingBoxFrame(add_and_delete_able_list_attr_name)
self.config_window.sb__widgets[add_and_delete_able_list_attr_name].items = []
list_container = CTkFrame(setting_box_item_frame, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR, width=0, height=0)
list_container.grid(row=1, column=0, sticky="nsew")
max_width = int(self.MAIN_INNER_AREA_MIN_WIDTH - (self.settings.uism.SB__IPADX*2))
def addValues(mic_word_filter_list, mic_word_filter_item_row_wrapper, accumulated_labels_width, row, column):
for mic_word_filter_item in mic_word_filter_list:
mic_word_filter_item_wrapper = self._createValue(add_and_delete_able_list_attr_name, mic_word_filter_item_row_wrapper, row, column, mic_word_filter_item)
if int(accumulated_labels_width + getLatestWidth(mic_word_filter_item_wrapper) + self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_LEFT_PADX[1]) >= max_width:
accumulated_labels_width = 0
column = 0
row += 1
mic_word_filter_item_wrapper.destroy()
mic_word_filter_item_row_wrapper = self._createRowFrame(list_container, row)
mic_word_filter_item_wrapper = self._createValue(add_and_delete_able_list_attr_name, mic_word_filter_item_row_wrapper, row, column, mic_word_filter_item)
column += 1
else:
column += 1
accumulated_labels_width += int(getLatestWidth(mic_word_filter_item_wrapper) + self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_LEFT_PADX[1])
return mic_word_filter_item_row_wrapper, accumulated_labels_width, row, column
accumulated_labels_width = 0
row=0
column=0
mic_word_filter_item_row_wrapper = self._createRowFrame(list_container, row)
mic_word_filter_list = self.view_variable.MIC_WORD_FILTER_LIST
mic_word_filter_item_row_wrapper, accumulated_labels_width, row, column = addValues(mic_word_filter_list, mic_word_filter_item_row_wrapper, accumulated_labels_width, row, column)
self.config_window.sb__widgets[add_and_delete_able_list_attr_name].mic_word_filter_item_row_wrapper = mic_word_filter_item_row_wrapper
self.config_window.sb__widgets[add_and_delete_able_list_attr_name].accumulated_labels_width = accumulated_labels_width
self.config_window.sb__widgets[add_and_delete_able_list_attr_name].last_row = row
self.config_window.sb__widgets[add_and_delete_able_list_attr_name].last_column = column
self.config_window.sb__widgets[add_and_delete_able_list_attr_name].addValues = lambda values, mic_word_filter_item_row_wrapper, accumulated_labels_width, last_row, last_column: addValues(values, mic_word_filter_item_row_wrapper, accumulated_labels_width, last_row, last_column)
entry_and_add_button_wrapper = CTkFrame(setting_box_item_frame, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR)
entry_and_add_button_wrapper.grid(row=2, column=0, pady=(self.settings.uism.SB__IPADY, 0), sticky="ew")
entry_and_add_button_wrapper.grid_columnconfigure((0,3), weight=1)
entry_widget = CTkEntry(
entry_and_add_button_wrapper,
text_color=self.settings.ctm.SB__ENTRY_TEXT_COLOR,
fg_color=self.settings.ctm.SB__ENTRY_BG_COLOR,
border_color=self.settings.ctm.SB__ENTRY_BORDER_COLOR,
width=entry_width,
placeholder_text="AAA or AAA,BBB,CCC",
height=self.settings.uism.SB__PROGRESSBAR_X_SLIDER__ENTRY_HEIGHT,
font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.SB__ENTRY_FONT_SIZE, weight="normal"),
)
setattr(self.config_window, entry_attr_name, entry_widget)
entry_widget.grid(row=0, column=1, sticky="ew")
add_button = CTkFrame(entry_and_add_button_wrapper, corner_radius=self.settings.uism.BUTTONS_CORNER_RADIUS, fg_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_COLOR, cursor="hand2")
add_button.grid(row=0, column=2, padx=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_LEFT_PADX, sticky="ew")
add_button.grid_columnconfigure(0, weight=1)
add_button_label_wrapper = CTkFrame(add_button, corner_radius=0, fg_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_COLOR)
add_button_label_wrapper.grid(row=0, column=0, padx=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_IPADX, pady=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_IPADY, sticky="ew")
add_button_label_wrapper.grid_columnconfigure((0,2), weight=1)
add_button_label = CTkLabel(
add_button_label_wrapper,
textvariable=self.view_variable.VAR_LABEL_MIC_WORD_FILTER_ADD_BUTTON,
height=0,
corner_radius=0,
font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_FONT_SIZE, weight="normal"),
anchor="w",
text_color=self.settings.ctm.LABELS_TEXT_COLOR,
)
add_button_label.grid(row=0, column=1)
def adjustedCommand():
callFunctionIfCallable(self.view_variable.CALLBACK_SET_MIC_WORD_FILTER, entry_widget.get())
entry_widget.focus_set()
bindButtonFunctionAndColor(
target_widgets=[
add_button,
add_button_label_wrapper,
add_button_label,
],
enter_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_HOVERED_COLOR,
leave_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_COLOR,
clicked_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_CLICKED_COLOR,
buttonReleasedFunction=lambda _e: adjustedCommand(),
)
return setting_box_frame
def _createRowFrame(self, parent_widget, row):
mic_word_filter_item_row_wrapper = CTkFrame(parent_widget, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR, width=0, height=0)
mic_word_filter_item_row_wrapper.grid(row=row, column=0, pady=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_BOTTOM_PADY, sticky="nsew")
return mic_word_filter_item_row_wrapper
def _createValue(self, add_and_delete_able_list_attr_name, parent_row_frame, row, column, mic_word_filter_item):
mic_word_filter_item_wrapper = CTkFrame(parent_row_frame, corner_radius=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_CORNER_RADIUS, fg_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST_BG_COLOR, width=0, height=0)
mic_word_filter_item_wrapper.grid(row=0, column=column, padx=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_LEFT_PADX, sticky="nsew")
setattr(self, f"{row}_{column}", mic_word_filter_item_wrapper)
mic_word_filter_item_wrapper.grid_rowconfigure((0,2), weight=1)
label_widget = CTkLabel(
mic_word_filter_item_wrapper,
text=mic_word_filter_item,
height=0,
corner_radius=0,
font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_FONT_SIZE, weight="normal"),
anchor="w",
text_color=self.settings.ctm.BASIC_TEXT_COLOR,
)
label_widget.grid(row=1, column=0, padx=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_IPADX, pady=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_IPADY)
if isEven(getLatestHeight(label_widget)) is False:
label_widget.grid(
pady=(
self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_IPADY,
self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_IPADY + 1
)
)
if isEven(getLatestWidth(label_widget)) is False:
label_widget.grid(
padx=(
self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_IPADX[0],
self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_IPADX[1] + 1
)
)
def pressedDeleteButtonCommand(_e, delete_button, redo_button):
# overstrike true
label_widget.configure(font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_FONT_SIZE, weight="normal", overstrike=True))
# change fg_color
mic_word_filter_item_wrapper.configure(fg_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST_DELETED_BG_COLOR)
# change button img to redo button
delete_button.grid_remove()
redo_button.grid()
# callback delete function
callFunctionIfCallable(self.view_variable.CALLBACK_DELETE_MIC_WORD_FILTER, mic_word_filter_item)
def pressedRedoButtonCommand(_e, delete_button, redo_button):
# overstrike false
label_widget.configure(font=CTkFont(family=self.settings.FONT_FAMILY, size=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_FONT_SIZE, weight="normal", overstrike=False))
# change fg_color
mic_word_filter_item_wrapper.configure(fg_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST_BG_COLOR)
# change button img to delete button
redo_button.grid_remove()
delete_button.grid()
# callback add function
callFunctionIfCallable(self.view_variable.CALLBACK_SET_MIC_WORD_FILTER, mic_word_filter_item)
delete_button = createButtonWithImage(
parent_widget=mic_word_filter_item_wrapper,
button_fg_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST_BG_COLOR,
button_enter_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_HOVERED_BG_COLOR,
button_clicked_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_CLICKED_BG_COLOR,
button_image_file=self.settings.image_file.CANCEL_ICON,
button_image_size=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_IMG_SIZE,
button_ipadxy=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_IPADXY,
button_command=lambda _e: pressedDeleteButtonCommand(_e, delete_button, redo_button),
)
delete_button.grid(row=1, column=1, padx=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_PADX, sticky="e")
redo_button = createButtonWithImage(
parent_widget=mic_word_filter_item_wrapper,
button_fg_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST_DELETED_BG_COLOR,
button_enter_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST__VALUES_DELETED_BUTTON_HOVERED_BG_COLOR,
button_clicked_color=self.settings.ctm.SB__ADD_AND_DELETE_ABLE_LIST__VALUES_DELETED_BUTTON_CLICKED_BG_COLOR,
button_image_file=self.settings.image_file.REDO_ICON,
button_image_size=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_IMG_SIZE,
button_ipadxy=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_IPADXY,
button_command=lambda _e: pressedRedoButtonCommand(_e, delete_button, redo_button),
)
redo_button.grid(row=1, column=1, padx=self.settings.uism.ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_PADX, sticky="e")
redo_button.grid_remove()
partial_pressedRedoButtonCommand = partial(pressedRedoButtonCommand, _e=None, delete_button=delete_button, redo_button=redo_button)
item_data = SimpleNamespace(
label = mic_word_filter_item,
redoFunction = lambda: partial_pressedRedoButtonCommand(),
)
items = self.config_window.sb__widgets[add_and_delete_able_list_attr_name].items
if len(items) == 0:
items.append(item_data)
else:
is_replaced = False
for i, item in enumerate(items):
if item.label == mic_word_filter_item:
items[i] = item_data
is_replaced = True
break
if is_replaced is False: items.append(item_data)
return mic_word_filter_item_wrapper
# if setting_box_type == "dropdown_menu_x_dropdown_menu": # if setting_box_type == "dropdown_menu_x_dropdown_menu":
# self.setting_box_dropdown_menu_x_dropdown_menu = CTkFrame(self.setting_box, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR, width=0, height=0) # self.setting_box_dropdown_menu_x_dropdown_menu = CTkFrame(self.setting_box, corner_radius=0, fg_color=self.settings.ctm.SB__BG_COLOR, width=0, height=0)

View File

@@ -8,6 +8,8 @@ def createSettingBox_Mic(setting_box_wrapper, config_window, settings, view_vari
createSettingBoxSwitch = sbg.createSettingBoxSwitch createSettingBoxSwitch = sbg.createSettingBoxSwitch
createSettingBoxProgressbarXSlider = sbg.createSettingBoxProgressbarXSlider createSettingBoxProgressbarXSlider = sbg.createSettingBoxProgressbarXSlider
createSettingBoxEntry = sbg.createSettingBoxEntry createSettingBoxEntry = sbg.createSettingBoxEntry
createSettingBoxArrowSwitch = sbg.createSettingBoxArrowSwitch
createSettingBoxAddAndDeleteAbleList = sbg.createSettingBoxAddAndDeleteAbleList
def checkbox_input_mic_threshold_check_callback(is_turned_on): def checkbox_input_mic_threshold_check_callback(is_turned_on):
@@ -36,6 +38,11 @@ def createSettingBox_Mic(setting_box_wrapper, config_window, settings, view_vari
def entry_input_mic_max_phrases_callback(value): def entry_input_mic_max_phrases_callback(value):
callFunctionIfCallable(view_variable.CALLBACK_SET_MIC_MAX_PHRASES, value) callFunctionIfCallable(view_variable.CALLBACK_SET_MIC_MAX_PHRASES, value)
def arrow_switch_mic_word_filter_list_open_callback(value):
callFunctionIfCallable(view_variable.CALLBACK_ARROW_SWITCH_MIC_WORD_FILTER_LIST_OPEN)
def arrow_switch_mic_word_filter_list_close_callback(value):
callFunctionIfCallable(view_variable.CALLBACK_ARROW_SWITCH_MIC_WORD_FILTER_LIST_CLOSE)
def entry_input_mic_word_filters_callback(value): def entry_input_mic_word_filters_callback(value):
callFunctionIfCallable(view_variable.CALLBACK_SET_MIC_WORD_FILTER, value) callFunctionIfCallable(view_variable.CALLBACK_SET_MIC_WORD_FILTER, value)
@@ -140,13 +147,24 @@ def createSettingBox_Mic(setting_box_wrapper, config_window, settings, view_vari
# # __________ # # __________
config_window.sb__mic_word_filter = createSettingBoxEntry( config_window.sb__mic_word_filter = createSettingBoxArrowSwitch(
for_var_label_text=view_variable.VAR_LABEL_MIC_WORD_FILTER, for_var_label_text=view_variable.VAR_LABEL_MIC_WORD_FILTER,
for_var_desc_text=view_variable.VAR_DESC_MIC_WORD_FILTER, for_var_desc_text=view_variable.VAR_DESC_MIC_WORD_FILTER,
entry_attr_name="sb__entry_mic_word_filter", arrow_switch_attr_name="sb__arrow_switch_mic_word_filter",
entry_width=settings.uism.RESPONSIVE_UI_SIZE_INT_300, open_command=lambda value: arrow_switch_mic_word_filter_list_open_callback(value),
entry_bind__Any_KeyRelease=lambda value: entry_input_mic_word_filters_callback(value), close_command=lambda value: arrow_switch_mic_word_filter_list_close_callback(value),
entry_textvariable=view_variable.VAR_MIC_WORD_FILTER, var_switch_desc=view_variable.VAR_SWITCH_DESC_MIC_WORD_FILTER,
) )
config_window.sb__mic_word_filter.grid(row=row, pady=0) config_window.sb__mic_word_filter.grid(row=row, pady=0)
row+=1
config_window.sb__mic_word_filter_list = createSettingBoxAddAndDeleteAbleList(
add_and_delete_able_list_attr_name="sb__add_and_delete_able_list_mic_word_filter_list",
entry_attr_name="sb__entry_mic_word_filter_list",
entry_width=settings.uism.RESPONSIVE_UI_SIZE_INT_300,
mic_word_filter_list=view_variable.MIC_WORD_FILTER_LIST,
)
config_window.sb__mic_word_filter_list.grid(row=row, pady=0)
# Default, close the list.
config_window.sb__mic_word_filter_list.grid_remove()
row+=1 row+=1

View File

@@ -1,487 +1,114 @@
from types import SimpleNamespace from types import SimpleNamespace
from .Themes import _darkTheme, _lightTheme
class ColorThemeManager(): class ColorThemeManager():
def __init__(self, theme): def __init__(self, theme):
self.main = SimpleNamespace() # base_color 100, 200, 300...900 is generated by https://m2.material.io/design/color/the-color-system.html#tools-for-picking-colors . I put the comment "Source". I used it as a source color and generated.
self.config_window = SimpleNamespace() # and like 750, 888... is made by https://meyerweb.com/eric/tools/color-blend/#:::hex
self.selectable_language_window = SimpleNamespace()
self.main_window_cover = SimpleNamespace()
self.error_message_window = SimpleNamespace()
self.confirmation_modal = SimpleNamespace()
# old one. But leave it here for now. self.base_color = SimpleNamespace(
# self.PRIMARY_100_COLOR = "#c4eac1"
# self.PRIMARY_200_COLOR = "#9cdd98" PRIMARY_100_COLOR = "#b7ded8",
# self.PRIMARY_300_COLOR = "#70d16c" PRIMARY_200_COLOR = "#8acac0",
# self.PRIMARY_400_COLOR = "#49c649" PRIMARY_300_COLOR = "#61b4a7",
# self.PRIMARY_500_COLOR = "#0abb1d" PRIMARY_400_COLOR = "#48a495", # Source
# self.PRIMARY_600_COLOR = "#00ac11" PRIMARY_450_COLOR = "#429c8c",
# self.PRIMARY_650_COLOR = "#00A309" PRIMARY_500_COLOR = "#3b9483",
# self.PRIMARY_700_COLOR = "#009900" PRIMARY_600_COLOR = "#368777",
# self.PRIMARY_800_COLOR = "#008800" PRIMARY_650_COLOR = "#347f6f",
# self.PRIMARY_900_COLOR = "#006900" PRIMARY_700_COLOR = "#317767",
PRIMARY_750_COLOR = "#2F6F60",
PRIMARY_800_COLOR = "#2c6759",
PRIMARY_900_COLOR = "#214b3f",
SENT_400_COLOR = "#6197b4", # Source PRIMARY_300_COLOR #61b4a7. ANALOGOUS' Second one.
RECEIVED_300_COLOR = "#a861b4", # Source PRIMARY_300_COLOR #61b4a7. TRIADIC' Second one.
DARK_BASIC_TEXT_COLOR = "#f2f2f2",
DARK_100_COLOR = "#f5f7fb", # THE LIGHTEST BG COLOR
DARK_200_COLOR = "#f1f2f6",
DARK_300_COLOR = "#e9eaee",
DARK_350_COLOR = "#d8d9dd",
DARK_400_COLOR = "#c7c8cc",
DARK_450_COLOR = "#b8b9bd",
DARK_500_COLOR = "#a9aaae",
DARK_600_COLOR = "#7f8084",
DARK_650_COLOR = "#75767a",
DARK_700_COLOR = "#6a6c6f",
DARK_725_COLOR = "#636467",
DARK_750_COLOR = "#5b5c5f",
DARK_775_COLOR = "#535457",
DARK_800_COLOR = "#4b4c4f",
DARK_825_COLOR = "#434447",
DARK_850_COLOR = "#3a3b3e",
DARK_863_COLOR = "#36373a",
DARK_875_COLOR = "#323336",
DARK_888_COLOR = "#2e2f32",
DARK_900_COLOR = "#292a2d", # Source
DARK_925_COLOR = "#242528",
DARK_950_COLOR = "#1f2022",
DARK_975_COLOR = "#1a1b1d",
DARK_1000_COLOR = "#151517", # THE DARKEST BG COLOR
# new one. LIGHT_100_COLOR = "#f2f2f2", # THE LIGHTEST BG COLOR
self.PRIMARY_100_COLOR = "#b7ded8" LIGHT_200_COLOR = "#e9e9e9",
self.PRIMARY_200_COLOR = "#8acac0" LIGHT_250_COLOR = "#e1e1e1",
self.PRIMARY_300_COLOR = "#61b4a7" LIGHT_300_COLOR = "#d9d9d9",
self.PRIMARY_400_COLOR = "#48a495" LIGHT_325_COLOR = "#d0d0d0",
self.PRIMARY_450_COLOR = "#429c8c" LIGHT_350_COLOR = "#c7c7c7",
self.PRIMARY_500_COLOR = "#3b9483" LIGHT_375_COLOR = "#bebebe",
self.PRIMARY_600_COLOR = "#368777" LIGHT_400_COLOR = "#b5b5b5",
self.PRIMARY_650_COLOR = "#347f6f" LIGHT_450_COLOR = "#a5a5a5",
self.PRIMARY_700_COLOR = "#317767" LIGHT_500_COLOR = "#959595",
self.PRIMARY_750_COLOR = "#2F6F60" LIGHT_600_COLOR = "#6d6d6d",
self.PRIMARY_800_COLOR = "#2c6759" LIGHT_700_COLOR = "#5a5a5a",
self.PRIMARY_900_COLOR = "#214b3f" LIGHT_750_COLOR = "#515151",
LIGHT_800_COLOR = "#3b3b3b",
LIGHT_850_COLOR = "#323232",
LIGHT_875_COLOR = "#2b2b2b",
LIGHT_900_COLOR = "#1b1b1b",
# LIGHT_925_COLOR = "#121212",
# LIGHT_950_COLOR = "#0c0c0c",
# LIGHT_975_COLOR = "#070707",
LIGHT_1000_COLOR = "#010101", # THE DARKEST BG COLOR
)
self.DARK_100_COLOR = "#f5f7fb" # It's actually meaningless to separate it from __init__. but it's just set to use the dark theme by default, so I did it just in case to change the default theme.
self.DARK_200_COLOR = "#f1f2f6" selected_color_theme = _darkTheme(self.base_color)
self.DARK_300_COLOR = "#e9eaee" for each_key in selected_color_theme.__dict__.keys():
self.DARK_350_COLOR = "#d8d9dd" setattr(self, each_key, getattr(selected_color_theme, each_key))
self.DARK_400_COLOR = "#c7c8cc"
self.DARK_450_COLOR = "#b8b9bd"
self.DARK_500_COLOR = "#a9aaae"
self.DARK_600_COLOR = "#7f8084"
self.DARK_650_COLOR = "#75767a"
self.DARK_700_COLOR = "#6a6c6f"
self.DARK_725_COLOR = "#636467"
self.DARK_750_COLOR = "#5b5c5f"
self.DARK_775_COLOR = "#535457"
self.DARK_800_COLOR = "#4b4c4f"
self.DARK_825_COLOR = "#434447"
self.DARK_850_COLOR = "#3a3b3e"
self.DARK_863_COLOR = "#36373a"
self.DARK_875_COLOR = "#323336"
self.DARK_888_COLOR = "#2e2f32"
self.DARK_900_COLOR = "#292a2d"
self.DARK_925_COLOR = "#242528"
self.DARK_950_COLOR = "#1f2022"
self.DARK_975_COLOR = "#1a1b1d"
self.DARK_1000_COLOR = "#151517" # THE DARKEST COLOR
self.LIGHT_100_COLOR = "#f2f2f2" # THE LIGHTEST COLOR
self.LIGHT_200_COLOR = "#e9e9e9"
self.LIGHT_250_COLOR = "#e1e1e1"
self.LIGHT_300_COLOR = "#d9d9d9"
self.LIGHT_325_COLOR = "#d0d0d0"
self.LIGHT_350_COLOR = "#c7c7c7"
self.LIGHT_375_COLOR = "#bebebe"
self.LIGHT_400_COLOR = "#b5b5b5"
self.LIGHT_450_COLOR = "#a5a5a5"
self.LIGHT_500_COLOR = "#959595"
self.LIGHT_600_COLOR = "#6d6d6d"
self.LIGHT_700_COLOR = "#5a5a5a"
self.LIGHT_750_COLOR = "#515151"
self.LIGHT_800_COLOR = "#3b3b3b"
self.LIGHT_850_COLOR = "#323232"
self.LIGHT_875_COLOR = "#2b2b2b"
self.LIGHT_900_COLOR = "#1b1b1b"
# self.LIGHT_925_COLOR = "#121212"
# self.LIGHT_950_COLOR = "#0c0c0c"
# self.LIGHT_975_COLOR = "#070707"
self.LIGHT_1000_COLOR = "#010101"
if theme == "Dark": if theme == "Dark":
self._createDarkModeColor() pass
elif theme == "Light": elif theme == "Light":
self._createLightModeColor() selected_color_theme = _lightTheme(self.base_color)
self._colorThemeDictsMerger(selected_color_theme)
def _createDarkModeColor(self):
# Common
self.main.BASIC_TEXT_COLOR = self.LIGHT_100_COLOR
self.main.LABELS_TEXT_COLOR = self.main.BASIC_TEXT_COLOR
# Main
self.main.MAIN_BG_COLOR = self.DARK_888_COLOR
self.main.TEXTBOX_BG_COLOR = self.DARK_900_COLOR
self.main.TEXTBOX_TEXT_COLOR = self.main.BASIC_TEXT_COLOR
self.main.TEXTBOX_TEXT_SUB_COLOR = self.DARK_450_COLOR
self.main.TEXTBOX_SYSTEM_TAG_TEXT_COLOR = self.PRIMARY_300_COLOR
self.main.TEXTBOX_SENT_TAG_TEXT_COLOR = "#6197b4"
self.main.TEXTBOX_RECEIVED_TAG_TEXT_COLOR = "#a861b4"
self.main.TEXTBOX_ERROR_TAG_TEXT_COLOR = "#c27583"
self.main.TEXTBOX_TIMESTAMP_TEXT_COLOR = self.DARK_600_COLOR
self.main.TEXTBOX_TAB_BG_PASSIVE_COLOR = self.DARK_850_COLOR def _colorThemeDictsMerger(self, selected_color_theme):
self.main.TEXTBOX_TAB_BG_ACTIVE_COLOR = self.main.TEXTBOX_BG_COLOR # Each section(main, selectable_language_window, config_window...) marge to default theme.
self.main.TEXTBOX_TAB_BG_HOVERED_COLOR = self.DARK_800_COLOR for selected_theme_section_key in selected_color_theme.__dict__.keys():
self.main.TEXTBOX_TAB_BG_CLICKED_COLOR = self.DARK_925_COLOR # Get same section data by section key from default theme.
self.main.TEXTBOX_TAB_TEXT_ACTIVE_COLOR = self.main.BASIC_TEXT_COLOR default_theme_target_section_data = getattr(self, selected_theme_section_key)
self.main.TEXTBOX_TAB_TEXT_PASSIVE_COLOR = self.DARK_500_COLOR
self.main.TEXTBOX_ENTRY_TEXT_COLOR = self.DARK_300_COLOR selected_theme_section_data = getattr(selected_color_theme, selected_theme_section_key)
self.main.TEXTBOX_ENTRY_TEXT_DISABLED_COLOR = self.DARK_500_COLOR self._mergeNestedDicts(default_theme_target_section_data.__dict__, selected_theme_section_data.__dict__)
self.main.TEXTBOX_ENTRY_BG_COLOR = self.DARK_875_COLOR
self.main.TEXTBOX_ENTRY_BORDER_COLOR = self.DARK_750_COLOR
self.main.TEXTBOX_ENTRY_PLACEHOLDER_COLOR = self.DARK_500_COLOR
self.main.TEXTBOX_ENTRY_PLACEHOLDER_DISABLED_COLOR = self.DARK_700_COLOR
# Sidebar def _mergeNestedDicts(self, d1, d2):
self.main.SIDEBAR_BG_COLOR = self.DARK_850_COLOR for key, value in d2.items():
if key in d1 and isinstance(d1[key], dict) and isinstance(value, dict):
self._mergeNestedDicts(d1[key], value)
else:
d1[key] = value
# Sidebar Features return d1
self.main.SF__BG_COLOR = self.DARK_825_COLOR
self.main.SF__HOVERED_BG_COLOR = self.DARK_800_COLOR
self.main.SF__CLICKED_BG_COLOR = self.DARK_875_COLOR
self.main.SF__TEXT_DISABLED_COLOR = self.DARK_500_COLOR
self.main.SF__SWITCH_BOX_BG_COLOR = self.DARK_775_COLOR
self.main.SF__SWITCH_BOX_HOVERED_BG_COLOR = self.DARK_725_COLOR
self.main.SF__SWITCH_BOX_CLICKED_BG_COLOR = self.DARK_825_COLOR
self.main.SF__SWITCH_BOX_ACTIVE_BG_COLOR = self.PRIMARY_500_COLOR
self.main.SF__SWITCH_BOX_ACTIVE_HOVERED_BG_COLOR = self.PRIMARY_400_COLOR
self.main.SF__SWITCH_BOX_ACTIVE_CLICKED_BG_COLOR = self.PRIMARY_700_COLOR
self.main.SF__SWITCH_BOX_DISABLE_BG_COLOR = self.PRIMARY_800_COLOR
self.main.SF__SWITCH_BOX_BUTTON_COLOR = self.DARK_400_COLOR
# It's not working because It overrode internally.
self.main.SF__SWITCH_BOX_BUTTON_HOVERED_COLOR = self.DARK_350_COLOR
self.main.SF__SELECTED_MARK_ACTIVE_BG_COLOR = self.main.SF__SWITCH_BOX_ACTIVE_BG_COLOR
self.main.SF__SELECTED_MARK_ACTIVE_HOVERED_BG_COLOR = self.main.SF__SWITCH_BOX_ACTIVE_HOVERED_BG_COLOR
self.main.SF__SELECTED_MARK_ACTIVE_CLICKED_BG_COLOR = self.main.SF__SWITCH_BOX_ACTIVE_CLICKED_BG_COLOR
self.main.SF__SELECTED_MARK_DISABLE_BG_COLOR = self.main.SF__SWITCH_BOX_DISABLE_BG_COLOR
# Sidebar Languages Settings
self.main.SLS__TITLE_TEXT_COLOR = self.DARK_400_COLOR
self.main.SLS__BG_COLOR = self.DARK_800_COLOR
self.main.SLS__PRESETS_TAB_BG_HOVERED_COLOR = self.DARK_825_COLOR
self.main.SLS__PRESETS_TAB_BG_CLICKED_COLOR = self.DARK_875_COLOR
self.main.SLS__PRESETS_TAB_BG_PASSIVE_COLOR = self.main.SIDEBAR_BG_COLOR
self.main.SLS__PRESETS_TAB_BG_ACTIVE_COLOR = self.main.SLS__BG_COLOR
self.main.SLS__PRESETS_TAB_ACTIVE_TEXT_COLOR_PASSIVE = self.DARK_600_COLOR
self.main.SLS__PRESETS_TAB_ACTIVE_TEXT_COLOR = self.main.BASIC_TEXT_COLOR
self.main.SLS__BOX_BG_COLOR = self.DARK_825_COLOR
self.main.SLS__BOX_SECTION_TITLE_TEXT_COLOR = self.DARK_400_COLOR
self.main.SLS__BOX_ARROWS_TEXT_COLOR = self.DARK_500_COLOR
self.main.SLS__OPTIONMENU_BG_COLOR = self.DARK_888_COLOR
self.main.SLS__OPTIONMENU_HOVERED_BG_COLOR = self.DARK_875_COLOR
self.main.SLS__OPTIONMENU_CLICKED_BG_COLOR = self.DARK_900_COLOR
self.main.CONFIG_BUTTON_BG_COLOR = self.main.SIDEBAR_BG_COLOR
self.main.CONFIG_BUTTON_HOVERED_BG_COLOR = self.DARK_800_COLOR
self.main.CONFIG_BUTTON_CLICKED_BG_COLOR = self.DARK_875_COLOR
# self.main.CONFIG_BUTTON_DISABLE_COLOR = self.DARK_900_COLOR
self.main.MINIMIZE_SIDEBAR_BUTTON_BG_COLOR = self.main.SIDEBAR_BG_COLOR
self.main.MINIMIZE_SIDEBAR_BUTTON_HOVERED_BG_COLOR = self.DARK_800_COLOR
self.main.MINIMIZE_SIDEBAR_BUTTON_CLICKED_BG_COLOR = self.DARK_900_COLOR
# self.main.MINIMIZE_SIDEBAR_BUTTON_DISABLE_COLOR = self.DARK_900_COLOR
self.main.TOP_BAR_BUTTON_BG_COLOR = self.main.MAIN_BG_COLOR
self.main.TOP_BAR_BUTTON_HOVERED_BG_COLOR = self.DARK_850_COLOR
self.main.TOP_BAR_BUTTON_CLICKED_BG_COLOR = self.DARK_900_COLOR
# self.main.TOP_BAR_BUTTON_DISABLE_COLOR = self.DARK_900_COLOR
self.main.UPDATE_AVAILABLE_BUTTON_BG_COLOR = self.main.TOP_BAR_BUTTON_BG_COLOR
self.main.UPDATE_AVAILABLE_BUTTON_HOVERED_BG_COLOR = self.main.TOP_BAR_BUTTON_HOVERED_BG_COLOR
self.main.UPDATE_AVAILABLE_BUTTON_CLICKED_BG_COLOR = self.main.TOP_BAR_BUTTON_CLICKED_BG_COLOR
# self.main.UPDATE_AVAILABLE_BUTTON_DISABLE_COLOR = self.main.TOP_BAR_BUTTON_DISABLE_COLOR
self.main.UPDATE_AVAILABLE_BUTTON_TEXT_COLOR = self.PRIMARY_300_COLOR
self.main.HELP_AND_INFO_BUTTON_BG_COLOR = self.main.TOP_BAR_BUTTON_BG_COLOR
self.main.HELP_AND_INFO_BUTTON_HOVERED_BG_COLOR = self.main.TOP_BAR_BUTTON_HOVERED_BG_COLOR
self.main.HELP_AND_INFO_BUTTON_CLICKED_BG_COLOR = self.main.TOP_BAR_BUTTON_CLICKED_BG_COLOR
# self.main.HELP_AND_INFO_BUTTON_DISABLE_COLOR = self.main.TOP_BAR_BUTTON_DISABLE_COLOR
# Selectable Language Window
self.selectable_language_window.BASIC_TEXT_COLOR = self.main.BASIC_TEXT_COLOR
self.selectable_language_window.MAIN_BG_COLOR = self.DARK_875_COLOR
self.selectable_language_window.GO_BACK_BUTTON_BG_COLOR = self.DARK_800_COLOR
self.selectable_language_window.GO_BACK_BUTTON_BG_HOVERED_COLOR = self.DARK_750_COLOR
self.selectable_language_window.GO_BACK_BUTTON_BG_CLICKED_COLOR = self.DARK_875_COLOR
self.selectable_language_window.TOP_BG_COLOR = self.main.SIDEBAR_BG_COLOR
self.selectable_language_window.TITLE_TEXT_COLOR = self.DARK_400_COLOR
self.selectable_language_window.LANGUAGE_BUTTON_BG_COLOR = self.selectable_language_window.MAIN_BG_COLOR
self.selectable_language_window.LANGUAGE_BUTTON_BG_HOVERED_COLOR = self.DARK_825_COLOR
self.selectable_language_window.LANGUAGE_BUTTON_BG_CLICKED_COLOR = self.DARK_888_COLOR
# Modal Window (Main Window)
self.main_window_cover.TEXT_COLOR = self.LIGHT_100_COLOR
self.confirmation_modal.MESSAGE_TEXT_COLOR = self.LIGHT_100_COLOR
self.confirmation_modal.FAKE_BORDER_COLOR = self.DARK_600_COLOR
self.confirmation_modal.BG_COLOR = self.DARK_800_COLOR
self.confirmation_modal.CONFIRMATION_BUTTONS_TEXT_COLOR = self.LIGHT_100_COLOR
self.confirmation_modal.ACCEPT_BUTTON_BG_COLOR = self.PRIMARY_600_COLOR
self.confirmation_modal.ACCEPT_BUTTON_HOVERED_BG_COLOR = self.PRIMARY_450_COLOR
self.confirmation_modal.ACCEPT_BUTTON_CLICKED_BG_COLOR = self.PRIMARY_750_COLOR
self.confirmation_modal.DENY_BUTTON_BG_COLOR = self.DARK_750_COLOR
self.confirmation_modal.DENY_BUTTON_HOVERED_BG_COLOR = self.DARK_700_COLOR
self.confirmation_modal.DENY_BUTTON_CLICKED_BG_COLOR = self.DARK_825_COLOR
# Common
self.config_window.BASIC_TEXT_COLOR = self.main.BASIC_TEXT_COLOR
self.config_window.LABELS_TEXT_COLOR = self.config_window.BASIC_TEXT_COLOR
self.config_window.LABELS_DESC_TEXT_COLOR = self.DARK_500_COLOR
self.config_window.LABELS_TEXT_DISABLED_COLOR = self.DARK_600_COLOR
# Top bar
self.config_window.TOP_BAR_BG_COLOR = self.DARK_850_COLOR
# Restart Button
self.config_window.RESTART_BUTTON_BG_COLOR = self.PRIMARY_600_COLOR
self.config_window.RESTART_BUTTON_HOVERED_BG_COLOR = self.PRIMARY_500_COLOR
self.config_window.RESTART_BUTTON_CLICKED_BG_COLOR = self.PRIMARY_700_COLOR
# Compact Mode
self.config_window.COMPACT_MODE_SWITCH_BOX_BG_COLOR = self.DARK_775_COLOR
self.config_window.COMPACT_MODE_SWITCH_BOX_ACTIVE_BG_COLOR = self.PRIMARY_500_COLOR
self.config_window.COMPACT_MODE_SWITCH_BOX_BUTTON_COLOR = self.DARK_350_COLOR
self.config_window.COMPACT_MODE_SWITCH_BOX_BUTTON_HOVERED_COLOR = self.DARK_300_COLOR
# Main
self.config_window.MAIN_BG_COLOR = self.DARK_950_COLOR
# This is for fake border color
self.config_window.SB__WRAPPER_BG_COLOR = self.DARK_750_COLOR
self.config_window.SB__BG_COLOR = self.DARK_888_COLOR
self.config_window.SB__OPTIONMENU_BG_COLOR = self.DARK_925_COLOR
self.config_window.SB__OPTIONMENU_HOVERED_BG_COLOR = self.DARK_850_COLOR
self.config_window.SB__OPTIONMENU_CLICKED_BG_COLOR = self.DARK_950_COLOR
self.config_window.SB__DROPDOWN_MENU_WINDOW_BG_COLOR = self.config_window.MAIN_BG_COLOR
self.config_window.SB__DROPDOWN_MENU_WINDOW_BORDER_COLOR = self.DARK_600_COLOR
# self.config_window.SB__DROPDOWN_MENU_WINDOW_BG_COLOR = self.DARK_700_COLOR
self.config_window.SB__DROPDOWN_MENU_BG_COLOR = self.DARK_875_COLOR
self.config_window.SB__DROPDOWN_MENU_HOVERED_BG_COLOR = self.DARK_800_COLOR
self.config_window.SB__DROPDOWN_MENU_CLICKED_BG_COLOR = self.DARK_900_COLOR
self.config_window.SB__SLIDER_BG_COLOR = self.DARK_700_COLOR
self.config_window.SB__SLIDER_PROGRESS_BG_COLOR = self.DARK_500_COLOR
self.config_window.SB__SLIDER_BUTTON_COLOR = self.DARK_700_COLOR
self.config_window.SB__SLIDER_BUTTON_HOVERED_COLOR = self.DARK_600_COLOR
self.config_window.SB__SLIDER_TOOLTIP_BG_COLOR = self.DARK_850_COLOR
self.config_window.SB__SLIDER_TOOLTIP_TEXT_COLOR = self.DARK_200_COLOR
self.config_window.SB__SWITCH_BOX_BG_COLOR = self.DARK_800_COLOR
self.config_window.SB__SWITCH_BOX_ACTIVE_BG_COLOR = self.PRIMARY_500_COLOR
self.config_window.SB__SWITCH_BOX_BUTTON_COLOR = self.DARK_400_COLOR
self.config_window.SB__SWITCH_BOX_BUTTON_HOVERED_COLOR = self.DARK_350_COLOR
self.config_window.SB__CHECKBOX_BORDER_COLOR = self.DARK_600_COLOR
self.config_window.SB__CHECKBOX_HOVER_COLOR = self.DARK_800_COLOR
self.config_window.SB__CHECKBOX_CHECKED_COLOR = self.PRIMARY_700_COLOR
self.config_window.SB__CHECKBOX_CHECKMARK_COLOR = self.config_window.BASIC_TEXT_COLOR
self.config_window.SB__ENTRY_TEXT_COLOR = self.DARK_300_COLOR
self.config_window.SB__ENTRY_BG_COLOR = self.DARK_863_COLOR
self.config_window.SB__ENTRY_BORDER_COLOR = self.DARK_775_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_BG_COLOR = self.DARK_800_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_PROGRESS_BG_COLOR = self.PRIMARY_400_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__SLIDER_BUTTON_COLOR = self.PRIMARY_600_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__SLIDER_BUTTON_HOVERED_COLOR = self.PRIMARY_400_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_COLOR = self.DARK_800_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_COLOR = self.DARK_800_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_HOVERED_COLOR = self.DARK_700_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_CLICKED_COLOR = self.DARK_900_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_DISABLED_COLOR = self.DARK_850_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_COLOR = self.PRIMARY_600_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_HOVERED_COLOR = self.PRIMARY_500_COLOR
self.config_window.SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_CLICKED_COLOR = self.PRIMARY_800_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_DISABLED_COLOR = self.PRIMARY_900_COLOR
# Side menu
self.config_window.SIDE_MENU_BG_COLOR = self.config_window.MAIN_BG_COLOR
self.config_window.SIDE_MENU_LABELS_BG_COLOR = self.config_window.SIDE_MENU_BG_COLOR
self.config_window.SIDE_MENU_LABELS_BG_FOR_FAKE_BORDER_COLOR = self.config_window.SIDE_MENU_BG_COLOR
self.config_window.SIDE_MENU_LABELS_HOVERED_BG_COLOR = self.DARK_850_COLOR
self.config_window.SIDE_MENU_LABELS_CLICKED_BG_COLOR = self.PRIMARY_750_COLOR
self.config_window.SIDE_MENU_LABELS_SELECTED_TEXT_COLOR = self.PRIMARY_200_COLOR
self.config_window.SIDE_MENU_SELECTED_MARK_ACTIVE_BG_COLOR = self.main.SF__SWITCH_BOX_ACTIVE_BG_COLOR
self.config_window.NOW_VERSION_TEXT_COLOR = self.DARK_300_COLOR
# Error Message Window for Config Window
# The color code [#bb4448] is a mixture of [#a9555c] and [#cc3333] (for a redder shade).
self.config_window.SB__ERROR_MESSAGE_BG_COLOR = "#bb4448"
self.config_window.SB__ERROR_MESSAGE_TEXT_COLOR = "#fff"
# def _createLightModeColor(self):
# # Common
# self.main.BASIC_TEXT_COLOR = self.DARK_1000_COLOR
# self.main.LABELS_TEXT_COLOR = self.main.BASIC_TEXT_COLOR
# # Main
# self.main.MAIN_BG_COLOR = self.LIGHT_300_COLOR
# self.main.TEXTBOX_BG_COLOR = self.LIGHT_200_COLOR
# self.main.TEXTBOX_TEXT_COLOR = self.main.BASIC_TEXT_COLOR
# self.main.TEXTBOX_TAB_BG_PASSIVE_COLOR = self.LIGHT_350_COLOR
# self.main.TEXTBOX_TAB_BG_ACTIVE_COLOR = self.main.TEXTBOX_BG_COLOR
# self.main.TEXTBOX_TAB_BG_HOVERED_COLOR = self.LIGHT_300_COLOR
# self.main.TEXTBOX_TAB_BG_CLICKED_COLOR = self.LIGHT_350_COLOR
# self.main.TEXTBOX_TAB_TEXT_ACTIVE_COLOR = self.main.BASIC_TEXT_COLOR
# self.main.TEXTBOX_TAB_TEXT_PASSIVE_COLOR = self.LIGHT_600_COLOR
# self.main.TEXTBOX_ENTRY_TEXT_COLOR = self.LIGHT_800_COLOR
# self.main.TEXTBOX_ENTRY_TEXT_DISABLED_COLOR = self.LIGHT_500_COLOR
# self.main.TEXTBOX_ENTRY_BG_COLOR = self.LIGHT_325_COLOR
# self.main.TEXTBOX_ENTRY_BORDER_COLOR = self.LIGHT_400_COLOR
# self.main.TEXTBOX_ENTRY_PLACEHOLDER_COLOR = self.LIGHT_600_COLOR
# self.main.TEXTBOX_ENTRY_PLACEHOLDER_DISABLED_COLOR = self.LIGHT_700_COLOR
# # Sidebar
# self.main.SIDEBAR_BG_COLOR = self.LIGHT_350_COLOR
# # Sidebar Features
# self.main.SF__BG_COLOR = self.LIGHT_375_COLOR
# self.main.SF__HOVERED_BG_COLOR = self.LIGHT_300_COLOR
# self.main.SF__CLICKED_BG_COLOR = self.LIGHT_200_COLOR
# self.main.SF__TEXT_DISABLED_COLOR = self.LIGHT_500_COLOR
# self.main.SF__SWITCH_BOX_BG_COLOR = self.LIGHT_300_COLOR
# self.main.SF__SWITCH_BOX_HOVERED_BG_COLOR = self.LIGHT_450_COLOR
# self.main.SF__SWITCH_BOX_CLICKED_BG_COLOR = self.LIGHT_350_COLOR
# self.main.SF__SWITCH_BOX_ACTIVE_BG_COLOR = self.PRIMARY_650_COLOR
# self.main.SF__SWITCH_BOX_ACTIVE_HOVERED_BG_COLOR = self.PRIMARY_500_COLOR
# self.main.SF__SWITCH_BOX_ACTIVE_CLICKED_BG_COLOR = self.PRIMARY_700_COLOR
# self.main.SF__SWITCH_BOX_DISABLE_BG_COLOR = self.PRIMARY_900_COLOR
# self.main.SF__SELECTED_MARK_ACTIVE_BG_COLOR = self.main.SF__SWITCH_BOX_ACTIVE_BG_COLOR
# self.main.SF__SELECTED_MARK_ACTIVE_HOVERED_BG_COLOR = self.main.SF__SWITCH_BOX_ACTIVE_HOVERED_BG_COLOR
# self.main.SF__SELECTED_MARK_ACTIVE_CLICKED_BG_COLOR = self.main.SF__SWITCH_BOX_ACTIVE_CLICKED_BG_COLOR
# self.main.SF__SELECTED_MARK_DISABLE_BG_COLOR = self.main.SF__SWITCH_BOX_DISABLE_BG_COLOR
# # Sidebar quick settings
# self.main.SLS__TITLE_TEXT_COLOR = self.LIGHT_800_COLOR
# self.main.SLS__BG_COLOR = self.LIGHT_300_COLOR
# self.main.SLS__PRESETS_TAB_BG_HOVERED_COLOR = self.LIGHT_350_COLOR
# self.main.SLS__PRESETS_TAB_BG_CLICKED_COLOR = self.LIGHT_800_COLOR
# self.main.SLS__PRESETS_TAB_BG_PASSIVE_COLOR = self.main.SIDEBAR_BG_COLOR
# self.main.SLS__PRESETS_TAB_BG_ACTIVE_COLOR = self.main.SLS__BG_COLOR
# self.main.SLS__PRESETS_TAB_ACTIVE_TEXT_COLOR_PASSIVE = self.LIGHT_600_COLOR
# self.main.SLS__PRESETS_TAB_ACTIVE_TEXT_COLOR = self.main.BASIC_TEXT_COLOR
# self.main.SLS__BOX_BG_COLOR = self.LIGHT_350_COLOR
# self.main.SLS__BOX_SECTION_TITLE_TEXT_COLOR = self.LIGHT_800_COLOR
# self.main.SLS__BOX_ARROWS_TEXT_COLOR = self.LIGHT_700_COLOR
# self.main.SLS__OPTIONMENU_BG_COLOR = self.LIGHT_500_COLOR
# self.main.CONFIG_BUTTON_BG_COLOR = self.main.SIDEBAR_BG_COLOR
# self.main.CONFIG_BUTTON_HOVERED_BG_COLOR = self.LIGHT_800_COLOR
# self.main.CONFIG_BUTTON_CLICKED_BG_COLOR = self.LIGHT_900_COLOR
# # self.main.CONFIG_BUTTON_DISABLE_COLOR = self.LIGHT_900_COLOR
# self.main.MINIMIZE_SIDEBAR_BUTTON_BG_COLOR = self.main.SIDEBAR_BG_COLOR
# self.main.MINIMIZE_SIDEBAR_BUTTON_HOVERED_BG_COLOR = self.LIGHT_800_COLOR
# self.main.MINIMIZE_SIDEBAR_BUTTON_CLICKED_BG_COLOR = self.LIGHT_900_COLOR
# # self.main.MINIMIZE_SIDEBAR_BUTTON_DISABLE_COLOR = self.LIGHT_900_COLOR
# self.main.HELP_AND_INFO_BUTTON_BG_COLOR = self.main.MAIN_BG_COLOR
# self.main.HELP_AND_INFO_BUTTON_HOVERED_BG_COLOR = self.LIGHT_350_COLOR
# self.main.HELP_AND_INFO_BUTTON_CLICKED_BG_COLOR = self.LIGHT_450_COLOR
# # self.main.HELP_AND_INFO_BUTTON_DISABLE_COLOR = self.LIGHT_900_COLOR
# # Common
# self.config_window.BASIC_TEXT_COLOR = self.main.BASIC_TEXT_COLOR
# self.config_window.LABELS_TEXT_COLOR = self.config_window.BASIC_TEXT_COLOR
# self.config_window.LABELS_DESC_TEXT_COLOR = self.DARK_500_COLOR
# # Top bar
# self.config_window.TOP_BAR_BG_COLOR = self.DARK_850_COLOR
# # Main
# self.config_window.MAIN_BG_COLOR = self.DARK_950_COLOR
# # This is for fake border color
# self.config_window.SB__WRAPPER_BG_COLOR = self.DARK_750_COLOR
# self.config_window.SB__BG_COLOR = self.DARK_888_COLOR
# self.config_window.SB__OPTIONMENU_BG_COLOR = self.DARK_925_COLOR
# self.config_window.SB__OPTIONMENU_HOVERED_BG_COLOR = self.DARK_875_COLOR
# self.config_window.SB__SLIDER_BUTTON_COLOR = self.DARK_700_COLOR
# self.config_window.SB__SLIDER_BUTTON_HOVERED_COLOR = self.DARK_600_COLOR
# self.config_window.SB__SWITCH_BOX_BG_COLOR = self.main.SF__SWITCH_BOX_BG_COLOR
# self.config_window.SB__SWITCH_BOX_ACTIVE_BG_COLOR = self.main.SF__SWITCH_BOX_ACTIVE_BG_COLOR
# self.config_window.SB__CHECKBOX_BORDER_COLOR = self.DARK_500_COLOR
# self.config_window.SB__CHECKBOX_HOVER_COLOR = self.DARK_800_COLOR
# self.config_window.SB__CHECKBOX_CHECKED_COLOR = self.PRIMARY_700_COLOR
# self.config_window.SB__CHECKBOX_CHECKMARK_COLOR = self.config_window.BASIC_TEXT_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__SLIDER_BUTTON_COLOR = self.PRIMARY_700_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__SLIDER_BUTTON_HOVERED_COLOR = self.PRIMARY_500_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_COLOR = self.DARK_800_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_COLOR = self.DARK_800_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_HOVERED_COLOR = self.DARK_700_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_CLICKED_COLOR = self.DARK_900_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_DISABLED_COLOR = self.DARK_850_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_COLOR = self.PRIMARY_700_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_HOVERED_COLOR = self.PRIMARY_600_COLOR
# self.config_window.SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_CLICKED_COLOR = self.PRIMARY_900_COLOR
# # self.config_window.SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_DISABLED_COLOR = self.PRIMARY_900_COLOR
# # Side menu
# self.config_window.SIDE_MENU_BG_COLOR = self.config_window.MAIN_BG_COLOR
# self.config_window.SIDE_MENU_LABELS_BG_COLOR = self.config_window.SIDE_MENU_BG_COLOR
# self.config_window.SIDE_MENU_LABELS_BG_FOR_FAKE_BORDER_COLOR = self.config_window.SIDE_MENU_BG_COLOR
# self.config_window.SIDE_MENU_LABELS_HOVERED_BG_COLOR = self.DARK_850_COLOR
# self.config_window.SIDE_MENU_LABELS_CLICKED_BG_COLOR = self.PRIMARY_900_COLOR
# self.config_window.SIDE_MENU_LABELS_SELECTED_TEXT_COLOR = self.PRIMARY_300_COLOR
# self.config_window.SIDE_MENU_SELECTED_MARK_ACTIVE_BG_COLOR = self.main.SF__SWITCH_BOX_ACTIVE_BG_COLOR

View File

@@ -1,58 +0,0 @@
from ..ui_utils import getImageFileFromUiUtils
class ImageFileManager():
def __init__(self, theme:str ="Dark"):
if theme == "Dark":
self._createDarkModeImages()
elif theme == "Light":
self._createLightModeImages()
def _createDarkModeImages(self):
self.VRCT_LOGO = getImageFileFromUiUtils("vrct_logo_for_dark_mode.png")
self.VRCT_LOGO_MARK = getImageFileFromUiUtils("vrct_logo_mark_white.png")
self.TRANSLATION_ICON = getImageFileFromUiUtils("translation_icon_white.png")
self.TRANSLATION_ICON_DISABLED = getImageFileFromUiUtils("translation_icon_disabled.png")
self.MIC_ICON = getImageFileFromUiUtils("mic_icon_white.png")
self.MIC_ICON_DISABLED = getImageFileFromUiUtils("mic_icon_disabled.png")
self.HEADPHONES_ICON = getImageFileFromUiUtils("headphones_icon_white.png")
self.HEADPHONES_ICON_DISABLED = getImageFileFromUiUtils("headphones_icon_disabled.png")
self.FOREGROUND_ICON = getImageFileFromUiUtils("foreground_icon_white.png")
self.FOREGROUND_ICON_DISABLED = getImageFileFromUiUtils("foreground_icon_disabled.png")
self.NARROW_ARROW_DOWN = getImageFileFromUiUtils("narrow_arrow_down.png")
self.CONFIGURATION_ICON = getImageFileFromUiUtils("configuration_icon_white.png")
self.CONFIGURATION_ICON_DISABLED = getImageFileFromUiUtils("configuration_icon_disabled.png")
self.ARROW_LEFT = getImageFileFromUiUtils("arrow_left_white.png")
self.ARROW_LEFT_DISABLED = getImageFileFromUiUtils("arrow_left_disabled.png")
self.REFRESH_ICON = getImageFileFromUiUtils("refresh_icon.png")
self.HELP_ICON = getImageFileFromUiUtils("help_icon_white.png")
def _createLightModeImages(self):
self.VRCT_LOGO = getImageFileFromUiUtils("vrct_logo_for_light_mode.png")
self.VRCT_LOGO_MARK = getImageFileFromUiUtils("vrct_logo_mark_black.png")
self.TRANSLATION_ICON = getImageFileFromUiUtils("translation_icon_white.png")
self.TRANSLATION_ICON_DISABLED = getImageFileFromUiUtils("translation_icon_disabled.png")
self.MIC_ICON = getImageFileFromUiUtils("mic_icon_white.png")
self.MIC_ICON_DISABLED = getImageFileFromUiUtils("mic_icon_disabled.png")
self.HEADPHONES_ICON = getImageFileFromUiUtils("headphones_icon_white.png")
self.HEADPHONES_ICON_DISABLED = getImageFileFromUiUtils("headphones_icon_disabled.png")
self.FOREGROUND_ICON = getImageFileFromUiUtils("foreground_icon_white.png")
self.FOREGROUND_ICON_DISABLED = getImageFileFromUiUtils("foreground_icon_disabled.png")
self.NARROW_ARROW_DOWN = getImageFileFromUiUtils("narrow_arrow_down.png")
self.CONFIGURATION_ICON = getImageFileFromUiUtils("configuration_icon_white.png")
self.CONFIGURATION_ICON_DISABLED = getImageFileFromUiUtils("configuration_icon_disabled.png")
self.ARROW_LEFT = getImageFileFromUiUtils("arrow_left_white.png")
self.ARROW_LEFT_DISABLED = getImageFileFromUiUtils("arrow_left_disabled.png")
self.HELP_ICON = getImageFileFromUiUtils("help_icon_white.png")

View File

@@ -0,0 +1,2 @@
from ._darkTheme import _darkTheme
from ._lightTheme import _lightTheme

View File

@@ -0,0 +1,300 @@
from types import SimpleNamespace
from ...ui_utils import getImageFileFromUiUtils
def _darkTheme(base_color):
theme_settings = SimpleNamespace(
main = SimpleNamespace(
# Common
BASIC_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
LABELS_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
# Main
MAIN_BG_COLOR = base_color.DARK_888_COLOR,
TEXTBOX_BG_COLOR = base_color.DARK_900_COLOR,
TEXTBOX_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
TEXTBOX_TEXT_SUB_COLOR = base_color.DARK_450_COLOR,
TEXTBOX_SYSTEM_TAG_TEXT_COLOR = base_color.PRIMARY_300_COLOR,
TEXTBOX_SENT_TAG_TEXT_COLOR = base_color.SENT_400_COLOR,
TEXTBOX_RECEIVED_TAG_TEXT_COLOR = base_color.RECEIVED_300_COLOR,
# TEXTBOX_ERROR_TAG_TEXT_COLOR = "#c27583",
TEXTBOX_TIMESTAMP_TEXT_COLOR = base_color.DARK_600_COLOR,
TEXTBOX_TAB_BG_PASSIVE_COLOR = base_color.DARK_850_COLOR,
TEXTBOX_TAB_BG_ACTIVE_COLOR = base_color.DARK_900_COLOR,
TEXTBOX_TAB_BG_HOVERED_COLOR = base_color.DARK_800_COLOR,
TEXTBOX_TAB_BG_CLICKED_COLOR = base_color.DARK_925_COLOR,
TEXTBOX_TAB_TEXT_ACTIVE_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
TEXTBOX_TAB_TEXT_PASSIVE_COLOR = base_color.DARK_500_COLOR,
TEXTBOX_ENTRY_TEXT_COLOR = base_color.DARK_300_COLOR,
TEXTBOX_ENTRY_TEXT_DISABLED_COLOR = base_color.DARK_500_COLOR,
TEXTBOX_ENTRY_BG_COLOR = base_color.DARK_875_COLOR,
TEXTBOX_ENTRY_BORDER_COLOR = base_color.DARK_750_COLOR,
TEXTBOX_ENTRY_PLACEHOLDER_COLOR = base_color.DARK_500_COLOR,
TEXTBOX_ENTRY_PLACEHOLDER_DISABLED_COLOR = base_color.DARK_700_COLOR,
# Sidebar
SIDEBAR_BG_COLOR = base_color.DARK_850_COLOR,
# Sidebar Features
SF__BG_COLOR = base_color.DARK_825_COLOR,
SF__HOVERED_BG_COLOR = base_color.DARK_800_COLOR,
SF__CLICKED_BG_COLOR = base_color.DARK_875_COLOR,
SF__TEXT_DISABLED_COLOR = base_color.DARK_500_COLOR,
SF__SWITCH_BOX_BG_COLOR = base_color.DARK_775_COLOR,
SF__SWITCH_BOX_HOVERED_BG_COLOR = base_color.DARK_725_COLOR,
SF__SWITCH_BOX_CLICKED_BG_COLOR = base_color.DARK_825_COLOR,
SF__SWITCH_BOX_ACTIVE_BG_COLOR = base_color.PRIMARY_500_COLOR,
SF__SWITCH_BOX_ACTIVE_HOVERED_BG_COLOR = base_color.PRIMARY_400_COLOR,
SF__SWITCH_BOX_ACTIVE_CLICKED_BG_COLOR = base_color.PRIMARY_700_COLOR,
SF__SWITCH_BOX_DISABLE_BG_COLOR = base_color.PRIMARY_800_COLOR,
SF__SWITCH_BOX_BUTTON_COLOR = base_color.DARK_400_COLOR,
# It's not working because It overrode internally.
SF__SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.DARK_350_COLOR,
SF__SELECTED_MARK_ACTIVE_BG_COLOR = base_color.PRIMARY_500_COLOR,
SF__SELECTED_MARK_ACTIVE_HOVERED_BG_COLOR = base_color.PRIMARY_400_COLOR,
SF__SELECTED_MARK_ACTIVE_CLICKED_BG_COLOR = base_color.PRIMARY_700_COLOR,
SF__SELECTED_MARK_DISABLE_BG_COLOR = base_color.PRIMARY_800_COLOR,
# Sidebar Languages Settings
SLS__TITLE_TEXT_COLOR = base_color.DARK_400_COLOR,
SLS__BG_COLOR = base_color.DARK_800_COLOR,
SLS__PRESETS_TAB_BG_HOVERED_COLOR = base_color.DARK_825_COLOR,
SLS__PRESETS_TAB_BG_CLICKED_COLOR = base_color.DARK_875_COLOR,
SLS__PRESETS_TAB_BG_PASSIVE_COLOR = base_color.DARK_850_COLOR,
SLS__PRESETS_TAB_BG_ACTIVE_COLOR = base_color.DARK_800_COLOR,
SLS__PRESETS_TAB_ACTIVE_TEXT_COLOR_PASSIVE = base_color.DARK_600_COLOR,
SLS__PRESETS_TAB_ACTIVE_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
SLS__BOX_BG_COLOR = base_color.DARK_825_COLOR,
SLS__BOX_SECTION_TITLE_TEXT_COLOR = base_color.DARK_400_COLOR,
SLS__BOX_ARROWS_TEXT_COLOR = base_color.DARK_500_COLOR,
SLS__OPTIONMENU_BG_COLOR = base_color.DARK_888_COLOR,
SLS__OPTIONMENU_HOVERED_BG_COLOR = base_color.DARK_875_COLOR,
SLS__OPTIONMENU_CLICKED_BG_COLOR = base_color.DARK_900_COLOR,
CONFIG_BUTTON_BG_COLOR = base_color.DARK_850_COLOR,
CONFIG_BUTTON_HOVERED_BG_COLOR = base_color.DARK_800_COLOR,
CONFIG_BUTTON_CLICKED_BG_COLOR = base_color.DARK_875_COLOR,
MINIMIZE_SIDEBAR_BUTTON_BG_COLOR = base_color.DARK_850_COLOR,
MINIMIZE_SIDEBAR_BUTTON_HOVERED_BG_COLOR = base_color.DARK_800_COLOR,
MINIMIZE_SIDEBAR_BUTTON_CLICKED_BG_COLOR = base_color.DARK_900_COLOR,
TOP_BAR_BUTTON_BG_COLOR = base_color.DARK_888_COLOR,
TOP_BAR_BUTTON_HOVERED_BG_COLOR = base_color.DARK_850_COLOR,
TOP_BAR_BUTTON_CLICKED_BG_COLOR = base_color.DARK_900_COLOR,
UPDATE_AVAILABLE_BUTTON_BG_COLOR = base_color.DARK_888_COLOR,
UPDATE_AVAILABLE_BUTTON_HOVERED_BG_COLOR = base_color.DARK_850_COLOR,
UPDATE_AVAILABLE_BUTTON_CLICKED_BG_COLOR = base_color.DARK_900_COLOR,
UPDATE_AVAILABLE_BUTTON_TEXT_COLOR = base_color.PRIMARY_300_COLOR,
HELP_AND_INFO_BUTTON_BG_COLOR = base_color.DARK_888_COLOR,
HELP_AND_INFO_BUTTON_HOVERED_BG_COLOR = base_color.DARK_850_COLOR,
HELP_AND_INFO_BUTTON_CLICKED_BG_COLOR = base_color.DARK_900_COLOR,
),
selectable_language_window = SimpleNamespace(
# Selectable Language Window
BASIC_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
MAIN_BG_COLOR = base_color.DARK_875_COLOR,
GO_BACK_BUTTON_BG_COLOR = base_color.DARK_800_COLOR,
GO_BACK_BUTTON_BG_HOVERED_COLOR = base_color.DARK_750_COLOR,
GO_BACK_BUTTON_BG_CLICKED_COLOR = base_color.DARK_875_COLOR,
TOP_BG_COLOR = base_color.DARK_850_COLOR,
TITLE_TEXT_COLOR = base_color.DARK_400_COLOR,
LANGUAGE_BUTTON_BG_COLOR = base_color.DARK_875_COLOR,
LANGUAGE_BUTTON_BG_HOVERED_COLOR = base_color.DARK_825_COLOR,
LANGUAGE_BUTTON_BG_CLICKED_COLOR = base_color.DARK_888_COLOR,
),
# Modal Window (Main Window)
main_window_cover = SimpleNamespace(
TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
),
confirmation_modal = SimpleNamespace(
MESSAGE_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
FAKE_BORDER_COLOR = base_color.DARK_600_COLOR,
BG_COLOR = base_color.DARK_800_COLOR,
CONFIRMATION_BUTTONS_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
ACCEPT_BUTTON_BG_COLOR = base_color.PRIMARY_600_COLOR,
ACCEPT_BUTTON_HOVERED_BG_COLOR = base_color.PRIMARY_450_COLOR,
ACCEPT_BUTTON_CLICKED_BG_COLOR = base_color.PRIMARY_750_COLOR,
DENY_BUTTON_BG_COLOR = base_color.DARK_750_COLOR,
DENY_BUTTON_HOVERED_BG_COLOR = base_color.DARK_700_COLOR,
DENY_BUTTON_CLICKED_BG_COLOR = base_color.DARK_825_COLOR,
),
config_window = SimpleNamespace(
# Common
BASIC_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
LABELS_TEXT_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
LABELS_DESC_TEXT_COLOR = base_color.DARK_500_COLOR,
LABELS_TEXT_DISABLED_COLOR = base_color.DARK_600_COLOR,
# Top bar
TOP_BAR_BG_COLOR = base_color.DARK_850_COLOR,
# Restart Button
RESTART_BUTTON_BG_COLOR = base_color.PRIMARY_600_COLOR,
RESTART_BUTTON_HOVERED_BG_COLOR = base_color.PRIMARY_500_COLOR,
RESTART_BUTTON_CLICKED_BG_COLOR = base_color.PRIMARY_700_COLOR,
# Compact Mode
COMPACT_MODE_SWITCH_BOX_BG_COLOR = base_color.DARK_775_COLOR,
COMPACT_MODE_SWITCH_BOX_ACTIVE_BG_COLOR = base_color.PRIMARY_500_COLOR,
COMPACT_MODE_SWITCH_BOX_BUTTON_COLOR = base_color.DARK_350_COLOR,
COMPACT_MODE_SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.DARK_300_COLOR,
# Main
MAIN_BG_COLOR = base_color.DARK_950_COLOR,
# This is for fake border color
SB__WRAPPER_BG_COLOR = base_color.DARK_750_COLOR,
SB__BG_COLOR = base_color.DARK_888_COLOR,
SB__OPTIONMENU_BG_COLOR = base_color.DARK_925_COLOR,
SB__OPTIONMENU_HOVERED_BG_COLOR = base_color.DARK_850_COLOR,
SB__OPTIONMENU_CLICKED_BG_COLOR = base_color.DARK_950_COLOR,
SB__DROPDOWN_MENU_WINDOW_BG_COLOR = base_color.DARK_950_COLOR,
SB__DROPDOWN_MENU_WINDOW_BORDER_COLOR = base_color.DARK_600_COLOR,
SB__DROPDOWN_MENU_BG_COLOR = base_color.DARK_875_COLOR,
SB__DROPDOWN_MENU_HOVERED_BG_COLOR = base_color.DARK_800_COLOR,
SB__DROPDOWN_MENU_CLICKED_BG_COLOR = base_color.DARK_900_COLOR,
SB__SLIDER_BG_COLOR = base_color.DARK_700_COLOR,
SB__SLIDER_PROGRESS_BG_COLOR = base_color.DARK_500_COLOR,
SB__SLIDER_BUTTON_COLOR = base_color.DARK_700_COLOR,
SB__SLIDER_BUTTON_HOVERED_COLOR = base_color.DARK_600_COLOR,
SB__SLIDER_TOOLTIP_BG_COLOR = base_color.DARK_850_COLOR,
SB__SLIDER_TOOLTIP_TEXT_COLOR = base_color.DARK_200_COLOR,
SB__SWITCH_BOX_BG_COLOR = base_color.DARK_800_COLOR,
SB__SWITCH_BOX_ACTIVE_BG_COLOR = base_color.PRIMARY_500_COLOR,
SB__SWITCH_BOX_BUTTON_COLOR = base_color.DARK_400_COLOR,
SB__SWITCH_BOX_BUTTON_HOVERED_COLOR = base_color.DARK_350_COLOR,
SB__CHECKBOX_BORDER_COLOR = base_color.DARK_600_COLOR,
SB__CHECKBOX_HOVER_COLOR = base_color.DARK_800_COLOR,
SB__CHECKBOX_CHECKED_COLOR = base_color.PRIMARY_700_COLOR,
SB__CHECKBOX_CHECKMARK_COLOR = base_color.DARK_BASIC_TEXT_COLOR,
SB__ENTRY_TEXT_COLOR = base_color.DARK_300_COLOR,
SB__ENTRY_BG_COLOR = base_color.DARK_863_COLOR,
SB__ENTRY_BORDER_COLOR = base_color.DARK_775_COLOR,
SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_BG_COLOR = base_color.DARK_800_COLOR,
SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_PROGRESS_BG_COLOR = base_color.PRIMARY_750_COLOR,
SB__PROGRESSBAR_X_SLIDER__PROGRESSBAR_PROGRESS_EXCEED_THRESHOLD_BG_COLOR = base_color.PRIMARY_400_COLOR,
SB__PROGRESSBAR_X_SLIDER__SLIDER_BUTTON_COLOR = base_color.PRIMARY_600_COLOR,
SB__PROGRESSBAR_X_SLIDER__SLIDER_BUTTON_HOVERED_COLOR = base_color.PRIMARY_400_COLOR,
SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_COLOR = base_color.DARK_800_COLOR,
SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_HOVERED_COLOR = base_color.DARK_700_COLOR,
SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_CLICKED_COLOR = base_color.DARK_900_COLOR,
SB__PROGRESSBAR_X_SLIDER__PASSIVE_BUTTON_DISABLED_COLOR = base_color.DARK_850_COLOR,
SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_COLOR = base_color.PRIMARY_600_COLOR,
SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_HOVERED_COLOR = base_color.PRIMARY_500_COLOR,
SB__PROGRESSBAR_X_SLIDER__ACTIVE_BUTTON_CLICKED_COLOR = base_color.PRIMARY_800_COLOR,
SB__ARROW_SWITCH_BUTTON_COLOR = base_color.DARK_888_COLOR,
SB__ARROW_SWITCH_BUTTON_HOVERED_COLOR = base_color.DARK_800_COLOR,
SB__ARROW_SWITCH_BUTTON_CLICKED_COLOR = base_color.DARK_900_COLOR,
SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_COLOR = base_color.PRIMARY_600_COLOR,
SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_HOVERED_COLOR = base_color.PRIMARY_500_COLOR,
SB__ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_CLICKED_COLOR = base_color.PRIMARY_700_COLOR,
SB__ADD_AND_DELETE_ABLE_LIST_BG_COLOR = base_color.DARK_800_COLOR,
SB__ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_HOVERED_BG_COLOR = base_color.DARK_750_COLOR,
SB__ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_CLICKED_BG_COLOR = base_color.DARK_850_COLOR,
SB__ADD_AND_DELETE_ABLE_LIST_DELETED_BG_COLOR = base_color.DARK_850_COLOR,
SB__ADD_AND_DELETE_ABLE_LIST__VALUES_DELETED_BUTTON_HOVERED_BG_COLOR = base_color.DARK_800_COLOR,
SB__ADD_AND_DELETE_ABLE_LIST__VALUES_DELETED_BUTTON_CLICKED_BG_COLOR = base_color.DARK_900_COLOR,
# Side menu
SIDE_MENU_BG_COLOR = base_color.DARK_950_COLOR,
SIDE_MENU_LABELS_BG_COLOR = base_color.DARK_950_COLOR,
SIDE_MENU_LABELS_BG_FOR_FAKE_BORDER_COLOR = base_color.DARK_950_COLOR,
SIDE_MENU_LABELS_HOVERED_BG_COLOR = base_color.DARK_850_COLOR,
SIDE_MENU_LABELS_CLICKED_BG_COLOR = base_color.PRIMARY_750_COLOR,
SIDE_MENU_LABELS_SELECTED_TEXT_COLOR = base_color.PRIMARY_200_COLOR,
SIDE_MENU_SELECTED_MARK_ACTIVE_BG_COLOR = base_color.PRIMARY_500_COLOR,
NOW_VERSION_TEXT_COLOR = base_color.DARK_300_COLOR,
# Error Message Window for Config Window
# The color code [#bb4448] is a mixture of [#a9555c] and [#cc3333] (for a redder shade).
SB__ERROR_MESSAGE_BG_COLOR = "#bb4448",
SB__ERROR_MESSAGE_TEXT_COLOR = "#fff",
),
image_file = SimpleNamespace(
VRCT_LOGO = getImageFileFromUiUtils("vrct_logo_for_dark_mode.png"),
VRCT_LOGO_MARK = getImageFileFromUiUtils("vrct_logo_mark_white.png"),
TRANSLATION_ICON = getImageFileFromUiUtils("translation_icon_white.png"),
TRANSLATION_ICON_DISABLED = getImageFileFromUiUtils("translation_icon_disabled.png"),
MIC_ICON = getImageFileFromUiUtils("mic_icon_white.png"),
MIC_ICON_DISABLED = getImageFileFromUiUtils("mic_icon_disabled.png"),
HEADPHONES_ICON = getImageFileFromUiUtils("headphones_icon_white.png"),
HEADPHONES_ICON_DISABLED = getImageFileFromUiUtils("headphones_icon_disabled.png"),
FOREGROUND_ICON = getImageFileFromUiUtils("foreground_icon_white.png"),
FOREGROUND_ICON_DISABLED = getImageFileFromUiUtils("foreground_icon_disabled.png"),
NARROW_ARROW_DOWN = getImageFileFromUiUtils("narrow_arrow_down.png"),
CONFIGURATION_ICON = getImageFileFromUiUtils("configuration_icon_white.png"),
CONFIGURATION_ICON_DISABLED = getImageFileFromUiUtils("configuration_icon_disabled.png"),
ARROW_LEFT = getImageFileFromUiUtils("arrow_left_white.png"),
ARROW_LEFT_DISABLED = getImageFileFromUiUtils("arrow_left_disabled.png"),
REFRESH_ICON = getImageFileFromUiUtils("refresh_icon.png"),
HELP_ICON = getImageFileFromUiUtils("help_icon_white.png"),
CANCEL_ICON = getImageFileFromUiUtils("cancel_icon.png"),
REDO_ICON = getImageFileFromUiUtils("redo_white.png"),
),
)
return theme_settings

View File

@@ -0,0 +1,47 @@
from types import SimpleNamespace
from ...ui_utils import getImageFileFromUiUtils
def _lightTheme(base_color):
theme_settings = SimpleNamespace(
main = SimpleNamespace(
# Common
BASIC_TEXT_COLOR = base_color.LIGHT_100_COLOR,
LABELS_TEXT_COLOR = base_color.LIGHT_100_COLOR,
# Main
MAIN_BG_COLOR = base_color.DARK_888_COLOR,
),
config_window = SimpleNamespace(
# Common
BASIC_TEXT_COLOR = base_color.LIGHT_100_COLOR,
),
image_file = SimpleNamespace(
VRCT_LOGO = getImageFileFromUiUtils("vrct_logo_for_light_mode.png"),
VRCT_LOGO_MARK = getImageFileFromUiUtils("vrct_logo_mark_black.png"),
TRANSLATION_ICON = getImageFileFromUiUtils("translation_icon_white.png"),
TRANSLATION_ICON_DISABLED = getImageFileFromUiUtils("translation_icon_disabled.png"),
MIC_ICON = getImageFileFromUiUtils("mic_icon_white.png"),
MIC_ICON_DISABLED = getImageFileFromUiUtils("mic_icon_disabled.png"),
HEADPHONES_ICON = getImageFileFromUiUtils("headphones_icon_white.png"),
HEADPHONES_ICON_DISABLED = getImageFileFromUiUtils("headphones_icon_disabled.png"),
FOREGROUND_ICON = getImageFileFromUiUtils("foreground_icon_white.png"),
FOREGROUND_ICON_DISABLED = getImageFileFromUiUtils("foreground_icon_disabled.png"),
NARROW_ARROW_DOWN = getImageFileFromUiUtils("narrow_arrow_down.png"),
CONFIGURATION_ICON = getImageFileFromUiUtils("configuration_icon_white.png"),
CONFIGURATION_ICON_DISABLED = getImageFileFromUiUtils("configuration_icon_disabled.png"),
ARROW_LEFT = getImageFileFromUiUtils("arrow_left_white.png"),
ARROW_LEFT_DISABLED = getImageFileFromUiUtils("arrow_left_disabled.png"),
HELP_ICON = getImageFileFromUiUtils("help_icon_white.png"),
),
)
return theme_settings

View File

@@ -217,6 +217,10 @@ class UiScalingManager():
self.config_window.SB__DESC_TOP_PADY = self._calculateUiSize(2) self.config_window.SB__DESC_TOP_PADY = self._calculateUiSize(2)
self.config_window.BUTTONS_CORNER_RADIUS = self._calculateUiSize(6)
# self.config_window.BUTTONS_IPADX = self._calculateUiSize(10)
# self.config_window.BUTTONS_IPADY = self._calculateUiSize(6)
self.config_window.SB__ERROR_MESSAGE_IPADX = (self._calculateUiSize(10), self._calculateUiSize(10)) self.config_window.SB__ERROR_MESSAGE_IPADX = (self._calculateUiSize(10), self._calculateUiSize(10))
self.config_window.SB__ERROR_MESSAGE_IPADY = (self._calculateUiSize(6), self._calculateUiSize(6)) self.config_window.SB__ERROR_MESSAGE_IPADY = (self._calculateUiSize(6), self._calculateUiSize(6))
self.config_window.SB__ERROR_MESSAGE_FONT_SIZE = self._calculateUiSize(14) self.config_window.SB__ERROR_MESSAGE_FONT_SIZE = self._calculateUiSize(14)
@@ -276,6 +280,28 @@ class UiScalingManager():
self.config_window.SB__ARROW_SWITCH_BUTTON_IPADXY = self._calculateUiSize(16)
self.config_window.SB__ARROW_SWITCH_BUTTON_ICON_SIZE = self._calculateUiSize(24)
self.config_window.SB__ARROW_SWITCH_DESC_FONT_SIZE = self._calculateUiSize(16)
self.config_window.SB__ARROW_SWITCH_LEFT_PADX = (self._calculateUiSize(20), 0)
self.config_window.ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_IPADX = self._calculateUiSize(16)
self.config_window.ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_IPADY = self._calculateUiSize(6)
self.config_window.ADD_AND_DELETE_ABLE_LIST__VALUES_CORNER_RADIUS = self._calculateUiSize(2)
self.config_window.ADD_AND_DELETE_ABLE_LIST__VALUES_LEFT_PADX = (0, self._calculateUiSize(4))
self.config_window.ADD_AND_DELETE_ABLE_LIST__VALUES_BOTTOM_PADY = (0, self._calculateUiSize(4))
self.config_window.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_FONT_SIZE = self._calculateUiSize(14)
self.config_window.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_IPADX = (self._calculateUiSize(8), 0)
self.config_window.ADD_AND_DELETE_ABLE_LIST__VALUES_TEXT_IPADY = self._calculateUiSize(6)
self.config_window.ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_IMG_SIZE = self._calculateUiSize(14)
self.config_window.ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_IPADXY = self._calculateUiSize(6)
self.config_window.ADD_AND_DELETE_ABLE_LIST__VALUES_ACTION_BUTTON_PADX = (self._calculateUiSize(6), self._calculateUiSize(8))
self.config_window.ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_LEFT_PADX = (self._calculateUiSize(20), 0)
self.config_window.ADD_AND_DELETE_ABLE_LIST__ADD_BUTTON_FONT_SIZE = self._calculateUiSize(14)
def _calculateUiSize(self, default_size, is_allowed_odd:bool=False, is_zero_allowed:bool=False): def _calculateUiSize(self, default_size, is_allowed_odd:bool=False, is_zero_allowed:bool=False):
size = calculateUiSize(default_size, self.SCALING_FLOAT, is_allowed_odd, is_zero_allowed) size = calculateUiSize(default_size, self.SCALING_FLOAT, is_allowed_odd, is_zero_allowed)
return size return size

View File

@@ -1,3 +1,2 @@
from .ColorThemeManager import ColorThemeManager from .ColorThemeManager import ColorThemeManager
from .ImageFileManager import ImageFileManager
from .UiScalingManager import UiScalingManager from .UiScalingManager import UiScalingManager