aboutsummaryrefslogtreecommitdiffstats
path: root/qemu-gtk.h
blob: 4b24449ebbd27063b370e071a3eb928664f2485b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
struct qemu_window;

struct qemu_mq {
    struct qemu_mq  *next;
    char            cmd[128];
};

enum vnc_state {
    VNC_NONE = 0,
    VNC_CONNECTED,
    VNC_INITIALIZED,
    VNC_DISCONNECTED,
};

struct qemu_conn {
    int              handle;
    GIOChannel       *ch;
    guint            id;
    GtkWidget        *vte;
    struct qemu_window *win;
    char             name[32];
    char             hostname[128];
    struct qemu_conn *next;
};

struct qemu_menu {
    GtkActionGroup   *ag;
    guint            id;
};

struct qemu_window {
    /* widgets */
    GtkWidget        *toplevel;
    GtkWidget        *status, *fstatus;
    GtkWidget        *tab, *vnc;
    GtkUIManager     *ui;
    gboolean         fullscreen;

    /* vnc (gfx) */
    char             vnc_display[128];
    char             vnc_hostname[128];
    char             vnc_tcpport[16];
    enum vnc_state   vnc_state;
    int              vnc_grab;
    int              vnc_width;
    int              vnc_height;
    char             *vnc_password;
    int              vnc_send_password;

    /* text terminals */
    struct qemu_conn *terms;
    char             *sercon;

    /* monitor */
    struct qemu_conn monitor;
    char             *mbuf;
    int              msize;
    int              mused;
    struct qemu_mq   *mqueue;
    struct qemu_mq   *mrun;

    /* devices */
    struct qemu_menu mc;
    struct qemu_menu usb;
    struct qemu_menu usbhost;
    struct qemu_menu chardev;

    /* gdb */
    GtkWidget        *gdb_vte;
    pid_t            gdb_pid;

    /* vm info */
    char             version[32];
    char             name[128];

    /* options */
    gboolean         quit_on_shutdown;
    gboolean         sercon_tab;
    gboolean         vnc_scale;
    gboolean         vnc_grab_mouse;
    gboolean         vnc_grab_kbd;
    gboolean         tty_blink;
    char             *tty_font;
    char             *tty_fg;
    char             *tty_bg;
};

/* qemu-gtk.c */
extern int debug;
void update_status(struct qemu_window *win);
void vnc_connect(struct qemu_window *win);
int conn_init(struct qemu_conn *conn, char *name, char *dest);
int conn_open_term(struct qemu_window *win, char *name, char *dest, int pos);
void qemu_vnc_tab(struct qemu_window *win);
void qemu_conn_tab(struct qemu_window *win, struct qemu_conn *conn, int pos);

/* monitor.c */
int monitor_connect(struct qemu_window *win, char *dest);
void monitor_append(struct qemu_window *win, char *cmd);

/* devices.c */
void devices_parse_info_block(struct qemu_window *win, char *str);
void devices_parse_info_usb(struct qemu_window *win, char *str);
void devices_parse_info_usbhost(struct qemu_window *win, char *str);
void devices_parse_info_chardev(struct qemu_window *win, char *str);
void devices_rescan(struct qemu_window *win);