mirror of
https://gitlab.com/virt-viewer/virt-viewer.git
synced 2025-01-11 05:17:45 +03:00
Re-write completely to use Glade, libvirt events, and libvirt-glib integration
This commit is contained in:
parent
9951d5e831
commit
61a05530b1
@ -25,3 +25,10 @@ Makefile\.in$
|
||||
^config.h.in$
|
||||
^man/Makefile$
|
||||
^man/virt-viewer\.1$
|
||||
^plugin/\.libs/
|
||||
^plugin/\.deps/
|
||||
^plugin/.*\.o
|
||||
^plugin/.*\.la
|
||||
^plugin/.*\.so
|
||||
^plugin/.*\.lo
|
||||
^plugin/Makefile$
|
||||
|
@ -31,7 +31,7 @@ if test "$DIE" -eq 1; then
|
||||
fi
|
||||
|
||||
if test -z "$*"; then
|
||||
echo "I am going to run ./configure with --enable-warnings - if you "
|
||||
echo "I am going to run ./configure with not arguments - if you "
|
||||
echo "wish to pass any extra arguments to it, please specify them on "
|
||||
echo "the $0 command line."
|
||||
fi
|
||||
@ -44,7 +44,7 @@ autoconf
|
||||
|
||||
cd $THEDIR
|
||||
|
||||
$srcdir/configure --enable-warnings "$@" && {
|
||||
$srcdir/configure "$@" && {
|
||||
echo
|
||||
echo "Now type 'make' to compile virt-viewer."
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
AC_INIT(virt-viewer, 0.0.3)
|
||||
AC_INIT(virt-viewer, 0.0.4)
|
||||
AC_CONFIG_SRCDIR(src/main.c)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
dnl Make automake keep quiet about wildcards & other GNUmake-isms
|
||||
@ -17,8 +17,10 @@ AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions])
|
||||
VIRT_VIEWER_COMPILE_WARNINGS(maximum)
|
||||
|
||||
PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.6.0)
|
||||
PKG_CHECK_MODULES(LIBVIRT, libvirt >= 0.2.0)
|
||||
PKG_CHECK_MODULES(LIBVIRT, libvirt >= 0.5.0)
|
||||
PKG_CHECK_MODULES(LIBVIRT_GLIB, libvirt-glib >= 0.0.1)
|
||||
PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.10.0)
|
||||
PKG_CHECK_MODULES(LIBGLADE2, libglade-2.0 >= 2.6.0)
|
||||
PKG_CHECK_MODULES(GTKVNC, gtk-vnc-1.0 >= 0.3.5)
|
||||
|
||||
dnl Decide if this platform can support the SSH tunnel feature.
|
||||
|
@ -43,6 +43,10 @@ Specify the hypervisor connection URI
|
||||
|
||||
Wait for the domain to start up before attempting to connect to the console
|
||||
|
||||
=item -w, --reconnect
|
||||
|
||||
Automatically reconnect to the domain if it shuts down and restarts
|
||||
|
||||
=item -d, --direct
|
||||
|
||||
Do not attempt to tunnel the console over SSH, even if the main connection URI
|
||||
@ -61,9 +65,9 @@ To connect to the guest with ID 7 running under QEMU
|
||||
virt-viewer --connect qemu:///system 7
|
||||
|
||||
To wait for the guest with UUID 66ab33c0-6919-a3f7-e659-16c82d248521 to
|
||||
startup and then connect
|
||||
startup and then connect, also reconnecting upon restart of VM
|
||||
|
||||
virt-viewer --wait 66ab33c0-6919-a3f7-e659-16c82d248521
|
||||
virt-viewer --reconnect --wait 66ab33c0-6919-a3f7-e659-16c82d248521
|
||||
|
||||
To connect to a remote console using TLS
|
||||
|
||||
@ -72,7 +76,7 @@ To connect to a remote console using TLS
|
||||
To connect to a remote host using SSH, lookup the guest config and
|
||||
then make a direct non-tunnelled connection of the console
|
||||
|
||||
virt-viewer --connect xen+ssh://root@example.org/ demo
|
||||
virt-viewer --direct --connect xen+ssh://root@example.org/ demo
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
@ -84,7 +88,7 @@ Report bugs to the mailing list C<http://www.redhat.com/mailman/listinfo/et-mgmt
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright (C) 2007 Red Hat, Inc, and various contributors.
|
||||
Copyright (C) 2007-2008 Red Hat, Inc, and various contributors.
|
||||
This is free software. You may redistribute copies of it under the terms of the GNU General
|
||||
Public License C<http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the extent
|
||||
permitted by law.
|
||||
|
@ -9,13 +9,24 @@ virt_viewer_plugin_la_SOURCES = \
|
||||
npshell.c npunix.c
|
||||
virt_viewer_plugin_la_LIBADD = \
|
||||
@FIREFOX_PLUGIN_LIBS@ \
|
||||
@GTKVNC_LIBS@ @GTK2_LIBS@ @LIBXML2_LIBS@ @LIBVIRT_LIBS@
|
||||
@GTKVNC_LIBS@ \
|
||||
@GTK2_LIBS@ \
|
||||
@LIBXML2_LIBS@ \
|
||||
@LIBGLADE2_LIBS@ \
|
||||
@LIBVIRT_LIBS@ \
|
||||
@LIBVIRT_GLIB_LIBS@
|
||||
virt_viewer_plugin_la_LDFLAGS = \
|
||||
-module -avoid-version
|
||||
virt_viewer_plugin_la_CFLAGS = \
|
||||
-DPLUGIN=1 -DENABLE_DEBUG=1 -DDEBUG=1 \
|
||||
@FIREFOX_PLUGIN_CFLAGS@ \
|
||||
@GTKVNC_CFLAGS@ @GTK2_CFLAGS@ @LIBXML2_CFLAGS@ @LIBVIRT_CFLAGS@ \
|
||||
@GTKVNC_CFLAGS@ \
|
||||
@GTK2_CFLAGS@ \
|
||||
@LIBXML2_CFLAGS@ \
|
||||
@LIBGLADE2_CFLAGS@ \
|
||||
@LIBVIRT_CFLAGS@ \
|
||||
@LIBVIRT_GLIB_CFLAGS@ \
|
||||
-DGLADE_DIR="\"$(pkgdatadir)/ui\"" \
|
||||
@WARN_CFLAGS@ \
|
||||
-I$(top_srcdir)/src
|
||||
|
||||
|
@ -198,7 +198,7 @@ NPP_New(NPMIMEType pluginType G_GNUC_UNUSED,
|
||||
This->mode = mode;
|
||||
This->instance = instance;
|
||||
This->uri = This->name = NULL;
|
||||
This->direct = This->waitvnc = 0;
|
||||
This->direct = This->waitvm = This->reconnect = 0;
|
||||
|
||||
/* Read the parameters passed to the plugin. */
|
||||
for (i = 0; i < argc; i++)
|
||||
@ -209,8 +209,10 @@ NPP_New(NPMIMEType pluginType G_GNUC_UNUSED,
|
||||
This->name = strdup (argv[i]);
|
||||
else if (strcasecmp (argn[i], "direct") == 0)
|
||||
This->direct = strcmp (argv[i], "1") == 0;
|
||||
else if (strcasecmp (argn[i], "waitvnc") == 0)
|
||||
This->waitvnc = strcmp (argv[i], "1") == 0;
|
||||
else if (strcasecmp (argn[i], "wait") == 0)
|
||||
This->waitvm = strcmp (argv[i], "1") == 0;
|
||||
else if (strcasecmp (argn[i], "reconnect") == 0)
|
||||
This->reconnect = strcmp (argv[i], "1") == 0;
|
||||
}
|
||||
|
||||
return NPERR_NO_ERROR;
|
||||
|
@ -41,12 +41,6 @@
|
||||
|
||||
#include "virt-viewer-plugin.h"
|
||||
|
||||
static GtkWidget *
|
||||
get_container (void *thisv)
|
||||
{
|
||||
PluginInstance *This = (PluginInstance *) thisv;
|
||||
return This->container;
|
||||
}
|
||||
|
||||
NPError
|
||||
VirtViewerXSetWindow (NPP instance, NPWindow *window)
|
||||
@ -88,9 +82,9 @@ VirtViewerXSetWindow (NPP instance, NPWindow *window)
|
||||
|
||||
/* Make the VNC widget. */
|
||||
if (This->uri && This->name) {
|
||||
debug ("calling viewer_start uri=%s name=%s direct=%d waitvnc=%d container=%p", This->uri, This->name, This->direct, This->waitvnc, This->container);
|
||||
r = viewer_start (This->uri, This->name, This->direct, This->waitvnc, 1,
|
||||
get_container, This, 0);
|
||||
debug ("calling viewer_start uri=%s name=%s direct=%d waitvm=%d reconnect=%d container=%p",
|
||||
This->uri, This->name, This->direct, This->waitvm, This->reconnect, This->container);
|
||||
r = viewer_start (This->uri, This->name, This->direct, This->waitvm, This->reconnect, 1, This->container);
|
||||
if (r != 0)
|
||||
fprintf (stderr, "viewer_start returned %d != 0\n", r);
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ typedef struct {
|
||||
GtkWidget *container;
|
||||
|
||||
char *uri, *name;
|
||||
int direct, waitvnc;
|
||||
gboolean direct, waitvm, reconnect;
|
||||
} PluginInstance;
|
||||
|
||||
extern NPError VirtViewerXSetWindow (NPP instance, NPWindow* window);
|
||||
|
@ -1,6 +1,26 @@
|
||||
|
||||
bin_PROGRAMS = virt-viewer
|
||||
|
||||
gladedir = $(pkgdatadir)/ui
|
||||
glade_DATA = viewer.glade about.glade auth.glade
|
||||
|
||||
EXTRA_DIST = $(glade_DATA)
|
||||
|
||||
virt_viewer_SOURCES = main.c viewer.h
|
||||
virt_viewer_LDADD = @GTKVNC_LIBS@ @GTK2_LIBS@ @LIBXML2_LIBS@ @LIBVIRT_LIBS@ @LIBOBJS@
|
||||
virt_viewer_CFLAGS = @GTKVNC_CFLAGS@ @GTK2_CFLAGS@ @LIBXML2_CFLAGS@ @LIBVIRT_CFLAGS@ @WARN_CFLAGS@
|
||||
virt_viewer_LDADD = \
|
||||
@GTKVNC_LIBS@ \
|
||||
@GTK2_LIBS@ \
|
||||
@LIBXML2_LIBS@ \
|
||||
@LIBGLADE2_LIBS@ \
|
||||
@LIBVIRT_LIBS@ \
|
||||
@LIBVIRT_GLIB_LIBS@
|
||||
|
||||
virt_viewer_CFLAGS = \
|
||||
@GTKVNC_CFLAGS@ \
|
||||
@GTK2_CFLAGS@ \
|
||||
@LIBXML2_CFLAGS@ \
|
||||
@LIBGLADE2_CFLAGS@ \
|
||||
@LIBVIRT_CFLAGS@ \
|
||||
@LIBVIRT_GLIB_CFLAGS@ \
|
||||
@WARN_CFLAGS@ \
|
||||
-DGLADE_DIR="\"$(gladedir)\""
|
||||
|
56
src/about.glade
Normal file
56
src/about.glade
Normal file
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
|
||||
<!--Generated with glade3 3.4.5 on Wed Nov 26 12:15:46 2008 -->
|
||||
<glade-interface>
|
||||
<widget class="GtkAboutDialog" id="about">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">About Glade</property>
|
||||
<property name="resizable">False</property>
|
||||
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
|
||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
||||
<property name="has_separator">False</property>
|
||||
<property name="program_name">Virtual Machine Viewer</property>
|
||||
<property name="copyright" translatable="yes">Copyright 2007-2008 Daniel P. Berrange
|
||||
Copyright 2007-2008 Red Hat, Inc.</property>
|
||||
<property name="comments" translatable="yes">A remote desktop client built with GTK-VNC and libvirt</property>
|
||||
<property name="website">http://virt-manager.org/</property>
|
||||
<property name="website_label" translatable="yes">virt-vmanager.org</property>
|
||||
<property name="license" translatable="yes">This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
</property>
|
||||
<property name="authors">Daniel P. Berrange</property>
|
||||
<property name="translator_credits" translatable="yes">The Fedora Translation Team</property>
|
||||
<signal name="delete_event" handler="about_delete"/>
|
||||
<signal name="response" handler="about_close"/>
|
||||
<child internal-child="vbox">
|
||||
<widget class="GtkVBox" id="dialog-vbox1">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<widget class="GtkHButtonBox" id="dialog-action_area1">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</glade-interface>
|
103
src/auth.glade
Normal file
103
src/auth.glade
Normal file
@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
|
||||
<!--Generated with glade3 3.4.5 on Wed Nov 26 18:01:48 2008 -->
|
||||
<glade-interface>
|
||||
<widget class="GtkDialog" id="auth">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">Authentication required</property>
|
||||
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
|
||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
||||
<property name="has_separator">False</property>
|
||||
<child internal-child="vbox">
|
||||
<widget class="GtkVBox" id="dialog-vbox1">
|
||||
<property name="visible">True</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<widget class="GtkTable" id="table1">
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="column_spacing">6</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="prompt-password">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">Password:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="prompt-username">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">Username:</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="cred-username">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="cred-password">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<widget class="GtkHButtonBox" id="dialog-action_area1">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button-cancel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">gtk-cancel</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">-6</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button-ok">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="label" translatable="yes">gtk-ok</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">-5</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</glade-interface>
|
1152
src/main.c
1152
src/main.c
File diff suppressed because it is too large
Load Diff
311
src/viewer.glade
Normal file
311
src/viewer.glade
Normal file
@ -0,0 +1,311 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
|
||||
<!--Generated with glade3 3.4.5 on Wed Nov 26 17:35:24 2008 -->
|
||||
<glade-interface>
|
||||
<widget class="GtkWindow" id="viewer">
|
||||
<property name="default_width">400</property>
|
||||
<property name="default_height">400</property>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="vbox1">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenuBar" id="top-menu">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-file">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_File</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menu1">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-file-screenshot">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Screenshot</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_file_screenshot"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
|
||||
<property name="visible">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="imagemenuitem5">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">gtk-quit</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="viewer_menu_file_quit"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-view">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_View</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menu2">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkCheckMenuItem" id="menu-view-fullscreen">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Full screen</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="toggled" handler="viewer_menu_view_fullscreen"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkCheckMenuItem" id="menu-view-scale">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Scale display</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="toggled" handler="viewer_menu_view_scale"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Send key</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menu5">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-cad">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+_Del</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="cad"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-cab">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+_Backspace</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="cab"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkSeparatorMenuItem" id="separatormenuitem2">
|
||||
<property name="visible">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F_1</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf1"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf2">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F_2</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf2"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf3">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F_3</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf3"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf4">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F_4</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf4"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf5">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F_5</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf5"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf6">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F_6</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf7">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F_7</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf7"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf8">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F_8</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf8"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf9">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F_9</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf9"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf10">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F1_0</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf10"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf11">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F11</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf11"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-caf12">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Ctrl+Alt+F12</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="caf12"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkSeparatorMenuItem" id="separatormenuitem3">
|
||||
<property name="visible">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-send-print">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_PrintScreen</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="viewer_menu_send" object="printscreen"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkMenuItem" id="menu-help">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Help</property>
|
||||
<property name="use_underline">True</property>
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menu3">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="imagemenuitem10">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">gtk-about</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="viewer_menu_help_about"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkNotebook" id="notebook">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="show_border">False</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="status">
|
||||
<property name="visible">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label1">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">page 1</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">tab</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="vnc-scroll">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="vnc-port">
|
||||
<property name="visible">True</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<widget class="GtkAlignment" id="vnc-align">
|
||||
<property name="visible">True</property>
|
||||
<property name="xscale">0</property>
|
||||
<property name="yscale">0</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label2">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">page 2</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">tab</property>
|
||||
<property name="position">1</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</glade-interface>
|
@ -23,6 +23,12 @@
|
||||
#ifndef VIEWER_H
|
||||
#define VIEWER_H
|
||||
|
||||
extern int viewer_start (const char *uri, const char *name, int direct, int waitvnc, int set_verbose, GtkWidget *(*get_toplevel)(void *), void *data, int with_menubar);
|
||||
extern int viewer_start (const char *uri,
|
||||
const char *name,
|
||||
gboolean direct,
|
||||
gboolean waitvm,
|
||||
gboolean reconnect,
|
||||
gboolean verbose,
|
||||
GtkWidget *container);
|
||||
|
||||
#endif /* VIEWER_H */
|
||||
|
@ -75,6 +75,11 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%defattr(-,root,root,-)
|
||||
%doc README COPYING AUTHORS ChangeLog NEWS
|
||||
%{_bindir}/%{name}
|
||||
%dir %{_datadir}/%{name}
|
||||
%dir %{_datadir}/%{name}/ui/
|
||||
%{_datadir}/%{name}/ui/auth.glade
|
||||
%{_datadir}/%{name}/ui/about.glade
|
||||
%{_datadir}/%{name}/ui/viewer.glade
|
||||
%{_mandir}/man1/%{name}*
|
||||
|
||||
%if %{_with_plugin}
|
||||
|
Loading…
Reference in New Issue
Block a user