def callback(self, sender): func, *args = sender.callback_args if not hasattr(sender, 'no_sender'): args = list(itertools.chain((sender, ), args)) if not hasattr(sender, 'not_threaded'): threads.run_threaded(func, *args) else: func(*args)
def make_account_menu_item(self, username: str, password: str, toon: str) -> rumps.MenuItem: account_menu = rumps.MenuItem(toon) account_menu.add( rumps.MenuItem('Login', callback=lambda _: threads.run_threaded( self.app.toontown.launch, username, password))) account_menu.add( rumps.MenuItem('Edit', callback=lambda _: self.edit_account( username, password, toon))) account_menu.add(None) account_menu.add( rumps.MenuItem( 'Delete', callback=lambda _: self.delete_account(username, toon))) return account_menu
def callback(self, sender: t.Optional[rumps.MenuItem] = None) -> None: threads.run_threaded(self._callback, sender)
account_menu_item = self.app.menu[toon] if new_username := popup_question('Enter Username:'******'Enter Password:'******'Enter Main Toon:'): toon = new_toon account_menu_item.title = toon self.app.toontown_accounts.update(username, password=password, toon=toon) for title, menu_item in account_menu_item.items(): if title == 'Login': menu_item.set_callback(lambda _: threads.run_threaded( self.app.toontown.launch, username, password)) elif title == 'Edit': menu_item.set_callback( lambda _: self.edit_account(username, password, toon)) elif title == 'Delete': menu_item.set_callback( lambda _: self.delete_account(username, toon)) def delete_account(self, username: str, toon: str) -> None: self.app.toontown_accounts.delete(username) self.app.delete(toon)