SolarFM/src/versions/solarfm-0.0.1/solarfm/core/widgets/dialogs/appchooser_widget.py

73 lines
2.2 KiB
Python

# Python imports
import inspect
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
class AppchooserWidget:
"""docstring for AppchooserWidget."""
def __init__(self):
super(AppchooserWidget, self).__init__()
_GLADE_FILE = f"{settings.get_ui_widgets_path()}/appchooser_ui.glade"
builder = settings.get_builder()
self._builder = Gtk.Builder()
self._builder.add_from_file(_GLADE_FILE)
self._appchooser_menu = self._builder.get_object("appchooser_menu")
self._appchooser_widget = self._builder.get_object("appchooser_widget")
builder.expose_object(f"appchooser_menu", self._appchooser_menu)
builder.expose_object(f"appchooser_widget", self._appchooser_widget)
self._setup_styling()
self._setup_signals()
self._load_widgets()
def _setup_styling(self):
...
def _setup_signals(self):
event_system.subscribe("show_appchooser_menu", self.show_appchooser_menu)
event_system.subscribe("hide_appchooser_menu", self.hide_appchooser_menu)
event_system.subscribe("run_appchooser_launch", self.run_appchooser_launch)
classes = [self]
handlers = {}
for c in classes:
methods = None
try:
methods = inspect.getmembers(c, predicate=inspect.ismethod)
handlers.update(methods)
except Exception as e:
print(repr(e))
self._builder.connect_signals(handlers)
def _load_widgets(self):
...
def show_appchooser_menu(self, widget=None, eve=None):
response = self._appchooser_menu.run()
if response == Gtk.ResponseType.OK:
app_info = self._appchooser_widget.get_app_info()
event_system.emit("open_with_files", app_info)
self.hide_appchooser_menu()
if response == Gtk.ResponseType.CANCEL:
self.hide_appchooser_menu()
def hide_appchooser_menu(self, widget=None, eve=None):
self._appchooser_menu.hide()
def run_appchooser_launch(self, widget=None, eve=None):
self._appchooser_menu.response(Gtk.ResponseType.OK)