1 /* 2 * Virt Viewer: A virtual machine console viewer 3 * 4 * Copyright (C) 2007-2012 Red Hat, Inc. 5 * Copyright (C) 2009-2012 Daniel P. Berrange 6 * Copyright (C) 2010 Marc-André Lureau 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * 22 * Author: Daniel P. Berrange <berrange@redhat.com> 23 */ 24 25 #pragma once 26 27 #include <gtk/gtk.h> 28 29 #include "virt-viewer-app.h" 30 #include "virt-viewer-file.h" 31 #include "virt-viewer-display.h" 32 33 #define VIRT_VIEWER_TYPE_SESSION virt_viewer_session_get_type() 34 G_DECLARE_DERIVABLE_TYPE(VirtViewerSession, 35 virt_viewer_session, 36 VIRT_VIEWER, 37 SESSION, 38 GObject); 39 40 typedef struct _VirtViewerSessionChannel VirtViewerSessionChannel; 41 42 enum { 43 VIRT_VIEWER_SESSION_VM_ACTION_QUIT, 44 VIRT_VIEWER_SESSION_VM_ACTION_RESET, 45 VIRT_VIEWER_SESSION_VM_ACTION_POWER_DOWN, 46 VIRT_VIEWER_SESSION_VM_ACTION_PAUSE, 47 VIRT_VIEWER_SESSION_VM_ACTION_CONTINUE, 48 }; 49 50 51 struct _VirtViewerSessionClass { 52 GObjectClass parent_class; 53 54 /* virtual methods */ 55 void (* close) (VirtViewerSession* session); 56 gboolean (* open_fd) (VirtViewerSession* session, int fd); 57 gboolean (* open_host) (VirtViewerSession* session, const gchar *host, const gchar *port, const gchar *tlsport); 58 gboolean (* open_uri) (VirtViewerSession* session, const gchar *uri, GError **error); 59 gboolean (* channel_open_fd) (VirtViewerSession* session, VirtViewerSessionChannel *channel, int fd); 60 void (* usb_device_selection) (VirtViewerSession* session, GtkWindow *parent); 61 void (* usb_device_reset) (VirtViewerSession* session); 62 void (* smartcard_insert) (VirtViewerSession* session); 63 void (* smartcard_remove) (VirtViewerSession* session); 64 const gchar* (* mime_type) (VirtViewerSession* session); 65 66 /* monitors = GHashTable<int, GdkRectangle*> */ 67 void (*apply_monitor_geometry)(VirtViewerSession *session, GHashTable* monitors); 68 gboolean (*can_share_folder)(VirtViewerSession *session); 69 gboolean (*can_retry_auth)(VirtViewerSession *session); 70 void (*vm_action)(VirtViewerSession *session, gint action); 71 gboolean (*has_vm_action)(VirtViewerSession *session, gint action); 72 }; 73 74 GType virt_viewer_session_get_type(void); 75 76 const gchar* virt_viewer_session_mime_type(VirtViewerSession *session); 77 78 void virt_viewer_session_add_display(VirtViewerSession *session, 79 VirtViewerDisplay *display); 80 void virt_viewer_session_remove_display(VirtViewerSession *session, 81 VirtViewerDisplay *display); 82 void virt_viewer_session_clear_displays(VirtViewerSession *session); 83 void virt_viewer_session_update_displays_geometry(VirtViewerSession *session); 84 85 void virt_viewer_session_close(VirtViewerSession* session); 86 gboolean virt_viewer_session_open_fd(VirtViewerSession* session, int fd); 87 gboolean virt_viewer_session_open_host(VirtViewerSession* session, const gchar *host, const gchar *port, const gchar *tlsport); 88 GObject* virt_viewer_session_get(VirtViewerSession* session); 89 gboolean virt_viewer_session_channel_open_fd(VirtViewerSession* session, 90 VirtViewerSessionChannel* channel, int fd); 91 gboolean virt_viewer_session_open_uri(VirtViewerSession *session, const gchar *uri, GError **error); 92 93 void virt_viewer_session_set_auto_usbredir(VirtViewerSession* session, gboolean auto_usbredir); 94 gboolean virt_viewer_session_get_auto_usbredir(VirtViewerSession* session); 95 96 void virt_viewer_session_set_has_usbredir(VirtViewerSession* session, gboolean has_usbredir); 97 gboolean virt_viewer_session_get_has_usbredir(VirtViewerSession *self); 98 99 void virt_viewer_session_usb_device_selection(VirtViewerSession *self, GtkWindow *parent); 100 void virt_viewer_session_usb_device_reset(VirtViewerSession *self); 101 void virt_viewer_session_smartcard_insert(VirtViewerSession *self); 102 void virt_viewer_session_smartcard_remove(VirtViewerSession *self); 103 VirtViewerApp* virt_viewer_session_get_app(VirtViewerSession *self); 104 gchar* virt_viewer_session_get_uri(VirtViewerSession *self); 105 void virt_viewer_session_set_file(VirtViewerSession *self, VirtViewerFile *file); 106 VirtViewerFile* virt_viewer_session_get_file(VirtViewerSession *self); 107 gboolean virt_viewer_session_can_share_folder(VirtViewerSession *self); 108 gboolean virt_viewer_session_can_retry_auth(VirtViewerSession *self); 109 110 void virt_viewer_session_vm_action(VirtViewerSession *self, gint action); 111 gboolean virt_viewer_session_has_vm_action(VirtViewerSession *self, gint action); 112