Esempio n. 1
0
 def __init__(self):
     """
         Connect map signal
     """
     Popover.__init__(self)
     self.connect("map", self.__on_map)
     self.connect("unmap", self.__on_unmap)
 def __init__(self):
     """
         Init popover
     """
     Popover.__init__(self)
     self.__lastfm_signal_id = None
     self.__spotify_signal_id = None
     builder = Gtk.Builder()
     builder.add_from_resource("/org/gnome/Lollypop/SimilarsPopover.ui")
     self.__show_all = GLib.find_program_in_path("youtube-dl") is not None
     self.__added = []
     self.__cancellable = Gio.Cancellable()
     self.connect("map", self.__on_map)
     self.connect("unmap", self.__on_unmap)
     self.__stack = builder.get_object("stack")
     self.__spinner = builder.get_object("spinner")
     self.__spinner.start()
     self.__listbox = Gtk.ListBox()
     self.__listbox.get_style_context().add_class("trackswidget")
     self.__listbox.set_vexpand(True)
     self.__listbox.set_selection_mode(Gtk.SelectionMode.NONE)
     self.__listbox.set_activate_on_single_click(True)
     self.__listbox.connect("row-activated", self.__on_row_activated)
     self.__listbox.show()
     self.__stack.add(self.__listbox)
     self.add(builder.get_object("widget"))
Esempio n. 3
0
    def __init__(self):
        """
            Init Popover
        """
        Popover.__init__(self)
        self.set_position(Gtk.PositionType.BOTTOM)
        self.__last_drag_id = None
        self.connect("map", self.__on_map)
        self.connect("unmap", self.__on_unmap)

        builder = Gtk.Builder()
        builder.add_from_resource("/org/gnome/Lollypop/QueuePopover.ui")
        builder.connect_signals(self)

        self.__clear_button = builder.get_object("clear-button")

        self.__view = Gtk.ListBox()
        self.__view.get_style_context().add_class("trackswidget")
        self.__view.set_selection_mode(Gtk.SelectionMode.NONE)
        self.__view.set_activate_on_single_click(True)
        self.__view.connect("row-activated", self.__on_row_activated)
        self.__view.show()

        builder.get_object("scrolled").add(self.__view)
        self.add(builder.get_object("widget"))
Esempio n. 4
0
    def __init__(self, track, menu):
        """
            Init widget
            @param track as Track
            @param menu as Gio.Menu
        """
        Popover.__init__(self)
        if menu is not None:
            self.bind_model(menu, None)

        if track.year is not None:
            year_label = Gtk.Label()
            year_label.set_text(str(track.year))
            dt = GLib.DateTime.new_from_unix_local(track.timestamp)
            year_label.set_tooltip_text(dt.format(_("%Y-%m-%d")))
            year_label.set_margin_end(5)
            year_label.get_style_context().add_class("dim-label")
            year_label.set_property("halign", Gtk.Align.END)
            year_label.set_property("hexpand", True)
            year_label.show()

        # Hack to add two widgets in popover
        grid = Gtk.Grid()
        grid.set_orientation(Gtk.Orientation.VERTICAL)

        stack = Gtk.Stack()
        stack.add_named(grid, "main")
        stack.show_all()

        menu_widget = self.get_child()
        if menu_widget is not None:
            self.remove(menu_widget)
            grid.add(menu_widget)

        hgrid = Gtk.Grid()
        hgrid.get_style_context().add_class("popover-rating-loved-grid")
        rating = RatingWidget(track)
        rating.set_property("halign", Gtk.Align.START)
        rating.set_margin_end(10)
        rating.show()

        loved = LovedWidget(track)
        loved.set_property("halign", Gtk.Align.START)
        loved.set_property("hexpand", True)
        loved.show()

        hgrid.add(rating)
        hgrid.add(loved)

        if track.year is not None:
            hgrid.add(year_label)
        hgrid.show()

        grid.add(hgrid)
        self.add(stack)
Esempio n. 5
0
    def __init__(self, radio_id, radios):
        """
            Init Popover
            @param radio_id as int
            @param radios as Radios
        """
        Popover.__init__(self)
        self.connect("map", self.__on_map)
        self.__radio_id = radio_id
        self.__radios = radios
        self.__start = 0
        self.__orig_pixbufs = {}
        self.__cancellable = Gio.Cancellable()

        self.__stack = Gtk.Stack()
        self.__stack.set_transition_duration(1000)
        self.__stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE)
        self.__stack.show()

        builder = Gtk.Builder()
        builder.add_from_resource("/org/gnome/Lollypop/RadioPopover.ui")
        builder.connect_signals(self)

        self.__view = Gtk.FlowBox()
        self.__view.set_selection_mode(Gtk.SelectionMode.NONE)
        self.__view.connect("child-activated", self.__on_activate)
        self.__view.set_max_children_per_line(100)
        self.__view.set_property("row-spacing", 10)
        self.__view.show()

        builder.get_object("viewport").add(self.__view)

        self.__name_entry = builder.get_object("name")
        self.__uri_entry = builder.get_object("uri")
        self.__image_button = builder.get_object("image_button")
        self.__save_button = builder.get_object("save_button")
        self.__spinner = builder.get_object("spinner")
        self.__stack.add_named(builder.get_object("spinner-grid"), "spinner")
        self.__stack.add_named(builder.get_object("notfound"), "notfound")
        self.__stack.add_named(builder.get_object("logo"), "logo")
        self.__stack.add_named(builder.get_object("widget"), "widget")
        self.__stack.set_visible_child_name("widget")
        self.add(self.__stack)

        track = Track()
        if radio_id is not None:
            track.set_radio_id(radio_id)
            rating = RatingWidget(track)
            rating.show()
            builder.get_object("widget").attach(rating, 0, 2, 2, 1)
            builder.get_object("delete_button").show()
            self.__name_entry.set_text(radios.get_name(radio_id))
            uri = self.__radios.get_uri(radio_id)
            if uri:
                self.__uri_entry.set_text(uri)
Esempio n. 6
0
 def __init__(self, minimal=False):
     """
         Init artist infos
         @param minimal as bool
     """
     Popover.__init__(self)
     self.__minimal = minimal
     self.__view = InformationView(minimal)
     self.__view.show()
     self.connect("map", self.__on_map)
     self.add(self.__view)
Esempio n. 7
0
 def __init__(self):
     """
         Init popover
     """
     Popover.__init__(self)
     self.__view = CurrentAlbumsView()
     self.__view.populate(App().player.albums)
     self.__view.show()
     self.set_position(Gtk.PositionType.BOTTOM)
     self.connect("map", self.__on_map)
     self.connect("unmap", self.__on_unmap)
     self.add(self.__view)
Esempio n. 8
0
 def __init__(self, widget, rowid, mask):
     """
         Init menu
         @param widget as Gtk.Widget
         @param rowid as int
         @param mask as SelectionListMask
     """
     Popover.__init__(self)
     self.__widget = widget
     self.__rowid = rowid
     self.__mask = mask
     menu = Gio.Menu()
     self.bind_model(menu, None)
     # Startup menu
     if rowid in [Type.POPULARS, Type.RADIOS, Type.LOVED,
                  Type.ALL, Type.RECENTS, Type.YEARS,
                  Type.RANDOMS, Type.NEVER,
                  Type.PLAYLISTS, Type.ARTISTS] and\
             not App().settings.get_value("save-state"):
         startup_menu = Gio.Menu()
         if self.__mask & SelectionListMask.LIST_TWO:
             exists = rowid in App().settings.get_value("startup-two-ids")
         else:
             exists = rowid in App().settings.get_value("startup-one-ids")
         action = Gio.SimpleAction.new_stateful(
             "default_selection_id", None, GLib.Variant.new_boolean(exists))
         App().add_action(action)
         action.connect("change-state", self.__on_default_change_state,
                        rowid)
         item = Gio.MenuItem.new(_("Default on startup"),
                                 "app.default_selection_id")
         startup_menu.append_item(item)
         menu.insert_section(0, _("Startup"), startup_menu)
     # Shown menu
     shown_menu = Gio.Menu()
     if mask & SelectionListMask.PLAYLISTS:
         lists = ShownPlaylists.get(True)
         wanted = App().settings.get_value("shown-playlists")
     else:
         lists = ShownLists.get(mask, True)
         wanted = App().settings.get_value("shown-album-lists")
     for item in lists:
         exists = item[0] in wanted
         encoded = sha256(item[1].encode("utf-8")).hexdigest()
         action = Gio.SimpleAction.new_stateful(
             encoded, None, GLib.Variant.new_boolean(exists))
         action.connect("change-state", self.__on_shown_change_state,
                        item[0])
         App().add_action(action)
         shown_menu.append(item[1], "app.%s" % encoded)
     # Translators: shown => items
     menu.insert_section(1, _("Shown"), shown_menu)
 def __init__(self):
     """
         Init Popover
     """
     Popover.__init__(self)
     self.set_position(Gtk.PositionType.BOTTOM)
     self.connect("map", self.__on_map)
     self.connect("unmap", self.__on_unmap)
     self.__view = PlaylistsView(App().player.playlist_ids,
                                 RowListType.DND | RowListType.POPOVER,
                                 False)
     self.__view.show()
     self.add(self.__view)
Esempio n. 10
0
 def __init__(self):
     """
         Init popover
     """
     Popover.__init__(self)
     builder = Gtk.Builder()
     builder.add_from_resource("/org/gnome/Lollypop/Appmenu.ui")
     self.add(builder.get_object("widget"))
     self.__volume = builder.get_object("volume")
     self.__volume.set_value(App().player.volume)
     builder.connect_signals(self)
     self.connect("map", self.__on_map)
     self.connect("unmap", self.__on_unmap)
 def __init__(self, playlist_id):
     """
         @param playlist_id as int
     """
     Popover.__init__(self)
     self.__playlist_id = playlist_id
     builder = Gtk.Builder()
     builder.add_from_resource("/org/gnome/Lollypop/PlaylistPopover.ui")
     builder.connect_signals(self)
     widget = builder.get_object("widget")
     self.__name_entry = builder.get_object("name")
     if playlist_id < 0:
         widget.set_sensitive(False)
     self.__name_entry.set_text(App().playlists.get_name(playlist_id))
     self.add(widget)
Esempio n. 12
0
 def __init__(self):
     """
         Init popover
     """
     Popover.__init__(self)
     # No DND until https://gitlab.gnome.org/GNOME/gtk/issues/2006 is fixed
     wayland = GLib.environ_getenv(GLib.get_environ(), "WAYLAND_DISPLAY")
     if wayland:
         view_type = ViewType.POPOVER
     else:
         view_type = ViewType.POPOVER | ViewType.DND
     self.__view = App().window.container.get_view_current(view_type)
     self.__view.show()
     self.set_position(Gtk.PositionType.BOTTOM)
     self.connect("map", self.__on_map)
     self.connect("unmap", self.__on_unmap)
     self.add(self.__view)
Esempio n. 13
0
 def __init__(self):
     """
         Init popover
     """
     Popover.__init__(self)
     builder = Gtk.Builder()
     builder.add_from_resource("/org/gnome/Lollypop/LastfmPopover.ui")
     self.connect("map", self.__on_map)
     self.__stack = builder.get_object("stack")
     self.__spinner = builder.get_object("spinner")
     self.__spinner.start()
     self.__view = Gtk.ListBox()
     self.__view.get_style_context().add_class("trackswidget")
     self.__view.set_vexpand(True)
     self.__view.set_selection_mode(Gtk.SelectionMode.NONE)
     self.__view.set_activate_on_single_click(True)
     self.__view.connect("row-activated", self.__on_row_activated)
     self.__view.show()
     self.__stack.add(self.__view)
     self.add(builder.get_object("widget"))
Esempio n. 14
0
 def __init__(self, album, width):
     """
         Init popover
         @param album as Album
         @param width as int
         @param art size as int
     """
     Popover.__init__(self)
     self.__width = width
     self.get_style_context().add_class("box-shadow")
     view = ArtistAlbumsView(album.artist_ids, album.genre_ids, False)
     view.populate([album])
     window_width = App().window.get_allocated_width()
     window_height = App().window.get_allocated_height()
     wanted_width = min(900, window_width * 0.5)
     wanted_height = max(200,
                         min(window_height * 0.5,
                             view.children[0].requested_height[0]))
     view.set_property("width-request", wanted_width)
     view.set_property("height-request", wanted_height)
     view.show()
     self.add(view)