def _update_tabs(self) -> None: from ba.internal import (get_available_sale_time, get_available_purchase_count) if not self._root_widget: return for tab_name, tab_data in list( self._purchasable_count_widgets.items()): sale_time = get_available_sale_time(tab_name) if sale_time is not None: ba.textwidget(edit=tab_data['sale_title_text'], text=ba.Lstr(resource='store.saleText')) ba.textwidget(edit=tab_data['sale_time_text'], text=ba.timestring( sale_time, centi=False, timeformat=ba.TimeFormat.MILLISECONDS)) ba.imagewidget(edit=tab_data['sale_img'], opacity=1.0) count = 0 else: ba.textwidget(edit=tab_data['sale_title_text'], text='') ba.textwidget(edit=tab_data['sale_time_text'], text='') ba.imagewidget(edit=tab_data['sale_img'], opacity=0.0) count = get_available_purchase_count(tab_name) if count > 0: ba.textwidget(edit=tab_data['text'], text=str(count)) ba.imagewidget(edit=tab_data['img'], opacity=1.0) else: ba.textwidget(edit=tab_data['text'], text='') ba.imagewidget(edit=tab_data['img'], opacity=0.0)
def _update(self) -> None: # pylint: disable=too-many-branches from ba import SpecialChar, TimeFormat from ba.internal import (get_available_sale_time, get_available_purchase_count) if not self._button: return # Our instance may outlive our UI objects. if self._ticket_text is not None: if _ba.get_account_state() == 'signed_in': sval = ba.charstr(SpecialChar.TICKET) + str( _ba.get_account_ticket_count()) else: sval = '-' ba.textwidget(edit=self._ticket_text, text=sval) available_purchases = get_available_purchase_count() # Old pro sale stuff.. sale_time = get_available_sale_time('extras') # ..also look for new style sales. if sale_time is None: import datetime sales_raw = _ba.get_account_misc_read_val('sales', {}) sale_times = [] try: # Look at the current set of sales; filter any with time # remaining that we don't own. for sale_item, sale_info in list(sales_raw.items()): if not _ba.get_purchased(sale_item): to_end = (datetime.datetime.utcfromtimestamp( sale_info['e']) - datetime.datetime.utcnow()).total_seconds() if to_end > 0: sale_times.append(to_end) except Exception: ba.print_exception('Error parsing sales') if sale_times: sale_time = int(min(sale_times) * 1000) if sale_time is not None: ba.textwidget(edit=self._sale_title_text, text=ba.Lstr(resource='store.saleText')) ba.textwidget(edit=self._sale_time_text, text=ba.timestring( sale_time, centi=False, timeformat=TimeFormat.MILLISECONDS)) ba.imagewidget(edit=self._sale_backing, opacity=1.0) ba.imagewidget(edit=self._available_purchase_backing, opacity=1.0) ba.textwidget(edit=self._available_purchase_text, text='') ba.imagewidget(edit=self._available_purchase_backing, opacity=0.0) else: ba.imagewidget(edit=self._sale_backing, opacity=0.0) ba.textwidget(edit=self._sale_time_text, text='') ba.textwidget(edit=self._sale_title_text, text='') if available_purchases > 0: ba.textwidget(edit=self._available_purchase_text, text=str(available_purchases)) ba.imagewidget(edit=self._available_purchase_backing, opacity=1.0) else: ba.textwidget(edit=self._available_purchase_text, text='') ba.imagewidget(edit=self._available_purchase_backing, opacity=0.0)