From 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 Mon Sep 17 00:00:00 2001 From: AlexanderCurl Date: Sat, 18 Apr 2026 17:46:06 +0100 Subject: Replaced file structures for themes in the correct format --- .../installed/Vitals@CoreCoding.com/menuItem.js | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js (limited to 'raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js') diff --git a/raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js b/raveos-gnome-theme/theme-data/extensions/installed/Vitals@CoreCoding.com/menuItem.js new file mode 100644 index 0000000..cf112ab --- /dev/null +++ b/raveos-gnome-theme/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; + } +}); -- cgit v1.3