95 lines
2.9 KiB
JavaScript
95 lines
2.9 KiB
JavaScript
var _a;
|
|
import GObject from 'gi://GObject';
|
|
import { RealmFS } from './RealmFS.js';
|
|
import { RealmConfig } from './RealmConfig.js';
|
|
export const RunStatus = {
|
|
STOPPED: 0,
|
|
STARTING: 1,
|
|
RUNNING: 2,
|
|
CURRENT: 3,
|
|
STOPPING: 4,
|
|
};
|
|
export class Realm extends GObject.Object {
|
|
constructor(proxy, labelColors) {
|
|
super();
|
|
this.config = new RealmConfig();
|
|
this._proxy = proxy;
|
|
this._labelColors = labelColors;
|
|
this._proxy.connect('g-properties-changed', (_proxy, _changed, _invalidated) => {
|
|
this._sync();
|
|
});
|
|
this._sync();
|
|
}
|
|
get realmfs() {
|
|
return this._realmfs;
|
|
}
|
|
set realmfs(value) {
|
|
if (this.realmfs === value) {
|
|
return;
|
|
}
|
|
this._realmfs = value;
|
|
this.emit('changed');
|
|
}
|
|
_sync() {
|
|
this._name = this._proxy.Name;
|
|
this._description = this._proxy.Description;
|
|
this._pidns = this._proxy.PidNS;
|
|
this._run_status = this._proxy.RunStatus;
|
|
this._is_system_realm = this._proxy.IsSystemRealm;
|
|
this.emit('changed');
|
|
}
|
|
get name() {
|
|
return this._name;
|
|
}
|
|
get description() {
|
|
return this._description;
|
|
}
|
|
get pidns() {
|
|
return this._pidns;
|
|
}
|
|
get run_status() {
|
|
return this._run_status;
|
|
}
|
|
get is_system_realm() {
|
|
return this._is_system_realm;
|
|
}
|
|
is_running() {
|
|
return this.run_status === RunStatus.RUNNING || this.run_status === RunStatus.CURRENT;
|
|
}
|
|
is_current() {
|
|
return this.run_status === RunStatus.CURRENT;
|
|
}
|
|
getLabelColor() {
|
|
return this._labelColors.lookupRealmColor(this);
|
|
}
|
|
setLabelColor(color) {
|
|
this._labelColors.updateRealmColor(this, color);
|
|
}
|
|
realmfs_index() {
|
|
return this._proxy.RealmFS;
|
|
}
|
|
set_global_config(config) {
|
|
this.config.set_global_config(config);
|
|
}
|
|
async load_config() {
|
|
const result = await this._proxy.GetConfigAsync();
|
|
this.config.set_config(result[0]);
|
|
this.emit('changed');
|
|
}
|
|
}
|
|
_a = Realm;
|
|
(() => {
|
|
GObject.registerClass({
|
|
GTypeName: 'Realm',
|
|
Properties: {
|
|
'name': GObject.ParamSpec.string('name', '', '', GObject.ParamFlags.READWRITE, ''),
|
|
'description': GObject.ParamSpec.string('description', '', '', GObject.ParamFlags.READWRITE, ''),
|
|
'pidns': GObject.ParamSpec.uint64('pidns', '', '', GObject.ParamFlags.READWRITE, 0, Number.MAX_SAFE_INTEGER, 0),
|
|
'run-status': GObject.ParamSpec.uint('run-status', '', '', GObject.ParamFlags.READWRITE, 0, 4, 0),
|
|
'is-system-realm': GObject.ParamSpec.boolean('is-system-realm', '', '', GObject.ParamFlags.READWRITE, false),
|
|
'realmfs': GObject.ParamSpec.object('realmfs', '', '', GObject.ParamFlags.READWRITE, RealmFS),
|
|
},
|
|
Signals: { 'changed': {} },
|
|
}, _a);
|
|
})();
|