aboutsummaryrefslogtreecommitdiffstats
path: root/qemu-gtk.c
diff options
context:
space:
mode:
authorkraxel <kraxel>2008-11-04 12:34:30 +0000
committerkraxel <kraxel>2008-11-04 12:34:30 +0000
commit5c906e533c9673d57b66f7c7ff4a40621fcaa9ab (patch)
tree120df72a76094929374ffff38ca24db3b800e12b /qemu-gtk.c
parent92fa8f0a1bb08dbb13822c39798ad569d912e12e (diff)
downloadqemu-gtk-5c906e533c9673d57b66f7c7ff4a40621fcaa9ab.tar.gz
use info chardev.
Diffstat (limited to 'qemu-gtk.c')
-rw-r--r--qemu-gtk.c56
1 files changed, 36 insertions, 20 deletions
diff --git a/qemu-gtk.c b/qemu-gtk.c
index 5ab68a6..e4dab7c 100644
--- a/qemu-gtk.c
+++ b/qemu-gtk.c
@@ -60,19 +60,22 @@ static void config_write(void)
static void vtes_set_font(struct qemu_window *win)
{
+ struct qemu_conn *term;
+
if (win->monitor.vte)
vte_terminal_set_font_from_string(VTE_TERMINAL(win->monitor.vte),
win->tty_font);
- if (win->console.vte)
- vte_terminal_set_font_from_string(VTE_TERMINAL(win->console.vte),
- win->tty_font);
if (win->gdb_vte)
vte_terminal_set_font_from_string(VTE_TERMINAL(win->gdb_vte),
win->tty_font);
+ for (term = win->terms; term != NULL; term = term->next)
+ vte_terminal_set_font_from_string(VTE_TERMINAL(term->vte),
+ win->tty_font);
}
static void vtes_set_colors(struct qemu_window *win)
{
+ struct qemu_conn *term;
GdkColor fg = {0,0,0,0};
GdkColor bg = {0,0,0,0};
@@ -82,14 +85,14 @@ static void vtes_set_colors(struct qemu_window *win)
vte_terminal_set_color_foreground(VTE_TERMINAL(win->monitor.vte), &fg);
vte_terminal_set_color_background(VTE_TERMINAL(win->monitor.vte), &bg);
}
- if (win->console.vte) {
- vte_terminal_set_color_foreground(VTE_TERMINAL(win->console.vte), &fg);
- vte_terminal_set_color_background(VTE_TERMINAL(win->console.vte), &bg);
- }
if (win->gdb_vte) {
vte_terminal_set_color_foreground(VTE_TERMINAL(win->gdb_vte), &fg);
vte_terminal_set_color_background(VTE_TERMINAL(win->gdb_vte), &bg);
}
+ for (term = win->terms; term != NULL; term = term->next) {
+ vte_terminal_set_color_foreground(VTE_TERMINAL(term->vte), &fg);
+ vte_terminal_set_color_background(VTE_TERMINAL(term->vte), &bg);
+ }
}
static void vte_configure(struct qemu_window *win, GtkWidget *vte)
@@ -564,17 +567,35 @@ close:
return FALSE;
}
-static int conn_connect(struct qemu_conn *conn, char *name, char *dest)
+int conn_open_term(struct qemu_window *win, char *name, char *dest, int pos)
{
+ struct qemu_conn *conn;
int fd;
+ for (conn = win->terms; conn != NULL; conn = conn->next) {
+ if (strcmp(conn->name, name) == 0) {
+ /* TODO: maybe bring tab to front? */
+ return 0;
+ }
+ }
+
+ conn = malloc(sizeof(*conn));
+ if (!conn)
+ return -1;
+ memset(conn,0,sizeof(*conn));
+
fd = conn_init(conn, name, dest);
- if (-1 == fd)
+ if (fd == -1) {
+ free(conn);
return -1;
+ }
+ conn->next = win->terms;
+ win->terms = conn;
conn->ch = g_io_channel_unix_new(fd);
conn->id = g_io_add_watch(conn->ch, G_IO_IN, conn_watch, conn);
- return fd;
+ qemu_conn_tab(win, conn, pos);
+ return 0;
}
/* ------------------------------------------------------------------ */
@@ -614,6 +635,9 @@ static const GtkActionEntry entries[] = {
.name = "UnplugUsbSubMenu",
.label = "_Unplug USB",
},{
+ .name = "OpenTermSubMenu",
+ .label = "_Open Terminal",
+ },{
/* --- file menu --- */
.name = "Close",
@@ -739,6 +763,7 @@ static char ui_xml[] =
" <menu action='EjectMediaSubMenu'/>"
" <menu action='PlugUsbSubMenu'/>"
" <menu action='UnplugUsbSubMenu'/>"
+" <menu action='OpenTermSubMenu'/>"
" <separator/>"
" <menuitem action='DevicesRescan'/>"
" </menu>"
@@ -908,7 +933,6 @@ static void usage(FILE *fp)
" -d Raise debug level.\n"
" -k Keep window open on VM shutdown.\n"
" -m Enable monitor logging and access.\n"
- " -c <dev> Show serial console.\n"
"\n"
"-- \n"
"(c) 2008 Gerd Hoffmann <kraxel@redhat.com>\n",
@@ -919,14 +943,13 @@ int
main(int argc, char *argv[])
{
struct qemu_window *win;
- char *console_tab = NULL;
int monitor_tab = 0;
int quit_on_shutdown = 1;
int c;
gtk_init(&argc, &argv);
for (;;) {
- if (-1 == (c = getopt(argc, argv, "hdkmc:")))
+ if (-1 == (c = getopt(argc, argv, "hdkm")))
break;
switch (c) {
case 'd':
@@ -938,9 +961,6 @@ main(int argc, char *argv[])
case 'm':
monitor_tab++;
break;
- case 'c':
- console_tab = optarg;
- break;
case 'h':
usage(stdout);
exit(0);
@@ -969,10 +989,6 @@ main(int argc, char *argv[])
/* tabs */
if (monitor_tab)
qemu_conn_tab(win, &win->monitor, -1);
- if (console_tab) {
- if (-1 != conn_connect(&win->console, "text console", console_tab))
- qemu_conn_tab(win, &win->console, 0);
- }
/* main loop */
gtk_main();