mirror of
https://github.com/Rafostar/clapper.git
synced 2025-08-29 23:32:04 +02:00
90 lines
2.3 KiB
JavaScript
90 lines
2.3 KiB
JavaScript
const { GObject, Gtk, Pango } = imports.gi;
|
|
|
|
var HeaderBar = GObject.registerClass(
|
|
class ClapperHeaderBar extends Gtk.HeaderBar
|
|
{
|
|
_init(window, models)
|
|
{
|
|
super._init({
|
|
can_focus: false,
|
|
});
|
|
|
|
this.set_title_widget(this._createWidgetForWindow(window));
|
|
|
|
let openMenuButton = new Gtk.MenuButton({
|
|
icon_name: 'open-menu-symbolic'
|
|
});
|
|
let settingsPopover = new HeaderBarPopover(models.settingsMenu);
|
|
openMenuButton.set_popover(settingsPopover);
|
|
this.pack_end(openMenuButton);
|
|
|
|
let fullscreenButton = new Gtk.Button({
|
|
icon_name: 'view-fullscreen-symbolic'
|
|
});
|
|
fullscreenButton.connect('clicked', () => this.get_parent().fullscreen());
|
|
this.pack_end(fullscreenButton);
|
|
}
|
|
|
|
updateHeaderBar(title, subtitle)
|
|
{
|
|
this.titleLabel.label = title;
|
|
this.subtitleLabel.visible = (subtitle !== null);
|
|
|
|
if(subtitle)
|
|
this.subtitleLabel.label = subtitle;
|
|
}
|
|
|
|
_createWidgetForWindow(window)
|
|
{
|
|
let box = new Gtk.Box ({
|
|
orientation: Gtk.Orientation.VERTICAL,
|
|
valign: Gtk.Align.CENTER,
|
|
});
|
|
|
|
this.titleLabel = new Gtk.Label({
|
|
halign: Gtk.Align.CENTER,
|
|
single_line_mode: true,
|
|
ellipsize: Pango.EllipsizeMode.END,
|
|
width_chars: 5,
|
|
});
|
|
this.titleLabel.add_css_class('title');
|
|
this.titleLabel.set_parent(box);
|
|
|
|
window.bind_property('title', this.titleLabel, 'label',
|
|
GObject.BindingFlags.SYNC_CREATE
|
|
);
|
|
|
|
this.subtitleLabel = new Gtk.Label({
|
|
halign: Gtk.Align.CENTER,
|
|
single_line_mode: true,
|
|
ellipsize: Pango.EllipsizeMode.END,
|
|
});
|
|
this.subtitleLabel.add_css_class('subtitle');
|
|
this.subtitleLabel.set_parent(box);
|
|
this.subtitleLabel.visible = false;
|
|
|
|
return box;
|
|
}
|
|
});
|
|
|
|
var HeaderBarPopover = GObject.registerClass(
|
|
class ClapperHeaderBarPopover extends Gtk.PopoverMenu
|
|
{
|
|
_init(model)
|
|
{
|
|
super._init({
|
|
menu_model: model,
|
|
});
|
|
|
|
this.connect('closed', this._onClosed.bind(this));
|
|
}
|
|
|
|
_onClosed()
|
|
{
|
|
let root = this.get_root();
|
|
let clapperWidget = root.get_child();
|
|
|
|
clapperWidget.player.widget.grab_focus();
|
|
}
|
|
});
|