本文整理汇总了Python中kano.gtk3.buttons.KanoButton.pack_and_align方法的典型用法代码示例。如果您正苦于以下问题:Python KanoButton.pack_and_align方法的具体用法?Python KanoButton.pack_and_align怎么用?Python KanoButton.pack_and_align使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kano.gtk3.buttons.KanoButton
的用法示例。
在下文中一共展示了KanoButton.pack_and_align方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: AudioTemplate
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class AudioTemplate(Gtk.Box):
"""
Template for audio screens
"""
def __init__(self, img_path, title, description):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
if img_path:
self.image = Gtk.Image.new_from_file(img_path)
self.pack_start(self.image, False, False, 0)
self.heading = Heading(title, description)
icon_path = os.path.join(MEDIA_DIR, "play-sound.png")
self.kano_button = KanoButton(text="PLAY SOUND", color="blue",
icon_filename=icon_path)
self.kano_button.pack_and_align()
self.kano_button.set_margin_top(10)
self.pack_start(self.heading.container, False, False, 0)
self.pack_start(self.kano_button.align, False, False, 0)
button_box = Gtk.ButtonBox(spacing=15)
button_box.set_layout(Gtk.ButtonBoxStyle.CENTER)
self.yes_button = KanoButton("YES")
self.yes_button.set_sensitive(False)
self.no_button = KanoButton("NO", color="red")
self.no_button.set_sensitive(False)
button_box.pack_start(self.yes_button, False, False, 0)
button_box.pack_start(self.no_button, False, False, 0)
button_box.set_margin_bottom(5)
self.pack_start(button_box, False, False, 15)
示例2: Template
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class Template(Gtk.Box):
def __init__(
self,
title,
description,
button_text,
is_plug=False,
back_btn=False
):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self.title = Heading(title, description, is_plug, back_btn)
self.title.container.set_margin_bottom(0)
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.align = Gtk.Alignment(xscale=0, yscale=0, xalign=0.5, yalign=0.3)
self.align.add(self.box)
self.kano_button = KanoButton(button_text)
self.kano_button.pack_and_align()
self.kano_button.align.set_padding(0, 30, 0, 0)
self.pack_start(self.title.container, False, False, 0)
self.pack_start(self.align, True, True, 0)
self.pack_end(self.kano_button.align, False, False, 0)
def set_prev_callback(self, cb):
self.title.set_prev_callback(cb)
示例3: __init__
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
def __init__(self, win):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self.win = win
reset_button = KanoButton(text='RESET YOUR DESKTOP', color='orange')
reset_button.connect('button-release-event', self.reset_button_cb)
reset_button.connect('key-release-event', self.reset_button_cb)
reset_button.pack_and_align()
reset_button.align.set(0.5, 0.5, 0, 0)
self.pack_start(reset_button.align, True, True, 0)
示例4: __init__
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
def __init__(self, win):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self.win = win
self.get_style_context().add_class('notebook_page')
reset_button = KanoButton(text=_("RESET YOUR DESKTOP"), color='orange')
reset_button.connect('button-release-event', self.reset_button_cb)
reset_button.connect('key-release-event', self.reset_button_cb)
reset_button.pack_and_align()
reset_button.align.set(0.5, 0.5, 0, 0)
self.pack_start(reset_button.align, True, True, 0)
示例5: NoInternet
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class NoInternet(Gtk.Box):
selected_button = 0
initial_button = 0
def __init__(self, win):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self.win = win
self.win.set_main_widget(self)
# Main image
image = Gtk.Image.new_from_file(media + "/Graphics/no-internet-screen.png")
# Orange button
later_button = OrangeButton(_("Later"))
later_button.connect('button-release-event', self.win.close_window)
# Green button
self.kano_button = KanoButton(_("CONNECT NOW"))
self.kano_button.pack_and_align()
self.kano_button.connect('button-release-event', self.go_to_wifi)
self.kano_button.connect('key-release-event', self.go_to_wifi)
# Text label
text_align = self.create_text_align()
# Place elements
image.set_margin_top(50)
image.set_margin_bottom(30)
self.pack_start(image, False, False, 0)
self.pack_start(text_align, False, False, 2)
self.pack_start(self.kano_button.align, False, False, 10)
self.pack_start(later_button, False, False, 3)
# Refresh window
self.win.show_all()
def go_to_wifi(self, widget=None, event=None):
self.win.clear_win()
SetWifi(self.win)
def create_text_align(self):
label = Gtk.Label(_("You need internet to continue"))
label.get_style_context().add_class('about_version')
align = Gtk.Alignment(xalign=0.5, xscale=0, yalign=0, yscale=0)
align.add(label)
return align
示例6: ScrolledWindowTemplate
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class ScrolledWindowTemplate(Gtk.Box):
def __init__(
self,
title,
description,
button_text,
orange_button_text=None
):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self.sw = ScrolledWindow()
self.sw.apply_styling_to_widget(wide=False)
self.title = Heading(title, description)
self.kano_button = KanoButton(button_text)
self.kano_button.pack_and_align()
self.pack_start(self.title.container, False, False, 0)
self.pack_start(self.sw, True, True, 0)
if orange_button_text:
box_align = Gtk.Alignment(xscale=0, xalign=0.5)
button_box = Gtk.ButtonBox(
orientation=Gtk.Orientation.HORIZONTAL, spacing=40
)
label = Gtk.Label("")
self.orange_button = OrangeButton(orange_button_text)
button_box.pack_start(label, False, False, 0)
button_box.pack_start(self.kano_button.align, False, False, 0)
button_box.pack_start(self.orange_button, False, False, 0)
box_align.add(button_box)
self.pack_start(box_align, False, False, 0)
else:
self.pack_start(self.kano_button.align, False, False, 0)
def get_scrolled_window(self):
return self.sw
示例7: LoggedIn
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class LoggedIn(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='Profile')
self.set_size_request(200, 150)
self.set_decorated(False)
self.set_position(Gtk.WindowPosition.CENTER)
self.set_resizable(False)
self.ok_button = KanoButton(_("OK"))
self.ok_button.pack_and_align()
self.ok_button.set_padding(20, 20, 0, 0)
self.ok_button.connect("clicked", Gtk.main_quit)
self.title = Heading(_("Logged in!"), _("You're already logged in"))
self.main_container = Gtk.Box(
orientation=Gtk.Orientation.VERTICAL, spacing=0)
self.add(self.main_container)
self.main_container.pack_start(self.title.container, False, False, 0)
self.main_container.pack_start(self.ok_button.align, False, False, 0)
# To get a logout button, uncomment out the lines below
#self.logout_button = OrangeButton(_("Log out?"))
#self.logout_button.connect("clicked", self.logout)
#self.main_container.pack_start(self.logout_button, False, False, 0)
self.connect('delete-event', Gtk.main_quit)
self.show_all()
def logged_out_screen(self):
for child in self.main_container:
self.main_container.remove(child)
self.title.set_text(_("Logged out!"), "")
self.main_container.pack_start(self.title.container, False, False, 0)
self.main_container.pack_start(self.alignment, False, False, 0)
def logout(self, event):
remove_token()
self.logged_out_screen()
def close_window(self, event, button, win):
self.ok_button.disconnect_handlers()
cursor.arrow_cursor(None, None, win)
Gtk.main_quit()
示例8: __init__
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
def __init__(self, cb):
super(CharacterWindow, self).__init__()
self.get_style_context().add_class("character_window")
self.set_decorated(False)
self.close_cb = cb
self.char_edit = CharacterCreator(randomise=True)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.add(vbox)
vbox.pack_start(self.char_edit, False, False, 0)
button = KanoButton("OK")
button.connect("clicked", self.close_window)
button.pack_and_align()
self.connect("delete-event", Gtk.main_quit)
self.set_keep_above(True)
vbox.pack_start(button.align, False, False, 10)
self.show_all()
self.char_edit.show_pop_up_menu_for_category("judoka-faces")
self.char_edit.select_category_button("judoka-faces")
示例9: AudioHintTemplate
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class AudioHintTemplate(TopImageTemplate):
"""
Template for hints for audio setup
"""
def __init__(self, img_path, title, description, kano_button_text,
hint_text=""):
TopImageTemplate.__init__(self, img_path)
self.heading = HintHeading(title, description, hint_text)
self.pack_start(self.heading.container, False, False, 0)
self.heading.description.set_margin_bottom(0)
self.heading.container.set_margin_bottom(0)
self.heading.container.set_size_request(590, -1)
self.heading.container.set_spacing(0)
self.kano_button = KanoButton(kano_button_text)
self.kano_button.set_margin_top(30)
self.kano_button.set_margin_bottom(30)
self.kano_button.pack_and_align()
self.pack_start(self.kano_button.align, False, False, 0)
示例10: PasswordScreen
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class PasswordScreen(Gtk.Box):
def __init__(
self,
win,
wiface,
network_name,
encryption,
wrong_password=False
):
'''
Show the screen with the option of adding a password
and connecting to a network
'''
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self._win = win
self._win.set_main_widget(self)
self._win.top_bar.enable_prev()
self._wiface = wiface
self._network_name = network_name
self._encryption = encryption
# Keep track if the user has already entered the wrong password before
# so that we only pack the "password incorrect" label once
self._wrong_password_used_before = False
self._heading = Heading(
"Connect to the network",
self._network_name,
self._win.is_plug(),
True
)
self._heading.set_prev_callback(self._refresh_networks)
self._heading.container.set_margin_right(20)
self._heading.container.set_margin_left(20)
if wrong_password:
image_path = os.path.join(img_dir, "password-fail.png")
wrong_password = self._create_wrong_password_label()
self._heading.container.pack_start(wrong_password, True, True, 0)
else:
image_path = os.path.join(img_dir, "password.png")
self._padlock_image = Gtk.Image.new_from_file(image_path)
self._password_entry = Gtk.Entry()
self._password_entry.set_placeholder_text("Password")
self._password_entry.set_visibility(False)
self._password_entry.get_style_context().add_class("password_entry")
self._password_entry.set_margin_left(60)
self._password_entry.set_margin_right(60)
self._password_entry.connect("key-release-event",
self._set_button_sensitive)
# If Enter key is pressed on the password entry, we want to act as
# though the connect_btn was clicked
self._password_entry.connect(
"key-release-event", self._on_connect_key_wrapper
)
self._connect_btn = KanoButton("CONNECT")
self._connect_btn.connect('clicked', self._on_connect)
self._connect_btn.set_sensitive(False)
self._connect_btn.set_margin_right(100)
self._connect_btn.set_margin_left(100)
self._connect_btn.pack_and_align()
self._show_password = Gtk.CheckButton.new_with_label("Show password")
self._show_password.get_style_context().add_class("show_password")
self._show_password.connect("toggled",
self._change_password_entry_visiblity)
self._show_password.set_active(True)
self._show_password.set_margin_left(100)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.add(vbox)
vbox.pack_start(self._heading.container, False, False, 10)
vbox.pack_start(self._padlock_image, False, False, 10)
vbox.pack_start(self._password_entry, False, False, 10)
vbox.pack_start(self._show_password, False, False, 10)
vbox.pack_end(self._connect_btn.align, False, False, 40)
# Entry should have the keyboard focus
self._password_entry.grab_focus()
self.show_all()
def _create_wrong_password_label(self):
label = Gtk.Label("Password incorrect")
label.get_style_context().add_class("wrong_password_label")
return label
def _change_password_entry_visiblity(self, widget):
'''
Depending on the checkbox, change the writing in the
password entry to be readable.
'''
#.........这里部分代码省略.........
示例11: SetAbout
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class SetAbout(Gtk.Box):
selected_button = 0
initial_button = 0
def __init__(self, win):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self.win = win
self.win.set_main_widget(self)
self.win.top_bar.enable_prev()
self.win.change_prev_callback(self.win.go_to_home)
image = Gtk.Image.new_from_file(media + "/Graphics/about-screen.png")
version_align = self.create_align(
"Kano OS v.{version}".format(version=get_current_version()),
'about_version'
)
space_align = self.create_align(
_("Disk space used: {used}B / {total}B").format(**get_space_available())
)
try:
celsius = u"{:.1f}\N{DEGREE SIGN}C".format(get_temperature())
except ValueError:
celsius = "?"
temperature_align = self.create_align(
_(u"Temperature: {celsius}").format(celsius=celsius)
)
model_align = self.create_align(
_("Model: {model}").format(model=get_model_name())
)
terms_and_conditions = OrangeButton(_("Terms and conditions"))
terms_and_conditions.connect(
'button_release_event', self.show_terms_and_conditions
)
credits_button = OrangeButton(_("Meet the team"))
credits_button.connect(
'button_release_event', self.show_credits
)
changelog_button = OrangeButton(_("Changelog"))
changelog_button.connect(
'button_release_event', self.show_changelog
)
self.kano_button = KanoButton(_("BACK"))
self.kano_button.pack_and_align()
hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=0)
hbox.pack_start(terms_and_conditions, False, False, 4)
hbox.pack_start(credits_button, False, False, 4)
hbox.pack_start(changelog_button, False, False, 4)
hbutton_container = Gtk.Alignment(
xalign=0.5, xscale=0, yalign=0, yscale=0
)
hbutton_container.add(hbox)
image.set_margin_top(10)
self.pack_start(image, False, False, 10)
self.pack_start(version_align, False, False, 2)
self.pack_start(space_align, False, False, 1)
self.pack_start(temperature_align, False, False, 1)
self.pack_start(model_align, False, False, 1)
self.pack_start(hbutton_container, False, False, 3)
self.pack_start(self.kano_button.align, False, False, 10)
self.kano_button.connect('button-release-event', self.win.go_to_home)
self.kano_button.connect('key-release-event', self.win.go_to_home)
# Refresh window
self.win.show_all()
def create_align(self, text, css_class='about_label'):
'''This styles the status information in the 'about' dialog
'''
label = Gtk.Label(text)
label.get_style_context().add_class(css_class)
align = Gtk.Alignment(xalign=0.5, xscale=0, yalign=0, yscale=0)
align.add(label)
return align
def show_terms_and_conditions(self, widget, event):
'''This is the dialog containing the terms and conditions - same as
shown before creating an account
'''
legal_text = ''
for file in os.listdir(legal_dir):
with open(legal_dir + file, 'r') as f:
legal_text = legal_text + f.read() + '\n\n\n'
kdialog = KanoDialog(_("Terms and conditions"), "",
scrolled_text=legal_text,
parent_window=self.win)
kdialog.run()
#.........这里部分代码省略.........
示例12: SetAccount
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class SetAccount(Gtk.Box):
def __init__(self, win):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self.win = win
self.win.set_main_widget(self)
self.win.top_bar.enable_prev()
self.win.change_prev_callback(self.win.go_to_home)
self.added_or_removed_account = False
main_heading = Heading(
_("System account settings"),
_("Set your account")
)
self.pass_button = KanoButton(_("CHANGE PASSWORD"))
self.pass_button.pack_and_align()
self.pass_button.connect('button-release-event', self.go_to_password_screen)
self.pass_button.connect('key-release-event', self.go_to_password_screen)
self.add_button = KanoButton(_("ADD ACCOUNT"))
self.add_button.set_size_request(200, 44)
self.add_button.connect('button-release-event', self.add_account)
self.add_button.connect('key-release-event', self.add_account)
self.remove_button = KanoButton(_("REMOVE ACCOUNT"), color='red')
self.remove_button.set_size_request(200, 44)
self.remove_button.connect('button-release-event', self.remove_account_dialog)
self.remove_button.connect('key-release-event', self.remove_account_dialog)
button_container = Gtk.Box()
button_container.pack_start(self.add_button, False, False, 10)
button_container.pack_start(self.remove_button, False, False, 10)
button_align = Gtk.Alignment(xscale=0, xalign=0.5)
button_align.add(button_container)
accounts_heading = Heading(
_("Accounts"),
_("Add or remove accounts")
)
# Check if we already scheduled an account add or remove
# We import kano-init locally to avoid circular dependency
# the packages.
try:
from kano_init.utils import is_any_task_scheduled
if is_any_task_scheduled():
self.disable_buttons()
except ImportError:
self.disable_buttons()
self.pack_start(main_heading.container, False, False, 0)
self.pack_start(self.pass_button.align, False, False, 0)
self.pack_start(accounts_heading.container, False, False, 0)
self.pack_start(button_align, False, False, 0)
self.win.show_all()
def go_to_password_screen(self, widget, event):
if not hasattr(event, 'keyval') or event.keyval == Gdk.KEY_Return:
self.win.clear_win()
SetPassword(self.win)
# Gets executed when ADD button is clicked
def add_account(self, widget=None, event=None):
if not hasattr(event, 'keyval') or event.keyval == Gdk.KEY_Return:
kdialog = None
try:
# add new user command
add_user()
except UserError as e:
kdialog = kano_dialog.KanoDialog(
_("Error creating new user"),
str(e),
parent_window=self.win
)
else:
kdialog = kano_dialog.KanoDialog(
_("Reboot the system"),
_("A new account will be created next time you reboot."),
parent_window=self.win
)
# Tell user to reboot to see changes
common.need_reboot = True
kdialog.run()
self.disable_buttons()
# Gets executed when REMOVE button is clicked
def remove_account_dialog(self, widget=None, event=None):
if not hasattr(event, 'keyval') or event.keyval == Gdk.KEY_Return:
# Bring in message dialog box
kdialog = kano_dialog.KanoDialog(
_("Are you sure you want to delete the current user?"),
#.........这里部分代码省略.........
示例13: OverscanTemplate
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class OverscanTemplate(Gtk.Box):
def __init__(self, win, title, description, original_overscan=None):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self.kano_button = KanoButton("APPLY CHANGES")
self.kano_button.connect("button-release-event", self.apply_changes)
self.kano_button.pack_and_align()
self.heading = Heading(title, description)
self.pack_start(self.heading.container, False, False, 0)
self.win = win
self.win.set_main_widget(self)
self.win.top_bar.enable_prev()
# Launch pipe for the overscan c code
launch_pipe()
self.overscan_values = get_overscan_status()
self.original_overscan = original_overscan
# Pass original overscan values between the classes
# If original_overscan hasn't been generated yet, get it from current overscan status
# Alternatively, maybe read this from a file in future
if original_overscan is None:
self.original_overscan = get_overscan_status()
# Reset button
self.reset_button = OrangeButton()
reset_image = Gtk.Image().new_from_file(common.media + "/Icons/reset.png")
self.reset_button.set_image(reset_image)
self.reset_button.connect("button_press_event", self.reset)
def apply_changes(self, button, event):
# Apply changes
write_overscan_values(self.overscan_values)
self.original_overscan = self.overscan_values
set_config_comment('kano_screen_used', get_model())
# Tell user to reboot to see changes
common.need_reboot = True
self.go_to_display()
def adjust(self, adj, varname):
self.overscan_values[varname] = int(adj.get_value())
set_overscan_status(self.overscan_values)
def adjust_all(self, adj):
self.overscan_values['top'] = int(adj.get_value())
self.overscan_values['bottom'] = int(adj.get_value())
self.overscan_values['left'] = int(adj.get_value())
self.overscan_values['right'] = int(adj.get_value())
set_overscan_status(self.overscan_values)
def go_to_display(self, widget=None, button=None):
self.reset()
self.win.clear_win()
SetDisplay(self.win)
def reset(self, widget=None, event=None):
pass
示例14: ResetPassword
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
class ResetPassword(Gtk.Box):
def __init__(self, win):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
self.win = win
self.win.set_decorated(False)
self.win.set_main_widget(self)
self.heading = Heading(
_("Reset your password"),
_("We'll send a new password to your email")
)
self.pack_start(self.heading.container, False, False, 10)
self.labelled_entries = LabelledEntries([
{"heading": _("Email"), "subheading": ""}
])
align = Gtk.Alignment(xscale=0, xalign=0.5)
self.pack_start(align, False, False, 15)
self.labelled_entries.set(0, 0, 1, 1)
self.labelled_entries.set_hexpand(True)
align.add(self.labelled_entries)
# Read email from file
user_email = get_email()
self.email_entry = self.labelled_entries.get_entry(0)
self.email_entry.set_text(user_email)
self.email_entry.connect("key-release-event", self.activate)
self.button = KanoButton(_("Reset password").upper())
self.button.pack_and_align()
self.button.connect("button-release-event", self.activate)
self.button.connect("key-release-event", self.activate)
self.button.set_padding(30, 30, 0, 0)
self.pack_start(self.button.align, False, False, 0)
self.win.show_all()
def activate(self, widget, event):
if not hasattr(event, 'keyval') or event.keyval == 65293:
watch_cursor = Gdk.Cursor(Gdk.CursorType.WATCH)
self.win.get_window().set_cursor(watch_cursor)
self.button.set_sensitive(False)
self.button.start_spinner()
thread = threading.Thread(target=self.send_new_password)
thread.start()
def send_new_password(self):
# User may change email
email = self.labelled_entries.get_entry(0).get_text()
success, text = reset_password(email)
if success:
title = _("Success!")
description = _("Sent new password to your email")
button_dict = {
_("Go to login screen").upper(): {"return_value": 12},
_("Quit").upper(): {"return_value": 10, "color": "red"}
}
else:
title = _("Something went wrong!")
description = text
button_dict = {
_("Quit").upper(): {"return_value": 10, "color": "red"},
_("Try again").upper(): {"return_value": 11}
}
GObject.idle_add(
self.finished_thread_cb,
title,
description,
button_dict
)
def finished_thread_cb(self, title, description, button_dict):
kdialog = KanoDialog(
title,
description,
button_dict=button_dict,
parent_window=self.win
)
response = kdialog.run()
self.win.get_window().set_cursor(None)
self.button.stop_spinner()
self.button.set_sensitive(True)
if response == 10:
Gtk.main_quit()
# stay put
elif response == 11:
pass
elif response == 12:
self.go_to_login_screen()
def go_to_login_screen(self):
#.........这里部分代码省略.........
示例15: NetworkScreen
# 需要导入模块: from kano.gtk3.buttons import KanoButton [as 别名]
# 或者: from kano.gtk3.buttons.KanoButton import pack_and_align [as 别名]
#.........这里部分代码省略.........
return network_box
def _add_border_to_widget(self, widget):
'''Add a grey border to the widget that is entered as an argument.
This is done by creating a grey event box and packing a white box with
a margin in it.
'''
white_foreground = Gtk.EventBox()
white_foreground.get_style_context().add_class('white')
white_foreground.set_margin_left(3)
white_foreground.set_margin_bottom(3)
white_foreground.set_margin_top(3)
white_foreground.set_margin_right(3)
# Pack the scrolled window into an event box to give the illusion of a
# border
grey_border = Gtk.EventBox()
grey_border.get_style_context().add_class('grey')
grey_border.add(white_foreground)
white_foreground.add(widget)
return grey_border
def _create_refresh_connect_buttons(self):
'''Create the buttons used for the refresh button and the
to connect to a network, and pack them into a button box.
Returns the button box.
'''
self._connect_btn = KanoButton(_("CONNECT"))
self._connect_btn.pack_and_align()
self.connect_handler = self._connect_btn.connect(
'clicked', self._first_time_connect
)
self._connect_btn.set_sensitive(False)
self._refresh_btn = self._create_refresh_button()
# For now, show both connect and refresh buttons
buttonbox = Gtk.ButtonBox()
buttonbox.set_layout(Gtk.ButtonBoxStyle.CENTER)
buttonbox.set_spacing(10)
buttonbox.pack_start(self._refresh_btn, False, False, 0)
buttonbox.pack_start(self._connect_btn.align, False, False, 0)
if self._win.is_plug():
self._skip_btn = WhiteButton(_("Skip"))
buttonbox.pack_start(self._skip_btn, False, False, 0)
self._skip_btn.connect('clicked', self.skip)
else:
blank_label = Gtk.Label("")
buttonbox.pack_start(blank_label, False, False, 0)
return buttonbox
# Attached to a callback, hence the extra argument
def skip(self, skip_btn=None):
# Exit with an extreme exit code so the init-flow knows the user
# pressed SKIP
sys.exit(100)
def _set_connect_btn_status(self, connect=True):
self._connect_btn.disconnect(self.connect_handler)