citadel-realms/js/RealmRow.js

52 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2024-11-12 17:12:37 -05:00
var _a;
import GObject from 'gi://GObject';
import Gtk from 'gi://Gtk?version=4.0';
import { Realm } from './model/Realm.js';
export class RealmRow extends Gtk.Widget {
constructor() {
super(...arguments);
this._notifyId = 0;
}
get realm() {
if (this._realm === undefined) {
this._realm = null;
}
return this._realm;
}
set realm(value) {
if (this.realm === value) {
return;
}
if (this.realm && this._notifyId) {
this.realm.disconnect(this._notifyId);
this._notifyId = 0;
}
this._realm = value;
if (this.realm) {
this._notifyId = this.realm.connect('notify', this.syncRealm.bind(this));
this.syncRealm();
}
this.notify('realm');
}
syncRealm() {
if (this.realm && this.realm.is_running()) {
this._nameLabel.remove_css_class('dim-label');
}
else {
// @ts-ignore
this._nameLabel.add_css_class('dim-label');
}
}
}
_a = RealmRow;
(() => {
GObject.registerClass({
GTypeName: 'RealmRow',
Template: 'resource:///com/subgraph/citadel/Realms/ui/RealmRow.ui',
Properties: {
'realm': GObject.ParamSpec.object('realm', '', '', GObject.ParamFlags.READWRITE, Realm),
},
InternalChildren: ['nameLabel'],
}, _a);
})();