def __init__(self, **kwargs):
super(Overview, self).__init__(**kwargs)
Clock.schedule_once(lambda dt: self.setup())
python类schedule_once()的实例源码
def __init__(self, **kwargs):
super(ManageExisting, self).__init__(**kwargs)
Clock.schedule_once(lambda dt: self.setup())
def __init__(self, **kwargs):
super(CreateNewAccount, self).__init__(**kwargs)
Clock.schedule_once(lambda dt: self.setup())
def __init__(self, **kwargs):
super(AddressButton, self).__init__(**kwargs)
Clock.schedule_once(lambda dt: self.setup())
def __init__(self, **kwargs):
super(PWToolbar, self).__init__(**kwargs)
Clock.schedule_once(lambda dt: self.setup())
def __init__(self, **kwargs):
super(AboutChangelog, self).__init__(**kwargs)
Clock.schedule_once(lambda dt: self.load_changelog())
def __init__(self, **kwargs):
super(Controller, self).__init__(**kwargs)
keystore_path = Controller.get_keystore_path()
self.pywalib = PyWalib(keystore_path)
self.screen_history = []
self.register_event_type('on_alias_updated')
Clock.schedule_once(lambda dt: self.load_landing_page())
Window.bind(on_keyboard=self.on_keyboard)
def load_landing_page(self):
"""
Loads the landing page.
"""
try:
# will trigger account data fetching
self.current_account = self.pywalib.get_main_account()
if SCREEN_SWITCH_DELAY:
Clock.schedule_once(
lambda dt: self.screen_manager_current('overview'),
SCREEN_SWITCH_DELAY)
else:
self.screen_manager_current('overview')
except IndexError:
self.load_create_new_account()
def load_switch_account(self):
"""
Loads the switch account screen.
"""
# loads the switch account screen
Clock.schedule_once(
lambda dt: self.screen_manager_current(
'switch_account', direction='left'),
SCREEN_SWITCH_DELAY)
def load_manage_keystores(self):
"""
Loads the manage keystores screen.
"""
# loads the manage keystores screen
if SCREEN_SWITCH_DELAY:
Clock.schedule_once(
lambda dt: self.screen_manager_current(
'manage_keystores', direction='left'),
SCREEN_SWITCH_DELAY)
else:
self.screen_manager_current(
'manage_keystores', direction='left')
def load_about_screen(self):
"""
Loads the about screen.
"""
Clock.schedule_once(
lambda dt: self.screen_manager_current('about', direction='left'),
SCREEN_SWITCH_DELAY)
def send_mail_or_show_profile(self, user_name, instance_open_mail=None):
"""??????? ???? ? ???????? ?????? ??????? ??? ????? ??? ????????
????????? ?????????? ????????????.
type instance_open_mail: <class 'messageviewer.MessageViewer'>;
param instance_open_mail: ???????? ???? ? ??????? ????????????????
?????????;
"""
def _send_mail_or_show_profile(*args):
name_button = args[0][0] # "???????"/"?????????"
if name_button == core.string_lang_item_menu_profile:
progress = \
self.create_window(text=core.string_lang_info_your)
Clock.schedule_once(lambda *arg: self.show_user_profile(
progress, user_name, instance_open_mail), 1)
elif name_button == core.string_lang_write_message_status:
self.send_mail(user_name)
self.create_window(
callback=lambda *args: _send_mail_or_show_profile(args),
param="query", dismiss=True,
text=core.string_lang_username.format(user_name),
button_ok=core.string_lang_item_menu_profile,
button_cancel=core.string_lang_write_message_status)
def update_page_on_forum(self, next_answers=0, current_number_page=0,
*args):
# ????? ??????????/???????? ?????? ? ????? ????????? ??????? ????????
# ? ??????? ?? ?? ?????? ???????, ????? ? ??????????? ???????
# ??????? self.show_topics_forum ???? ???????? ??????????
# ???????? ?????? ? ????????? ???????.
name_forum = args[0]
forum_id = args[1]
number_posts = args[2]
flag = args[3] # ???? None - ????????? ????????? ???????? ?????? -
# ?????????? ?????? ?????, ???? True - ??????? - ???????? ?????
self.screen.screen_manager.screens.pop()
self.screen.screen_manager.current = \
self.screen.screen_manager.screen_names[-1]
progress = self.create_window(text=core.string_lang_forum_update)
if not flag: # ???? ?????????? ?????????? ????? ? ?????
next_answers = number_posts * 20
current_number_page = number_posts
if isinstance(flag, str): # ?????? ??????, ???????? "articles"
flag = flag
Clock.schedule_once(lambda *args: self.show_topics_forum(
progress, name_forum, forum_id, next_answers, number_posts,
current_number_page, flag), 1)
def show_license(self, *args):
def show_license(progress, on_language):
text_license = open("LICENSE/GNU_LICENSE_{}.rst".format(
core.dict_language[on_language])).read()
message = KDialog(underline_color="a6b4bcff",
base_font_size=self.window_text_size,
background_image=core.theme_decorator_window)
message.show(title="GNU_LICENSE:", text=text_license, rst=True,
size_rst=(.9, .7))
progress.body.dismiss()
if len(args) > 1: # ??????? ?????? ? ??????
click_link = args[1]
webbrowser.open(click_link)
return
else:
on_language = args[0] # ?????? '?? ???????/?? ??????????'
progress = self.create_window(text=core.string_lang_wait)
Clock.schedule_once(lambda *args: show_license(progress, on_language),2)
def on_enter(self, *args):
super(ScreenWebView, self).on_enter(*args)
if platform == 'android':
''' on android create webview for webpage '''
self.ids["info_label"].text = "Please wait\nAttaching WebView"
self.webview_lock = True
Clock.schedule_once(self.create_webview, 0)
else:
''' on desktop just launch web browser '''
self.ids["info_label"].text = "Please wait\nLaunching browser"
import webbrowser
webbrowser.open_new(self.url)
def key_back_handler(self, *args):
if self.webview:
if self.webview.canGoBack() == True:
self.webview.goBack()
else:
Clock.schedule_once(self.detach_webview, 0)
else:
App.get_running_app().root.switch_screen()
def detach_webview(self, *args):
if self.webview_lock == False:
if self.webview:
self.webview.loadUrl("about:blank")
self.webview.clearHistory() # refer to android webview api
self.webview.clearCache(True)
self.webview.clearFormData()
self.webview.freeMemory()
#self.webview.pauseTimers()
activity.setContentView(self.view_cached)
Clock.schedule_once(self.quit_screen, 0)
def __init__(self, **kwargs):
#super(SelfRegister, self).__init__(**kwargs)
#print('self registered')
self.register_self()
Clock.schedule_once(self.post_init_setup, 0)
#@mainthread
def open(self, focus=False, *args):
super(TextEditorPopup, self).open(*args)
self.content.ids.inputw.text = self.text
self.content.ids.inputw.cursor = (0, 0)
if focus:
Clock.schedule_once(self.focus_textinput, 0)
def on_parent(self, _, parent):
if parent:
self.col_bg = parent.colors[self.tp]
self.col_transp = parent.transparency
self.font_size = parent.font_size
Clock.schedule_once(self.fade_out_clock, self.ttl)