diff options
author | kraxel <kraxel> | 2008-10-08 21:28:45 +0000 |
---|---|---|
committer | kraxel <kraxel> | 2008-10-08 21:28:45 +0000 |
commit | 58159b62697ec880581fdb925df929b2644e12c1 (patch) | |
tree | 183a1654e8eec0a96f7d1ff44f466d1999861873 | |
parent | ef561c275174cf420d4584b7a8e1b4de16fc4cc3 (diff) | |
download | qemu-gtk-58159b62697ec880581fdb925df929b2644e12c1.tar.gz |
- add terminal font selector.
-rw-r--r-- | qemu-gtk.c | 55 | ||||
-rw-r--r-- | qemu-gtk.h | 1 |
2 files changed, 50 insertions, 6 deletions
@@ -58,11 +58,13 @@ static void config_write(void) /* ------------------------------------------------------------------ */ -static void vte_configure(GtkWidget *vte) +static void vte_configure(struct qemu_window *win, GtkWidget *vte) { vte_terminal_set_scrollback_lines(VTE_TERMINAL(vte), 4096); vte_terminal_set_backspace_binding(VTE_TERMINAL(vte), VTE_ERASE_ASCII_BACKSPACE); + if (win->tty_font) + vte_terminal_set_font_from_string(VTE_TERMINAL(vte), win->tty_font); } static void tabs_configure(struct qemu_window *win) @@ -167,6 +169,36 @@ static void menu_cb_grab_kbd(GtkToggleAction *action, gpointer userdata) config_dirty++; } +static void menu_cb_config_font(GtkAction *action, void *data) +{ + struct qemu_window *win = data; + GtkWidget *dialog; + + dialog = gtk_font_selection_dialog_new("Terminal font"); + if (win->tty_font) + gtk_font_selection_dialog_set_font_name + (GTK_FONT_SELECTION_DIALOG(dialog), win->tty_font); + + gtk_widget_show_all(dialog); + switch (gtk_dialog_run(GTK_DIALOG(dialog))) { + case GTK_RESPONSE_OK: + win->tty_font = gtk_font_selection_dialog_get_font_name + (GTK_FONT_SELECTION_DIALOG(dialog)); + g_key_file_set_string(config, "tty", "font", win->tty_font); + 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); + break; + } + gtk_widget_destroy(dialog); +} + static void menu_cb_send_ctrlaltdel(GtkToggleAction *action, gpointer userdata) { struct qemu_window *win = userdata; @@ -233,7 +265,7 @@ static void menu_cb_run_gdb(GtkAction *action, gpointer userdata) if (win->gdb_vte) return; win->gdb_vte = vte_terminal_new(); - vte_configure(win->gdb_vte); + vte_configure(win, win->gdb_vte); tabs_add(win, win->gdb_vte, "gdb", -1); monitor_append(win, "gdbserver 1234"); @@ -501,6 +533,13 @@ static const GtkActionEntry entries[] = { .callback = G_CALLBACK(menu_cb_send_ctrlaltdel), },{ + /* --- view menu --- */ + .name = "TerminalFont", + .stock_id = GTK_STOCK_SELECT_FONT, + .label = "Terminal _font ...", + .callback = G_CALLBACK(menu_cb_config_font), + },{ + /* --- vm menu --- */ .name = "MonitorStop", .stock_id = GTK_STOCK_MEDIA_PAUSE, @@ -564,6 +603,7 @@ static char ui_xml[] = " <menu action='ViewMenu'>" " <menuitem action='FullScreen'/>" " <menuitem action='ScaleDisplay'/>" +" <menuitem action='TerminalFont'/>" " </menu>" " <menu action='InputMenu'>" " <menuitem action='GrabMouse'/>" @@ -662,16 +702,19 @@ static struct qemu_window *qemu_create_window(void) gtk_box_pack_end(GTK_BOX(vbox), win->fstatus, FALSE, TRUE, 0); gtk_container_add(GTK_CONTAINER(win->fstatus), win->status); - /* apply config */ + /* read config */ win->vnc_scale = g_key_file_get_boolean(config, "vnc", "scale", &err); + win->vnc_grab_mouse = g_key_file_get_boolean(config, "vnc", "grab-mouse", &err); + win->vnc_grab_kbd = g_key_file_get_boolean(config, "vnc", "grab-kbd", &err); + win->tty_font = g_key_file_get_string(config, "tty", "font", &err); + + /* apply config */ item = gtk_ui_manager_get_widget(win->ui, "/MainMenu/ViewMenu/ScaleDisplay"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), win->vnc_scale); - win->vnc_grab_mouse = g_key_file_get_boolean(config, "vnc", "grab-mouse", &err); item = gtk_ui_manager_get_widget(win->ui, "/MainMenu/InputMenu/GrabMouse"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), win->vnc_grab_mouse); - win->vnc_grab_kbd = g_key_file_get_boolean(config, "vnc", "grab-kbd", &err); item = gtk_ui_manager_get_widget(win->ui, "/MainMenu/InputMenu/GrabKbd"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), win->vnc_grab_kbd); @@ -710,7 +753,7 @@ void qemu_conn_tab(struct qemu_window *win, struct qemu_conn *conn, int pos) if (conn->vte) return; conn->vte = vte_terminal_new(); - vte_configure(conn->vte); + vte_configure(win, conn->vte); g_signal_connect(conn->vte, "commit", G_CALLBACK(conn_user_input), conn); tabs_add(win, conn->vte, conn->name, pos); @@ -69,6 +69,7 @@ struct qemu_window { gboolean vnc_scale; gboolean vnc_grab_mouse; gboolean vnc_grab_kbd; + char *tty_font; }; /* qemu-gtk.c */ |