Port UI to GTK 4 (close #85)
This commit is contained in:
parent
6ba8bc550f
commit
75b99e5820
36 changed files with 1730 additions and 3285 deletions
|
|
@ -5,11 +5,11 @@ import logging
|
|||
import urllib
|
||||
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gio, Gtk, Gdk, GLib
|
||||
gi.require_version('Gtk', '4.0')
|
||||
gi.require_version('Adw', '1')
|
||||
from gi.repository import Gio, Gtk, Gdk, GLib, Adw
|
||||
|
||||
from .window import Window
|
||||
from .infodialog import InfoDialog
|
||||
|
||||
|
||||
|
||||
|
|
@ -25,9 +25,18 @@ class Application(Gtk.Application):
|
|||
self._window = None
|
||||
self._info_dialog = None
|
||||
self._verbosity = logging.WARNING
|
||||
#self.create_action('quit', self.quit, ['<primary>q'])
|
||||
#self.create_action('about', self.on_about_action)
|
||||
#self.create_action('preferences', self.on_preferences_action)
|
||||
self.set_accels_for_action('window.close', ['<primary>q'])
|
||||
self.set_accels_for_action('win.show-help-overlay', ['<primary>k'])
|
||||
self.set_accels_for_action('app.info', ['<primary>i'])
|
||||
self.set_accels_for_action('win.connect', ['<primary>c'])
|
||||
self.set_accels_for_action('win.play', ['<primary>p'])
|
||||
self.set_accels_for_action('win.clear-playlist', ['<primary>r'])
|
||||
self.set_accels_for_action('win.toggle-fullscreen', ['F11'])
|
||||
self.set_accels_for_action('win.search-library', ['<primary>f'])
|
||||
self.set_accels_for_action('win.panel("0")', ['<primary>KP_1'])
|
||||
self.set_accels_for_action('win.panel("1")', ['<primary>KP_2'])
|
||||
self.set_accels_for_action('win.panel("2")', ['<primary>KP_3'])
|
||||
self.set_accels_for_action('win.panel("3")', ['<primary>KP_4'])
|
||||
|
||||
|
||||
def do_startup(self):
|
||||
|
|
@ -37,7 +46,7 @@ class Application(Gtk.Application):
|
|||
self._set_default_settings()
|
||||
self._load_css()
|
||||
self._setup_actions()
|
||||
self._load_appmenu()
|
||||
self._setup_adw()
|
||||
|
||||
|
||||
def do_activate(self):
|
||||
|
|
@ -48,10 +57,15 @@ class Application(Gtk.Application):
|
|||
|
||||
|
||||
def on_menu_info(self, action, value):
|
||||
if not self._info_dialog:
|
||||
self._info_dialog = InfoDialog()
|
||||
self._info_dialog.run()
|
||||
self._info_dialog.hide()
|
||||
self._info_dialog = Adw.AboutDialog()
|
||||
self._info_dialog.set_application_icon("xyz.suruatoel.mcg")
|
||||
self._info_dialog.set_application_name("CoverGrid")
|
||||
self._info_dialog.set_version("3.2.1")
|
||||
self._info_dialog.set_comments("CoverGrid is a client for the Music Player Daemon, focusing on albums instead of single tracks.")
|
||||
self._info_dialog.set_website("https://www.suruatoel.xyz/codes/mcg")
|
||||
self._info_dialog.set_license_type(Gtk.License.GPL_3_0)
|
||||
self._info_dialog.set_issue_url("https://git.suruatoel.xyz/coderkun/mcg")
|
||||
self._info_dialog.present()
|
||||
|
||||
|
||||
def on_menu_quit(self, action, value):
|
||||
|
|
@ -70,15 +84,15 @@ class Application(Gtk.Application):
|
|||
|
||||
|
||||
def _set_default_settings(self):
|
||||
settings = Gtk.Settings.get_default()
|
||||
settings.set_property('gtk-application-prefer-dark-theme', True)
|
||||
style_manager = Adw.StyleManager.get_default()
|
||||
style_manager.set_color_scheme(Adw.ColorScheme.PREFER_DARK)
|
||||
|
||||
|
||||
def _load_css(self):
|
||||
styleProvider = Gtk.CssProvider()
|
||||
styleProvider.load_from_resource(self._get_resource_path('gtk.css'))
|
||||
Gtk.StyleContext.add_provider_for_screen(
|
||||
Gdk.Screen.get_default(),
|
||||
Gtk.StyleContext.add_provider_for_display(
|
||||
Gdk.Display.get_default(),
|
||||
styleProvider,
|
||||
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
|
||||
)
|
||||
|
|
@ -93,12 +107,18 @@ class Application(Gtk.Application):
|
|||
self.add_action(action)
|
||||
|
||||
|
||||
def _load_appmenu(self):
|
||||
builder = Gtk.Builder()
|
||||
builder.set_translation_domain(Application.DOMAIN)
|
||||
builder.add_from_resource(self._get_resource_path('ui/gtk.menu.ui'))
|
||||
self.set_app_menu(builder.get_object('app-menu'))
|
||||
|
||||
|
||||
def _get_resource_path(self, path):
|
||||
return "/{}/{}".format(Application.ID.replace('.', '/'), path)
|
||||
|
||||
|
||||
def _setup_adw(self):
|
||||
Adw.HeaderBar()
|
||||
Adw.ToolbarView()
|
||||
Adw.ViewSwitcherTitle()
|
||||
Adw.ViewSwitcherBar()
|
||||
Adw.ViewStackPage()
|
||||
Adw.ToastOverlay()
|
||||
Adw.StatusPage()
|
||||
Adw.Flap()
|
||||
Adw.EntryRow()
|
||||
Adw.PasswordEntryRow()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue