Handle kb by treating it as a backspace. Make pangox rendering the
[vte.git] / src / vte.h
1 /*
2  * Copyright (C) 2001,2002 Red Hat, Inc.
3  *
4  * This is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU Library General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this program; if not, write to the Free Software
16  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  */
18
19 #ifndef vte_h_included
20 #define vte_h_included
21
22 #ident "$Id$"
23
24 #include <sys/types.h>
25 #include <iconv.h>
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <wchar.h>
29 #include <X11/Xlib.h>
30 #include <glib.h>
31 #include <pango/pango.h>
32 #include <gtk/gtk.h>
33 #include "termcap.h"
34 #include "trie.h"
35
36 G_BEGIN_DECLS
37
38 /* The terminal widget itself. */
39 typedef struct _VteTerminal {
40         /*< public >*/
41
42         /* Widget implementation stuffs. */
43         GtkWidget widget;
44         GtkAdjustment *adjustment;      /* Scrolling adjustment. */
45
46         /* Metric and sizing data. */
47         long char_width, char_height;   /* dimensions of character cells */
48         long char_ascent, char_descent; /* important font metrics */
49         long row_count, column_count;   /* dimensions of the window */
50
51         /* Titles. */
52         char *window_title, *icon_title;
53         
54         /*< private >*/
55         struct _VteTerminalPrivate *pvt;
56 } VteTerminal;
57
58 /* The widget's class structure. */
59 typedef struct _VteTerminalClass {
60         /*< public > */
61         /* Inherited parent class. */
62         GtkWidgetClass parent_class;
63
64         /*< private > */
65         /* Signals we might emit. */
66         guint eof_signal;
67         guint char_size_changed_signal;
68         guint window_title_changed_signal;
69         guint icon_title_changed_signal;
70         guint selection_changed_signal;
71 } VteTerminalClass;
72
73 /* The widget's type. */
74 GtkType vte_terminal_get_type(void);
75
76 #define VTE_TYPE_TERMINAL               (vte_terminal_get_type())
77 #define VTE_TERMINAL(obj)               (GTK_CHECK_CAST((obj),\
78                                                         VTE_TYPE_TERMINAL,\
79                                                         VteTerminal))
80 #define VTE_TERMINAL_CLASS(klass)       GTK_CHECK_CLASS_CAST((klass),\
81                                                              VTE_TYPE_TERMINAL,\
82                                                              VteTerminalClass)
83 #define VTE_IS_TERMINAL(obj)            GTK_CHECK_TYPE((obj),\
84                                                        VTE_TYPE_TERMINAL)
85 #define VTE_IS_TERMINAL_CLASS(klass)    GTK_CHECK_CLASS_TYPE((klass),\
86                                                              VTE_TYPE_TERMINAL)
87 #define VTE_TERMINAL_GET_CLASS(obj)     (G_TYPE_INSTANCE_GET_CLASS ((obj), VTE_TYPE_TERMINAL, VteTerminalClass))
88
89
90 GtkWidget *vte_terminal_new(void);
91 void vte_terminal_fork_command(VteTerminal *terminal,
92                                const char *command,
93                                const char **argv);
94 void vte_terminal_feed(VteTerminal *terminal,
95                        const char *data,
96                        size_t length);
97 void vte_terminal_feed_child(VteTerminal *terminal,
98                              const char *data,
99                              size_t length);
100 void vte_terminal_set_size(VteTerminal *terminal, long columns, long rows);
101 void vte_terminal_set_audible_bell(VteTerminal *terminal, gboolean audible);
102 void vte_terminal_set_scroll_on_output(VteTerminal *terminal, gboolean scroll);
103 void vte_terminal_set_scroll_on_keystroke(VteTerminal *terminal,
104                                           gboolean scroll);
105 void vte_terminal_copy_clipboard(VteTerminal *terminal);
106 void vte_terminal_paste_clipboard(VteTerminal *terminal);
107 void vte_terminal_set_colors(VteTerminal *terminal,
108                              const GdkColor *foreground,
109                              const GdkColor *background,
110                              const GdkColor *palette,
111                              size_t palette_size);
112 void vte_terminal_set_default_colors(VteTerminal *terminal);
113 void vte_terminal_set_background_image(VteTerminal *terminal, GdkPixbuf *image);
114 void vte_terminal_set_background_image_file(VteTerminal *terminal,
115                                             const char *path);
116 void vte_terminal_set_background_saturation(VteTerminal *terminal,
117                                             double saturation);
118 void vte_terminal_set_background_transparent(VteTerminal *terminal,
119                                              gboolean transparent);
120 void vte_terminal_set_cursor_blinks(VteTerminal *terminal, gboolean blink);
121 gboolean vte_terminal_get_has_selection(VteTerminal *terminal);
122 gboolean vte_terminal_get_using_xft(VteTerminal *terminal);
123 void vte_terminal_im_append_menuitems(VteTerminal *terminal,
124                                       GtkMenuShell *menushell);
125 void vte_terminal_set_font(VteTerminal *terminal,
126                            const PangoFontDescription *font_desc);
127 void vte_terminal_set_font_from_string(VteTerminal *terminal, const char *name);
128 void vte_terminal_set_scrollback_lines(VteTerminal *terminal, long lines);
129
130 G_END_DECLS
131
132 #endif