#!/usr/bin/env -S gjs -m // SPDX-FileCopyrightText: GSConnect Developers https://github.com/GSConnect // // SPDX-License-Identifier: GPL-2.0-or-later // -*- mode: js; -*- import Gdk from 'gi://Gdk?version=3.0'; import 'gi://GdkPixbuf?version=2.0'; import Gio from 'gi://Gio?version=2.0'; import GLib from 'gi://GLib?version=2.0'; import GObject from 'gi://GObject?version=2.0'; import Gtk from 'gi://Gtk?version=3.0'; import system from 'system'; import './preferences/init.js'; import {Window} from './preferences/service.js'; import Config from './config.js'; import('gi://GioUnix?version=2.0').catch(() => {}); // Set version for optional dependency /** * Class representing the GSConnect service daemon. */ const Preferences = GObject.registerClass({ GTypeName: 'GSConnectPreferences', Implements: [Gio.ActionGroup], }, class Preferences extends Gtk.Application { _init() { super._init({ application_id: 'org.gnome.Shell.Extensions.GSConnect.Preferences', resource_base_path: '/org/gnome/Shell/Extensions/GSConnect', }); GLib.set_prgname('gsconnect-preferences'); GLib.set_application_name(_('GSConnect Preferences')); } vfunc_activate() { if (this._window === undefined) { this._window = new Window({ application: this, }); } this._window.present(); } vfunc_startup() { super.vfunc_startup(); // Init some resources const provider = new Gtk.CssProvider(); provider.load_from_resource(`${Config.APP_PATH}/application.css`); Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION ); const actions = [ ['refresh', null], ['connect', GLib.VariantType.new('s')], ]; for (const [name, type] of actions) { const action = new Gio.SimpleAction({ name: name, parameter_type: type, }); this.add_action(action); } } vfunc_activate_action(action_name, parameter) { try { const paramArray = []; if (parameter instanceof GLib.Variant) paramArray[0] = parameter; this.get_dbus_connection().call( 'org.gnome.Shell.Extensions.GSConnect', '/org/gnome/Shell/Extensions/GSConnect', 'org.freedesktop.Application', 'ActivateAction', GLib.Variant.new('(sava{sv})', [action_name, paramArray, {}]), null, Gio.DBusCallFlags.NONE, -1, null, null ); } catch (e) { logError(e); } } }); await (new Preferences()).runAsync([system.programInvocationName].concat(ARGV));