def __init__(self, app): """ Init window """ Container.__init__(self) self._app = app self._signal1 = None self._signal2 = None Gtk.ApplicationWindow.__init__(self, application=app, title="Lollypop") self._nullwidget = Gtk.Label() # Use to get selected background color self._timeout_configure = None seek_action = Gio.SimpleAction.new('seek', GLib.VariantType.new('i')) seek_action.connect('activate', self._on_seek_action) app.add_action(seek_action) player_action = Gio.SimpleAction.new('player', GLib.VariantType.new('s')) player_action.connect('activate', self._on_player_action) app.add_action(player_action) self._setup_content() self._setup_window() self._setup_media_keys() self.enable_global_shorcuts(True) self.connect('destroy', self._on_destroyed_window) self.connect('realize', self._on_realize)
def __init__(self, app): """ Init window """ Container.__init__(self) self._app = app self._signal1 = None self._signal2 = None self._timeout = None self._was_maximized = False Gtk.ApplicationWindow.__init__(self, application=app, title="Lollypop") self.connect('notify::is-active', self._on_active) self._timeout_configure = None seek_action = Gio.SimpleAction.new('seek', GLib.VariantType.new('i')) seek_action.connect('activate', self._on_seek_action) app.add_action(seek_action) player_action = Gio.SimpleAction.new('player', GLib.VariantType.new('s')) player_action.connect('activate', self._on_player_action) app.add_action(player_action) self._main_stack = Gtk.Stack() self._main_stack.set_transition_duration(1000) self._main_stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) self._main_stack.show() self._setup_content() self.setup_window() self._setup_media_keys() self._enabled_shorcuts = False self.enable_global_shorcuts(True) self.connect('destroy', self._on_destroyed_window) self.connect('realize', self._on_realize)
def __init__(self, app): """ Init window """ Container.__init__(self) self._app = app self._signal1 = None self._signal2 = None self._timeout = None self._was_maximized = False Gtk.ApplicationWindow.__init__(self, application=app, title="Lollypop") self.connect("hide", self._on_hide) self.connect("leave-notify-event", self._on_leave_notify) self._timeout_configure = None seek_action = Gio.SimpleAction.new("seek", GLib.VariantType.new("i")) seek_action.connect("activate", self._on_seek_action) app.add_action(seek_action) player_action = Gio.SimpleAction.new("player", GLib.VariantType.new("s")) player_action.connect("activate", self._on_player_action) app.add_action(player_action) self._main_stack = Gtk.Stack() self._main_stack.set_transition_duration(1000) self._main_stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) self._main_stack.show() self._setup_content() self.setup_window() self._setup_media_keys() self._enabled_shorcuts = False self.enable_global_shorcuts(True) self.connect("destroy", self._on_destroyed_window) self.connect("realize", self._on_realize)
def __init__(self, app): Container.__init__(self) Gtk.ApplicationWindow.__init__(self, application=app, title="Lollypop") self._timeout_configure = None self._setup_window() self._setup_media_keys() self.connect("destroy", self._on_destroyed_window)
def __setup_content(self): """ Setup window content """ self.__container = Container() self.set_stack(self.container.stack) self.add_paned(self.container.paned_one, self.container.list_one) self.add_paned(self.container.paned_two, self.container.list_two) self.__container.show() self.__vgrid = Gtk.Grid() self.__vgrid.set_orientation(Gtk.Orientation.VERTICAL) self.__vgrid.show() self.__toolbar = Toolbar(self) self.__toolbar.show() if App().settings.get_value("disable-csd") or is_unity(): self.__vgrid.add(self.__toolbar) else: self.set_titlebar(self.__toolbar) self.__toolbar.set_show_close_button( not App().settings.get_value("disable-csd")) self.__vgrid.add(self.__container) self.add(self.__vgrid) self.drag_dest_set(Gtk.DestDefaults.DROP | Gtk.DestDefaults.MOTION, [], Gdk.DragAction.MOVE) self.drag_dest_add_uri_targets() self.connect("drag-data-received", self.__on_drag_data_received)
def __init__(self): """ Init window """ Container.__init__(self) self.__signal1 = None self.__signal2 = None self.__timeout = None self.__mediakeys = None self.__media_keys_busnames = [] self.__was_maximized = False Gtk.ApplicationWindow.__init__(self, application=Lp(), title="Lollypop", icon_name="org.gnome.Lollypop") self.connect("hide", self.__on_hide) Lp().player.connect("current-changed", self.__on_current_changed) self.__timeout_configure = None seek_action = Gio.SimpleAction.new("seek", GLib.VariantType.new("i")) seek_action.connect("activate", self.__on_seek_action) Lp().add_action(seek_action) player_action = Gio.SimpleAction.new("shortcut", GLib.VariantType.new("s")) player_action.connect("activate", self.__on_player_action) Lp().add_action(player_action) self.__setup_global_shortcuts() self.__main_stack = Gtk.Stack() self.__main_stack.set_transition_duration(1000) self.__main_stack.set_transition_type( Gtk.StackTransitionType.CROSSFADE) self.__main_stack.show() self.__setup_content() self.setup_window() # FIXME Remove this, handled by MPRIS in GNOME 3.26 self.__setup_media_keys() self.__enabled_shortcuts = False self.enable_global_shortcuts(True) self.connect("destroy", self.__on_destroyed_window) self.connect("realize", self.__on_realize)
def __init__(self): """ Init window """ Container.__init__(self) self.__signal1 = None self.__signal2 = None self.__timeout = None self.__was_maximized = False Gtk.ApplicationWindow.__init__(self, application=Lp(), title="Lollypop") self.connect('hide', self.__on_hide) Lp().player.connect('current-changed', self.__on_current_changed) self.__timeout_configure = None seek_action = Gio.SimpleAction.new('seek', GLib.VariantType.new('i')) seek_action.connect('activate', self.__on_seek_action) Lp().add_action(seek_action) player_action = Gio.SimpleAction.new('shortcut', GLib.VariantType.new('s')) player_action.connect('activate', self.__on_player_action) Lp().add_action(player_action) self.__setup_global_shortcuts() self.__main_stack = Gtk.Stack() self.__main_stack.set_transition_duration(1000) self.__main_stack.set_transition_type( Gtk.StackTransitionType.CROSSFADE) self.__main_stack.show() self.__setup_content() self.setup_window() self.__setup_media_keys() self.__enabled_shortcuts = False self.enable_global_shortcuts(True) self.connect('destroy', self.__on_destroyed_window) self.connect('realize', self.__on_realize)
def setup(self): """ Setup window content """ self.__vgrid = Gtk.Grid() self.__vgrid.set_orientation(Gtk.Orientation.VERTICAL) self.__vgrid.show() self.__container = Container() self.__container.setup() self.__container.show() self.__toolbar = Toolbar(self) self.__toolbar.show() if App().settings.get_value("disable-csd") or is_unity(): self.__vgrid.add(self.__toolbar) else: self.set_titlebar(self.__toolbar) self.__toolbar.set_show_close_button( not App().settings.get_value("disable-csd")) self.__vgrid.add(self.__container) self.add(self.__vgrid) self.__container.widget.connect("notify::folded", self.__on_container_folded)
def delayed_init(self): """ Delay real init to get App().window == self """ self.get_style_context().add_class("black") self.set_title("Lollypop") self.__allocation = Gdk.Rectangle() self.set_application(App()) self.__timeout_id = None self.__signal1_id = self.__signal2_id = None self.__background_id = None self.set_decorated(False) # Calculate cover size screen = Gdk.Screen.get_default() monitor = screen.get_monitor_at_window(App().main_window.get_window()) geometry = screen.get_monitor_geometry(monitor) art_size_fs = ArtSize.FULLSCREEN / self.get_scale_factor() font_size_fs = 30 / self.get_scale_factor() if geometry.width > geometry.height: art_size = int(art_size_fs * geometry.height / 1080) font_size = int(font_size_fs * geometry.height / 1080) else: art_size = int(art_size_fs * geometry.width / 1920) font_size = int(font_size_fs * geometry.width / 1920) builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/FullScreen.ui") builder.connect_signals(self) self.__progress_widget = ProgressPlayerWidget() self.__progress_widget.show() self.__progress_widget.set_property("halign", Gtk.Align.CENTER) self.__progress_widget.set_size_request(500, -1) self.__buttons_widget = ButtonsPlayerWidget(["banner-button"]) self.__buttons_widget.show() self.__buttons_widget.set_size_request(500, -1) self.__buttons_widget.set_property("valign", Gtk.Align.CENTER) self.__buttons_widget.set_property("halign", Gtk.Align.CENTER) self.__artwork_widget = ArtworkPlayerWidget(ArtBehaviour.CACHE | ArtBehaviour.CROP_SQUARE) self.__artwork_widget.show() self.__artwork_widget.set_vexpand(True) self.__artwork_widget.set_art_size(art_size, art_size) self.__artwork_widget.set_property("valign", Gtk.Align.CENTER) self.__artwork_widget.set_property("halign", Gtk.Align.CENTER) self.__label_widget = LabelPlayerWidget(True, font_size) self.__label_widget.show() self.__label_widget.set_hexpand(True) self.__label_widget.set_vexpand(True) self.__label_widget.set_justify(Gtk.Justification.CENTER) eventbox = Gtk.EventBox.new() eventbox.show() eventbox.connect("button-release-event", self.__on_image_button_release_event) eventbox.connect("realize", self.__on_image_realize) eventbox.add(self.__artwork_widget) self.__revealer = builder.get_object("revealer") self.__datetime = builder.get_object("datetime") self.__overlay_grid = builder.get_object("overlay_grid") widget = builder.get_object("widget") if App().settings.get_value("artist-artwork"): self.__overlay_grid.attach(self.__buttons_widget, 0, 4, 2, 1) self.__overlay_grid.attach(self.__label_widget, 0, 2, 2, 1) self.__overlay_grid.attach(self.__progress_widget, 0, 3, 2, 1) self.__overlay_grid.attach(eventbox, 2, 2, 1, 3) eventbox.set_margin_end(MARGIN_BIG) eventbox.set_property("valign", Gtk.Align.END) eventbox.set_property("halign", Gtk.Align.END) self.__artwork_widget.set_margin_end(MARGIN_BIG) self.__artwork_widget.set_margin_bottom(MARGIN_BIG) self.__label_widget.set_property("valign", Gtk.Align.END) self.__artwork_widget.set_property("valign", Gtk.Align.END) else: self.__overlay_grid.attach(self.__buttons_widget, 0, 4, 3, 1) self.__overlay_grid.attach(self.__label_widget, 0, 2, 3, 1) self.__overlay_grid.attach(self.__progress_widget, 0, 3, 3, 1) self.__overlay_grid.attach(eventbox, 0, 1, 3, 1) eventbox.set_vexpand(True) close_btn = builder.get_object("close_btn") preferences = Gio.Settings.new("org.gnome.desktop.wm.preferences") layout = preferences.get_value("button-layout").get_string() if layout.split(":")[0] == "close": self.__overlay_grid.attach(close_btn, 0, 0, 1, 1) close_btn.set_property("halign", Gtk.Align.START) else: self.__overlay_grid.attach(close_btn, 2, 0, 1, 1) close_btn.set_property("halign", Gtk.Align.END) self._artwork = builder.get_object("cover") self.connect("key-release-event", self.__on_key_release_event) # Add a navigation widget on the right self.__back_button = Gtk.Button.new_from_icon_name( "go-previous-symbolic", Gtk.IconSize.BUTTON) self.__back_button.set_sensitive(False) self.__back_button.set_relief(Gtk.ReliefStyle.NONE) self.__back_button.set_property("valign", Gtk.Align.START) self.__back_button.set_property("halign", Gtk.Align.START) self.__back_button.connect("clicked", self.__on_back_button_clicked) self.__back_button.set_margin_start(5) self.__back_button.set_margin_end(5) self.__back_button.set_margin_top(5) self.__back_button.set_margin_bottom(5) self.__back_button.show() self.__background_artwork = builder.get_object("background_artwork") self.__container = Container() self.__container.show() self.__container.setup() self.__sidebar = Gtk.Grid() self.__sidebar.set_size_request(400, -1) self.__sidebar.set_orientation(Gtk.Orientation.VERTICAL) self.__sidebar.get_style_context().add_class("borders-left-top") self.__sidebar.show() self.__sidebar.add(self.__back_button) self.__sidebar.add(self.__container) self.__sidebar.set_size_request(450, -1) self.__sidebar.get_style_context().add_class("background-opacity") self.__container.connect("can-go-back-changed", self.__on_can_go_back_changed) self.connect("size-allocate", self.__on_size_allocate) self.__revealer.add(self.__sidebar) self.add(widget)
def __init__(self, app): """ Init window for app @param app as Gio.Application """ Gtk.Window.__init__(self) AdaptiveWindow.__init__(self) self.get_style_context().add_class("black") self.set_title("Lollypop") self.__allocation = Gdk.Rectangle() PlaybackController.__init__(self) ProgressController.__init__(self) self.set_application(app) self.__timeout_id = None self.__signal1_id = self.__signal2_id = None self.set_decorated(False) builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/FullScreen.ui") builder.connect_signals(self) # Calculate cover size screen = Gdk.Screen.get_default() monitor = screen.get_monitor_at_window(App().main_window.get_window()) geometry = screen.get_monitor_geometry(monitor) self.__overlay_grid = builder.get_object("overlay_grid") art_size_fs = ArtSize.FULLSCREEN / self.get_scale_factor() font_size_fs = 11 / self.get_scale_factor() if geometry.width > geometry.height: self.__art_size = int(art_size_fs * geometry.height / 1080) self.__font_size = int(font_size_fs * geometry.height / 1080) else: self.__art_size = int(art_size_fs * geometry.width / 1920) self.__font_size = int(font_size_fs * geometry.width / 1920) widget = builder.get_object("widget") self._play_button = builder.get_object("play_btn") self._next_button = builder.get_object("next_btn") self._prev_button = builder.get_object("prev_btn") if App().player.current_track.id == Type.RADIOS: self._next_button.hide() self._prev_button.hide() self._play_image = builder.get_object("play_image") self._pause_image = builder.get_object("pause_image") close_btn = builder.get_object("close_btn") preferences = Gio.Settings.new("org.gnome.desktop.wm.preferences") layout = preferences.get_value("button-layout").get_string() if layout.split(":")[0] == "close": self.__overlay_grid.attach(close_btn, 0, 0, 1, 1) close_btn.set_property("halign", Gtk.Align.START) else: self.__overlay_grid.attach(close_btn, 2, 0, 1, 1) close_btn.set_property("halign", Gtk.Align.END) self._artwork = builder.get_object("cover") self.__setup_controller() self._title_label = builder.get_object("title") self._artist_label = builder.get_object("artist") self._album_label = builder.get_object("album") self.__revealer = builder.get_object("revealer") self._datetime = builder.get_object("datetime") self._progress = builder.get_object("progress_scale") self._timelabel = builder.get_object("playback") self._total_time_label = builder.get_object("duration") self.connect("key-release-event", self.__on_key_release_event) # Add a navigation widget on the right self.__back_button = Gtk.Button.new_from_icon_name( "go-previous-symbolic", Gtk.IconSize.BUTTON) self.__back_button.set_sensitive(False) self.__back_button.set_relief(Gtk.ReliefStyle.NONE) self.__back_button.set_property("valign", Gtk.Align.START) self.__back_button.set_property("halign", Gtk.Align.START) self.__back_button.connect("clicked", self.__on_back_button_clicked) self.__back_button.set_margin_start(5) self.__back_button.set_margin_end(5) self.__back_button.set_margin_top(5) self.__back_button.set_margin_bottom(5) self.__back_button.show() self.__background_artwork = builder.get_object("background_artwork") self.__container = Container(ViewType.NOT_ADAPTIVE) self.set_stack(self.__container.stack) self.__container.show() self.__sidebar = Gtk.Grid() self.__sidebar.set_size_request(400, -1) self.__sidebar.set_orientation(Gtk.Orientation.VERTICAL) self.__sidebar.get_style_context().add_class("borders-left-top") self.__sidebar.show() self.__sidebar.add(self.__back_button) self.__sidebar.add(self.__container) self.__sidebar.set_size_request(450, -1) self.connect("can-go-back-changed", self.__on_can_go_back_changed) self.connect("show-can-go-back", self.__on_show_can_go_back) self.connect("size-allocate", self.__on_size_allocate) self.__sidebar.get_style_context().add_class("background-opacity") self.__revealer.add(self.__sidebar) self.add(widget)