[gtk-vnc] examples: wire up a menu for power control options
- From: Daniel P. Berrange <dberrange src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-vnc] examples: wire up a menu for power control options
- Date: Fri, 11 Dec 2020 18:26:13 +0000 (UTC)
commit 89a955b767c991b53359d9b50c9fa924817687be
Author: Daniel P. Berrangé <dan berrange com>
Date: Fri Dec 11 13:55:30 2020 +0000
examples: wire up a menu for power control options
Signed-off-by: Daniel P. Berrangé <berrange redhat com>
examples/gvncviewer.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 66 insertions(+), 1 deletion(-)
---
diff --git a/examples/gvncviewer.c b/examples/gvncviewer.c
index b05b4f3..52da3eb 100644
--- a/examples/gvncviewer.c
+++ b/examples/gvncviewer.c
@@ -227,6 +227,16 @@ static void vnc_mouse_ungrab(GtkWidget *vncdisplay, GtkWidget *window)
set_title(VNC_DISPLAY(vncdisplay), window, FALSE);
}
+static void vnc_power_control_init(GtkWidget *vncdisplay G_GNUC_UNUSED, GtkWidget *power)
+{
+ gtk_widget_set_sensitive(power, TRUE);
+}
+
+static void vnc_power_control_failed(GtkWidget *vncdisplay G_GNUC_UNUSED)
+{
+ g_printerr("Unable to perform power control request\n");
+}
+
static int connected = 0;
static void vnc_connected(GtkWidget *vncdisplay G_GNUC_UNUSED)
@@ -386,6 +396,32 @@ static void do_smoothing(GtkWidget *menu, GtkWidget *vncdisplay)
vnc_display_set_smoothing(VNC_DISPLAY(vncdisplay), FALSE);
}
+static void do_power_control(VncDisplay *vncdisplay, VncConnectionPowerAction action)
+{
+ VncConnection *conn = vnc_display_get_connection(vncdisplay);
+
+ if (!vnc_connection_get_power_control(conn)) {
+ g_printerr("Power control not available on this server\n");
+ return;
+ }
+ vnc_connection_power_control(conn, action);
+}
+
+static void do_shutdown(GtkWidget *menu G_GNUC_UNUSED, GtkWidget *vncdisplay)
+{
+ do_power_control(VNC_DISPLAY(vncdisplay), VNC_CONNECTION_POWER_ACTION_SHUTDOWN);
+}
+
+static void do_reboot(GtkWidget *menu G_GNUC_UNUSED, GtkWidget *vncdisplay)
+{
+ do_power_control(VNC_DISPLAY(vncdisplay), VNC_CONNECTION_POWER_ACTION_REBOOT);
+}
+
+static void do_reset(GtkWidget *menu G_GNUC_UNUSED, GtkWidget *vncdisplay)
+{
+ do_power_control(VNC_DISPLAY(vncdisplay), VNC_CONNECTION_POWER_ACTION_RESET);
+}
+
static void dialog_update_keysyms(GtkWidget *window, guint *keysyms, guint numsyms)
{
gchar *keys;
@@ -641,7 +677,7 @@ int main(int argc, char **argv)
GtkWidget *window;
GtkWidget *layout;
GtkWidget *menubar;
- GtkWidget *sendkey, *view, *settings;
+ GtkWidget *sendkey, *view, *settings, *power;
GtkWidget *submenu;
GtkWidget *caf1;
GtkWidget *caf2;
@@ -657,6 +693,9 @@ int main(int argc, char **argv)
GtkWidget *scaling;
GtkWidget *smoothing;
GtkWidget *showgrabkeydlg;
+ GtkWidget *shutdown;
+ GtkWidget *reboot;
+ GtkWidget *reset;
const char *help_msg = "Run 'gvncviewer --help' to see a full list of available command line options";
GSList *accels;
@@ -748,6 +787,22 @@ int main(int argc, char **argv)
gtk_menu_item_set_submenu(GTK_MENU_ITEM(settings), submenu);
+ power = gtk_menu_item_new_with_mnemonic("_Power");
+ gtk_widget_set_sensitive(power, FALSE);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menubar), power);
+
+ submenu = gtk_menu_new();
+
+ shutdown = gtk_menu_item_new_with_mnemonic("_Shutdown");
+ reboot = gtk_menu_item_new_with_mnemonic("_Reboot");
+ reset = gtk_menu_item_new_with_mnemonic("Rese_t");
+
+ gtk_menu_shell_append(GTK_MENU_SHELL(submenu), shutdown);
+ gtk_menu_shell_append(GTK_MENU_SHELL(submenu), reboot);
+ gtk_menu_shell_append(GTK_MENU_SHELL(submenu), reset);
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(power), submenu);
+
gtk_box_pack_start(GTK_BOX(layout), menubar, FALSE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(layout), vnc, TRUE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(window), layout);
@@ -832,6 +887,10 @@ int main(int argc, char **argv)
g_signal_connect(vnc, "vnc-keyboard-ungrab",
G_CALLBACK(vnc_key_ungrab), window);
+ g_signal_connect(vnc, "vnc-power-control-initialized",
+ G_CALLBACK(vnc_power_control_init), power);
+ g_signal_connect(vnc, "vnc-power-control-failed",
+ G_CALLBACK(vnc_power_control_failed), power);
g_signal_connect(window, "key-press-event",
G_CALLBACK(vnc_screenshot), vnc);
@@ -864,6 +923,12 @@ int main(int argc, char **argv)
G_CALLBACK(do_scaling), vnc);
g_signal_connect(smoothing, "toggled",
G_CALLBACK(do_smoothing), vnc);
+ g_signal_connect(shutdown, "activate",
+ G_CALLBACK(do_shutdown), vnc);
+ g_signal_connect(reboot, "activate",
+ G_CALLBACK(do_reboot), vnc);
+ g_signal_connect(reset, "activate",
+ G_CALLBACK(do_reset), vnc);
gtk_main();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]