Allow user to set a window title for remote-viewer

Currently the remote viewer windows get the URI as their
title. Provide a --title STRING arg to remote-viewer to
let the user override the title with something more
meaningful to them.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2012-10-09 17:24:31 +01:00
parent a4e588e3ea
commit fe485f22de
6 changed files with 35 additions and 8 deletions

View File

@ -38,6 +38,10 @@ Zoom level of the display window in percentage. Range 10-200.
Start with the window maximised to fullscreen
=item -t TITLE, --title TITLE
Set the window title to B<TITLE>
=item --spice-controller
Use the SPICE controller to initialize the connection with the SPICE

View File

@ -196,6 +196,7 @@ main(int argc, char **argv)
int zoom = 100;
gchar **args = NULL;
gchar *uri = NULL;
char *title = NULL;
gboolean verbose = FALSE;
gboolean debug = FALSE;
gboolean direct = FALSE;
@ -209,6 +210,8 @@ main(int argc, char **argv)
remote_viewer_version, N_("Display version information"), NULL },
{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
N_("Display verbose information"), NULL },
{ "title", 't', 0, G_OPTION_ARG_STRING, &title,
N_("Set window title"), NULL },
{ "direct", 'd', 0, G_OPTION_ARG_NONE, &direct,
N_("Direct connection with no automatic tunnels"), NULL },
{ "zoom", 'z', 0, G_OPTION_ARG_INT, &zoom,
@ -304,7 +307,7 @@ main(int argc, char **argv)
g_object_set(viewer, "guest-name", "defined by Spice controller", NULL);
} else {
#endif
viewer = remote_viewer_new(uri, verbose);
viewer = remote_viewer_new(uri, title, verbose);
g_object_set(viewer, "guest-name", uri, NULL);
#if HAVE_SPICE_GTK
}

View File

@ -181,11 +181,12 @@ remote_viewer_init(RemoteViewer *self)
}
RemoteViewer *
remote_viewer_new(const gchar *uri, gboolean verbose)
remote_viewer_new(const gchar *uri, const gchar *title, gboolean verbose)
{
return g_object_new(REMOTE_VIEWER_TYPE,
"guri", uri,
"verbose", verbose,
"title", title,
NULL);
}
@ -609,7 +610,7 @@ spice_ctrl_notified(SpiceCtrlController *ctrl,
&value);
}
} else if (g_str_equal(pspec->name, "title")) {
g_object_set_property(G_OBJECT(app), "title", &value);
virt_viewer_app_set_title(app, g_value_get_string(&value));
} else if (g_str_equal(pspec->name, "display-flags")) {
guint flags = g_value_get_uint(&value);
gboolean fullscreen = flags & CONTROLLER_SET_FULL_SCREEN;
@ -768,7 +769,8 @@ remote_viewer_start(VirtViewerApp *app)
g_return_val_if_fail(guri != NULL, FALSE);
DEBUG_LOG("Opening display to %s", guri);
g_object_set(app, "title", guri, NULL);
if (virt_viewer_app_get_title(app) == NULL)
virt_viewer_app_set_title(app, guri);
if (virt_viewer_util_extract_host(guri, &type, NULL, NULL, NULL, NULL) < 0 || type == NULL) {
virt_viewer_app_simple_message_dialog(app, _("Cannot determine the connection type from URI"));

View File

@ -48,7 +48,9 @@ typedef struct {
GType remote_viewer_get_type (void);
RemoteViewer* remote_viewer_new(const gchar *uri, gboolean verbose);
RemoteViewer* remote_viewer_new(const gchar *uri,
const gchar *title,
gboolean verbose);
RemoteViewer* remote_viewer_new_with_controller(gboolean verbose);
G_END_DECLS

View File

@ -1245,9 +1245,7 @@ virt_viewer_app_set_property (GObject *object, guint property_id,
break;
case PROP_TITLE:
g_free(priv->title);
priv->title = g_value_dup_string(value);
virt_viewer_app_set_all_window_subtitles(self);
virt_viewer_app_set_title(self, g_value_get_string(value));
break;
case PROP_ENABLE_ACCEL:
@ -1494,6 +1492,22 @@ virt_viewer_app_class_init (VirtViewerAppClass *klass)
G_TYPE_OBJECT);
}
const char *virt_viewer_app_get_title(VirtViewerApp *self)
{
g_return_val_if_fail(VIRT_VIEWER_IS_APP(self), NULL);
return self->priv->title;
}
void virt_viewer_app_set_title(VirtViewerApp *self, const char *title)
{
g_return_if_fail(VIRT_VIEWER_IS_APP(self));
g_free(self->priv->title);
self->priv->title = g_strdup(title);
virt_viewer_app_set_all_window_subtitles(self);
}
void
virt_viewer_app_set_direct(VirtViewerApp *self, gboolean direct)
{

View File

@ -60,6 +60,8 @@ typedef struct {
GType virt_viewer_app_get_type (void);
const char *virt_viewer_app_get_title(VirtViewerApp *app);
void virt_viewer_app_set_title(VirtViewerApp *app, const char *title);
void virt_viewer_app_set_debug(gboolean debug);
gboolean virt_viewer_app_start(VirtViewerApp *app);
void virt_viewer_app_quit(VirtViewerApp *self);