bauiv1lib.achievements
Provides a popup window to view achievements.
1# Released under the MIT License. See LICENSE for details. 2# 3"""Provides a popup window to view achievements.""" 4 5from __future__ import annotations 6 7from typing import override 8 9import bauiv1 as bui 10 11 12class AchievementsWindow(bui.MainWindow): 13 """Popup window to view achievements.""" 14 15 def __init__( 16 self, 17 transition: str | None = 'in_right', 18 origin_widget: bui.Widget | None = None, 19 ): 20 # pylint: disable=too-many-locals 21 assert bui.app.classic is not None 22 uiscale = bui.app.ui_v1.uiscale 23 self._width = 600 if uiscale is bui.UIScale.SMALL else 450 24 self._height = ( 25 380 26 if uiscale is bui.UIScale.SMALL 27 else 370 if uiscale is bui.UIScale.MEDIUM else 450 28 ) 29 yoffs = -45 if uiscale is bui.UIScale.SMALL else 0 30 31 super().__init__( 32 root_widget=bui.containerwidget( 33 size=(self._width, self._height), 34 toolbar_visibility=( 35 'menu_minimal' 36 if uiscale is bui.UIScale.SMALL 37 else 'menu_full' 38 ), 39 scale=( 40 2.3 41 if uiscale is bui.UIScale.SMALL 42 else 1.65 if uiscale is bui.UIScale.MEDIUM else 1.23 43 ), 44 stack_offset=( 45 (0, 0) 46 if uiscale is bui.UIScale.SMALL 47 else (0, 0) if uiscale is bui.UIScale.MEDIUM else (0, 0) 48 ), 49 ), 50 transition=transition, 51 origin_widget=origin_widget, 52 ) 53 54 if uiscale is bui.UIScale.SMALL: 55 bui.containerwidget( 56 edit=self._root_widget, on_cancel_call=self.main_window_back 57 ) 58 self._back_button = None 59 else: 60 self._back_button = bui.buttonwidget( 61 parent=self._root_widget, 62 autoselect=True, 63 position=(50, self._height - 38 + yoffs), 64 size=(60, 60), 65 scale=0.6, 66 label=bui.charstr(bui.SpecialChar.BACK), 67 button_type='backSmall', 68 on_activate_call=self.main_window_back, 69 ) 70 bui.containerwidget( 71 edit=self._root_widget, cancel_button=self._back_button 72 ) 73 74 achievements = bui.app.classic.ach.achievements 75 num_complete = len([a for a in achievements if a.complete]) 76 77 txt_final = bui.Lstr( 78 resource='accountSettingsWindow.achievementProgressText', 79 subs=[ 80 ('${COUNT}', str(num_complete)), 81 ('${TOTAL}', str(len(achievements))), 82 ], 83 ) 84 self._title_text = bui.textwidget( 85 parent=self._root_widget, 86 position=( 87 self._width * 0.5, 88 self._height 89 - (27 if uiscale is bui.UIScale.SMALL else 20) 90 + yoffs, 91 ), 92 size=(0, 0), 93 h_align='center', 94 v_align='center', 95 scale=0.6, 96 text=txt_final, 97 maxwidth=200, 98 color=bui.app.ui_v1.title_color, 99 ) 100 101 self._scrollwidget = bui.scrollwidget( 102 parent=self._root_widget, 103 size=( 104 self._width - 60, 105 self._height - (150 if uiscale is bui.UIScale.SMALL else 70), 106 ), 107 position=( 108 30, 109 (110 if uiscale is bui.UIScale.SMALL else 30) + yoffs, 110 ), 111 capture_arrows=True, 112 simple_culling_v=10, 113 ) 114 bui.widget(edit=self._scrollwidget, autoselect=True) 115 if uiscale is bui.UIScale.SMALL: 116 bui.widget( 117 edit=self._scrollwidget, 118 left_widget=bui.get_special_widget('back_button'), 119 ) 120 121 bui.containerwidget( 122 edit=self._root_widget, cancel_button=self._back_button 123 ) 124 125 incr = 36 126 sub_width = self._width - 90 127 sub_height = 40 + len(achievements) * incr 128 129 eq_rsrc = 'coopSelectWindow.powerRankingPointsEqualsText' 130 pts_rsrc = 'coopSelectWindow.powerRankingPointsText' 131 132 self._subcontainer = bui.containerwidget( 133 parent=self._scrollwidget, 134 size=(sub_width, sub_height), 135 background=False, 136 ) 137 138 total_pts = 0 139 for i, ach in enumerate(achievements): 140 complete = ach.complete 141 bui.textwidget( 142 parent=self._subcontainer, 143 position=(sub_width * 0.08 - 5, sub_height - 20 - incr * i), 144 maxwidth=20, 145 scale=0.5, 146 color=(0.6, 0.6, 0.7) if complete else (0.6, 0.6, 0.7, 0.2), 147 flatness=1.0, 148 shadow=0.0, 149 text=str(i + 1), 150 size=(0, 0), 151 h_align='right', 152 v_align='center', 153 ) 154 155 bui.imagewidget( 156 parent=self._subcontainer, 157 position=( 158 (sub_width * 0.10 + 1, sub_height - 20 - incr * i - 9) 159 if complete 160 else (sub_width * 0.10 - 4, sub_height - 20 - incr * i - 14) 161 ), 162 size=(18, 18) if complete else (27, 27), 163 opacity=1.0 if complete else 0.3, 164 color=ach.get_icon_color(complete)[:3], 165 texture=ach.get_icon_ui_texture(complete), 166 ) 167 if complete: 168 bui.imagewidget( 169 parent=self._subcontainer, 170 position=( 171 sub_width * 0.10 - 4, 172 sub_height - 25 - incr * i - 9, 173 ), 174 size=(28, 28), 175 color=(2, 1.4, 0), 176 texture=bui.gettexture('achievementOutline'), 177 ) 178 bui.textwidget( 179 parent=self._subcontainer, 180 position=(sub_width * 0.19, sub_height - 19 - incr * i + 3), 181 maxwidth=sub_width * 0.62, 182 scale=0.6, 183 flatness=1.0, 184 shadow=0.0, 185 color=(1, 1, 1) if complete else (1, 1, 1, 0.2), 186 text=ach.display_name, 187 size=(0, 0), 188 h_align='left', 189 v_align='center', 190 ) 191 192 bui.textwidget( 193 parent=self._subcontainer, 194 position=(sub_width * 0.19, sub_height - 19 - incr * i - 10), 195 maxwidth=sub_width * 0.62, 196 scale=0.4, 197 flatness=1.0, 198 shadow=0.0, 199 color=(0.83, 0.8, 0.85) if complete else (0.8, 0.8, 0.8, 0.2), 200 text=( 201 ach.description_full_complete 202 if complete 203 else ach.description_full 204 ), 205 size=(0, 0), 206 h_align='left', 207 v_align='center', 208 ) 209 210 pts = ach.power_ranking_value 211 bui.textwidget( 212 parent=self._subcontainer, 213 position=(sub_width * 0.92, sub_height - 20 - incr * i), 214 maxwidth=sub_width * 0.15, 215 color=(0.7, 0.8, 1.0) if complete else (0.9, 0.9, 1.0, 0.3), 216 flatness=1.0, 217 shadow=0.0, 218 scale=0.6, 219 text=bui.Lstr( 220 resource=pts_rsrc, subs=[('${NUMBER}', str(pts))] 221 ), 222 size=(0, 0), 223 h_align='center', 224 v_align='center', 225 ) 226 if complete: 227 total_pts += pts 228 229 bui.textwidget( 230 parent=self._subcontainer, 231 position=( 232 sub_width * 1.0, 233 sub_height - 20 - incr * len(achievements), 234 ), 235 maxwidth=sub_width * 0.5, 236 scale=0.7, 237 color=(0.7, 0.8, 1.0), 238 flatness=1.0, 239 shadow=0.0, 240 text=bui.Lstr( 241 value='${A} ${B}', 242 subs=[ 243 ('${A}', bui.Lstr(resource='coopSelectWindow.totalText')), 244 ( 245 '${B}', 246 bui.Lstr( 247 resource=eq_rsrc, 248 subs=[('${NUMBER}', str(total_pts))], 249 ), 250 ), 251 ], 252 ), 253 size=(0, 0), 254 h_align='right', 255 v_align='center', 256 ) 257 258 @override 259 def get_main_window_state(self) -> bui.MainWindowState: 260 # Support recreating our window for back/refresh purposes. 261 cls = type(self) 262 return bui.BasicMainWindowState( 263 create_call=lambda transition, origin_widget: cls( 264 transition=transition, origin_widget=origin_widget 265 ) 266 )
class
AchievementsWindow(bauiv1._uitypes.MainWindow):
13class AchievementsWindow(bui.MainWindow): 14 """Popup window to view achievements.""" 15 16 def __init__( 17 self, 18 transition: str | None = 'in_right', 19 origin_widget: bui.Widget | None = None, 20 ): 21 # pylint: disable=too-many-locals 22 assert bui.app.classic is not None 23 uiscale = bui.app.ui_v1.uiscale 24 self._width = 600 if uiscale is bui.UIScale.SMALL else 450 25 self._height = ( 26 380 27 if uiscale is bui.UIScale.SMALL 28 else 370 if uiscale is bui.UIScale.MEDIUM else 450 29 ) 30 yoffs = -45 if uiscale is bui.UIScale.SMALL else 0 31 32 super().__init__( 33 root_widget=bui.containerwidget( 34 size=(self._width, self._height), 35 toolbar_visibility=( 36 'menu_minimal' 37 if uiscale is bui.UIScale.SMALL 38 else 'menu_full' 39 ), 40 scale=( 41 2.3 42 if uiscale is bui.UIScale.SMALL 43 else 1.65 if uiscale is bui.UIScale.MEDIUM else 1.23 44 ), 45 stack_offset=( 46 (0, 0) 47 if uiscale is bui.UIScale.SMALL 48 else (0, 0) if uiscale is bui.UIScale.MEDIUM else (0, 0) 49 ), 50 ), 51 transition=transition, 52 origin_widget=origin_widget, 53 ) 54 55 if uiscale is bui.UIScale.SMALL: 56 bui.containerwidget( 57 edit=self._root_widget, on_cancel_call=self.main_window_back 58 ) 59 self._back_button = None 60 else: 61 self._back_button = bui.buttonwidget( 62 parent=self._root_widget, 63 autoselect=True, 64 position=(50, self._height - 38 + yoffs), 65 size=(60, 60), 66 scale=0.6, 67 label=bui.charstr(bui.SpecialChar.BACK), 68 button_type='backSmall', 69 on_activate_call=self.main_window_back, 70 ) 71 bui.containerwidget( 72 edit=self._root_widget, cancel_button=self._back_button 73 ) 74 75 achievements = bui.app.classic.ach.achievements 76 num_complete = len([a for a in achievements if a.complete]) 77 78 txt_final = bui.Lstr( 79 resource='accountSettingsWindow.achievementProgressText', 80 subs=[ 81 ('${COUNT}', str(num_complete)), 82 ('${TOTAL}', str(len(achievements))), 83 ], 84 ) 85 self._title_text = bui.textwidget( 86 parent=self._root_widget, 87 position=( 88 self._width * 0.5, 89 self._height 90 - (27 if uiscale is bui.UIScale.SMALL else 20) 91 + yoffs, 92 ), 93 size=(0, 0), 94 h_align='center', 95 v_align='center', 96 scale=0.6, 97 text=txt_final, 98 maxwidth=200, 99 color=bui.app.ui_v1.title_color, 100 ) 101 102 self._scrollwidget = bui.scrollwidget( 103 parent=self._root_widget, 104 size=( 105 self._width - 60, 106 self._height - (150 if uiscale is bui.UIScale.SMALL else 70), 107 ), 108 position=( 109 30, 110 (110 if uiscale is bui.UIScale.SMALL else 30) + yoffs, 111 ), 112 capture_arrows=True, 113 simple_culling_v=10, 114 ) 115 bui.widget(edit=self._scrollwidget, autoselect=True) 116 if uiscale is bui.UIScale.SMALL: 117 bui.widget( 118 edit=self._scrollwidget, 119 left_widget=bui.get_special_widget('back_button'), 120 ) 121 122 bui.containerwidget( 123 edit=self._root_widget, cancel_button=self._back_button 124 ) 125 126 incr = 36 127 sub_width = self._width - 90 128 sub_height = 40 + len(achievements) * incr 129 130 eq_rsrc = 'coopSelectWindow.powerRankingPointsEqualsText' 131 pts_rsrc = 'coopSelectWindow.powerRankingPointsText' 132 133 self._subcontainer = bui.containerwidget( 134 parent=self._scrollwidget, 135 size=(sub_width, sub_height), 136 background=False, 137 ) 138 139 total_pts = 0 140 for i, ach in enumerate(achievements): 141 complete = ach.complete 142 bui.textwidget( 143 parent=self._subcontainer, 144 position=(sub_width * 0.08 - 5, sub_height - 20 - incr * i), 145 maxwidth=20, 146 scale=0.5, 147 color=(0.6, 0.6, 0.7) if complete else (0.6, 0.6, 0.7, 0.2), 148 flatness=1.0, 149 shadow=0.0, 150 text=str(i + 1), 151 size=(0, 0), 152 h_align='right', 153 v_align='center', 154 ) 155 156 bui.imagewidget( 157 parent=self._subcontainer, 158 position=( 159 (sub_width * 0.10 + 1, sub_height - 20 - incr * i - 9) 160 if complete 161 else (sub_width * 0.10 - 4, sub_height - 20 - incr * i - 14) 162 ), 163 size=(18, 18) if complete else (27, 27), 164 opacity=1.0 if complete else 0.3, 165 color=ach.get_icon_color(complete)[:3], 166 texture=ach.get_icon_ui_texture(complete), 167 ) 168 if complete: 169 bui.imagewidget( 170 parent=self._subcontainer, 171 position=( 172 sub_width * 0.10 - 4, 173 sub_height - 25 - incr * i - 9, 174 ), 175 size=(28, 28), 176 color=(2, 1.4, 0), 177 texture=bui.gettexture('achievementOutline'), 178 ) 179 bui.textwidget( 180 parent=self._subcontainer, 181 position=(sub_width * 0.19, sub_height - 19 - incr * i + 3), 182 maxwidth=sub_width * 0.62, 183 scale=0.6, 184 flatness=1.0, 185 shadow=0.0, 186 color=(1, 1, 1) if complete else (1, 1, 1, 0.2), 187 text=ach.display_name, 188 size=(0, 0), 189 h_align='left', 190 v_align='center', 191 ) 192 193 bui.textwidget( 194 parent=self._subcontainer, 195 position=(sub_width * 0.19, sub_height - 19 - incr * i - 10), 196 maxwidth=sub_width * 0.62, 197 scale=0.4, 198 flatness=1.0, 199 shadow=0.0, 200 color=(0.83, 0.8, 0.85) if complete else (0.8, 0.8, 0.8, 0.2), 201 text=( 202 ach.description_full_complete 203 if complete 204 else ach.description_full 205 ), 206 size=(0, 0), 207 h_align='left', 208 v_align='center', 209 ) 210 211 pts = ach.power_ranking_value 212 bui.textwidget( 213 parent=self._subcontainer, 214 position=(sub_width * 0.92, sub_height - 20 - incr * i), 215 maxwidth=sub_width * 0.15, 216 color=(0.7, 0.8, 1.0) if complete else (0.9, 0.9, 1.0, 0.3), 217 flatness=1.0, 218 shadow=0.0, 219 scale=0.6, 220 text=bui.Lstr( 221 resource=pts_rsrc, subs=[('${NUMBER}', str(pts))] 222 ), 223 size=(0, 0), 224 h_align='center', 225 v_align='center', 226 ) 227 if complete: 228 total_pts += pts 229 230 bui.textwidget( 231 parent=self._subcontainer, 232 position=( 233 sub_width * 1.0, 234 sub_height - 20 - incr * len(achievements), 235 ), 236 maxwidth=sub_width * 0.5, 237 scale=0.7, 238 color=(0.7, 0.8, 1.0), 239 flatness=1.0, 240 shadow=0.0, 241 text=bui.Lstr( 242 value='${A} ${B}', 243 subs=[ 244 ('${A}', bui.Lstr(resource='coopSelectWindow.totalText')), 245 ( 246 '${B}', 247 bui.Lstr( 248 resource=eq_rsrc, 249 subs=[('${NUMBER}', str(total_pts))], 250 ), 251 ), 252 ], 253 ), 254 size=(0, 0), 255 h_align='right', 256 v_align='center', 257 ) 258 259 @override 260 def get_main_window_state(self) -> bui.MainWindowState: 261 # Support recreating our window for back/refresh purposes. 262 cls = type(self) 263 return bui.BasicMainWindowState( 264 create_call=lambda transition, origin_widget: cls( 265 transition=transition, origin_widget=origin_widget 266 ) 267 )
Popup window to view achievements.
AchievementsWindow( transition: str | None = 'in_right', origin_widget: _bauiv1.Widget | None = None)
16 def __init__( 17 self, 18 transition: str | None = 'in_right', 19 origin_widget: bui.Widget | None = None, 20 ): 21 # pylint: disable=too-many-locals 22 assert bui.app.classic is not None 23 uiscale = bui.app.ui_v1.uiscale 24 self._width = 600 if uiscale is bui.UIScale.SMALL else 450 25 self._height = ( 26 380 27 if uiscale is bui.UIScale.SMALL 28 else 370 if uiscale is bui.UIScale.MEDIUM else 450 29 ) 30 yoffs = -45 if uiscale is bui.UIScale.SMALL else 0 31 32 super().__init__( 33 root_widget=bui.containerwidget( 34 size=(self._width, self._height), 35 toolbar_visibility=( 36 'menu_minimal' 37 if uiscale is bui.UIScale.SMALL 38 else 'menu_full' 39 ), 40 scale=( 41 2.3 42 if uiscale is bui.UIScale.SMALL 43 else 1.65 if uiscale is bui.UIScale.MEDIUM else 1.23 44 ), 45 stack_offset=( 46 (0, 0) 47 if uiscale is bui.UIScale.SMALL 48 else (0, 0) if uiscale is bui.UIScale.MEDIUM else (0, 0) 49 ), 50 ), 51 transition=transition, 52 origin_widget=origin_widget, 53 ) 54 55 if uiscale is bui.UIScale.SMALL: 56 bui.containerwidget( 57 edit=self._root_widget, on_cancel_call=self.main_window_back 58 ) 59 self._back_button = None 60 else: 61 self._back_button = bui.buttonwidget( 62 parent=self._root_widget, 63 autoselect=True, 64 position=(50, self._height - 38 + yoffs), 65 size=(60, 60), 66 scale=0.6, 67 label=bui.charstr(bui.SpecialChar.BACK), 68 button_type='backSmall', 69 on_activate_call=self.main_window_back, 70 ) 71 bui.containerwidget( 72 edit=self._root_widget, cancel_button=self._back_button 73 ) 74 75 achievements = bui.app.classic.ach.achievements 76 num_complete = len([a for a in achievements if a.complete]) 77 78 txt_final = bui.Lstr( 79 resource='accountSettingsWindow.achievementProgressText', 80 subs=[ 81 ('${COUNT}', str(num_complete)), 82 ('${TOTAL}', str(len(achievements))), 83 ], 84 ) 85 self._title_text = bui.textwidget( 86 parent=self._root_widget, 87 position=( 88 self._width * 0.5, 89 self._height 90 - (27 if uiscale is bui.UIScale.SMALL else 20) 91 + yoffs, 92 ), 93 size=(0, 0), 94 h_align='center', 95 v_align='center', 96 scale=0.6, 97 text=txt_final, 98 maxwidth=200, 99 color=bui.app.ui_v1.title_color, 100 ) 101 102 self._scrollwidget = bui.scrollwidget( 103 parent=self._root_widget, 104 size=( 105 self._width - 60, 106 self._height - (150 if uiscale is bui.UIScale.SMALL else 70), 107 ), 108 position=( 109 30, 110 (110 if uiscale is bui.UIScale.SMALL else 30) + yoffs, 111 ), 112 capture_arrows=True, 113 simple_culling_v=10, 114 ) 115 bui.widget(edit=self._scrollwidget, autoselect=True) 116 if uiscale is bui.UIScale.SMALL: 117 bui.widget( 118 edit=self._scrollwidget, 119 left_widget=bui.get_special_widget('back_button'), 120 ) 121 122 bui.containerwidget( 123 edit=self._root_widget, cancel_button=self._back_button 124 ) 125 126 incr = 36 127 sub_width = self._width - 90 128 sub_height = 40 + len(achievements) * incr 129 130 eq_rsrc = 'coopSelectWindow.powerRankingPointsEqualsText' 131 pts_rsrc = 'coopSelectWindow.powerRankingPointsText' 132 133 self._subcontainer = bui.containerwidget( 134 parent=self._scrollwidget, 135 size=(sub_width, sub_height), 136 background=False, 137 ) 138 139 total_pts = 0 140 for i, ach in enumerate(achievements): 141 complete = ach.complete 142 bui.textwidget( 143 parent=self._subcontainer, 144 position=(sub_width * 0.08 - 5, sub_height - 20 - incr * i), 145 maxwidth=20, 146 scale=0.5, 147 color=(0.6, 0.6, 0.7) if complete else (0.6, 0.6, 0.7, 0.2), 148 flatness=1.0, 149 shadow=0.0, 150 text=str(i + 1), 151 size=(0, 0), 152 h_align='right', 153 v_align='center', 154 ) 155 156 bui.imagewidget( 157 parent=self._subcontainer, 158 position=( 159 (sub_width * 0.10 + 1, sub_height - 20 - incr * i - 9) 160 if complete 161 else (sub_width * 0.10 - 4, sub_height - 20 - incr * i - 14) 162 ), 163 size=(18, 18) if complete else (27, 27), 164 opacity=1.0 if complete else 0.3, 165 color=ach.get_icon_color(complete)[:3], 166 texture=ach.get_icon_ui_texture(complete), 167 ) 168 if complete: 169 bui.imagewidget( 170 parent=self._subcontainer, 171 position=( 172 sub_width * 0.10 - 4, 173 sub_height - 25 - incr * i - 9, 174 ), 175 size=(28, 28), 176 color=(2, 1.4, 0), 177 texture=bui.gettexture('achievementOutline'), 178 ) 179 bui.textwidget( 180 parent=self._subcontainer, 181 position=(sub_width * 0.19, sub_height - 19 - incr * i + 3), 182 maxwidth=sub_width * 0.62, 183 scale=0.6, 184 flatness=1.0, 185 shadow=0.0, 186 color=(1, 1, 1) if complete else (1, 1, 1, 0.2), 187 text=ach.display_name, 188 size=(0, 0), 189 h_align='left', 190 v_align='center', 191 ) 192 193 bui.textwidget( 194 parent=self._subcontainer, 195 position=(sub_width * 0.19, sub_height - 19 - incr * i - 10), 196 maxwidth=sub_width * 0.62, 197 scale=0.4, 198 flatness=1.0, 199 shadow=0.0, 200 color=(0.83, 0.8, 0.85) if complete else (0.8, 0.8, 0.8, 0.2), 201 text=( 202 ach.description_full_complete 203 if complete 204 else ach.description_full 205 ), 206 size=(0, 0), 207 h_align='left', 208 v_align='center', 209 ) 210 211 pts = ach.power_ranking_value 212 bui.textwidget( 213 parent=self._subcontainer, 214 position=(sub_width * 0.92, sub_height - 20 - incr * i), 215 maxwidth=sub_width * 0.15, 216 color=(0.7, 0.8, 1.0) if complete else (0.9, 0.9, 1.0, 0.3), 217 flatness=1.0, 218 shadow=0.0, 219 scale=0.6, 220 text=bui.Lstr( 221 resource=pts_rsrc, subs=[('${NUMBER}', str(pts))] 222 ), 223 size=(0, 0), 224 h_align='center', 225 v_align='center', 226 ) 227 if complete: 228 total_pts += pts 229 230 bui.textwidget( 231 parent=self._subcontainer, 232 position=( 233 sub_width * 1.0, 234 sub_height - 20 - incr * len(achievements), 235 ), 236 maxwidth=sub_width * 0.5, 237 scale=0.7, 238 color=(0.7, 0.8, 1.0), 239 flatness=1.0, 240 shadow=0.0, 241 text=bui.Lstr( 242 value='${A} ${B}', 243 subs=[ 244 ('${A}', bui.Lstr(resource='coopSelectWindow.totalText')), 245 ( 246 '${B}', 247 bui.Lstr( 248 resource=eq_rsrc, 249 subs=[('${NUMBER}', str(total_pts))], 250 ), 251 ), 252 ], 253 ), 254 size=(0, 0), 255 h_align='right', 256 v_align='center', 257 )
Create a MainWindow given a root widget and transition info.
Automatically handles in and out transitions on the provided widget, so there is no need to set transitions when creating it.
259 @override 260 def get_main_window_state(self) -> bui.MainWindowState: 261 # Support recreating our window for back/refresh purposes. 262 cls = type(self) 263 return bui.BasicMainWindowState( 264 create_call=lambda transition, origin_widget: cls( 265 transition=transition, origin_widget=origin_widget 266 ) 267 )
Return a WindowState to recreate this window, if supported.