mirror of
https://github.com/elementary/gala.git
synced 2024-12-22 16:51:31 +03:00
58 lines
2.1 KiB
Vala
58 lines
2.1 KiB
Vala
/*
|
|
* Copyright 2024 elementary, Inc. (https://elementary.io)
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
|
|
public class Gala.Daemon.BackgroundMenu : Gtk.Menu {
|
|
public const string ACTION_GROUP_PREFIX = "background-menu";
|
|
public const string ACTION_PREFIX = ACTION_GROUP_PREFIX + ".";
|
|
|
|
construct {
|
|
var change_wallpaper = new Gtk.MenuItem.with_label (_("Change Wallpaper…")) {
|
|
action_name = ACTION_PREFIX + "launch-uri",
|
|
action_target = new Variant.string ("settings://desktop/appearance/wallpaper")
|
|
};
|
|
|
|
var display_settings = new Gtk.MenuItem.with_label (_("Display Settings…")) {
|
|
action_name = ACTION_PREFIX + "launch-uri",
|
|
action_target = new Variant.string ("settings://display")
|
|
};
|
|
|
|
|
|
var system_settings = new Gtk.MenuItem.with_label (_("System Settings…")) {
|
|
action_name = ACTION_PREFIX + "launch-uri",
|
|
action_target = new Variant.string ("settings://")
|
|
};
|
|
|
|
append (change_wallpaper);
|
|
append (display_settings);
|
|
append (new Gtk.SeparatorMenuItem ());
|
|
append (system_settings);
|
|
show_all ();
|
|
|
|
var launch_action = new SimpleAction ("launch-uri", VariantType.STRING);
|
|
launch_action.activate.connect (action_launch);
|
|
|
|
var action_group = new SimpleActionGroup ();
|
|
action_group.add_action (launch_action);
|
|
|
|
insert_action_group (ACTION_GROUP_PREFIX, action_group);
|
|
}
|
|
|
|
private void action_launch (SimpleAction action, Variant? variant) {
|
|
try {
|
|
AppInfo.launch_default_for_uri (variant.get_string (), null);
|
|
} catch (Error e) {
|
|
var message_dialog = new Granite.MessageDialog.with_image_from_icon_name (
|
|
_("Failed to open System Settings"),
|
|
_("A handler for the “settings://” URI scheme must be installed."),
|
|
"dialog-error",
|
|
Gtk.ButtonsType.CLOSE
|
|
);
|
|
message_dialog.show_error_details (e.message);
|
|
message_dialog.present ();
|
|
message_dialog.response.connect (message_dialog.destroy);
|
|
}
|
|
}
|
|
}
|