From f8db9c927bfd4e7c8f9453d8a9dc7f9d4771111d Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Mon, 6 Nov 2023 14:03:21 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[bugfix]=20Config=20Window:=20Current=20Act?= =?UTF-8?q?ive=20Config=20Title=E3=81=AB=E7=B8=A61px=E3=81=AE=E7=B7=9A?= =?UTF-8?q?=E3=81=8C=E5=85=A5=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F=E3=83=90?= =?UTF-8?q?=E3=82=B0=E3=82=92=E4=BF=AE=E6=AD=A3=E3=80=82=20(1px=E3=83=90?= =?UTF-8?q?=E3=82=B0=E4=BF=AE=E6=AD=A3=E3=81=8C=E3=83=90=E3=82=B0=E3=82=92?= =?UTF-8?q?=E7=94=9F=E3=82=93=E3=81=A7=E3=81=84=E3=81=BE=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=80=82=E6=B6=88=E3=81=97=E3=81=9F=E5=88=86=E3=80=81=E4=BB=A3?= =?UTF-8?q?=E3=82=8F=E3=82=8A=E3=81=AB=E7=AB=AF=E3=81=A3=E3=81=931px?= =?UTF-8?q?=E3=83=90=E3=82=B0=E7=99=BA=E7=94=9F=E3=81=97=E3=81=9D=E3=81=86?= =?UTF-8?q?=E3=81=AA=E6=B0=97=E3=81=AF=E3=81=99=E3=82=8B=E3=81=91=E3=81=A9?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../createSettingBoxTopBar/_createSettingBoxTitle.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py index 7c0ec386..199a12fb 100644 --- a/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py +++ b/vrct_gui/config_window/widgets/createSettingBoxTopBar/_createSettingBoxTitle.py @@ -16,9 +16,4 @@ def _createSettingBoxTitle(parent_widget, config_window, settings, view_variable font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.TOP_BAR_MAIN__TITLE_FONT_SIZE, weight="bold"), text_color=settings.ctm.LABELS_TEXT_COLOR ) - config_window.main_current_active_config_title.grid(row=0, column=0, padx=0, pady=settings.uism.TOP_BAR__IPADY) - - - # for fixing 1px bug - sls__box_optionmenu_wrapper_fix_1px_bug = CTkFrame(config_window.main_current_active_config_title, corner_radius=0, width=0, height=0) - sls__box_optionmenu_wrapper_fix_1px_bug.grid(row=0, column=column_num, sticky="ns") \ No newline at end of file + config_window.main_current_active_config_title.grid(row=0, column=0, padx=0, pady=settings.uism.TOP_BAR__IPADY) \ No newline at end of file From 9905a4f2d0b703dd76ee810cd25bfb690e568197 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Wed, 8 Nov 2023 15:52:43 +0900 Subject: [PATCH 2/4] [Update] Add Light Theme --- img/arrow_left_black.png | Bin 0 -> 1063 bytes img/configuration_icon_black.png | Bin 0 -> 2514 bytes img/folder_open_icon_black.png | Bin 0 -> 714 bytes ...en_icon.png => folder_open_icon_white.png} | Bin img/foreground_icon_black.png | Bin 0 -> 233 bytes img/headphones_icon_black.png | Bin 0 -> 1392 bytes img/help_icon_black.png | Bin 0 -> 1764 bytes img/mic_icon_black.png | Bin 0 -> 1207 bytes img/narrow_arrow_down_black.png | Bin 0 -> 5433 bytes ...w_down.png => narrow_arrow_down_white.png} | Bin img/redo_icon_black.png | Bin 0 -> 1486 bytes img/{redo_white.png => redo_icon_white.png} | Bin img/swap_icon_black.png | Bin 0 -> 13079 bytes img/{swap_icon.png => swap_icon_white.png} | Bin img/translation_icon_black.png | Bin 0 -> 1514 bytes view.py | 16 +- vrct_gui/_CreateWindowCover.py | 4 +- .../_SettingBoxGenerator.py | 2 +- .../main_window/createMainWindowWidgets.py | 12 +- vrct_gui/ui_managers/ColorThemeManager.py | 52 ++-- vrct_gui/ui_managers/Themes/_darkTheme.py | 10 +- vrct_gui/ui_managers/Themes/_lightTheme.py | 287 +++++++++++++++++- 22 files changed, 321 insertions(+), 62 deletions(-) create mode 100644 img/arrow_left_black.png create mode 100644 img/configuration_icon_black.png create mode 100644 img/folder_open_icon_black.png rename img/{folder_open_icon.png => folder_open_icon_white.png} (100%) create mode 100644 img/foreground_icon_black.png create mode 100644 img/headphones_icon_black.png create mode 100644 img/help_icon_black.png create mode 100644 img/mic_icon_black.png create mode 100644 img/narrow_arrow_down_black.png rename img/{narrow_arrow_down.png => narrow_arrow_down_white.png} (100%) create mode 100644 img/redo_icon_black.png rename img/{redo_white.png => redo_icon_white.png} (100%) create mode 100644 img/swap_icon_black.png rename img/{swap_icon.png => swap_icon_white.png} (100%) create mode 100644 img/translation_icon_black.png diff --git a/img/arrow_left_black.png b/img/arrow_left_black.png new file mode 100644 index 0000000000000000000000000000000000000000..5e3f8dfbe5c3a77e2187300043168fb96c2345cb GIT binary patch literal 1063 zcmV+?1laqDP)}I`Cbnq9&%6=Mf@jb(ld*Ytdn&@Oo9d@ zA|8TB_jI~N58^>V@Zdo_=i3)XhUuz$3a0${K{Uh6uR4x7+G)*SOZs^=W%vgW@k;=>T`3ip zN~K1p^;RN@Tc!xV_iuOr0A}93xw&~NeD=9rN!FRl4){UzAR?XwfZP5Bq*PpToJOZD zJ5Ced0Y8ZL{TDod-HENOQ^zCOPE1t552A-|2LDfq?d|Oog%a?C=l~*q4gj|b!mlZ% zUY4vok>7wHL?oh@T*$u#$vBMlB}Kk4){TII05{IF{Uns&t1R|q9cfSLISUp zx?+r}_q(mLNpj?Ng!~|S3=uyB03(23*ILi@yRGv{^W-An2hkIV_4bpT=>id{2+QN0sN|kznCUxW&(Z?9Ye(TBx@?AR_w94ls0cB0)7xZ zgNW}4;g{_5dN&=IQ4FOJ~#M80$wwGiHKeo!jCNcMxO9u0k0XpLPW0# z;bX^f=DO|qt9iqV1pvTFu;w-Z&?MjignwjbM#Hbm6_=TLRuFz45!I`;nU9C@;Lkz` zSc%i+io3FfR*^R zTyd{6b3+h*H!<&btF=!?!@=)`5U>*8l`HNq%)DO^eit)8Y$bjxgn*U!zFcvCX66He z@H?6Lpj)kdIvNhH7ec^F#N~?nla<)1zP^K*54qLaXQScZ*Q^9GDeC=Z=%M_zdfC3* ztrkWA0KgBTrxEdOp~Q+YdbZbTtrSMUN*qg2TCUo!NJ@oHsv^|Vsz h{!+;~JkE8SzX18e+%!fQ^dtZP002ovPDHLkV1hNP?|}dS literal 0 HcmV?d00001 diff --git a/img/configuration_icon_black.png b/img/configuration_icon_black.png new file mode 100644 index 0000000000000000000000000000000000000000..c97dfefec4e51a972e163064be4f5c75ab5e906b GIT binary patch literal 2514 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 literal 0 HcmV?d00001 diff --git a/img/folder_open_icon.png b/img/folder_open_icon_white.png similarity index 100% rename from img/folder_open_icon.png rename to img/folder_open_icon_white.png diff --git a/img/foreground_icon_black.png b/img/foreground_icon_black.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3594c250806ac8427b918dae82b158449cc750 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4jBOuH;Rhv&5C^*~G z#W5t~-rF0FTrCCytQSu{2o!ntZ@J(Xy#KZ_|keOwgr+6X$(<6 zzC5)n*u3yN>laC@de#@wopBJQ8TG#%wuNfevhp}c-@EtN6e`NLpim?4+FKT6xC Ua_R?fpfedfUHx3vIVCg!0EP2c`2YX_ literal 0 HcmV?d00001 diff --git a/img/headphones_icon_black.png b/img/headphones_icon_black.png new file mode 100644 index 0000000000000000000000000000000000000000..2cb97ec2fc8827f1b49f740839e742d361da29ef GIT binary patch literal 1392 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 Pl*LfjM5p|=Q}llWi%qS6 literal 0 HcmV?d00001 diff --git a/img/narrow_arrow_down.png b/img/narrow_arrow_down_white.png similarity index 100% rename from img/narrow_arrow_down.png rename to img/narrow_arrow_down_white.png diff --git a/img/redo_icon_black.png b/img/redo_icon_black.png new file mode 100644 index 0000000000000000000000000000000000000000..989581a3a350e7557aeed8d6a43ec48ec7103611 GIT binary patch literal 1486 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 QZ2$lO07*qoM6N<$f Date: Wed, 8 Nov 2023 16:14:39 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[Refactor]=20=E4=BD=BF=E3=81=A3=E3=81=A6?= =?UTF-8?q?=E3=81=AA=E3=81=84image=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- img/app.ico | Bin 67646 -> 0 bytes img/config-icon-white.png | Bin 5490 -> 0 bytes img/help_icon_disabled.png | Bin 1715 -> 0 bytes img/info-icon-white.png | Bin 4945 -> 0 bytes img/save-icon.png | Bin 4461 -> 0 bytes img/xsoverlay.png | Bin 1209 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 img/app.ico delete mode 100644 img/config-icon-white.png delete mode 100644 img/help_icon_disabled.png delete mode 100644 img/info-icon-white.png delete mode 100644 img/save-icon.png delete mode 100644 img/xsoverlay.png diff --git a/img/app.ico b/img/app.ico deleted file mode 100644 index eca32ce73e86bb5d9cf41456997c2c74c77c7c1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67646 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 diff --git a/img/help_icon_disabled.png b/img/help_icon_disabled.png deleted file mode 100644 index 03e1c086e9c7d467dc98d0a09e2f10550370da4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1715 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 diff --git a/img/save-icon.png b/img/save-icon.png deleted file mode 100644 index b74423f80f3bfe8ede41ff8bccac12b76bfa4cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4461 zcmeHKeNYo;8V?8}C@t2uqK&c*v=(u*n@tGGnuw4DlEcslsY30XY<4$fg?yMSByeJ> z;wN)0g(*@$4=UHWqTC^PO05GT*4myPSG9_s)LJ}5MYQ!Q7Dn&g1Q6#sbHmK_KQgn~ z-S_=Hzvp>=@AJH~?-oO9a%jlx5FU>gs?(~|z#ZeRDU-qf-1yB6;MQJf%wW?9H{@{I z%}g#0u>}qqqCJe6$MamW8df}W9GW)R^ZY{pW8dZRFJVmF#e3TpZ@sjt(visjFziCh zo>t0>9<;)w;AH^-D{32R#c_B|Z3bMPk`=O|IXj9C*~2`c>A(S2I5g z|KLhVpU^0M`~!Mm(;sH^hHaX4zUcRg0BpUq<$5~&@aGNt2N!;+NDVIVAQe5k8gu(M zr>UpR2|%XZv0-poUr?@!$>iHa7!yDsP0 zvG-1Vvc9yj{+ar9(172yo7eW<5WMmTiEi3_@9N=*{yWM$U4DsmpBu$tLB`Vr=$GK6-6|v~yNMQh ztPW6kJf0%n;~>Z!nuSbsHe*u?`j4~-Acj&3mdEN*y+cJ?7;T}GPA^O~l7%^>oD#$@ z3Q>4)Kwza=0`gdMZ7$rS6nJ@Y@XQS(0>}$tbCiM%y#Z3$oirp7N`xq^@i6(AU{MI9 za8hPGO`SAM0p64X3(Goi1aZ6FLbq6GcV;6Zxm=E*7=mFiK)|j78%ua#n=6u|@NuYV z7wKdiEMvDp94BG2=dntG0L()p@mU>u{V2W7HLL>A1Mv_JL?lEJs}&h*;bJxUfMhtJ zU$k%;L7O6Jw9B67Bxy}PZDS+HQc&cmy(7<=>rICu5jvN)0;mgk6+PuLS*JIQT5u9% zGggP!3W)s_l4Z^qa-S& z<472dm1D3(Y{pIMM@0cDni5IlP%#PbU~H7#?Rqk0WUO>LOK^IMq_S8ECKAges6-Si^11RdE~A|;P>UR^2o;JYUUP0? zaF7m=mf$KC5O~KyHn_@36Rh27wA*u)0*(UWEJvsHprI&&CDa5<15y+d<7g}{MvWpd zE|%h$BnFk^=oq}6V$22q3(d6;r0^}emT>|91>PZFPo>kVeQ&5aewOoFIKE zxQKk(x8i`yH$_?qTQ&{$kKuwH8E1Z>803_kkfEd;Ceb)4EFozMCJ0Ifqaw;oV;G8> zNS{cf>@K^RbrViHAsgrjv;qa{)e3rTc&Vbjs*U2^7MfcJAQ>n)c#LEMWH?!b+c8G6 zRUrSRhr$aOv&8^A-x%1sz)pyaZiT~o0pGvoZ+IPkO&1U};bdI;PRKPO*SHiI7kHw& zCgd8I0^&}1(C)AH_>)BiYabz{kbiu>wr@i!|p#irKuqJ`$1U5WM^@5nUq z59b_exqo?Ct>$1(uwXOvqi4>!%E8u6CO<_@km6absBK$wpT7=!ujCAjhXqbohb06| zSC=&>+(zV|Su8*E8~^;ptsmzV3B_sG(|RY#lh4E)-FqVcr+?UsCmG6D{w6D8XxqV> bHOyMSH;&2v-Rk;aCa0=Sld7&y%v$#!LqK2^ diff --git a/img/xsoverlay.png b/img/xsoverlay.png deleted file mode 100644 index 35c793eaed87c7b132f6b5400b732341c3e74660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1209 zcmV;q1V;ObP)EX>4Tx04UFukvmAkP!xv$rWPMm9PFUt5TQERMMWG-6pLV?v=v%)FuCaqnlvOS zE{=k0!NJF3)xpJCR|i)?5PX2Rx;QDiNQvhrg%+WL7Y_I1zxV$+_gp}zmzidDMFCB> z&16gxGuc(K`xOBUQ;nflW|k38EvC_Neci*y_qzzs!v9vknzI<-6N#hDFm2)u;@M5x z;Ji;9VntacJ|~_usX^jLt}7nDaW1$l@XU~zPRr|tNVF__0AVNVEC6r+!Lc30ig(RIz9sDD%KS3^qTqQ7a zET94nvg-%`gWt2Y^3zjZQcwZ{FOKsu4s`DVjhf?pA3ILt1n@rtS9;4|sRMJLq}N(n z_y`!-1}?5!nz9F6?f^qihHT2NMD1tTjqx>_{=000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0007zNklKpZw0w%6M~B1PFzS{!IeUb z+V%4@9U}oh&A@9A_IkbZXf*oE zXf%?!H7SZ>jK||Ayq2Zq9vzd-W>@@Wt!%?er9#_8FHRR= z$IMom%_jM><^!qSZcmu4bUK|eV&al7*X#9jW?#JxGnov_PznZ#^mKA(#|pO4dg z96Op!Ci?lyO90lFVo8$3YPHHW8Vzo-Sja4_3%*pV)kd_oSfT|B>!KKWbPQdKg;i~o zz&3Sw7cA?Lz}^#}g7OMHbGclTSS)r&jcy>P( Date: Wed, 8 Nov 2023 17:35:50 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=93=9D[Refactor]=20ruff=E3=82=92?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E3=81=97=E3=82=B3=E3=83=BC=E3=83=89=E6=A4=9C?= =?UTF-8?q?=E8=A8=BC=E4=BF=AE=E6=AD=A3=E3=82=92=E8=A1=8C=E3=81=A3=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 72 +++++++++---------- controller.py | 54 ++++++++------ main.py | 2 +- model.py | 26 +++---- models/osc/osc_tools.py | 3 +- .../transcription_transcriber.py | 2 +- models/translation/translation_translator.py | 6 +- models/xsoverlay/notification.py | 2 +- utils.py | 3 +- vrct_gui/_CreateConfirmationModal.py | 3 +- vrct_gui/_CreateDropdownMenuWindow.py | 3 +- vrct_gui/_CreateErrorWindow.py | 3 +- vrct_gui/_CreateSelectableLanguagesWindow.py | 3 +- .../_SettingBoxGenerator.py | 5 +- .../_create_sidebar/createSidebarFeatures.py | 2 +- vrct_gui/ui_utils/ui_utils.py | 6 +- vrct_gui/vrct_gui.py | 2 +- 17 files changed, 107 insertions(+), 90 deletions(-) diff --git a/config.py b/config.py index 7dc8f759..ccf9ad6d 100644 --- a/config.py +++ b/config.py @@ -70,7 +70,7 @@ class Config: @ENABLE_TRANSLATION.setter def ENABLE_TRANSLATION(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_TRANSLATION = value @property @@ -79,7 +79,7 @@ class Config: @ENABLE_TRANSCRIPTION_SEND.setter def ENABLE_TRANSCRIPTION_SEND(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_TRANSCRIPTION_SEND = value @property @@ -88,7 +88,7 @@ class Config: @ENABLE_TRANSCRIPTION_RECEIVE.setter def ENABLE_TRANSCRIPTION_RECEIVE(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_TRANSCRIPTION_RECEIVE = value @property @@ -97,7 +97,7 @@ class Config: @ENABLE_FOREGROUND.setter def ENABLE_FOREGROUND(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_FOREGROUND = value @property @@ -106,7 +106,7 @@ class Config: @SOURCE_COUNTRY.setter def SOURCE_COUNTRY(self, value): - if type(value) is str: + if isinstance(value, str): self._SOURCE_COUNTRY = value @property @@ -115,7 +115,7 @@ class Config: @SOURCE_LANGUAGE.setter def SOURCE_LANGUAGE(self, value): - if type(value) is str: + if isinstance(value, str): self._SOURCE_LANGUAGE = value @property @@ -124,7 +124,7 @@ class Config: @TARGET_COUNTRY.setter def TARGET_COUNTRY(self, value): - if type(value) is str: + if isinstance(value, str): self._TARGET_COUNTRY = value @property @@ -133,7 +133,7 @@ class Config: @TARGET_LANGUAGE.setter def TARGET_LANGUAGE(self, value): - if type(value) is str: + if isinstance(value, str): self._TARGET_LANGUAGE = value @property @@ -154,7 +154,7 @@ class Config: @SELECTED_TAB_NO.setter def SELECTED_TAB_NO(self, value): - if type(value) is str: + if isinstance(value, str): self._SELECTED_TAB_NO = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -165,7 +165,7 @@ class Config: @SELECTED_TAB_YOUR_LANGUAGES.setter def SELECTED_TAB_YOUR_LANGUAGES(self, value): - if type(value) is dict: + if isinstance(value, dict): self._SELECTED_TAB_YOUR_LANGUAGES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -176,7 +176,7 @@ class Config: @SELECTED_TAB_TARGET_LANGUAGES.setter def SELECTED_TAB_TARGET_LANGUAGES(self, value): - if type(value) is dict: + if isinstance(value, dict): self._SELECTED_TAB_TARGET_LANGUAGES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -187,7 +187,7 @@ class Config: @IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE.setter def IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE(self, value): - if type(value) is bool: + if isinstance(value, bool): self._IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -199,7 +199,7 @@ class Config: @TRANSPARENCY.setter def TRANSPARENCY(self, value): - if type(value) is int and 0 <= value <= 100: + if isinstance(value, int) and 0 <= value <= 100: self._TRANSPARENCY = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -232,7 +232,7 @@ class Config: @TEXTBOX_UI_SCALING.setter def TEXTBOX_UI_SCALING(self, value): - if type(value) is int and 50 <= value <= 200: + if isinstance(value, int) and 50 <= value <= 200: self._TEXTBOX_UI_SCALING = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -290,7 +290,7 @@ class Config: @INPUT_MIC_ENERGY_THRESHOLD.setter def INPUT_MIC_ENERGY_THRESHOLD(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_MIC_ENERGY_THRESHOLD = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -301,7 +301,7 @@ class Config: @INPUT_MIC_DYNAMIC_ENERGY_THRESHOLD.setter def INPUT_MIC_DYNAMIC_ENERGY_THRESHOLD(self, value): - if type(value) is bool: + if isinstance(value, bool): self._INPUT_MIC_DYNAMIC_ENERGY_THRESHOLD = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -312,7 +312,7 @@ class Config: @INPUT_MIC_RECORD_TIMEOUT.setter def INPUT_MIC_RECORD_TIMEOUT(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_MIC_RECORD_TIMEOUT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -323,7 +323,7 @@ class Config: @INPUT_MIC_PHRASE_TIMEOUT.setter def INPUT_MIC_PHRASE_TIMEOUT(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_MIC_PHRASE_TIMEOUT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -334,7 +334,7 @@ class Config: @INPUT_MIC_MAX_PHRASES.setter def INPUT_MIC_MAX_PHRASES(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_MIC_MAX_PHRASES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -345,7 +345,7 @@ class Config: @INPUT_MIC_WORD_FILTER.setter def INPUT_MIC_WORD_FILTER(self, value): - if type(value) is list: + if isinstance(value, list): self._INPUT_MIC_WORD_FILTER = sorted(set(value), key=value.index) saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -356,7 +356,7 @@ class Config: @INPUT_SPEAKER_ENERGY_THRESHOLD.setter def INPUT_SPEAKER_ENERGY_THRESHOLD(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_SPEAKER_ENERGY_THRESHOLD = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -367,7 +367,7 @@ class Config: @INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD.setter def INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD(self, value): - if type(value) is bool: + if isinstance(value, bool): self._INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -378,7 +378,7 @@ class Config: @INPUT_SPEAKER_RECORD_TIMEOUT.setter def INPUT_SPEAKER_RECORD_TIMEOUT(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_SPEAKER_RECORD_TIMEOUT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -389,7 +389,7 @@ class Config: @INPUT_SPEAKER_PHRASE_TIMEOUT.setter def INPUT_SPEAKER_PHRASE_TIMEOUT(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_SPEAKER_PHRASE_TIMEOUT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -400,7 +400,7 @@ class Config: @INPUT_SPEAKER_MAX_PHRASES.setter def INPUT_SPEAKER_MAX_PHRASES(self, value): - if type(value) is int: + if isinstance(value, int): self._INPUT_SPEAKER_MAX_PHRASES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -411,7 +411,7 @@ class Config: @OSC_IP_ADDRESS.setter def OSC_IP_ADDRESS(self, value): - if type(value) is str: + if isinstance(value, str): self._OSC_IP_ADDRESS = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -422,7 +422,7 @@ class Config: @OSC_PORT.setter def OSC_PORT(self, value): - if type(value) is int: + if isinstance(value, int): self._OSC_PORT = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -433,9 +433,9 @@ class Config: @AUTH_KEYS.setter def AUTH_KEYS(self, value): - if type(value) is dict and set(value.keys()) == set(self.AUTH_KEYS.keys()): + if isinstance(value, dict) and set(value.keys()) == set(self.AUTH_KEYS.keys()): for key, value in value.items(): - if type(value) is str: + if isinstance(value, str): self._AUTH_KEYS[key] = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, self.AUTH_KEYS) @@ -446,7 +446,7 @@ class Config: @MESSAGE_FORMAT.setter def MESSAGE_FORMAT(self, value): - if type(value) is str: + if isinstance(value, str): if isUniqueStrings(["[message]", "[translation]"], value) is False: value = "[message]([translation])" self._MESSAGE_FORMAT = value @@ -459,7 +459,7 @@ class Config: @ENABLE_AUTO_CLEAR_MESSAGE_BOX.setter def ENABLE_AUTO_CLEAR_MESSAGE_BOX(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_AUTO_CLEAR_MESSAGE_BOX = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -470,7 +470,7 @@ class Config: @ENABLE_NOTICE_XSOVERLAY.setter def ENABLE_NOTICE_XSOVERLAY(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_NOTICE_XSOVERLAY = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -481,7 +481,7 @@ class Config: @ENABLE_SEND_MESSAGE_TO_VRC.setter def ENABLE_SEND_MESSAGE_TO_VRC(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_SEND_MESSAGE_TO_VRC = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -493,7 +493,7 @@ class Config: # @STARTUP_OSC_ENABLED_CHECK.setter # def STARTUP_OSC_ENABLED_CHECK(self, value): - # if type(value) is bool: + # if isinstance(value, bool): # self._STARTUP_OSC_ENABLED_CHECK = value # saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -504,7 +504,7 @@ class Config: @ENABLE_LOGGER.setter def ENABLE_LOGGER(self, value): - if type(value) is bool: + if isinstance(value, bool): self._ENABLE_LOGGER = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) @@ -515,7 +515,7 @@ class Config: @IS_CONFIG_WINDOW_COMPACT_MODE.setter def IS_CONFIG_WINDOW_COMPACT_MODE(self, value): - if type(value) is bool: + if isinstance(value, bool): self._IS_CONFIG_WINDOW_COMPACT_MODE = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) diff --git a/controller.py b/controller.py index 421330a8..19743805 100644 --- a/controller.py +++ b/controller.py @@ -30,7 +30,7 @@ def sendMicMessage(message): pass else: translation = model.getInputTranslate(message) - if translation == False: + if translation is False: config.ENABLE_TRANSLATION = False translation = "" view.translationEngineLimitErrorProcess() @@ -94,7 +94,7 @@ def receiveSpeakerMessage(message): pass else: translation = model.getOutputTranslate(message) - if translation == False: + if translation is False: config.ENABLE_TRANSLATION = False translation = "" view.translationEngineLimitErrorProcess() @@ -160,7 +160,7 @@ def sendChatMessage(message): pass else: translation = model.getInputTranslate(message) - if translation == False: + if translation is False: config.ENABLE_TRANSLATION = False translation = "" view.translationEngineLimitErrorProcess() @@ -426,7 +426,8 @@ def callbackSetMicDevice(value): def callbackSetMicEnergyThreshold(value): print("callbackSetMicEnergyThreshold", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value <= config.MAX_MIC_ENERGY_THRESHOLD: @@ -435,7 +436,7 @@ def callbackSetMicEnergyThreshold(value): view.setGuiVariable_MicEnergyThreshold(config.INPUT_MIC_ENERGY_THRESHOLD) else: raise ValueError() - except: + except Exception: view.showErrorMessage_MicEnergyThreshold() def callbackSetMicDynamicEnergyThreshold(value): @@ -462,7 +463,8 @@ def callbackCheckMicThreshold(is_turned_on): def callbackSetMicRecordTimeout(value): print("callbackSetMicRecordTimeout", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value <= config.INPUT_MIC_PHRASE_TIMEOUT: @@ -471,12 +473,13 @@ def callbackSetMicRecordTimeout(value): view.setGuiVariable_MicRecordTimeout(config.INPUT_MIC_RECORD_TIMEOUT) else: raise ValueError() - except: + except Exception: view.showErrorMessage_MicRecordTimeout() def callbackSetMicPhraseTimeout(value): print("callbackSetMicPhraseTimeout", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value >= config.INPUT_MIC_RECORD_TIMEOUT: @@ -485,12 +488,13 @@ def callbackSetMicPhraseTimeout(value): view.setGuiVariable_MicPhraseTimeout(config.INPUT_MIC_PHRASE_TIMEOUT) else: raise ValueError() - except: + except Exception: view.showErrorMessage_MicPhraseTimeout() def callbackSetMicMaxPhrases(value): print("callbackSetMicMaxPhrases", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value: @@ -499,7 +503,7 @@ def callbackSetMicMaxPhrases(value): view.setGuiVariable_MicMaxPhrases(config.INPUT_MIC_MAX_PHRASES) else: raise ValueError() - except: + except Exception: view.showErrorMessage_MicMaxPhrases() def callbackSetMicWordFilter(values): @@ -532,13 +536,14 @@ def callbackDeleteMicWordFilter(value): new_input_mic_word_filter_list.remove(str(value)) config.INPUT_MIC_WORD_FILTER = new_input_mic_word_filter_list view.setLatestConfigVariable("MicMicWordFilter") - except: + except Exception: print("There was no the target word in config.INPUT_MIC_WORD_FILTER") def callbackSetSpeakerEnergyThreshold(value): print("callbackSetSpeakerEnergyThreshold", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value <= config.MAX_SPEAKER_ENERGY_THRESHOLD: @@ -547,7 +552,7 @@ def callbackSetSpeakerEnergyThreshold(value): view.setGuiVariable_SpeakerEnergyThreshold(config.INPUT_SPEAKER_ENERGY_THRESHOLD) else: raise ValueError() - except: + except Exception: view.showErrorMessage_SpeakerEnergyThreshold() def callbackSetSpeakerDynamicEnergyThreshold(value): @@ -580,7 +585,8 @@ def callbackCheckSpeakerThreshold(is_turned_on): def callbackSetSpeakerRecordTimeout(value): print("callbackSetSpeakerRecordTimeout", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value <= config.INPUT_SPEAKER_PHRASE_TIMEOUT: @@ -589,12 +595,13 @@ def callbackSetSpeakerRecordTimeout(value): view.setGuiVariable_SpeakerRecordTimeout(config.INPUT_SPEAKER_RECORD_TIMEOUT) else: raise ValueError() - except: + except Exception: view.showErrorMessage_SpeakerRecordTimeout() def callbackSetSpeakerPhraseTimeout(value): print("callbackSetSpeakerPhraseTimeout", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value and value >= config.INPUT_SPEAKER_RECORD_TIMEOUT: @@ -603,12 +610,13 @@ def callbackSetSpeakerPhraseTimeout(value): view.setGuiVariable_SpeakerPhraseTimeout(config.INPUT_SPEAKER_PHRASE_TIMEOUT) else: raise ValueError() - except: + except Exception: view.showErrorMessage_SpeakerPhraseTimeout() def callbackSetSpeakerMaxPhrases(value): print("callbackSetSpeakerMaxPhrases", value) - if value == "": return + if value == "": + return try: value = int(value) if 0 <= value: @@ -617,7 +625,7 @@ def callbackSetSpeakerMaxPhrases(value): view.setGuiVariable_SpeakerMaxPhrases(config.INPUT_SPEAKER_MAX_PHRASES) else: raise ValueError() - except: + except Exception: view.showErrorMessage_SpeakerMaxPhrases() @@ -662,12 +670,14 @@ def callbackSetEnableSendMessageToVrc(value): # Advanced Settings Tab def callbackSetOscIpAddress(value): - if value == "": return + if value == "": + return print("callbackSetOscIpAddress", str(value)) config.OSC_IP_ADDRESS = str(value) def callbackSetOscPort(value): - if value == "": return + if value == "": + return print("callbackSetOscPort", int(value)) config.OSC_PORT = int(value) diff --git a/main.py b/main.py index 5db42c69..def1cb0b 100644 --- a/main.py +++ b/main.py @@ -12,7 +12,7 @@ if __name__ == "__main__": splash.destroySplash() controller.showMainWindow() - except Exception as e: + except Exception: import traceback with open('error.log', 'a') as f: traceback.print_exc(file=f) \ No newline at end of file diff --git a/model.py b/model.py index 51a881dd..c4e2f30b 100644 --- a/model.py +++ b/model.py @@ -82,9 +82,9 @@ class Model: self.keyword_processor = KeywordProcessor() def authenticationTranslator(self, choice_translator=None, auth_key=None): - if choice_translator == None: + if choice_translator is None: choice_translator = config.CHOICE_TRANSLATOR - if auth_key == None: + if auth_key is None: auth_key = config.AUTH_KEYS[choice_translator] result = self.translator.authentication(choice_translator, auth_key) @@ -130,10 +130,10 @@ class Model: compatible_engines.append(engine) engine_name = compatible_engines[0] - if engine_name == "DeepL" and config.AUTH_KEYS["DeepL_API"] != None: + if engine_name == "DeepL" and config.AUTH_KEYS["DeepL_API"] is not None: if self.authenticationTranslator(engine_name, config.AUTH_KEYS["DeepL_API"]) is True: engine_name = "DeepL_API" - elif engine_name == "DeepL_API" and config.AUTH_KEYS["DeepL_API"] == None: + elif engine_name == "DeepL_API" and config.AUTH_KEYS["DeepL_API"] is None: engine_name = "DeepL" return engine_name @@ -288,7 +288,7 @@ class Model: rmtree(os_path.join(current_directory, tmp_directory_name)) command = [os_path.join(program_directory, "batch", batch_name), program_name, temporary_name, str(restart)] Popen(command) - except: + except Exception: webbrowser.open(config.BOOTH_URL, new=2, autoraise=True) @staticmethod @@ -319,7 +319,7 @@ class Model: if config.CHOICE_MIC_HOST == "NoHost" or config.CHOICE_MIC_DEVICE == "NoDevice": try: error_fnc() - except: + except Exception: pass return @@ -348,7 +348,7 @@ class Model: message = mic_transcriber.getTranscript() try: fnc(message) - except: + except Exception: pass self.mic_print_transcript = threadFnc(sendMicTranscript) @@ -367,7 +367,7 @@ class Model: if config.CHOICE_MIC_HOST == "NoHost" or config.CHOICE_MIC_DEVICE == "NoDevice": try: error_fnc() - except: + except Exception: pass return @@ -376,7 +376,7 @@ class Model: energy = mic_energy_queue.get() try: fnc(energy) - except: + except Exception: pass sleep(0.01) @@ -401,7 +401,7 @@ class Model: if speaker_device["name"] == "NoDevice": try: error_fnc() - except: + except Exception: pass return @@ -429,7 +429,7 @@ class Model: message = speaker_transcriber.getTranscript() try: fnc(message) - except: + except Exception: pass self.speaker_print_transcript = threadFnc(sendSpeakerTranscript) @@ -449,7 +449,7 @@ class Model: if speaker_device["name"] == "NoDevice": try: error_fnc() - except: + except Exception: pass return @@ -458,7 +458,7 @@ class Model: energy = speaker_energy_queue.get() try: fnc(energy) - except: + except Exception: pass sleep(0.01) diff --git a/models/osc/osc_tools.py b/models/osc/osc_tools.py index 7cb926c2..80f2b785 100644 --- a/models/osc/osc_tools.py +++ b/models/osc/osc_tools.py @@ -1,5 +1,4 @@ from time import sleep -from typing import List from pythonosc import osc_message_builder from pythonosc import udp_client from pythonosc import dispatcher @@ -15,7 +14,7 @@ def sendTyping(flag=False, ip_address="127.0.0.1", port=9000): # send OSC message def sendMessage(message=None, ip_address="127.0.0.1", port=9000): - if message != None: + if message is not None: msg = osc_message_builder.OscMessageBuilder(address="/chatbox/input") msg.add_arg(f"{message}") msg.add_arg(True) diff --git a/models/transcription/transcription_transcriber.py b/models/transcription/transcription_transcriber.py index b058f4ec..bf78566e 100644 --- a/models/transcription/transcription_transcriber.py +++ b/models/transcription/transcription_transcriber.py @@ -38,7 +38,7 @@ class AudioTranscriber: # os.close(fd) audio_data = self.audio_sources["process_data_func"]() text = self.audio_recognizer.recognize_google(audio_data, language=transcription_lang[language][country]) - except Exception as e: + except Exception: pass finally: pass diff --git a/models/translation/translation_translator.py b/models/translation/translation_translator.py index 18d2c394..c3a5682b 100644 --- a/models/translation/translation_translator.py +++ b/models/translation/translation_translator.py @@ -1,7 +1,7 @@ from deepl import Translator as deepl_Translator from deepl_translate import translate as deepl_web_Translator from translators import translate_text as other_web_Translator -from .translation_languages import translatorEngine, translation_lang +from .translation_languages import translation_lang # Translator class Translator(): @@ -16,7 +16,7 @@ class Translator(): try: self.deepl_client = deepl_Translator(authkey) self.deepl_client.translate_text(" ", target_lang="EN-US") - except: + except Exception: result = False return result @@ -52,7 +52,7 @@ class Translator(): from_language=source_language, to_language=target_language, ) - except Exception as e: + except Exception: import traceback with open('error.log', 'a') as f: traceback.print_exc(file=f) diff --git a/models/xsoverlay/notification.py b/models/xsoverlay/notification.py index 7c179f5a..cb2c03b5 100644 --- a/models/xsoverlay/notification.py +++ b/models/xsoverlay/notification.py @@ -33,7 +33,7 @@ def XSOverlay( with open(icon, "rb") as f: icon_data_bytes = f.read() icon_data = base64.b64encode(icon_data_bytes).decode("utf-8") - except: + except Exception: icon_data = "default" else: icon_data = icon diff --git a/utils.py b/utils.py index 9cb0dc94..a5e38fda 100644 --- a/utils.py +++ b/utils.py @@ -13,7 +13,8 @@ def get_key_by_value(dictionary, value): return None def callFunctionIfCallable(function, *args): - if callable(function) is True: function(*args) + if callable(function) is True: + function(*args) def isEven(number): return number % 2 == 0 diff --git a/vrct_gui/_CreateConfirmationModal.py b/vrct_gui/_CreateConfirmationModal.py index 1d7a5de4..935f0447 100644 --- a/vrct_gui/_CreateConfirmationModal.py +++ b/vrct_gui/_CreateConfirmationModal.py @@ -233,7 +233,8 @@ class _CreateConfirmationModal(CTkToplevel): self.grab_release() def focusOutFunction(self, e): - if str(e.widget) != ".!_createconfirmationmodal": return + if str(e.widget) != ".!_createconfirmationmodal": + return callFunctionIfCallable(self._view_variable.CALLBACK_HIDE_CONFIRMATION_MODAL) def _grab_set(self): diff --git a/vrct_gui/_CreateDropdownMenuWindow.py b/vrct_gui/_CreateDropdownMenuWindow.py index 948e00e1..b0f459dd 100644 --- a/vrct_gui/_CreateDropdownMenuWindow.py +++ b/vrct_gui/_CreateDropdownMenuWindow.py @@ -262,7 +262,8 @@ class _CreateDropdownMenuWindow(CTkToplevel): def show(self, dropdown_menu_widget_id): - if self.hide is False: return + if self.hide is False: + return self.wm_attributes("-alpha", 0) diff --git a/vrct_gui/_CreateErrorWindow.py b/vrct_gui/_CreateErrorWindow.py index 4b00047a..ef7ff5fb 100644 --- a/vrct_gui/_CreateErrorWindow.py +++ b/vrct_gui/_CreateErrorWindow.py @@ -80,7 +80,8 @@ class _CreateErrorWindow(CTkToplevel): def show(self, target_widget): - if self.hide is False: return + if self.hide is False: + return self.attach_widget = target_widget diff --git a/vrct_gui/_CreateSelectableLanguagesWindow.py b/vrct_gui/_CreateSelectableLanguagesWindow.py index daa369c0..8c666a20 100644 --- a/vrct_gui/_CreateSelectableLanguagesWindow.py +++ b/vrct_gui/_CreateSelectableLanguagesWindow.py @@ -178,5 +178,6 @@ class _CreateSelectableLanguagesWindow(CTkToplevel): def focusOutFunction(self, e): - if str(e.widget) != ".!_createselectablelanguageswindow": return + if str(e.widget) != ".!_createselectablelanguageswindow": + return self.vrct_gui._closeSelectableLanguagesWindow() \ No newline at end of file diff --git a/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/_SettingBoxGenerator.py b/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/_SettingBoxGenerator.py index 099c40ae..d8b31a39 100644 --- a/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/_SettingBoxGenerator.py +++ b/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/_SettingBoxGenerator.py @@ -2,7 +2,7 @@ from functools import partial from types import SimpleNamespace from typing import Union -from customtkinter import CTkOptionMenu, CTkFont, CTkFrame, CTkLabel, CTkRadioButton, CTkEntry, CTkSlider, CTkSwitch, CTkCheckBox, CTkProgressBar, CTkImage +from customtkinter import CTkFont, CTkFrame, CTkLabel, CTkEntry, CTkSlider, CTkSwitch, CTkCheckBox, CTkProgressBar, CTkImage from CTkToolTip import * from vrct_gui.ui_utils import createButtonWithImage, getLatestWidth, createOptionMenuBox, getLatestHeight, bindButtonFunctionAndColor @@ -1068,7 +1068,8 @@ class _SettingBoxGenerator(): items[i] = item_data is_replaced = True break - if is_replaced is False: items.append(item_data) + if is_replaced is False: + items.append(item_data) return mic_word_filter_item_wrapper diff --git a/vrct_gui/main_window/widgets/_create_sidebar/createSidebarFeatures.py b/vrct_gui/main_window/widgets/_create_sidebar/createSidebarFeatures.py index b46ab3cc..bce4113f 100644 --- a/vrct_gui/main_window/widgets/_create_sidebar/createSidebarFeatures.py +++ b/vrct_gui/main_window/widgets/_create_sidebar/createSidebarFeatures.py @@ -2,7 +2,7 @@ from functools import partial from customtkinter import CTkFont, CTkFrame, CTkLabel, CTkSwitch, CTkImage -from ....ui_utils import openImageKeepAspectRatio, retag, getLatestHeight, bindEnterAndLeaveFunction, bindButtonReleaseFunction, bindButtonPressAndReleaseFunction +from ....ui_utils import openImageKeepAspectRatio, retag, bindEnterAndLeaveFunction, bindButtonReleaseFunction, bindButtonPressAndReleaseFunction from utils import callFunctionIfCallable diff --git a/vrct_gui/ui_utils/ui_utils.py b/vrct_gui/ui_utils/ui_utils.py index 5138fb5c..bd6e5a9c 100644 --- a/vrct_gui/ui_utils/ui_utils.py +++ b/vrct_gui/ui_utils/ui_utils.py @@ -162,10 +162,12 @@ def createOptionMenuBox(parent_widget, optionmenu_bg_color, optionmenu_hovered_b option_menu_box = CTkFrame(parent_widget, corner_radius=6, fg_color=optionmenu_bg_color, cursor="hand2") option_menu_box.grid_rowconfigure(0, weight=1) - if optionmenu_min_height is not None: option_menu_box.grid_rowconfigure(0, minsize=optionmenu_min_height) + if optionmenu_min_height is not None: + option_menu_box.grid_rowconfigure(0, minsize=optionmenu_min_height) option_menu_box.grid_columnconfigure(0, weight=1) - if optionmenu_min_width is not None: option_menu_box.grid_columnconfigure(0, minsize=optionmenu_min_width) + if optionmenu_min_width is not None: + option_menu_box.grid_columnconfigure(0, minsize=optionmenu_min_width) optionmenu_label_wrapper = CTkFrame(option_menu_box, corner_radius=0, fg_color=optionmenu_bg_color) optionmenu_label_wrapper.grid(row=0, column=0, padx=(optionmenu_ipadx[0],0), pady=optionmenu_ipady, sticky="ew") diff --git a/vrct_gui/vrct_gui.py b/vrct_gui/vrct_gui.py index da9939dd..a0926150 100644 --- a/vrct_gui/vrct_gui.py +++ b/vrct_gui/vrct_gui.py @@ -269,7 +269,7 @@ class VRCT_GUI(CTk): def _clearErrorMessage(self): try: self.error_message_window._withdraw() - except: + except Exception: pass