A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/themix-project/themix-gui/commit/d972433390a08548c6756bf760786f124e68385c below:

show UI overlay for long o… · themix-project/themix-gui@d972433 · GitHub

6 6

import shutil

7 7

import traceback

8 8 9 -

from gi.repository import Gtk, Gio

9 +

from gi.repository import Gtk, Gio, GLib, Gdk

10 10 11 11

from .i18n import _

12 12

from .config import USER_COLORS_DIR, SCRIPT_DIR

@@ -129,7 +129,7 @@ def add_simple_action(self, action_name, callback):

129 129

return action

130 130 131 131 132 -

class OomoxApplicationWindow(WindowWithActions): # pylint: disable=too-many-instance-attributes

132 +

class OomoxApplicationWindow(WindowWithActions): # pylint: disable=too-many-instance-attributes,too-many-public-methods

133 133 134 134

colorscheme_name = None

135 135

colorscheme_path = None

@@ -152,6 +152,8 @@ class OomoxApplicationWindow(WindowWithActions): # pylint: disable=too-many-ins

152 152

preset_list = None

153 153

preview = None

154 154

spinner = None

155 +

spinner_message = None

156 +

spinner_revealer = None

155 157 156 158

_currently_focused_widget = None

157 159

_inhibit_id = None

@@ -345,7 +347,9 @@ def load_colorscheme(self, colorscheme):

345 347

self.colorscheme = colorscheme

346 348

self._select_theme_plugin()

347 349

self._select_icons_plugin()

348 -

self.generate_terminal_colors()

350 +

self.generate_terminal_colors(callback=self._load_colorscheme_callback)

351 + 352 +

def _load_colorscheme_callback(self):

349 353

try:

350 354

self.preview.update_preview(

351 355

colorscheme=self.colorscheme,

@@ -371,12 +375,18 @@ def load_colorscheme(self, colorscheme):

371 375

error_dialog.run()

372 376

error_dialog.destroy()

373 377 378 +

@staticmethod

379 +

def schedule_task(task, *args):

380 +

Gdk.threads_add_idle(GLib.PRIORITY_LOW, task, *args)

381 + 374 382

def on_preset_selected(self, selected_preset, selected_preset_path):

375 383

self.ask_unsaved_changes()

376 384

self.colorscheme_name = selected_preset

377 385

self.colorscheme_path = selected_preset_path

378 -

self.load_colorscheme(read_colorscheme_from_path(selected_preset_path))

386 +

read_colorscheme_from_path(selected_preset_path, callback=self._on_preset_selected_callback)

379 387 388 +

def _on_preset_selected_callback(self, colorscheme):

389 +

self.load_colorscheme(colorscheme)

380 390

self.colorscheme_is_user = is_user_colorscheme(self.colorscheme_path)

381 391

self.theme_edit.open_theme(self.colorscheme)

382 392

self._unset_save_needed()

@@ -389,8 +399,15 @@ def theme_reload(self):

389 399

)

390 400

return self.colorscheme

391 401 392 -

def generate_terminal_colors(self):

393 -

self.colorscheme.update(generate_terminal_colors_for_oomox(self.colorscheme))

402 +

def generate_terminal_colors(self, callback):

403 +

def _generate_terminal_colors(colors):

404 +

self.colorscheme.update(colors)

405 +

callback()

406 + 407 +

generate_terminal_colors_for_oomox(

408 +

self.colorscheme,

409 +

app=self, result_callback=_generate_terminal_colors,

410 +

)

394 411 395 412

def on_color_edited(self, colorscheme):

396 413

self.load_colorscheme(colorscheme)

@@ -400,18 +417,27 @@ def reload_presets(self):

400 417

self.preset_list.load_presets()

401 418

self.preset_list.focus_preset_by_filepath(self.colorscheme_path)

402 419 403 -

def disable(self):

404 -

self._currently_focused_widget = self.get_focus()

405 -

self.preset_list.set_sensitive(False)

406 -

self.theme_edit.set_sensitive(False)

407 -

Gtk.main_iteration_do(False)

408 -

self.spinner.start()

420 +

def disable(self, message=''):

421 +

def disable_ui_callback():

422 +

self._currently_focused_widget = self.get_focus()

423 +

self.spinner_revealer.set_reveal_child(True)

424 +

self.preset_list.set_sensitive(False)

425 +

self.theme_edit.set_sensitive(False)

426 +

Gtk.main_iteration_do(False)

427 +

self.spinner_message.set_text(message)

428 +

self.spinner.start()

429 + 430 +

GLib.timeout_add(0, disable_ui_callback, priority=GLib.PRIORITY_HIGH)

409 431 410 432

def enable(self):

411 -

self.preset_list.set_sensitive(True)

412 -

self.theme_edit.set_sensitive(True)

413 -

self.set_focus(self._currently_focused_widget)

414 -

self.spinner.stop()

433 +

def enable_ui_callback():

434 +

self.spinner_revealer.set_reveal_child(False)

435 +

self.preset_list.set_sensitive(True)

436 +

self.theme_edit.set_sensitive(True)

437 +

self.set_focus(self._currently_focused_widget)

438 +

self.spinner.stop()

439 + 440 +

GLib.idle_add(enable_ui_callback, priority=GLib.PRIORITY_LOW)

415 441 416 442

def show_help(self):

417 443

# @TODO: refactor to use .set_help_overlay() ?

@@ -647,10 +673,23 @@ def _init_headerbar(self): # pylint: disable=too-many-locals,too-many-statement

647 673 648 674

#

649 675 650 -

self.spinner = Gtk.Spinner()

651 -

self.headerbar.pack_end(self.spinner)

652 676

self.set_titlebar(self.headerbar)

653 677 678 +

def _init_status_spinner(self):

679 +

self.spinner = Gtk.Spinner()

680 +

self.spinner_message = Gtk.Label()

681 +

revealer_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10)

682 +

revealer_box.add(self.spinner)

683 +

revealer_box.add(self.spinner_message)

684 +

revealer_frame = Gtk.Frame()

685 +

revealer_frame.get_style_context().add_class('app-notification')

686 +

revealer_frame.add(revealer_box)

687 +

self.spinner_revealer = Gtk.Revealer()

688 +

self.spinner_revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_DOWN)

689 +

self.spinner_revealer.set_halign(Gtk.Align.CENTER)

690 +

self.spinner_revealer.set_valign(Gtk.Align.START)

691 +

self.spinner_revealer.add(revealer_frame)

692 + 654 693

def _init_window(self):

655 694

self.set_wmclass("oomox", "Oomox")

656 695

self.set_role("Oomox-GUI")

@@ -661,9 +700,14 @@ def _init_window(self):

661 700

)

662 701 663 702

self._init_headerbar()

703 +

self._init_status_spinner()

664 704 665 705

self.box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)

666 -

self.add(self.box)

706 +

overlay = Gtk.Overlay()

707 +

overlay.add(self.box)

708 +

overlay.add_overlay(self.spinner_revealer)

709 +

self.add(overlay)

710 +

# self.add(self.box)

667 711 668 712

self.paned_box = Gtk.Paned(orientation=Gtk.Orientation.HORIZONTAL)

669 713

self.paned_box.set_wide_handle(True)

@@ -690,6 +734,10 @@ def _init_actions(self):

690 734

"export_plugin_{}".format(plugin_name), self._on_export_plugin

691 735

)

692 736 737 +

def _init_plugins(self):

738 +

for plugin in IMPORT_PLUGINS.values():

739 +

plugin.set_app(self)

740 + 693 741

def __init__(self, application):

694 742

super().__init__(

695 743

application=application,

@@ -702,6 +750,7 @@ def __init__(self, application):

702 750 703 751

self._init_actions()

704 752

self._init_window()

753 +

self._init_plugins()

705 754 706 755

self.preset_list = ThemePresetList(

707 756

preset_select_callback=self.on_preset_selected


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4