def __create_popover(self):
self.popover = Gtk.Popover.new(self)
self.popover.set_position(Gtk.PositionType.BOTTOM)
# We need to scroll when there are many tracks in a Book
scroller = Gtk.ScrolledWindow()
scroller.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
# This box contains all content
self.track_box = Gtk.Box()
self.track_box.set_orientation(Gtk.Orientation.VERTICAL)
self.track_box.set_halign(Gtk.Align.CENTER)
self.track_box.set_valign(Gtk.Align.START)
self.track_box.props.margin = 8
count = 0
for track in tracks(self.book):
self.track_box.add(TrackElement(track, self.ui))
count += 1
if Gtk.get_minor_version() > 20:
scroller.set_propagate_natural_height(True)
scroller.set_max_content_height(500)
else:
padding = 17
height = 24
scroller_height = count * height + padding
if scroller_height > 500:
scroller_height = 500
scroller.set_size_request(-1, scroller_height)
self.popover.connect("closed", self.__on_popover_close)
self.popover.add(scroller)
scroller.add_with_viewport(self.track_box)
scroller.show_all()
self._mark_current_track()
评论列表
文章目录