def add(self, child): add_keybindings(child, { '<Ctrl>e': lambda view, key: self.show(), '/': lambda view, key: self.show(), }) Gtk.Overlay.add(self, child)
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()
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() })