diff options
| author | nippy <you@example.com> | 2026-04-18 13:49:56 +0200 |
|---|---|---|
| committer | nippy <you@example.com> | 2026-04-18 13:49:56 +0200 |
| commit | 5d94c0a7d44a2255b81815a52a7056a94a39842d (patch) | |
| tree | 759bdea9645c6a62f9e1e4c001f7d81cccd120d2 /raveos-theme/gnome/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js | |
| parent | e79cdf210b267f21a186255ce1a4d50029439d54 (diff) | |
| download | RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.tar.gz RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.zip | |
update Raveos themes
Diffstat (limited to 'raveos-theme/gnome/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js')
| -rw-r--r-- | raveos-theme/gnome/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/raveos-theme/gnome/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js b/raveos-theme/gnome/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js new file mode 100644 index 0000000..cf112ab --- /dev/null +++ b/raveos-theme/gnome/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js @@ -0,0 +1,77 @@ +import Clutter from 'gi://Clutter'; +import GObject from 'gi://GObject'; +import St from 'gi://St' +import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js'; + +export const MenuItem = GObject.registerClass({ + + Signals: { + 'toggle': { param_types: [Clutter.Event.$gtype] }, + }, + +}, class MenuItem extends PopupMenu.PopupBaseMenuItem { + + _init(icon, key, label, value, checked) { + super._init({ reactive: true }); + + this._checked = checked; + this._updateOrnament(); + + this._key = key; + this._gIcon = icon; + + // add icon + this.add_child(new St.Icon({ style_class: 'popup-menu-icon', gicon : this._gIcon })); + + // add label + this._labelActor = new St.Label({ text: label }); + this.add_child(this._labelActor); + + // add value + this._valueLabel = new St.Label({ text: value }); + this._valueLabel.set_x_align(Clutter.ActorAlign.END); + this._valueLabel.set_x_expand(true); + this._valueLabel.set_y_expand(true); + this.add_child(this._valueLabel); + + this.actor._delegate = this; + } + + get checked() { + return this._checked; + } + + get key() { + return this._key; + } + + get gicon() { + return this._gIcon; + } + + set value(value) { + this._valueLabel.text = value; + } + + get value() { + return this._valueLabel.text; + } + + // prevents menu from being closed + activate(event) { + this._checked = !this._checked; + this._updateOrnament(); + this.emit('toggle', event); + } + + _updateOrnament() { + if (this._checked) + this.setOrnament(PopupMenu.Ornament.CHECK); + else + this.setOrnament(PopupMenu.Ornament.NONE); + } + + get label() { + return this._labelActor.text; + } +}); |