示例#1
0
    def add(self, child):
        add_keybindings(child, {
            '<Ctrl>e': lambda view, key: self.show(),
            '/': lambda view, key: self.show(),
        })

        Gtk.Overlay.add(self, child)
示例#2
0
    def do_build(self):
        self._scw = Gtk.ScrolledWindow()
        self._scw.set_policy(
            Gtk.PolicyType.AUTOMATIC,
            Gtk.PolicyType.AUTOMATIC
        )

        self._scw.add(QueuePlaylistWidget())
        self._overlay = Gtk.Overlay()
        self._overlay.add(self._scw)

        self._label = Gtk.Label('')
        self._label.set_use_markup(True)
        self._label.set_size_request(250, -1)
        self._label.override_background_color(0, Gdk.RGBA(0.5, 0.5, 1.0, 0.2))
        self._label.set_halign(Gtk.Align.END)
        self._label.set_alignment(0.5, 0.4)

        self._box = Gtk.Grid()
        self._box.set_halign(Gtk.Align.END)
        cover = SidebarCover()
        cover.set_margin_top(500)
        cover.set_alignment(0.5, 1.0)
        self._box.attach_next_to(cover, None, Gtk.PositionType.BOTTOM, 1, 1)

        self._overlay.add_overlay(self._label)
        self._overlay.add_overlay(self._box)
        self._overlay.show_all()

        add_keybindings(self._scw.get_child(), {
            '<Ctrl>t':  self._on_toggle_sidebar
        })
    def __init__(self, col_names=(('Artist', 150, 1.0), ('Album', 200, 0.0), ('Title', 250, 1.0))):
        Gtk.ScrolledWindow.__init__(self)
        self.set_policy(
            Gtk.PolicyType.AUTOMATIC,
            Gtk.PolicyType.AUTOMATIC
        )

        self._menu = None
        self._model = PlaylistTreeModel([])

        # Treeview Configuration
        self._view = Gtk.TreeView(model=None)
        self._view.set_fixed_height_mode(True)
        # self._view.set_rules_hint(True)
        self._view.set_enable_search(False)
        self._view.set_search_column(-1)

        self._view.connect('row-activated', self._on_row_activated)
        self._view.connect('button-press-event', self._on_button_press_event)

        add_keybindings(self._view, {
            '<Shift>space': lambda view, key: self.jump_to_selection()
        })

        selection = self._view.get_selection()
        selection.set_mode(Gtk.SelectionMode.MULTIPLE)

        for i, (text, width, align) in enumerate(col_names):
            # TODO: Think of a clearer API
            if '<pixbuf>' in text:
                _, header = text.split(':', maxsplit=1)
                renderer = Gtk.CellRendererPixbuf()
                col = Gtk.TreeViewColumn(header)
                col.pack_start(renderer, False)
                col.add_attribute(renderer, 'stock-id', i)
            elif '<progress>' in text:
                _, header = text.split(':', maxsplit=1)
                col = Gtk.TreeViewColumn(header)
                renderer = Gtk.CellRendererProgress()
                col.pack_start(renderer, False)
                col.add_attribute(renderer, 'text', i)
                col.add_attribute(renderer, 'value', i)
            else:
                renderer = Gtk.CellRendererText()
                renderer.set_fixed_height_from_font(1)
                renderer.set_alignment(align, 0.5)
                col = Gtk.TreeViewColumn(text, renderer, text=i)

            col.set_alignment(align)
            col.set_min_width(width)
            col.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
            col.set_clickable(True)
            col.connect('clicked', self.on_column_clicked)
            self._view.append_column(col)

        # Fill it initially with the full Queue
        self.add(self._view)
        self.show_all()
示例#4
0
    def __init__(self):
        Gtk.Overlay.__init__(self)

        self._revealer = Gtk.Revealer()
        self._revealer.set_size_request(400, -1)
        self._revealer.set_hexpand(False)
        self._revealer.set_vexpand(False)
        self._revealer.set_valign(Gtk.Align.END)
        self._revealer.set_halign(Gtk.Align.CENTER)

        entry = FishySearchEntry()
        self._revealer.add(entry)
        self._revealer.set_transition_duration(666)
        self._revealer.set_transition_type(
            Gtk.RevealerTransitionType.CROSSFADE
        )
        self.add_overlay(self._revealer)
        self.connect('size-allocate', self.on_resize)
        self.hide()

        add_keybindings(entry.get_widget(), {
            '<Ctrl>e': lambda view, key: self.hide()
        })