[Spice-devel] [spice-gtk PATCH] spicy: Make "CopyToGuest" and "PasteFromGuest" insensitive if spice agent is not connected
Dunrong Huang
riegamaths at gmail.com
Mon Sep 24 01:19:25 PDT 2012
Hi, thanks for your reply.
2012/9/24 Hans de Goede <hdegoede at redhat.com>:
> Hi,
>
> Thanks, looks good, so I've added it to git master. Notice though that
> spicy is merely a little spice-gtk test-client, and our prefered
> spice-client
> is remote-viewer (which is part of virt-viewer).
I usually use spicy to test && hack QEMU, virt-viewer is a bit more
big to me, :-),
but I will try it in future work.
Can remote-viewer connect to QEMU which start manually rather than by libvirt?
>
> Regards,
>
> Hans
>
>
>
> On 09/24/2012 09:27 AM, Dunrong Huang wrote:
>>
>> "CopyToGuest" and "CopyToGuest" can not work if spice agent is not
>> connected, e.g. guest does not install or enable spice agent, or spice
>> server does not create vdagent channel.
>>
>> In these cases, make those item insensitive.
>>
>> Signed-off-by: Dunrong Huang <riegamaths at gmail.com>
>> ---
>> gtk/spicy.c | 38 ++++++++++++++++++++++++++++++++++++++
>> 1 个文件被修改,插入 38 行(+)
>>
>> diff --git a/gtk/spicy.c b/gtk/spicy.c
>> index 142fc03..6390b79 100644
>> --- a/gtk/spicy.c
>> +++ b/gtk/spicy.c
>> @@ -329,6 +329,41 @@ static void update_status(struct spice_connection
>> *conn)
>> }
>> }
>>
>> +static const char *spice_edit_properties[] = {
>> + "CopyToGuest",
>> + "PasteFromGuest",
>> +};
>> +
>> +static void update_edit_menu_window(SpiceWindow *win)
>> +{
>> + int i;
>> + GtkAction *toggle;
>> +
>> + if (win == NULL) {
>> + return;
>> + }
>> +
>> + /* Make "CopyToGuest" and "PasteFromGuest" insensitive if spice
>> + * agent is not connected */
>> + for (i = 0; i < G_N_ELEMENTS(spice_edit_properties); i++) {
>> + toggle = gtk_action_group_get_action(win->ag,
>> spice_edit_properties[i]);
>> + if (toggle) {
>> + gtk_action_set_sensitive(toggle, win->conn->agent_connected);
>> + }
>> + }
>> +}
>> +
>> +static void update_edit_menu(struct spice_connection *conn)
>> +{
>> + int i;
>> +
>> + for (i = 0; i < SPICE_N_ELEMENTS(conn->wins); i++) {
>> + if (conn->wins[i]) {
>> + update_edit_menu_window(conn->wins[i]);
>> + }
>> + }
>> +}
>> +
>> static void menu_cb_connect(GtkAction *action, void *data)
>> {
>> struct spice_connection *conn;
>> @@ -1305,6 +1340,8 @@ static SpiceWindow
>> *create_spice_window(spice_connection *conn, SpiceChannel *ch
>> win, 0);
>> }
>>
>> + update_edit_menu_window(win);
>> +
>> toggle = gtk_action_group_get_action(win->ag, "Toolbar");
>> state = gtk_widget_get_visible(win->toolbar);
>> gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(toggle), state);
>> @@ -1462,6 +1499,7 @@ static void main_agent_update(SpiceChannel *channel,
>> gpointer data)
>> g_object_get(channel, "agent-connected", &conn->agent_connected,
>> NULL);
>> conn->agent_state = conn->agent_connected ? _("yes") : _("no");
>> update_status(conn);
>> + update_edit_menu(conn);
>> }
>>
>> static void inputs_modifiers(SpiceChannel *channel, gpointer data)
>>
>
--
Best Regards,
Dunrong Huang
More information about the Spice-devel
mailing list