aboutsummaryrefslogtreecommitdiffstats
path: root/vconsole.c
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2012-08-15 23:08:50 +0200
committerGerd Hoffmann <kraxel@redhat.com>2012-08-15 23:09:14 +0200
commit915c3330450b7fcc94cf5e72ca479e6db292ac18 (patch)
treeda956d1be668810dcf9bb73674ba1714f3889b83 /vconsole.c
parentdaf23c350f0fe8fffbbde331d43460c517d3e445 (diff)
downloadvconsole-915c3330450b7fcc94cf5e72ca479e6db292ac18.tar.gz
windup file/connect ...
Diffstat (limited to 'vconsole.c')
-rw-r--r--vconsole.c55
1 files changed, 53 insertions, 2 deletions
diff --git a/vconsole.c b/vconsole.c
index bbe7326..8fcd3de 100644
--- a/vconsole.c
+++ b/vconsole.c
@@ -43,10 +43,61 @@ void config_write(void)
/* ------------------------------------------------------------------ */
+static int gtk_getstring(GtkWidget *window, char *title, char *message,
+ char *dest, int dlen)
+{
+ GtkWidget *dialog, *label, *entry;
+ const char *txt;
+ int retval;
+
+ /* Create the widgets */
+ dialog = gtk_dialog_new_with_buttons(title,
+ GTK_WINDOW(window),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_ACCEPT,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_REJECT,
+ NULL);
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
+
+ label = gtk_label_new(message);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+
+ entry = gtk_entry_new();
+ gtk_entry_set_text(GTK_ENTRY(entry), dest);
+ gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label);
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), entry);
+ gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), 10);
+
+ /* show and wait for response */
+ gtk_widget_show_all(dialog);
+ switch (gtk_dialog_run(GTK_DIALOG(dialog))) {
+ case GTK_RESPONSE_ACCEPT:
+ txt = gtk_entry_get_text(GTK_ENTRY(entry));
+ snprintf(dest, dlen, "%s", txt);
+ retval = 0;
+ break;
+ default:
+ retval = -1;
+ break;
+ }
+ gtk_widget_destroy(dialog);
+ return retval;
+}
+
static void menu_cb_connect_ask(GtkAction *action, gpointer userdata)
{
-// struct vconsole_window *win = userdata;
- fprintf(stderr, "%s: [ FIXME ]\n", __func__);
+ struct vconsole_window *win = userdata;
+ char uri[256] = "";
+ int rc;
+
+ rc = gtk_getstring(win->toplevel, "Connect to host", "libvirt uri",
+ uri, sizeof(uri));
+ if (rc == 0 && strlen(uri))
+ connect_init(win, uri);
}
static void menu_cb_connect_menu(GtkAction *action, gpointer userdata)