Add a menu entry to grab a screenshot
This commit is contained in:
parent
3ccb402d4f
commit
8b22ee3e56
|
@ -135,20 +135,26 @@ static void set_title(VncDisplay *vncdisplay, GtkWidget *window,
|
||||||
g_free(title);
|
g_free(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean vnc_screenshot(GtkWidget *window G_GNUC_UNUSED,
|
static void vnc_save_screenshot(GtkWidget *widget G_GNUC_UNUSED, gpointer data)
|
||||||
GdkEvent *ev, GtkWidget *vncdisplay)
|
|
||||||
{
|
{
|
||||||
|
GtkWidget * vncdisplay = data;
|
||||||
const char filename[] = "vncviewer.png";
|
const char filename[] = "vncviewer.png";
|
||||||
GdkPixbuf * pix;
|
GdkPixbuf * pix;
|
||||||
|
|
||||||
if (ev->key.keyval == GDK_KEY_F11
|
if((pix = vnc_display_get_pixbuf(VNC_DISPLAY(vncdisplay))) != NULL)
|
||||||
&& (pix = vnc_display_get_pixbuf(VNC_DISPLAY(vncdisplay)))
|
|
||||||
!= NULL)
|
|
||||||
{
|
{
|
||||||
gdk_pixbuf_save(pix, filename, "png", NULL, "tEXt::Generator App", "vncviewer", NULL);
|
gdk_pixbuf_save(pix, filename, "png", NULL, "tEXt::Generator App",
|
||||||
|
"vncviewer", NULL);
|
||||||
g_object_unref(pix);
|
g_object_unref(pix);
|
||||||
set_status(_("Screenshot saved to %s"), filename);
|
set_status(_("Screenshot saved to %s"), filename);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean vnc_screenshot(GtkWidget *window, GdkEvent *ev,
|
||||||
|
GtkWidget *vncdisplay)
|
||||||
|
{
|
||||||
|
if (ev->key.keyval == GDK_KEY_F11)
|
||||||
|
vnc_save_screenshot(window, vncdisplay);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -710,6 +716,8 @@ int vncviewer(gchar ** args)
|
||||||
GtkWidget *menubar;
|
GtkWidget *menubar;
|
||||||
GtkWidget *file, *sendkey, *view, *settings, *help;
|
GtkWidget *file, *sendkey, *view, *settings, *help;
|
||||||
GtkWidget *submenu;
|
GtkWidget *submenu;
|
||||||
|
GtkWidget *screenshot;
|
||||||
|
GtkWidget *menuitem;
|
||||||
GtkWidget *close;
|
GtkWidget *close;
|
||||||
GtkWidget *caf1;
|
GtkWidget *caf1;
|
||||||
GtkWidget *caf2;
|
GtkWidget *caf2;
|
||||||
|
@ -756,6 +764,13 @@ int vncviewer(gchar ** args)
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file);
|
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file);
|
||||||
|
|
||||||
submenu = gtk_menu_new();
|
submenu = gtk_menu_new();
|
||||||
|
screenshot = gtk_image_menu_item_new_with_mnemonic(_("Save _screenshot"));
|
||||||
|
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(screenshot),
|
||||||
|
gtk_image_new_from_stock(GTK_STOCK_SAVE,
|
||||||
|
GTK_ICON_SIZE_MENU));
|
||||||
|
gtk_menu_shell_append(GTK_MENU_SHELL(submenu), screenshot);
|
||||||
|
menuitem = gtk_separator_menu_item_new();
|
||||||
|
gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
|
||||||
close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, NULL);
|
close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, NULL);
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(submenu), close);
|
gtk_menu_shell_append(GTK_MENU_SHELL(submenu), close);
|
||||||
gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), submenu);
|
gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), submenu);
|
||||||
|
@ -929,6 +944,9 @@ int vncviewer(gchar ** args)
|
||||||
g_signal_connect(window, "key-press-event",
|
g_signal_connect(window, "key-press-event",
|
||||||
G_CALLBACK(vnc_screenshot), vnc);
|
G_CALLBACK(vnc_screenshot), vnc);
|
||||||
|
|
||||||
|
g_signal_connect(screenshot, "activate",
|
||||||
|
G_CALLBACK(vnc_save_screenshot), vnc);
|
||||||
|
|
||||||
g_signal_connect(close, "activate",
|
g_signal_connect(close, "activate",
|
||||||
G_CALLBACK(gtk_main_quit), vnc);
|
G_CALLBACK(gtk_main_quit), vnc);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user