def __init__(self, notebook_view, options=None):
GObject.GObject.__init__(self)
self.notebook_view = notebook_view
self.search_entry = SearchEntry()
self.search_entry.connect(
"terms-changed", self.on_search_terms_changed)
self.search_entry.connect(
"key-press-event", self.on_search_entry_key_press_event)
self.back_forward = BackForwardButton()
self.back_forward.connect(
"left-clicked", self.on_nav_back_clicked)
self.back_forward.connect(
"right-clicked", self.on_nav_forward_clicked)
self.navhistory = NavigationHistory(self.back_forward, options)
self.spinner = Gtk.Spinner()
self.all_views = {}
self.view_to_pane = {}
self._globalise_instance()
python类Spinner()的实例源码
def _add_progress_ui(self):
# create toolbar box
self.header = Gtk.HBox()
# add spinner
self.spinner = Gtk.Spinner()
self.header.pack_start(self.spinner, False, False, 6)
# add a url to the toolbar
self.url = Gtk.Label()
self.url.set_ellipsize(Pango.EllipsizeMode.END)
self.url.set_alignment(0.0, 0.5)
self.url.set_text("")
self.header.pack_start(self.url, True, True, 0)
# frame around the box
self.frame = Gtk.Frame()
self.frame.set_border_width(3)
self.frame.add(self.header)
self.pack_start(self.frame, False, False, 6)
# connect the webkit stuff
self.webkit.connect("notify::uri", self._on_uri_changed)
self.webkit.connect("notify::load-status",
self._on_load_status_changed)
def __init__(self, label_text=""):
Gtk.Viewport.__init__(self)
self.spinner = Gtk.Spinner()
self.spinner.set_size_request(48, 48)
# use a table for the spinner (otherwise the spinner is massive!)
spinner_table = Gtk.Table(3, 3, False)
self.spinner_label = Gtk.Label()
self.spinner_label.set_markup('<big>%s</big>' % label_text)
spinner_vbox = Gtk.VBox()
spinner_vbox.pack_start(self.spinner, True, True, 0)
spinner_vbox.pack_start(self.spinner_label, True, True, 10)
spinner_table.attach(spinner_vbox, 1, 2, 1, 2,
Gtk.AttachOptions.EXPAND, Gtk.AttachOptions.EXPAND)
#~ self.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(1.0, 1.0, 1.0))
self.add(spinner_table)
self.set_shadow_type(Gtk.ShadowType.NONE)
def __init__(self, notebook_view, options=None):
GObject.GObject.__init__(self)
self.notebook_view = notebook_view
self.search_entry = SearchEntry()
self.search_entry.connect(
"terms-changed", self.on_search_terms_changed)
self.search_entry.connect(
"key-press-event", self.on_search_entry_key_press_event)
self.back_forward = BackForwardButton()
self.back_forward.connect(
"left-clicked", self.on_nav_back_clicked)
self.back_forward.connect(
"right-clicked", self.on_nav_forward_clicked)
self.navhistory = NavigationHistory(self.back_forward, options)
self.spinner = Gtk.Spinner()
self.all_views = {}
self.view_to_pane = {}
self._globalise_instance()
def _add_progress_ui(self):
# create toolbar box
self.header = Gtk.HBox()
# add spinner
self.spinner = Gtk.Spinner()
self.header.pack_start(self.spinner, False, False, 6)
# add a url to the toolbar
self.url = Gtk.Label()
self.url.set_ellipsize(Pango.EllipsizeMode.END)
self.url.set_alignment(0.0, 0.5)
self.url.set_text("")
self.header.pack_start(self.url, True, True, 0)
# frame around the box
self.frame = Gtk.Frame()
self.frame.set_border_width(3)
self.frame.add(self.header)
self.pack_start(self.frame, False, False, 6)
# connect the webkit stuff
self.webkit.connect("notify::uri", self._on_uri_changed)
self.webkit.connect("notify::load-status",
self._on_load_status_changed)
def __init__(self, label_text=""):
Gtk.Viewport.__init__(self)
self.spinner = Gtk.Spinner()
self.spinner.set_size_request(48, 48)
# use a table for the spinner (otherwise the spinner is massive!)
spinner_table = Gtk.Table(3, 3, False)
self.spinner_label = Gtk.Label()
self.spinner_label.set_markup('<big>%s</big>' % label_text)
spinner_vbox = Gtk.VBox()
spinner_vbox.pack_start(self.spinner, True, True, 0)
spinner_vbox.pack_start(self.spinner_label, True, True, 10)
spinner_table.attach(spinner_vbox, 1, 2, 1, 2,
Gtk.AttachOptions.EXPAND, Gtk.AttachOptions.EXPAND)
#~ self.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(1.0, 1.0, 1.0))
self.add(spinner_table)
self.set_shadow_type(Gtk.ShadowType.NONE)
def on_video_search1_activated(self,searchbox):
""" Start searching when the user presses enter """
# Show a spinner to the user while the results are being retrieved
spinner = Gtk.Spinner()
searching = Gtk.Label("Buscando...")
# iterate through the list items and remove child items
self.video_list.foreach(lambda child: self.video_list.remove(child))
# Show the spinner and searching label
self.video_list.add(spinner)
self.video_list.add(searching)
spinner.start()
# Update the changes
self.video_list.show_all()
#we spawn a new thread to consume the api asynchronously
def start_search():
#for now we use a single backend
self.search_response = self.backend.search(searchbox.get_text())
for search_result in self.search_response.get("items",[]):
if search_result["id"]["kind"] == "youtube#video":
GLib.idle_add(spinner.destroy)
GLib.idle_add(searching.destroy)
GLib.idle_add(self.update_list,search_result)
GLib.idle_add(self.video_list.show)
self.download_thread = threading.Thread(target=start_search)
self.download_thread.daemon = True
self.download_thread.start()
def __init__(self):
Gtk.Grid.__init__(self)
self.spinner = Gtk.Spinner(halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER, expand=True)
self.spinner.start()
self.add(self.spinner)
def handle_message(self, msg: Dict):
if msg['type'] in ['clone', 'restore']:
self.last_message = msg
self.progress_bar.set_fraction(msg['complete'])
if not self.start:
self.start = msg['start'].replace(tzinfo=msg['start'].tzinfo or timezone.utc)
self.update()
if msg.get('finish'):
self.finish()
else:
self.rate.value_label.set_text(msg.get('rate') or 'Initializing')
if not self.syncing and self.last_message.get('syncing'):
self.syncing = Gtk.Box()
label = Gtk.Label("Syncing")
label.get_style_context().add_class('info-key')
label.get_style_context().add_class('dim-label')
self.syncing.add(label)
self.syncing.add(Gtk.Spinner(active=True))
self.syncing.show_all()
self.stats.add(self.syncing)
self.estimated_completion.hide()
if not msg.get('rate'):
self.rate.hide()
elif msg['type'] in ['clone-failed', 'restore-failed']:
self.fail_message = msg
self.finish()
def __init__(self, desktop_file, notification):
GObject.GObject.__init__(self)
Gtk.ListBoxRow.__init__(self)
self.desktop_file = desktop_file
self.notification = notification
self.spinner = Gtk.Spinner()
self.generate()
def __make_headerbar(self):
header = Gtk.HeaderBar()
header.set_show_close_button(True)
header.get_style_context().add_class("revolt-slim")
spinner = Gtk.Spinner()
header.pack_end(spinner)
self.bind_property("network-busy", spinner, "active",
GObject.BindingFlags.DEFAULT)
header.show_all()
return header
def __init__(self, datadir, uifile):
SimpleGtkbuilderApp.__init__(
self, os.path.join(datadir, "ui/gtk3", uifile), "software-center")
# generic data
self.token = None
self.display_name = None
self._login_successful = False
self._whoami_token_reset_nr = 0
#persistent config
configfile = os.path.join(
SOFTWARE_CENTER_CONFIG_DIR, "submit_reviews.cfg")
self.config = get_config(configfile)
# status spinner
self.status_spinner = Gtk.Spinner()
self.status_spinner.set_size_request(32, 32)
self.login_spinner_vbox.pack_start(self.status_spinner, False, False,
0)
self.login_spinner_vbox.reorder_child(self.status_spinner, 0)
self.status_spinner.show()
#submit status spinner
self.submit_spinner = Gtk.Spinner()
self.submit_spinner.set_size_request(*Gtk.icon_size_lookup(
Gtk.IconSize.SMALL_TOOLBAR)[:2])
#submit error image
self.submit_error_img = Gtk.Image()
self.submit_error_img.set_from_stock(Gtk.STOCK_DIALOG_ERROR,
Gtk.IconSize.SMALL_TOOLBAR)
#submit success image
self.submit_success_img = Gtk.Image()
self.submit_success_img.set_from_stock(Gtk.STOCK_APPLY,
Gtk.IconSize.SMALL_TOOLBAR)
#submit warn image
self.submit_warn_img = Gtk.Image()
self.submit_warn_img.set_from_stock(Gtk.STOCK_DIALOG_INFO,
Gtk.IconSize.SMALL_TOOLBAR)
#label size to prevent image or spinner from resizing
self.label_transmit_status.set_size_request(-1,
Gtk.icon_size_lookup(Gtk.IconSize.SMALL_TOOLBAR)[1])
def show_spinner_with_message(self, message):
try:
self.install_first_label.hide()
except AttributeError:
pass
a = Gtk.Alignment.new(0.5, 0.5, 1.0, 1.0)
hb = Gtk.HBox(spacing=12)
hb.show()
a.add(hb)
a.show()
spinner = Gtk.Spinner()
spinner.start()
spinner.show()
hb.pack_start(spinner, False, False, 0)
l = Gtk.Label()
l.set_markup(message)
l.set_use_markup(True)
l.show()
hb.pack_start(l, False, False, 0)
self.vbox.pack_start(a, False, False, 0)
self.vbox.show()
def _build_ui(self):
self.set_border_width(3)
# the frame around the screenshot (placeholder)
self.screenshot = Gtk.VBox()
self.pack_start(self.screenshot, True, True, 0)
self.spinner = Gtk.Spinner()
self.spinner.set_size_request(*self.SPINNER_SIZE)
self.spinner.set_valign(Gtk.Align.CENTER)
self.spinner.set_halign(Gtk.Align.CENTER)
self.screenshot.add(self.spinner)
# clickable screenshot button
self.button = ScreenshotButton()
self.screenshot.pack_start(self.button, True, False, 0)
# unavailable layout
self.unavailable = Gtk.Label(label=_(self.NOT_AVAILABLE_STRING))
self.unavailable.set_alignment(0.5, 0.5)
# force the label state to INSENSITIVE so we get the nice
# subtle etched in look
self.unavailable.set_state(Gtk.StateType.INSENSITIVE)
self.screenshot.add(self.unavailable)
self.thumbnails = ThumbnailGallery(self)
self.thumbnails.set_margin_top(5)
self.thumbnails.set_halign(Gtk.Align.CENTER)
self.pack_end(self.thumbnails, False, False, 0)
self.thumbnails.connect(
"thumb-selected", self.on_thumbnail_selected)
self.button.connect("clicked", self.on_clicked)
self.button.connect('enter-notify-event', self._on_enter)
self.button.connect('leave-notify-event', self._on_leave)
self.show_all()
def __init__(self, datadir, uifile):
SimpleGtkbuilderApp.__init__(
self, os.path.join(datadir, "ui/gtk3", uifile), "software-center")
# generic data
self.token = None
self.display_name = None
self._login_successful = False
self._whoami_token_reset_nr = 0
#persistent config
configfile = os.path.join(
SOFTWARE_CENTER_CONFIG_DIR, "submit_reviews.cfg")
self.config = get_config(configfile)
# status spinner
self.status_spinner = Gtk.Spinner()
self.status_spinner.set_size_request(32, 32)
self.login_spinner_vbox.pack_start(self.status_spinner, False, False,
0)
self.login_spinner_vbox.reorder_child(self.status_spinner, 0)
self.status_spinner.show()
#submit status spinner
self.submit_spinner = Gtk.Spinner()
self.submit_spinner.set_size_request(*Gtk.icon_size_lookup(
Gtk.IconSize.SMALL_TOOLBAR)[:2])
#submit error image
self.submit_error_img = Gtk.Image()
self.submit_error_img.set_from_stock(Gtk.STOCK_DIALOG_ERROR,
Gtk.IconSize.SMALL_TOOLBAR)
#submit success image
self.submit_success_img = Gtk.Image()
self.submit_success_img.set_from_stock(Gtk.STOCK_APPLY,
Gtk.IconSize.SMALL_TOOLBAR)
#submit warn image
self.submit_warn_img = Gtk.Image()
self.submit_warn_img.set_from_stock(Gtk.STOCK_DIALOG_INFO,
Gtk.IconSize.SMALL_TOOLBAR)
#label size to prevent image or spinner from resizing
self.label_transmit_status.set_size_request(-1,
Gtk.icon_size_lookup(Gtk.IconSize.SMALL_TOOLBAR)[1])
def _build_ui(self):
self.set_border_width(3)
# the frame around the screenshot (placeholder)
self.screenshot = Gtk.VBox()
self.pack_start(self.screenshot, True, True, 0)
self.spinner = Gtk.Spinner()
self.spinner.set_size_request(*self.SPINNER_SIZE)
self.spinner.set_valign(Gtk.Align.CENTER)
self.spinner.set_halign(Gtk.Align.CENTER)
self.screenshot.add(self.spinner)
# clickable screenshot button
self.button = ScreenshotButton()
self.screenshot.pack_start(self.button, True, False, 0)
# unavailable layout
self.unavailable = Gtk.Label(label=_(self.NOT_AVAILABLE_STRING))
self.unavailable.set_alignment(0.5, 0.5)
# force the label state to INSENSITIVE so we get the nice
# subtle etched in look
self.unavailable.set_state(Gtk.StateType.INSENSITIVE)
self.screenshot.add(self.unavailable)
self.thumbnails = ThumbnailGallery(self)
self.thumbnails.set_margin_top(5)
self.thumbnails.set_halign(Gtk.Align.CENTER)
self.pack_end(self.thumbnails, False, False, 0)
self.thumbnails.connect(
"thumb-selected", self.on_thumbnail_selected)
self.button.connect("clicked", self.on_clicked)
self.button.connect('enter-notify-event', self._on_enter)
self.button.connect('leave-notify-event', self._on_leave)
self.show_all()
def update_goglib(self):
self.window_update_message = Gtk.Window(
title = _("Changes in library"),
type = Gtk.WindowType.POPUP,
window_position = Gtk.WindowPosition.CENTER_ALWAYS,
resizable = False,
icon = app_icon,
)
self.box_update_message = Gtk.Box(
orientation = Gtk.Orientation.HORIZONTAL
)
self.label_update_message = Gtk.Label(
label = _("Updating GOG library..."),
margin_right = 10,
margin_top = 20,
margin_bottom = 20,
)
self.spinner_update_message = Gtk.Spinner(
active = True,
visible = True,
margin_left = 10,
width_request = 48,
height_request = 48
)
self.box_update_message.pack_start(self.spinner_update_message, True, True, 0)
self.box_update_message.pack_start(self.label_update_message, True, True, 0)
self.window_update_message.add(self.box_update_message)
self.main_window.hide()
if len(self.additional_windows_list) != 0:
for window in self.additional_windows_list:
window.hide()
while Gtk.events_pending():
Gtk.main_iteration()
self.window_update_message.show_all()
command = ['lgogdownloader', '--exclude', '1,2,4,8,16,32','--list-details']
pid, stdin, stdout, stderr = GLib.spawn_async(command,
flags=GLib.SpawnFlags.SEARCH_PATH|GLib.SpawnFlags.DO_NOT_REAP_CHILD,
standard_output=True,
standard_error=True)
io = GLib.IOChannel(stdout)
self.source_id_out = io.add_watch(GLib.IO_IN|GLib.IO_HUP,
self.watch_process,
'update_goglib',
priority=GLib.PRIORITY_HIGH)
def __init__(self, parent, username, cookie, tokens, codeString, vcodetype):
super().__init__(_('Verification..'), parent, Gtk.DialogFlags.MODAL)
self.set_default_size(280, 130)
self.set_border_width(10)
self.username = username
self.cookie = cookie
self.tokens = tokens
self.codeString = codeString
self.vcodetype = vcodetype
box = self.get_content_area()
box.set_spacing(5)
self.vcode_img = Gtk.Image()
box.pack_start(self.vcode_img, True, True, 0)
button_box = Gtk.Box(spacing=5)
box.pack_start(button_box, True, True, 0)
self.vcode_entry = Gtk.Entry()
self.vcode_entry.connect('activate', self.check_entry)
button_box.pack_start(self.vcode_entry, True, True, 0)
if Config.GTK_GE_312:
vcode_refresh = Widgets.IconButton('view-refresh-symbolic')
else:
vcode_refresh = Gtk.Button.new_from_stock(Gtk.STOCK_REFRESH)
vcode_refresh.props.valign = Gtk.Align.CENTER
vcode_refresh.connect('clicked', self.on_vcode_refresh_clicked)
button_box.pack_start(vcode_refresh, False, False, 0)
# show loading process
self.loading_spin = Gtk.Spinner()
self.loading_spin.props.valign = Gtk.Align.CENTER
button_box.pack_start(self.loading_spin, False, False, 0)
vcode_confirm = Gtk.Button.new_from_stock(Gtk.STOCK_OK)
vcode_confirm.connect('clicked', self.on_vcode_confirm_clicked)
vcode_confirm.props.valign = Gtk.Align.END
box.pack_start(vcode_confirm, False, False, 10)
box.show_all()
self.loading_spin.hide()
gutil.async_call(auth.get_signin_vcode, cookie, codeString,
callback=self.update_img)
def __init__(self, recovery, version, media, target, overwrite):
#Run the normal init first
#This sets up lots of common variables as well as translation domain
DellRecoveryToolGTK.__init__(self, recovery)
#init the UI and translate widgets/connect signals
self.widgets = Gtk.Builder()
self.widgets.add_from_file(os.path.join(UIDIR,
'recovery_media_creator.ui'))
#insert pages in reverse order
wizard = self.widgets.get_object('wizard')
titles = {'conf_page': _("Confirm Selections"),
'media_type_page': _("Media Type")
}
for page in ['conf_page', 'media_type_page']:
wizard.insert_page(self.widgets.get_object(page), 0)
wizard.set_page_title(wizard.get_nth_page(0), titles[page])
Gtk.Window.set_default_icon_from_file(os.path.join(SVGDIR, 'dell-dvd.svg'))
translate_widgets(self.widgets)
self.widgets.connect_signals(self)
#setup spinner
self.spinner = Gtk.Spinner()
self.widgets.get_object('spinner_box').add(self.spinner)
self.widgets.get_object('spinner_box').show_all()
self._dbus_iface = None
self.timeout = 0
self.image = ''
(self.dvd_burn_cmd, self.usb_burn_cmd) = find_burners()
try:
self.release = fetch_output(['lsb_release', '-r', '-s']).strip('\n')
self.distributor = fetch_output(['lsb_release', '-i', '-s']).strip('\n').lower()
except RuntimeError:
self.release = '0.00'
self.distributor = 'unknown'
self.arch = ''
for item in ['server', 'enterprise']:
if item in self.distributor:
self.distributor = self.distributor.split(item)[0]
#set any command line arguments for this frontend
self.widgets.get_object('version').set_text(version)
self.media = media
self.path = target
self.overwrite = overwrite
def __init__(self, controller, *args, **kwargs):
self.plugin_widgets = None
oem = 'UBIQUITY_OEM_USER_CONFIG' in os.environ
self.efi = False
with misc.raised_privileges():
self.genuine = magic.check_vendor()
if not oem:
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
builder = Gtk.Builder()
builder.add_from_file('/usr/share/ubiquity/gtk/stepDellBootstrap.ui')
builder.connect_signals(self)
self.controller = controller
self.controller.add_builder(builder)
self.plugin_widgets = builder.get_object('stepDellBootstrap')
self.automated_recovery = builder.get_object('automated_recovery')
self.automated_recovery_box = builder.get_object('automated_recovery_box')
self.automated_combobox = builder.get_object('hard_drive_combobox')
self.interactive_recovery = builder.get_object('interactive_recovery')
self.interactive_recovery_box = builder.get_object('interactive_recovery_box')
self.hdd_recovery = builder.get_object('hdd_recovery')
self.hdd_recovery_box = builder.get_object('hdd_recovery_box')
self.hidden_radio = builder.get_object('hidden_radio')
self.info_box = builder.get_object('info_box')
self.info_spinner = Gtk.Spinner()
builder.get_object('info_spinner_box').add(self.info_spinner)
self.restart_box = builder.get_object('restart_box')
self.err_dialog = builder.get_object('err_dialog')
self.log_dialog = builder.get_object('log_dialog')
#advanced page widgets
icon = builder.get_object('dell_image')
icon.set_tooltip_markup("Dell Recovery Advanced Options")
self.advanced_page = builder.get_object('advanced_window')
self.version_detail = builder.get_object('version_detail')
self.mount_detail = builder.get_object('mountpoint_detail')
self.memory_detail = builder.get_object('memory_detail')
if not (self.genuine and 'UBIQUITY_AUTOMATIC' in os.environ):
builder.get_object('error_box').show()
PluginUI.__init__(self, controller, *args, **kwargs)
def __init__(self):
super().__init__()
self.set_name('SearchBox')
self.set_valign(Gtk.Align.START)
self.set_halign(Gtk.Align.FILL)
self.set_vexpand(False)
self.set_hexpand(True)
self.set_orientation(Gtk.Orientation.HORIZONTAL)
self.entry = Gtk.Entry()
self.entry.set_hexpand(True)
self.entry.set_halign(Gtk.Align.FILL)
self.entry.set_valign(Gtk.Align.START)
self.entry.set_placeholder_text(ENTRY_PLACE_HOLDER)
self.entry.connect(
'icon-release',
lambda *a, **kw: self.reset()
)
self.entry.set_tooltip_text(
_('You can add "-{flags}" at the end to search for types.') +
_('\n\tt - text\n\tl - links\n\tf - files\n\ti - images') +
_('\n\nUse #{number} to filter by index number')
)
self.spinner = Gtk.Spinner()
self.spinner.set_halign(Gtk.Align.END)
self.spinner.set_valign(Gtk.Align.CENTER)
self.spinner.set_margin_right(10)
overlay = Gtk.Overlay()
overlay.add(self.entry)
overlay.add_overlay(self.spinner)
self.buffer.connect('notify::text', self._on_text_changed)
self._timeout_id = 0
self.flags = []
self.add(overlay)
self.show_all()
self._update_icon()
def __init__(self, review_data=None, app_version=None,
logged_in_person=None, useful_votes=None,
first_for_version=True):
GObject.GObject.__init__(self)
self.set_spacing(StockEms.SMALL)
self.version_label = Gtk.Label()
self.version_label.set_alignment(0, 0.5)
self.header = Gtk.HBox()
self.header.set_spacing(StockEms.MEDIUM)
self.body = Gtk.VBox()
self.footer = Gtk.HBox()
self.useful = None
self.yes_like = None
self.no_like = None
self.status_box = Gtk.HBox()
self.delete_status_box = Gtk.HBox()
self.delete_error_img = Gtk.Image()
self.delete_error_img.set_from_stock(
Gtk.STOCK_DIALOG_ERROR,
Gtk.IconSize.SMALL_TOOLBAR)
self.submit_error_img = Gtk.Image()
self.submit_error_img.set_from_stock(
Gtk.STOCK_DIALOG_ERROR,
Gtk.IconSize.SMALL_TOOLBAR)
self.submit_status_spinner = Gtk.Spinner()
self.submit_status_spinner.set_size_request(12, 12)
self.delete_status_spinner = Gtk.Spinner()
self.delete_status_spinner.set_size_request(12, 12)
self.acknowledge_error = Gtk.Button()
label = Gtk.Label()
label.set_markup('<small>%s</small>' % _("OK"))
self.acknowledge_error.add(label)
self.delete_acknowledge_error = Gtk.Button()
delete_label = Gtk.Label()
delete_label.set_markup('<small>%s</small>' % _("OK"))
self.delete_acknowledge_error.add(delete_label)
self.usefulness_error = False
self.delete_error = False
self.modify_error = False
if first_for_version:
self.pack_start(self.version_label, False, False, 0)
self.pack_start(self.header, False, False, 0)
self.pack_start(self.body, False, False, 0)
self.pack_start(self.footer, False, False, StockEms.SMALL)
self.logged_in_person = logged_in_person
self.person = None
self.id = None
self.useful_votes = useful_votes
self._allocation = None
if review_data:
self._build(review_data,
app_version,
logged_in_person,
useful_votes)