bauiv1lib.settings.pluginsettings
Plugin Settings UI.
1# Released under the MIT License. See LICENSE for details. 2# 3"""Plugin Settings UI.""" 4 5from __future__ import annotations 6 7import bauiv1 as bui 8from bauiv1lib.confirm import ConfirmWindow 9 10 11class PluginSettingsWindow(bui.Window): 12 """Plugin Settings Window""" 13 14 def __init__(self, transition: str = 'in_right'): 15 scale_origin: tuple[float, float] | None 16 self._transition_out = 'out_right' 17 scale_origin = None 18 19 assert bui.app.classic is not None 20 uiscale = bui.app.ui_v1.uiscale 21 width = 470.0 if uiscale is bui.UIScale.SMALL else 470.0 22 height = ( 23 365.0 24 if uiscale is bui.UIScale.SMALL 25 else 300.0 if uiscale is bui.UIScale.MEDIUM else 370.0 26 ) 27 top_extra = 10 if uiscale is bui.UIScale.SMALL else 0 28 29 super().__init__( 30 root_widget=bui.containerwidget( 31 size=(width, height + top_extra), 32 transition=transition, 33 toolbar_visibility='menu_minimal', 34 scale_origin_stack_offset=scale_origin, 35 scale=( 36 2.06 37 if uiscale is bui.UIScale.SMALL 38 else 1.4 if uiscale is bui.UIScale.MEDIUM else 1.0 39 ), 40 stack_offset=( 41 (0, -25) if uiscale is bui.UIScale.SMALL else (0, 0) 42 ), 43 ) 44 ) 45 46 self._back_button = bui.buttonwidget( 47 parent=self._root_widget, 48 position=(53, height - 60), 49 size=(60, 60), 50 scale=0.8, 51 autoselect=True, 52 label=bui.charstr(bui.SpecialChar.BACK), 53 button_type='backSmall', 54 on_activate_call=self._do_back, 55 ) 56 bui.containerwidget( 57 edit=self._root_widget, cancel_button=self._back_button 58 ) 59 60 self._title_text = bui.textwidget( 61 parent=self._root_widget, 62 position=(0, height - 52), 63 size=(width, 25), 64 text=bui.Lstr(resource='pluginSettingsText'), 65 color=bui.app.ui_v1.title_color, 66 h_align='center', 67 v_align='top', 68 ) 69 70 self._y_position = 170 if uiscale is bui.UIScale.MEDIUM else 205 71 self._enable_plugins_button = bui.buttonwidget( 72 parent=self._root_widget, 73 position=(65, self._y_position), 74 size=(350, 60), 75 autoselect=True, 76 label=bui.Lstr(resource='pluginsEnableAllText'), 77 text_scale=1.0, 78 on_activate_call=lambda: ConfirmWindow( 79 action=self._enable_all_plugins, 80 ), 81 ) 82 83 self._y_position -= 70 84 self._disable_plugins_button = bui.buttonwidget( 85 parent=self._root_widget, 86 position=(65, self._y_position), 87 size=(350, 60), 88 autoselect=True, 89 label=bui.Lstr(resource='pluginsDisableAllText'), 90 text_scale=1.0, 91 on_activate_call=lambda: ConfirmWindow( 92 action=self._disable_all_plugins, 93 ), 94 ) 95 96 self._y_position -= 70 97 self._enable_new_plugins_check_box = bui.checkboxwidget( 98 parent=self._root_widget, 99 position=(65, self._y_position), 100 size=(350, 60), 101 value=bui.app.config.get( 102 bui.app.plugins.AUTO_ENABLE_NEW_PLUGINS_CONFIG_KEY, 103 bui.app.plugins.AUTO_ENABLE_NEW_PLUGINS_DEFAULT, 104 ), 105 text=bui.Lstr(resource='pluginsAutoEnableNewText'), 106 scale=1.0, 107 maxwidth=308, 108 on_value_change_call=self._update_value, 109 ) 110 111 bui.widget( 112 edit=self._back_button, down_widget=self._enable_plugins_button 113 ) 114 115 bui.widget( 116 edit=self._disable_plugins_button, 117 left_widget=self._disable_plugins_button, 118 ) 119 120 bui.widget( 121 edit=self._enable_new_plugins_check_box, 122 left_widget=self._enable_new_plugins_check_box, 123 right_widget=self._enable_new_plugins_check_box, 124 down_widget=self._enable_new_plugins_check_box, 125 ) 126 127 def _enable_all_plugins(self) -> None: 128 cfg = bui.app.config 129 plugs: dict[str, dict] = cfg.setdefault('Plugins', {}) 130 for plug in plugs.values(): 131 plug['enabled'] = True 132 cfg.apply_and_commit() 133 134 bui.screenmessage( 135 bui.Lstr(resource='settingsWindowAdvanced.mustRestartText'), 136 color=(1.0, 0.5, 0.0), 137 ) 138 139 def _disable_all_plugins(self) -> None: 140 cfg = bui.app.config 141 plugs: dict[str, dict] = cfg.setdefault('Plugins', {}) 142 for plug in plugs.values(): 143 plug['enabled'] = False 144 cfg.apply_and_commit() 145 146 bui.screenmessage( 147 bui.Lstr(resource='settingsWindowAdvanced.mustRestartText'), 148 color=(1.0, 0.5, 0.0), 149 ) 150 151 def _update_value(self, val: bool) -> None: 152 cfg = bui.app.config 153 cfg[bui.app.plugins.AUTO_ENABLE_NEW_PLUGINS_CONFIG_KEY] = val 154 cfg.apply_and_commit() 155 156 def _do_back(self) -> None: 157 # pylint: disable=cyclic-import 158 from bauiv1lib.settings.plugins import PluginWindow 159 160 # no-op if our underlying widget is dead or on its way out. 161 if not self._root_widget or self._root_widget.transitioning_out: 162 return 163 164 bui.containerwidget( 165 edit=self._root_widget, transition=self._transition_out 166 ) 167 assert bui.app.classic is not None 168 bui.app.ui_v1.set_main_menu_window( 169 PluginWindow(transition='in_left').get_root_widget(), 170 from_window=self._root_widget, 171 )
class
PluginSettingsWindow(bauiv1._uitypes.Window):
12class PluginSettingsWindow(bui.Window): 13 """Plugin Settings Window""" 14 15 def __init__(self, transition: str = 'in_right'): 16 scale_origin: tuple[float, float] | None 17 self._transition_out = 'out_right' 18 scale_origin = None 19 20 assert bui.app.classic is not None 21 uiscale = bui.app.ui_v1.uiscale 22 width = 470.0 if uiscale is bui.UIScale.SMALL else 470.0 23 height = ( 24 365.0 25 if uiscale is bui.UIScale.SMALL 26 else 300.0 if uiscale is bui.UIScale.MEDIUM else 370.0 27 ) 28 top_extra = 10 if uiscale is bui.UIScale.SMALL else 0 29 30 super().__init__( 31 root_widget=bui.containerwidget( 32 size=(width, height + top_extra), 33 transition=transition, 34 toolbar_visibility='menu_minimal', 35 scale_origin_stack_offset=scale_origin, 36 scale=( 37 2.06 38 if uiscale is bui.UIScale.SMALL 39 else 1.4 if uiscale is bui.UIScale.MEDIUM else 1.0 40 ), 41 stack_offset=( 42 (0, -25) if uiscale is bui.UIScale.SMALL else (0, 0) 43 ), 44 ) 45 ) 46 47 self._back_button = bui.buttonwidget( 48 parent=self._root_widget, 49 position=(53, height - 60), 50 size=(60, 60), 51 scale=0.8, 52 autoselect=True, 53 label=bui.charstr(bui.SpecialChar.BACK), 54 button_type='backSmall', 55 on_activate_call=self._do_back, 56 ) 57 bui.containerwidget( 58 edit=self._root_widget, cancel_button=self._back_button 59 ) 60 61 self._title_text = bui.textwidget( 62 parent=self._root_widget, 63 position=(0, height - 52), 64 size=(width, 25), 65 text=bui.Lstr(resource='pluginSettingsText'), 66 color=bui.app.ui_v1.title_color, 67 h_align='center', 68 v_align='top', 69 ) 70 71 self._y_position = 170 if uiscale is bui.UIScale.MEDIUM else 205 72 self._enable_plugins_button = bui.buttonwidget( 73 parent=self._root_widget, 74 position=(65, self._y_position), 75 size=(350, 60), 76 autoselect=True, 77 label=bui.Lstr(resource='pluginsEnableAllText'), 78 text_scale=1.0, 79 on_activate_call=lambda: ConfirmWindow( 80 action=self._enable_all_plugins, 81 ), 82 ) 83 84 self._y_position -= 70 85 self._disable_plugins_button = bui.buttonwidget( 86 parent=self._root_widget, 87 position=(65, self._y_position), 88 size=(350, 60), 89 autoselect=True, 90 label=bui.Lstr(resource='pluginsDisableAllText'), 91 text_scale=1.0, 92 on_activate_call=lambda: ConfirmWindow( 93 action=self._disable_all_plugins, 94 ), 95 ) 96 97 self._y_position -= 70 98 self._enable_new_plugins_check_box = bui.checkboxwidget( 99 parent=self._root_widget, 100 position=(65, self._y_position), 101 size=(350, 60), 102 value=bui.app.config.get( 103 bui.app.plugins.AUTO_ENABLE_NEW_PLUGINS_CONFIG_KEY, 104 bui.app.plugins.AUTO_ENABLE_NEW_PLUGINS_DEFAULT, 105 ), 106 text=bui.Lstr(resource='pluginsAutoEnableNewText'), 107 scale=1.0, 108 maxwidth=308, 109 on_value_change_call=self._update_value, 110 ) 111 112 bui.widget( 113 edit=self._back_button, down_widget=self._enable_plugins_button 114 ) 115 116 bui.widget( 117 edit=self._disable_plugins_button, 118 left_widget=self._disable_plugins_button, 119 ) 120 121 bui.widget( 122 edit=self._enable_new_plugins_check_box, 123 left_widget=self._enable_new_plugins_check_box, 124 right_widget=self._enable_new_plugins_check_box, 125 down_widget=self._enable_new_plugins_check_box, 126 ) 127 128 def _enable_all_plugins(self) -> None: 129 cfg = bui.app.config 130 plugs: dict[str, dict] = cfg.setdefault('Plugins', {}) 131 for plug in plugs.values(): 132 plug['enabled'] = True 133 cfg.apply_and_commit() 134 135 bui.screenmessage( 136 bui.Lstr(resource='settingsWindowAdvanced.mustRestartText'), 137 color=(1.0, 0.5, 0.0), 138 ) 139 140 def _disable_all_plugins(self) -> None: 141 cfg = bui.app.config 142 plugs: dict[str, dict] = cfg.setdefault('Plugins', {}) 143 for plug in plugs.values(): 144 plug['enabled'] = False 145 cfg.apply_and_commit() 146 147 bui.screenmessage( 148 bui.Lstr(resource='settingsWindowAdvanced.mustRestartText'), 149 color=(1.0, 0.5, 0.0), 150 ) 151 152 def _update_value(self, val: bool) -> None: 153 cfg = bui.app.config 154 cfg[bui.app.plugins.AUTO_ENABLE_NEW_PLUGINS_CONFIG_KEY] = val 155 cfg.apply_and_commit() 156 157 def _do_back(self) -> None: 158 # pylint: disable=cyclic-import 159 from bauiv1lib.settings.plugins import PluginWindow 160 161 # no-op if our underlying widget is dead or on its way out. 162 if not self._root_widget or self._root_widget.transitioning_out: 163 return 164 165 bui.containerwidget( 166 edit=self._root_widget, transition=self._transition_out 167 ) 168 assert bui.app.classic is not None 169 bui.app.ui_v1.set_main_menu_window( 170 PluginWindow(transition='in_left').get_root_widget(), 171 from_window=self._root_widget, 172 )
Plugin Settings Window
PluginSettingsWindow(transition: str = 'in_right')
15 def __init__(self, transition: str = 'in_right'): 16 scale_origin: tuple[float, float] | None 17 self._transition_out = 'out_right' 18 scale_origin = None 19 20 assert bui.app.classic is not None 21 uiscale = bui.app.ui_v1.uiscale 22 width = 470.0 if uiscale is bui.UIScale.SMALL else 470.0 23 height = ( 24 365.0 25 if uiscale is bui.UIScale.SMALL 26 else 300.0 if uiscale is bui.UIScale.MEDIUM else 370.0 27 ) 28 top_extra = 10 if uiscale is bui.UIScale.SMALL else 0 29 30 super().__init__( 31 root_widget=bui.containerwidget( 32 size=(width, height + top_extra), 33 transition=transition, 34 toolbar_visibility='menu_minimal', 35 scale_origin_stack_offset=scale_origin, 36 scale=( 37 2.06 38 if uiscale is bui.UIScale.SMALL 39 else 1.4 if uiscale is bui.UIScale.MEDIUM else 1.0 40 ), 41 stack_offset=( 42 (0, -25) if uiscale is bui.UIScale.SMALL else (0, 0) 43 ), 44 ) 45 ) 46 47 self._back_button = bui.buttonwidget( 48 parent=self._root_widget, 49 position=(53, height - 60), 50 size=(60, 60), 51 scale=0.8, 52 autoselect=True, 53 label=bui.charstr(bui.SpecialChar.BACK), 54 button_type='backSmall', 55 on_activate_call=self._do_back, 56 ) 57 bui.containerwidget( 58 edit=self._root_widget, cancel_button=self._back_button 59 ) 60 61 self._title_text = bui.textwidget( 62 parent=self._root_widget, 63 position=(0, height - 52), 64 size=(width, 25), 65 text=bui.Lstr(resource='pluginSettingsText'), 66 color=bui.app.ui_v1.title_color, 67 h_align='center', 68 v_align='top', 69 ) 70 71 self._y_position = 170 if uiscale is bui.UIScale.MEDIUM else 205 72 self._enable_plugins_button = bui.buttonwidget( 73 parent=self._root_widget, 74 position=(65, self._y_position), 75 size=(350, 60), 76 autoselect=True, 77 label=bui.Lstr(resource='pluginsEnableAllText'), 78 text_scale=1.0, 79 on_activate_call=lambda: ConfirmWindow( 80 action=self._enable_all_plugins, 81 ), 82 ) 83 84 self._y_position -= 70 85 self._disable_plugins_button = bui.buttonwidget( 86 parent=self._root_widget, 87 position=(65, self._y_position), 88 size=(350, 60), 89 autoselect=True, 90 label=bui.Lstr(resource='pluginsDisableAllText'), 91 text_scale=1.0, 92 on_activate_call=lambda: ConfirmWindow( 93 action=self._disable_all_plugins, 94 ), 95 ) 96 97 self._y_position -= 70 98 self._enable_new_plugins_check_box = bui.checkboxwidget( 99 parent=self._root_widget, 100 position=(65, self._y_position), 101 size=(350, 60), 102 value=bui.app.config.get( 103 bui.app.plugins.AUTO_ENABLE_NEW_PLUGINS_CONFIG_KEY, 104 bui.app.plugins.AUTO_ENABLE_NEW_PLUGINS_DEFAULT, 105 ), 106 text=bui.Lstr(resource='pluginsAutoEnableNewText'), 107 scale=1.0, 108 maxwidth=308, 109 on_value_change_call=self._update_value, 110 ) 111 112 bui.widget( 113 edit=self._back_button, down_widget=self._enable_plugins_button 114 ) 115 116 bui.widget( 117 edit=self._disable_plugins_button, 118 left_widget=self._disable_plugins_button, 119 ) 120 121 bui.widget( 122 edit=self._enable_new_plugins_check_box, 123 left_widget=self._enable_new_plugins_check_box, 124 right_widget=self._enable_new_plugins_check_box, 125 down_widget=self._enable_new_plugins_check_box, 126 )
Inherited Members
- bauiv1._uitypes.Window
- get_root_widget