Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
 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)
Beispiel #7
0
    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)
Beispiel #8
0
    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)
Beispiel #9
0
    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)
Beispiel #10
0
    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)
Beispiel #11
0
 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)
Beispiel #12
0
 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)
Beispiel #13
0
    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)