Merge branch 'view' into UI_2.0
This commit is contained in:
@@ -66,6 +66,9 @@ config_window:
|
|||||||
compact_mode: Compact Mode
|
compact_mode: Compact Mode
|
||||||
version: version %{version}
|
version: version %{version}
|
||||||
restart_message: Apply changes with a restart.
|
restart_message: Apply changes with a restart.
|
||||||
|
common_error_message:
|
||||||
|
invalid_value: Invalid value.
|
||||||
|
|
||||||
side_menu_labels:
|
side_menu_labels:
|
||||||
appearance: Appearance
|
appearance: Appearance
|
||||||
# translation: Translation
|
# translation: Translation
|
||||||
@@ -75,16 +78,21 @@ config_window:
|
|||||||
others: Others
|
others: Others
|
||||||
advanced_settings: Advanced Settings
|
advanced_settings: Advanced Settings
|
||||||
|
|
||||||
|
|
||||||
transparency:
|
transparency:
|
||||||
label: Transparency
|
label: Transparency
|
||||||
desc: Change the main window's transparency.
|
desc: Change the main window's transparency.
|
||||||
|
|
||||||
appearance_theme:
|
appearance_theme:
|
||||||
label: Theme [Under development]
|
label: Theme [Under development]
|
||||||
desc: Change the color theme. Currently, only the Dark theme is supported. The Light theme is under development.
|
desc: Change the color theme. Currently, only the Dark theme is supported. The Light theme is under development.
|
||||||
|
|
||||||
ui_size:
|
ui_size:
|
||||||
label: UI Size
|
label: UI Size
|
||||||
|
|
||||||
font_family:
|
font_family:
|
||||||
label: Font Family
|
label: Font Family
|
||||||
|
|
||||||
ui_language:
|
ui_language:
|
||||||
label: UI Language
|
label: UI Language
|
||||||
|
|
||||||
@@ -93,22 +101,32 @@ config_window:
|
|||||||
|
|
||||||
mic_host:
|
mic_host:
|
||||||
label: Mic Host/Driver
|
label: Mic Host/Driver
|
||||||
|
|
||||||
mic_device:
|
mic_device:
|
||||||
label: Mic Device
|
label: Mic Device
|
||||||
|
|
||||||
mic_dynamic_energy_threshold:
|
mic_dynamic_energy_threshold:
|
||||||
label_for_automatic: "Mic Energy Threshold (Current Setting: Automatic)"
|
label_for_automatic: "Mic Energy Threshold (Current Setting: Automatic)"
|
||||||
desc_for_automatic: "Automatically determine microphone input sensitivity."
|
desc_for_automatic: "Automatically determine microphone input sensitivity."
|
||||||
label_for_manual: "Mic Energy Threshold (Current Setting: Manual)"
|
label_for_manual: "Mic Energy Threshold (Current Setting: Manual)"
|
||||||
desc_for_manual: "Manually determine the microphone input sensitivity using the slider. Press the microphone icon to input your voice and adjust the sensitivity while monitoring the volume."
|
desc_for_manual: "Manually determine the microphone input sensitivity using the slider. Press the microphone icon to input your voice and adjust the sensitivity while monitoring the volume."
|
||||||
|
error_message: You can set it with a value between 0 to %{max}.
|
||||||
|
|
||||||
mic_record_timeout:
|
mic_record_timeout:
|
||||||
label: Mic Record Timeout
|
label: Mic Record Timeout
|
||||||
desc: Detects silence and, when the specified number of seconds has passed, considers the mic input to have ended. (Second(s))
|
desc: Detects silence and, when the specified number of seconds has passed, considers the mic input to have ended. (Second(s))
|
||||||
|
error_message: It cannot be greater than '%{mic_phrase_timeout_label}' with a value of 0 or more.
|
||||||
|
|
||||||
mic_phrase_timeout:
|
mic_phrase_timeout:
|
||||||
label: Mic Phrase Timeout
|
label: Mic Phrase Timeout
|
||||||
desc: Transcription processing is performed at intervals of the specified number of seconds.
|
desc: Transcription processing is performed at intervals of the specified number of seconds.
|
||||||
|
error_message: It cannot be set lower than '%{mic_record_timeout_label}' with a value of 0 or more.
|
||||||
|
|
||||||
mic_max_phrase:
|
mic_max_phrase:
|
||||||
label: Mic Max Phrases
|
label: Mic Max Phrases
|
||||||
desc: It is the lower limit for the number of transcribed words, and only when this number is exceeded will the transcription results be displayed logs and send to VRChat.
|
desc: It is the lower limit for the number of transcribed words, and only when this number is exceeded will the transcription results be displayed logs and send to VRChat.
|
||||||
|
error_message: You can set a number equal to or greater than 0.
|
||||||
|
|
||||||
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: "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"
|
||||||
@@ -119,32 +137,46 @@ config_window:
|
|||||||
desc_for_automatic: "Automatically determine speaker input sensitivity."
|
desc_for_automatic: "Automatically determine speaker input sensitivity."
|
||||||
label_for_manual: "Speaker Energy Threshold (Current Setting: Manual)"
|
label_for_manual: "Speaker Energy Threshold (Current Setting: Manual)"
|
||||||
desc_for_manual: "Manually determine the speaker input sensitivity using the slider. Press the headphones icon to listen to the audio and adjust the sensitivity while monitoring the volume."
|
desc_for_manual: "Manually determine the speaker input sensitivity using the slider. Press the headphones icon to listen to the audio and adjust the sensitivity while monitoring the volume."
|
||||||
|
error_message: You can set it with a value between 0 to %{max}.
|
||||||
|
no_device_error_message: No speaker device detected.
|
||||||
|
|
||||||
speaker_record_timeout:
|
speaker_record_timeout:
|
||||||
label: Speaker Record Timeout
|
label: Speaker Record Timeout
|
||||||
desc: Detects silence and, when the specified number of seconds has passed, considers the speaker input to have ended. (Second(s))
|
desc: Detects silence and, when the specified number of seconds has passed, considers the speaker input to have ended. (Second(s))
|
||||||
|
error_message: It cannot be greater than '%{speaker_phrase_timeout_label}' with a value of 0 or more.
|
||||||
|
|
||||||
speaker_phrase_timeout:
|
speaker_phrase_timeout:
|
||||||
label: Speaker Phrase Timeout
|
label: Speaker Phrase Timeout
|
||||||
desc: Transcription processing is performed at intervals of the specified number of seconds.
|
desc: Transcription processing is performed at intervals of the specified number of seconds.
|
||||||
|
error_message: It cannot be set lower than '%{speaker_record_timeout_label}' with a value of 0 or more.
|
||||||
|
|
||||||
speaker_max_phrase:
|
speaker_max_phrase:
|
||||||
label: Speaker Max Phrases
|
label: Speaker Max Phrases
|
||||||
desc: It is the lower limit for the number of transcribed words, and only when this number is exceeded will the transcription results be displayed logs.
|
desc: It is the lower limit for the number of transcribed words, and only when this number is exceeded will the transcription results be displayed logs.
|
||||||
|
error_message: You can set a number equal to or greater than 0.
|
||||||
|
|
||||||
|
|
||||||
auto_clear_the_message_box:
|
auto_clear_the_message_box:
|
||||||
label: Auto Clear The Message Box
|
label: Auto Clear The Message Box
|
||||||
|
|
||||||
notice_xsoverlay:
|
notice_xsoverlay:
|
||||||
label: Notification XSOverlay (VR Only)
|
label: Notification XSOverlay (VR Only)
|
||||||
desc: Notify received messages by using XSOverlay's notification feature.
|
desc: Notify received messages by using XSOverlay's notification feature.
|
||||||
|
|
||||||
auto_export_message_logs:
|
auto_export_message_logs:
|
||||||
label: Auto Export Message Logs
|
label: Auto Export Message Logs
|
||||||
desc: Automatically export the conversation messages as a text file.
|
desc: Automatically export the conversation messages as a text file.
|
||||||
|
|
||||||
message_format:
|
message_format:
|
||||||
label: Message Format
|
label: Message Format
|
||||||
desc: "You can change the decoration of the message you want to send.\n[message] will be replaced with the message, and [translation] will be replaced with the translated message.\nIt will be used in Notification XSOverlay too."
|
desc: "You can change the decoration of the message you want to send.\n[message] will be replaced with the message, and [translation] will be replaced with the translated message.\nIt will be used in Notification XSOverlay too."
|
||||||
|
|
||||||
send_message_to_vrc:
|
send_message_to_vrc:
|
||||||
label: Send Message To VRChat
|
label: Send Message To VRChat
|
||||||
desc: There is a way to use it without sending messages to VRChat, but it is not supported. Enable this feature when you intend to send a message to VRChat.
|
desc: There is a way to use it without sending messages to VRChat, but it is not supported. Enable this feature when you intend to send a message to VRChat.
|
||||||
|
|
||||||
osc_ip_address:
|
osc_ip_address:
|
||||||
label: OSC IP Address
|
label: OSC IP Address
|
||||||
|
|
||||||
osc_port:
|
osc_port:
|
||||||
label: OSC Port
|
label: OSC Port
|
||||||
@@ -67,6 +67,9 @@ config_window:
|
|||||||
compact_mode: コンパクトモード
|
compact_mode: コンパクトモード
|
||||||
version: バージョン %{version}
|
version: バージョン %{version}
|
||||||
restart_message: 再起動して変更を適用する。
|
restart_message: 再起動して変更を適用する。
|
||||||
|
common_error_message:
|
||||||
|
invalid_value: 無効な値です。
|
||||||
|
|
||||||
side_menu_labels:
|
side_menu_labels:
|
||||||
appearance: デザイン
|
appearance: デザイン
|
||||||
# translation: 翻訳
|
# translation: 翻訳
|
||||||
@@ -76,16 +79,21 @@ config_window:
|
|||||||
others: その他
|
others: その他
|
||||||
advanced_settings: 高度な設定
|
advanced_settings: 高度な設定
|
||||||
|
|
||||||
|
|
||||||
transparency:
|
transparency:
|
||||||
label: 透明度
|
label: 透明度
|
||||||
desc: メイン画面の透明度を変更できます。
|
desc: メイン画面の透明度を変更できます。
|
||||||
|
|
||||||
appearance_theme:
|
appearance_theme:
|
||||||
label: 外観テーマ [開発中]
|
label: 外観テーマ [開発中]
|
||||||
desc: カラーテーマを変更できます。現在はDarkテーマのみ対応。Lightテーマは制作中です。
|
desc: カラーテーマを変更できます。現在はDarkテーマのみ対応。Lightテーマは制作中です。
|
||||||
|
|
||||||
ui_size:
|
ui_size:
|
||||||
label: UIサイズ
|
label: UIサイズ
|
||||||
|
|
||||||
font_family:
|
font_family:
|
||||||
label: 使用フォント
|
label: 使用フォント
|
||||||
|
|
||||||
ui_language:
|
ui_language:
|
||||||
label: UIの言語 / UI Language
|
label: UIの言語 / UI Language
|
||||||
|
|
||||||
@@ -94,22 +102,32 @@ config_window:
|
|||||||
|
|
||||||
mic_host:
|
mic_host:
|
||||||
label: マイク(ホスト/ドライバー)
|
label: マイク(ホスト/ドライバー)
|
||||||
|
|
||||||
mic_device:
|
mic_device:
|
||||||
label: マイク (デバイス)
|
label: マイク (デバイス)
|
||||||
|
|
||||||
mic_dynamic_energy_threshold:
|
mic_dynamic_energy_threshold:
|
||||||
label_for_automatic: "マイク入力感度の調整 (現在の設定: 自動)"
|
label_for_automatic: "マイク入力感度の調整 (現在の設定: 自動)"
|
||||||
desc_for_automatic: マイクの入力感度を自動的に調節する。
|
desc_for_automatic: マイクの入力感度を自動的に調節する。
|
||||||
label_for_manual: "マイク入力感度の調整 (現在の設定: 手動)"
|
label_for_manual: "マイク入力感度の調整 (現在の設定: 手動)"
|
||||||
desc_for_manual: スライダーを調整して入力感度を手動で決められます。マイクのアイコンを押すと、実際に声を入力し、音量を確認しながら調節できます。
|
desc_for_manual: スライダーを調整して入力感度を手動で決められます。マイクのアイコンを押すと、実際に声を入力し、音量を確認しながら調節できます。
|
||||||
|
error_message: 0 から %{max} までの数値で設定できます。
|
||||||
|
|
||||||
mic_record_timeout:
|
mic_record_timeout:
|
||||||
label: 入力が終了したとみなす無音時間
|
label: 入力が終了したとみなす無音時間
|
||||||
desc: 無音を検出し、設定された秒数経過すると、音声入力が終了したとみなします。
|
desc: 無音を検出し、設定された秒数経過すると、音声入力が終了したとみなします。
|
||||||
|
error_message: 0 以上で 「%{mic_phrase_timeout_label}」より大きくすることはできません。
|
||||||
|
|
||||||
mic_phrase_timeout:
|
mic_phrase_timeout:
|
||||||
label: 一度に文字起こしする時間の長さ
|
label: 一度に文字起こしする時間の長さ
|
||||||
desc: 設定された秒数ごとに文字起こし処理が行われます。
|
desc: 設定された秒数ごとに文字起こし処理が行われます。
|
||||||
|
error_message: 0 以上で 「%{mic_record_timeout_label}」より小さくすることはできません。
|
||||||
|
|
||||||
mic_max_phrase:
|
mic_max_phrase:
|
||||||
label: 送信するまでに保持する単語数
|
label: 送信するまでに保持する単語数
|
||||||
desc: 文字起こしされた単語数の下限値で、この数値を超えた場合のみ結果をVRChatへ送信し、ログに表示します。
|
desc: 文字起こしされた単語数の下限値で、この数値を超えた場合のみ結果をVRChatへ送信し、ログに表示します。
|
||||||
|
error_message: 0以上の数値を設定できます。
|
||||||
|
|
||||||
mic_word_filter:
|
mic_word_filter:
|
||||||
label: ワードフィルター
|
label: ワードフィルター
|
||||||
desc: "設定された単語を検出すると、その文章は送信されません。\n設定の例: AAA,BBB,CCC"
|
desc: "設定された単語を検出すると、その文章は送信されません。\n設定の例: AAA,BBB,CCC"
|
||||||
@@ -120,32 +138,45 @@ config_window:
|
|||||||
desc_for_automatic: スピーカーの入力感度を自動的に調節する。
|
desc_for_automatic: スピーカーの入力感度を自動的に調節する。
|
||||||
label_for_manual: "スピーカー入力感度の調整 (現在の設定: 手動)"
|
label_for_manual: "スピーカー入力感度の調整 (現在の設定: 手動)"
|
||||||
desc_for_manual: スライダーを調整して入力感度を手動で決められます。ヘッドフォンのアイコンを押すと、実際に音声を聞き取り、音量を確認しながら調節できます。
|
desc_for_manual: スライダーを調整して入力感度を手動で決められます。ヘッドフォンのアイコンを押すと、実際に音声を聞き取り、音量を確認しながら調節できます。
|
||||||
|
error_message: 0 から %{max} までの数値で設定できます。
|
||||||
|
no_device_error_message: スピーカーデバイスが検出されませんでした。
|
||||||
|
|
||||||
speaker_record_timeout:
|
speaker_record_timeout:
|
||||||
label: 入力が終了したとみなす無音時間
|
label: 入力が終了したとみなす無音時間
|
||||||
desc: 無音を検出し、設定された秒数経過すると、音声入力が終了したとみなします。
|
desc: 無音を検出し、設定された秒数経過すると、音声入力が終了したとみなします。
|
||||||
|
error_message: 0 以上で 「%{speaker_phrase_timeout_label}」より大きくすることはできません。
|
||||||
|
|
||||||
speaker_phrase_timeout:
|
speaker_phrase_timeout:
|
||||||
label: 一度に文字起こしする時間の長さ
|
label: 一度に文字起こしする時間の長さ
|
||||||
desc: 設定された秒数ごとに文字起こし処理が行われます。
|
desc: 設定された秒数ごとに文字起こし処理が行われます。
|
||||||
|
error_message: 0 以上で 「%{speaker_record_timeout_label}」より小さくすることはできません。
|
||||||
|
|
||||||
speaker_max_phrase:
|
speaker_max_phrase:
|
||||||
label: ログとして表示するまでに保持する単語数
|
label: ログとして表示するまでに保持する単語数
|
||||||
desc: 文字起こしされた単語数の下限値で、この数値を超えた場合のみ結果をログに表示します。
|
desc: 文字起こしされた単語数の下限値で、この数値を超えた場合のみ結果をログに表示します。
|
||||||
|
error_message: 0以上の数値を設定できます。
|
||||||
|
|
||||||
auto_clear_the_message_box:
|
auto_clear_the_message_box:
|
||||||
label: 送信後はチャットボックスを空にする
|
label: 送信後はチャットボックスを空にする
|
||||||
|
|
||||||
notice_xsoverlay:
|
notice_xsoverlay:
|
||||||
label: XSOverlayでの通知受け取り機能を有効 (VR限定)
|
label: XSOverlayでの通知受け取り機能を有効 (VR限定)
|
||||||
desc: 文字起こし(受信)されたメッセージをXSOverlayの機能を使って通知として受け取れます。
|
desc: 文字起こし(受信)されたメッセージをXSOverlayの機能を使って通知として受け取れます。
|
||||||
|
|
||||||
auto_export_message_logs:
|
auto_export_message_logs:
|
||||||
label: 会話ログを自動的に保存する
|
label: 会話ログを自動的に保存する
|
||||||
desc: テキストファイルとしてログがlogsフォルダ内に保存されます。
|
desc: テキストファイルとしてログがlogsフォルダ内に保存されます。
|
||||||
|
|
||||||
message_format:
|
message_format:
|
||||||
label: 送信するメッセージのフォーマット
|
label: 送信するメッセージのフォーマット
|
||||||
desc: "VRChatで相手に実際に見えるフォーマットを変更できます。\n[message]がメッセージに置換され、\n[translation]が翻訳されたメッセージに置換されます。\n※XSOverlayでの通知受け取り機能でも使われます。"
|
desc: "VRChatで相手に実際に見えるフォーマットを変更できます。\n[message]がメッセージに置換され、\n[translation]が翻訳されたメッセージに置換されます。\n※XSOverlayでの通知受け取り機能でも使われます。"
|
||||||
|
|
||||||
send_message_to_vrc:
|
send_message_to_vrc:
|
||||||
label: VRChatにメッセージを送信する
|
label: VRChatにメッセージを送信する
|
||||||
desc: "サポート対象外ですが、VRChatにメッセージを送信せずに使う方法があります。送信したい場合、この機能を有効にする事を忘れないでください。"
|
desc: "サポート対象外ですが、VRChatにメッセージを送信せずに使う方法があります。送信したい場合、この機能を有効にする事を忘れないでください。"
|
||||||
|
|
||||||
osc_ip_address:
|
osc_ip_address:
|
||||||
label: OSC IP Address
|
label: OSC IP Address
|
||||||
|
|
||||||
osc_port:
|
osc_port:
|
||||||
label: OSC Port
|
label: OSC Port
|
||||||
72
view.py
72
view.py
@@ -593,7 +593,8 @@ class View():
|
|||||||
index = self.view_variable.LIST_UI_SCALING.index(str(target_percentage) + "%")
|
index = self.view_variable.LIST_UI_SCALING.index(str(target_percentage) + "%")
|
||||||
callFunctionIfCallable(self.view_variable.CALLBACK_SET_UI_SCALING, self.view_variable.LIST_UI_SCALING[index])
|
callFunctionIfCallable(self.view_variable.CALLBACK_SET_UI_SCALING, self.view_variable.LIST_UI_SCALING[index])
|
||||||
callFunctionIfCallable(self.view_variable.CALLBACK_RESTART_SOFTWARE)
|
callFunctionIfCallable(self.view_variable.CALLBACK_RESTART_SOFTWARE)
|
||||||
|
else:
|
||||||
|
self._hideConfirmationModal()
|
||||||
# ※Below 40% of the UI size is not supported, and we cannot handle it at this time.
|
# ※Below 40% of the UI size is not supported, and we cannot handle it at this time.
|
||||||
|
|
||||||
|
|
||||||
@@ -1040,38 +1041,89 @@ class View():
|
|||||||
|
|
||||||
|
|
||||||
def showErrorMessage_MicEnergyThreshold(self):
|
def showErrorMessage_MicEnergyThreshold(self):
|
||||||
self._showErrorMessage(vrct_gui.config_window.sb__progressbar_x_slider__entry_mic_energy_threshold, "Mic Energy Threshold Error Message")
|
self._showErrorMessage(
|
||||||
|
vrct_gui.config_window.sb__progressbar_x_slider__entry_mic_energy_threshold,
|
||||||
|
self._makeInvalidValueErrorMessage(i18n.t("config_window.mic_dynamic_energy_threshold.error_message", max=config.MAX_MIC_ENERGY_THRESHOLD))
|
||||||
|
)
|
||||||
|
|
||||||
def showErrorMessage_MicRecordTimeout(self):
|
def showErrorMessage_MicRecordTimeout(self):
|
||||||
self._showErrorMessage(vrct_gui.config_window.sb__entry_mic_record_timeout, "Mic Record Timeout Error Message")
|
self._showErrorMessage(
|
||||||
|
vrct_gui.config_window.sb__entry_mic_record_timeout,
|
||||||
|
self._makeInvalidValueErrorMessage(
|
||||||
|
i18n.t(
|
||||||
|
"config_window.mic_record_timeout.error_message",
|
||||||
|
mic_phrase_timeout_label=i18n.t("config_window.mic_phrase_timeout.label")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def showErrorMessage_MicPhraseTimeout(self):
|
def showErrorMessage_MicPhraseTimeout(self):
|
||||||
self._showErrorMessage(vrct_gui.config_window.sb__entry_mic_phrase_timeout, "Mic Phrase Timeout Error Message")
|
self._showErrorMessage(
|
||||||
|
vrct_gui.config_window.sb__entry_mic_phrase_timeout,
|
||||||
|
self._makeInvalidValueErrorMessage(
|
||||||
|
i18n.t(
|
||||||
|
"config_window.mic_phrase_timeout.error_message",
|
||||||
|
mic_record_timeout_label=i18n.t("config_window.mic_record_timeout.label")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def showErrorMessage_MicMaxPhrases(self):
|
def showErrorMessage_MicMaxPhrases(self):
|
||||||
self._showErrorMessage(vrct_gui.config_window.sb__entry_mic_max_phrases, "Mic Max Phrases Error Message")
|
self._showErrorMessage(
|
||||||
|
vrct_gui.config_window.sb__entry_mic_max_phrases,
|
||||||
|
self._makeInvalidValueErrorMessage(i18n.t("config_window.mic_max_phrase.error_message"))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def showErrorMessage_SpeakerEnergyThreshold(self):
|
def showErrorMessage_SpeakerEnergyThreshold(self):
|
||||||
self._showErrorMessage(vrct_gui.config_window.sb__progressbar_x_slider__entry_speaker_energy_threshold, "Speaker Energy Threshold Error Message")
|
self._showErrorMessage(
|
||||||
|
vrct_gui.config_window.sb__progressbar_x_slider__entry_speaker_energy_threshold,
|
||||||
|
self._makeInvalidValueErrorMessage(i18n.t("config_window.speaker_dynamic_energy_threshold.error_message", max=config.MAX_SPEAKER_ENERGY_THRESHOLD))
|
||||||
|
)
|
||||||
|
|
||||||
def showErrorMessage_SpeakerRecordTimeout(self):
|
def showErrorMessage_SpeakerRecordTimeout(self):
|
||||||
self._showErrorMessage(vrct_gui.config_window.sb__entry_speaker_record_timeout, "Speaker Record Timeout Error Message")
|
self._showErrorMessage(
|
||||||
|
vrct_gui.config_window.sb__entry_speaker_record_timeout,
|
||||||
|
self._makeInvalidValueErrorMessage(
|
||||||
|
i18n.t(
|
||||||
|
"config_window.speaker_record_timeout.error_message",
|
||||||
|
speaker_phrase_timeout_label=i18n.t("config_window.speaker_phrase_timeout.label")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def showErrorMessage_SpeakerPhraseTimeout(self):
|
def showErrorMessage_SpeakerPhraseTimeout(self):
|
||||||
self._showErrorMessage(vrct_gui.config_window.sb__entry_speaker_phrase_timeout, "Speaker Phrase Timeout Error Message")
|
self._showErrorMessage(
|
||||||
|
vrct_gui.config_window.sb__entry_speaker_phrase_timeout,
|
||||||
|
self._makeInvalidValueErrorMessage(
|
||||||
|
i18n.t(
|
||||||
|
"config_window.speaker_phrase_timeout.error_message",
|
||||||
|
speaker_record_timeout_label=i18n.t("config_window.speaker_record_timeout.label")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def showErrorMessage_SpeakerMaxPhrases(self):
|
def showErrorMessage_SpeakerMaxPhrases(self):
|
||||||
self._showErrorMessage(vrct_gui.config_window.sb__entry_speaker_max_phrases, "Speaker Max Phrases Error Message")
|
self._showErrorMessage(
|
||||||
|
vrct_gui.config_window.sb__entry_speaker_max_phrases,
|
||||||
|
self._makeInvalidValueErrorMessage(i18n.t("config_window.speaker_max_phrase.error_message"))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def showErrorMessage_CheckSpeakerThreshold_NoDevice(self):
|
def showErrorMessage_CheckSpeakerThreshold_NoDevice(self):
|
||||||
self._showErrorMessage(vrct_gui.config_window.sb__progressbar_x_slider__active_button_speaker_energy_threshold, "No speaker device detected")
|
self._showErrorMessage(
|
||||||
|
vrct_gui.config_window.sb__progressbar_x_slider__active_button_speaker_energy_threshold,
|
||||||
|
self._makeInvalidValueErrorMessage(i18n.t("config_window.speaker_dynamic_energy_threshold.no_device_error_message"))
|
||||||
|
)
|
||||||
|
|
||||||
def _showErrorMessage(self, target_widget, message):
|
def _showErrorMessage(self, target_widget, message):
|
||||||
self.view_variable.VAR_ERROR_MESSAGE.set(message)
|
self.view_variable.VAR_ERROR_MESSAGE.set(message)
|
||||||
vrct_gui._showErrorMessage(target_widget=target_widget)
|
vrct_gui._showErrorMessage(target_widget=target_widget)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _makeInvalidValueErrorMessage(error_message):
|
||||||
|
return i18n.t("config_window.common_error_message.invalid_value") + "\n" + error_message
|
||||||
|
|
||||||
def clearErrorMessage(self):
|
def clearErrorMessage(self):
|
||||||
vrct_gui._clearErrorMessage()
|
vrct_gui._clearErrorMessage()
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from types import SimpleNamespace
|
|||||||
from customtkinter import CTkToplevel, CTkFrame, CTkLabel, CTkFont, CTkScrollableFrame
|
from customtkinter import CTkToplevel, CTkFrame, CTkLabel, CTkFont, CTkScrollableFrame
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
from .ui_utils import bindButtonReleaseFunction, bindEnterAndLeaveColor, bindButtonPressColor, getLatestHeight, applyUiScalingAndFixTheBugScrollBar
|
from .ui_utils import bindButtonReleaseFunction, bindEnterAndLeaveColor, bindButtonPressColor, getLatestHeight, applyUiScalingAndFixTheBugScrollBar, getLatestWidth, getLongestText
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
from utils import isEven, makeEven
|
from utils import isEven, makeEven
|
||||||
@@ -22,6 +22,7 @@ class _CreateDropdownMenuWindow(CTkToplevel):
|
|||||||
value_ipady,
|
value_ipady,
|
||||||
value_pady,
|
value_pady,
|
||||||
value_font_size,
|
value_font_size,
|
||||||
|
dropdown_menu_default_min_width,
|
||||||
|
|
||||||
window_bg_color,
|
window_bg_color,
|
||||||
window_border_color,
|
window_border_color,
|
||||||
@@ -53,6 +54,7 @@ class _CreateDropdownMenuWindow(CTkToplevel):
|
|||||||
self.value_ipady=value_ipady
|
self.value_ipady=value_ipady
|
||||||
self.value_pady=value_pady
|
self.value_pady=value_pady
|
||||||
self.value_font_size=value_font_size
|
self.value_font_size=value_font_size
|
||||||
|
self.dropdown_menu_default_min_width=dropdown_menu_default_min_width
|
||||||
|
|
||||||
self.window_bg_color=window_bg_color
|
self.window_bg_color=window_bg_color
|
||||||
self.window_border_color=window_border_color
|
self.window_border_color=window_border_color
|
||||||
@@ -97,19 +99,19 @@ class _CreateDropdownMenuWindow(CTkToplevel):
|
|||||||
wrapper_widget=self.dropdown_menu_widgets[dropdown_menu_widget_id].wrapper_widget,
|
wrapper_widget=self.dropdown_menu_widgets[dropdown_menu_widget_id].wrapper_widget,
|
||||||
attach_widget=self.dropdown_menu_widgets[dropdown_menu_widget_id].attach_widget,
|
attach_widget=self.dropdown_menu_widgets[dropdown_menu_widget_id].attach_widget,
|
||||||
|
|
||||||
dropdown_menu_width=self.dropdown_menu_widgets[dropdown_menu_widget_id].dropdown_menu_settings.dropdown_menu_width,
|
dropdown_menu_min_width=self.dropdown_menu_widgets[dropdown_menu_widget_id].dropdown_menu_settings.dropdown_menu_min_width,
|
||||||
dropdown_menu_height=self.dropdown_menu_widgets[dropdown_menu_widget_id].dropdown_menu_settings.dropdown_menu_height,
|
dropdown_menu_height=self.dropdown_menu_widgets[dropdown_menu_widget_id].dropdown_menu_settings.dropdown_menu_height,
|
||||||
max_display_length=self.dropdown_menu_widgets[dropdown_menu_widget_id].dropdown_menu_settings.max_display_length,
|
max_display_length=self.dropdown_menu_widgets[dropdown_menu_widget_id].dropdown_menu_settings.max_display_length,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def createDropdownMenuBox(self, dropdown_menu_widget_id, dropdown_menu_values, command, wrapper_widget, attach_widget, dropdown_menu_width=None, dropdown_menu_height=None, max_display_length=None):
|
def createDropdownMenuBox(self, dropdown_menu_widget_id, dropdown_menu_values, command, wrapper_widget, attach_widget, dropdown_menu_min_width=None, dropdown_menu_height=None, max_display_length=None):
|
||||||
|
|
||||||
self.attach_widget = attach_widget
|
self.attach_widget = attach_widget
|
||||||
self.wrapper_widget = wrapper_widget
|
self.wrapper_widget = wrapper_widget
|
||||||
|
|
||||||
self.update()
|
|
||||||
self.new_width = dropdown_menu_width if dropdown_menu_width is not None else self.attach_widget.winfo_width()
|
self.new_width = dropdown_menu_min_width if dropdown_menu_min_width is not None else self.dropdown_menu_default_min_width
|
||||||
self.new_height = dropdown_menu_height if dropdown_menu_height is not None else self.init_height
|
self.new_height = dropdown_menu_height if dropdown_menu_height is not None else self.init_height
|
||||||
self.max_display_length = max_display_length if max_display_length is not None else self.init_max_display_length
|
self.max_display_length = max_display_length if max_display_length is not None else self.init_max_display_length
|
||||||
|
|
||||||
@@ -151,7 +153,7 @@ class _CreateDropdownMenuWindow(CTkToplevel):
|
|||||||
wrapper_widget=wrapper_widget,
|
wrapper_widget=wrapper_widget,
|
||||||
attach_widget=attach_widget,
|
attach_widget=attach_widget,
|
||||||
dropdown_menu_settings=SimpleNamespace(
|
dropdown_menu_settings=SimpleNamespace(
|
||||||
dropdown_menu_width=dropdown_menu_width,
|
dropdown_menu_min_width=dropdown_menu_min_width,
|
||||||
dropdown_menu_height=dropdown_menu_height,
|
dropdown_menu_height=dropdown_menu_height,
|
||||||
max_display_length=max_display_length,
|
max_display_length=max_display_length,
|
||||||
),
|
),
|
||||||
@@ -166,6 +168,7 @@ class _CreateDropdownMenuWindow(CTkToplevel):
|
|||||||
|
|
||||||
def _createDropdownMenuValues(self, dropdown_menu_widget_id, dropdown_menu_values, command):
|
def _createDropdownMenuValues(self, dropdown_menu_widget_id, dropdown_menu_values, command):
|
||||||
|
|
||||||
|
longest_text = getLongestText(dropdown_menu_values)
|
||||||
self.dropdown_menu_values_wrapper = CTkFrame(self.scroll_frame_container, corner_radius=0, fg_color=self.window_bg_color)
|
self.dropdown_menu_values_wrapper = CTkFrame(self.scroll_frame_container, corner_radius=0, fg_color=self.window_bg_color)
|
||||||
self.dropdown_menu_values_wrapper.grid(row=0, column=0, sticky="nsew")
|
self.dropdown_menu_values_wrapper.grid(row=0, column=0, sticky="nsew")
|
||||||
self.dropdown_menu_values_wrapper.grid_columnconfigure(0, weight=1)
|
self.dropdown_menu_values_wrapper.grid_columnconfigure(0, weight=1)
|
||||||
@@ -177,10 +180,10 @@ class _CreateDropdownMenuWindow(CTkToplevel):
|
|||||||
|
|
||||||
|
|
||||||
__dropdown_menu_value_wrapper.grid_rowconfigure((0,2), weight=1)
|
__dropdown_menu_value_wrapper.grid_rowconfigure((0,2), weight=1)
|
||||||
__dropdown_menu_value_wrapper.grid_columnconfigure(0, weight=1)
|
# __dropdown_menu_value_wrapper.grid_columnconfigure(0, weight=1)
|
||||||
__label_widget = CTkLabel(
|
__label_widget = CTkLabel(
|
||||||
__dropdown_menu_value_wrapper,
|
__dropdown_menu_value_wrapper,
|
||||||
text="Aa",
|
text=longest_text,
|
||||||
height=0,
|
height=0,
|
||||||
corner_radius=0,
|
corner_radius=0,
|
||||||
font=CTkFont(family=self.settings.FONT_FAMILY, size=self.value_font_size, weight="normal"),
|
font=CTkFont(family=self.settings.FONT_FAMILY, size=self.value_font_size, weight="normal"),
|
||||||
@@ -190,7 +193,13 @@ class _CreateDropdownMenuWindow(CTkToplevel):
|
|||||||
# setattr(self, f"l", __label_widget)
|
# setattr(self, f"l", __label_widget)
|
||||||
|
|
||||||
__label_widget.grid(row=1, column=0, padx=self.value_ipadx, pady=self.value_ipady, sticky="w")
|
__label_widget.grid(row=1, column=0, padx=self.value_ipadx, pady=self.value_ipady, sticky="w")
|
||||||
|
|
||||||
label_height = getLatestHeight(__dropdown_menu_value_wrapper)
|
label_height = getLatestHeight(__dropdown_menu_value_wrapper)
|
||||||
|
label_width = getLatestWidth(__label_widget)
|
||||||
|
label_width += self.scroll_frame_container._scrollbar.winfo_width() + (self.window_border_width*2) + (self.scrollbar_ipadx[0] + self.scrollbar_ipadx[1])
|
||||||
|
if label_width > self.new_width:
|
||||||
|
additional_width = int(label_width - self.new_width)
|
||||||
|
self.new_width += additional_width
|
||||||
|
|
||||||
# for fixing 1px bug
|
# for fixing 1px bug
|
||||||
if isEven(label_height) is False:
|
if isEven(label_height) is False:
|
||||||
@@ -223,7 +232,6 @@ class _CreateDropdownMenuWindow(CTkToplevel):
|
|||||||
|
|
||||||
|
|
||||||
dropdown_menu_value_wrapper.grid_rowconfigure((0,2), weight=1)
|
dropdown_menu_value_wrapper.grid_rowconfigure((0,2), weight=1)
|
||||||
dropdown_menu_value_wrapper.grid_columnconfigure(0, weight=1)
|
|
||||||
label_widget = CTkLabel(
|
label_widget = CTkLabel(
|
||||||
dropdown_menu_value_wrapper,
|
dropdown_menu_value_wrapper,
|
||||||
text=dropdown_menu_value,
|
text=dropdown_menu_value,
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ class _CreateSelectableLanguagesWindow(CTkToplevel):
|
|||||||
self.withdraw()
|
self.withdraw()
|
||||||
|
|
||||||
|
|
||||||
# configure window
|
|
||||||
self.title("_CreateSelectableLanguagesWindow")
|
self.title("_CreateSelectableLanguagesWindow")
|
||||||
self.overrideredirect(True)
|
self.overrideredirect(True)
|
||||||
|
|
||||||
@@ -24,7 +23,8 @@ class _CreateSelectableLanguagesWindow(CTkToplevel):
|
|||||||
self.settings = settings
|
self.settings = settings
|
||||||
self._view_variable = view_variable
|
self._view_variable = view_variable
|
||||||
|
|
||||||
self.bind("<FocusOut>", lambda e: vrct_gui._closeSelectableLanguagesWindow())
|
|
||||||
|
self.bind("<FocusOut>", self.focusOutFunction)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -180,3 +180,8 @@ class _CreateSelectableLanguagesWindow(CTkToplevel):
|
|||||||
|
|
||||||
|
|
||||||
self.is_created = True
|
self.is_created = True
|
||||||
|
|
||||||
|
|
||||||
|
def focusOutFunction(self, e):
|
||||||
|
if str(e.widget) != ".!_createselectablelanguageswindow": return
|
||||||
|
self.vrct_gui._closeSelectableLanguagesWindow()
|
||||||
@@ -96,7 +96,7 @@ class _SettingBoxGenerator():
|
|||||||
for_var_label_text, for_var_desc_text,
|
for_var_label_text, for_var_desc_text,
|
||||||
optionmenu_attr_name,
|
optionmenu_attr_name,
|
||||||
command,
|
command,
|
||||||
dropdown_menu_width=None,
|
dropdown_menu_min_width=None,
|
||||||
dropdown_menu_values=None,
|
dropdown_menu_values=None,
|
||||||
variable=None,
|
variable=None,
|
||||||
):
|
):
|
||||||
@@ -144,7 +144,7 @@ class _SettingBoxGenerator():
|
|||||||
command=adjustedCommand,
|
command=adjustedCommand,
|
||||||
wrapper_widget=self.config_window.main_bg_container,
|
wrapper_widget=self.config_window.main_bg_container,
|
||||||
attach_widget=option_menu_widget,
|
attach_widget=option_menu_widget,
|
||||||
dropdown_menu_width=dropdown_menu_width,
|
dropdown_menu_min_width=dropdown_menu_min_width,
|
||||||
)
|
)
|
||||||
|
|
||||||
return setting_box_frame
|
return setting_box_frame
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ def createSettingBox_Appearance(setting_box_wrapper, config_window, settings, vi
|
|||||||
for_var_desc_text=view_variable.VAR_DESC_FONT_FAMILY,
|
for_var_desc_text=view_variable.VAR_DESC_FONT_FAMILY,
|
||||||
optionmenu_attr_name="sb__optionmenu_font_family",
|
optionmenu_attr_name="sb__optionmenu_font_family",
|
||||||
dropdown_menu_values=view_variable.LIST_FONT_FAMILY,
|
dropdown_menu_values=view_variable.LIST_FONT_FAMILY,
|
||||||
dropdown_menu_width=settings.uism.RESPONSIVE_UI_SIZE_INT_300,
|
|
||||||
command=lambda value: optionmenu_font_family_callback(value),
|
command=lambda value: optionmenu_font_family_callback(value),
|
||||||
variable=view_variable.VAR_FONT_FAMILY,
|
variable=view_variable.VAR_FONT_FAMILY,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ def createSettingBox_Mic(setting_box_wrapper, config_window, settings, view_vari
|
|||||||
for_var_desc_text=view_variable.VAR_DESC_MIC_DEVICE,
|
for_var_desc_text=view_variable.VAR_DESC_MIC_DEVICE,
|
||||||
optionmenu_attr_name="sb__optionmenu_mic_device",
|
optionmenu_attr_name="sb__optionmenu_mic_device",
|
||||||
dropdown_menu_values=view_variable.LIST_MIC_DEVICE,
|
dropdown_menu_values=view_variable.LIST_MIC_DEVICE,
|
||||||
dropdown_menu_width=settings.uism.RESPONSIVE_UI_SIZE_INT_500,
|
|
||||||
command=lambda value: optionmenu_input_mic_device_callback(value),
|
command=lambda value: optionmenu_input_mic_device_callback(value),
|
||||||
variable=view_variable.VAR_MIC_DEVICE,
|
variable=view_variable.VAR_MIC_DEVICE,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ class UiScalingManager():
|
|||||||
|
|
||||||
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(12)
|
self.config_window.SB__ERROR_MESSAGE_FONT_SIZE = self._calculateUiSize(14)
|
||||||
|
|
||||||
|
|
||||||
self.config_window.SB__SELECTOR_FONT_SIZE = self._calculateUiSize(14)
|
self.config_window.SB__SELECTOR_FONT_SIZE = self._calculateUiSize(14)
|
||||||
@@ -243,6 +243,7 @@ class UiScalingManager():
|
|||||||
self.config_window.SB__DROPDOWN_MENU_VALUE_IPADY = (self._calculateUiSize(6), self._calculateUiSize(6))
|
self.config_window.SB__DROPDOWN_MENU_VALUE_IPADY = (self._calculateUiSize(6), self._calculateUiSize(6))
|
||||||
self.config_window.SB__DROPDOWN_MENU_VALUE_PADY = (0, self._calculateUiSize(1, is_allowed_odd=True))
|
self.config_window.SB__DROPDOWN_MENU_VALUE_PADY = (0, self._calculateUiSize(1, is_allowed_odd=True))
|
||||||
self.config_window.SB__DROPDOWN_MENU_VALUE_FONT_SIZE = self._calculateUiSize(14)
|
self.config_window.SB__DROPDOWN_MENU_VALUE_FONT_SIZE = self._calculateUiSize(14)
|
||||||
|
self.config_window.SB__DROPDOWN_MENU_VALUE_DEFAULT_MIN_WIDTH = self._calculateUiSize(200)
|
||||||
|
|
||||||
|
|
||||||
self.config_window.SB__SWITCH_WIDTH = self._calculateUiSize(50)
|
self.config_window.SB__SWITCH_WIDTH = self._calculateUiSize(50)
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ class VRCT_GUI(CTk):
|
|||||||
value_ipady=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_IPADY,
|
value_ipady=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_IPADY,
|
||||||
value_pady=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_PADY,
|
value_pady=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_PADY,
|
||||||
value_font_size=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_FONT_SIZE,
|
value_font_size=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_FONT_SIZE,
|
||||||
|
dropdown_menu_default_min_width=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_DEFAULT_MIN_WIDTH,
|
||||||
|
|
||||||
window_bg_color=self.settings.config_window.ctm.SB__DROPDOWN_MENU_WINDOW_BG_COLOR,
|
window_bg_color=self.settings.config_window.ctm.SB__DROPDOWN_MENU_WINDOW_BG_COLOR,
|
||||||
window_border_color=self.settings.config_window.ctm.SB__DROPDOWN_MENU_WINDOW_BORDER_COLOR,
|
window_border_color=self.settings.config_window.ctm.SB__DROPDOWN_MENU_WINDOW_BORDER_COLOR,
|
||||||
@@ -291,7 +292,6 @@ class VRCT_GUI(CTk):
|
|||||||
self.update()
|
self.update()
|
||||||
screen_height = self.winfo_screenheight()
|
screen_height = self.winfo_screenheight()
|
||||||
window_height = self.winfo_height()
|
window_height = self.winfo_height()
|
||||||
print(screen_height, window_height)
|
|
||||||
if screen_height < window_height:
|
if screen_height < window_height:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user