Terminal

Name

Terminal -- 

Synopsis


#include <history.h>


enum        TerminalStatus;
            Terminal;
Terminal*   terminal_new                    (GtkTextView *text_view);
void        terminal_apply_tag              (Terminal *t,
                                             gchar *tag,
                                             GtkTextMark *mbegin,
                                             GtkTextMark *mend);
gint        terminal_send_command           (Terminal *t,
                                             gchar *command,
                                             gboolean send);
gint        terminal_get_token_marks        (Terminal *terminal,
                                             char *token,
                                             GtkTextMark **mbegin,
                                             GtkTextMark **mend);
int         terminal_get_char               (Terminal *t,
                                             char *buf,
                                             int max_size);
const gchar* terminal_get_working_directory (Terminal *terminal);

Description

Details

enum TerminalStatus

typedef enum {
	TermUninitialized,
	TermReady,
	TermSendingCommand,
	TermSendingUserEnter,
	TermExecuting,
	TermLocked
} TerminalStatus;

TermUninitialized

the first prompt did not came yet

TermReady

the terminal is ready, we have a prompt

TermSendingCommand

sending a generated command

TermSendingUserEnter

the user hit the Enter key

TermExecuting

the terminal is executing a command

TermLocked


Terminal

typedef struct {
	GtkTextBuffer *text_buffer;
	GtkTextView   *text_view;

	Background *background;
	CuiGenerator *command_generator;
	
	GtkTextMark *parser_cursor;
	GtkTextMark *lexer_cursor;
	GtkTextMark *command_begin_cursor;
	GtkTextMark *command_end_cursor;   /* This is not handled yet*/

	gint parsed_chars;

	GString     *command;              /* The last command we executed. */
	gchar       *current_command;      /* The command we are editing.   */
	GNode   *parse_tree;
	GString *cmd;
	GString *wd;
	GString *username;  
	GString *hostname;
	GString *directory;
	gint prompt_length; 

	gboolean executing;
	GList *pending_commands;
	
	GIOChannel *shell_stream;
	struct CuiWidget  *last_command_window;
	TerminalStatus status;
	gint hold_shift;
	gboolean overwrite;
} Terminal;

GtkTextBuffer *text_buffer;

the GtkTextBuffer holding the text

GtkTextView *text_view;

the GtkTextView holding the terminal text

Background *background;

the background for this terminal

CuiGenerator *command_generator;

the generator for this terminal

GtkTextMark *parser_cursor;

FIXME

GtkTextMark *lexer_cursor;

the point where the lexer reads the terminal

GtkTextMark *command_begin_cursor;

GtkTextMark *command_end_cursor;

gint parsed_chars;

how many characters has been parsed

GString *command;

the command the user editing

gchar *current_command;

GNode *parse_tree;

the parse tree for the last BASH command

GString *cmd;

FIXME

GString *wd;

the name of the working directory

GString *username;

data from the prompt

GString *hostname;

the hostname part of the prompt

GString *directory;

the directory part of the prompt

gint prompt_length;

the length of the actual prompt in characters

gboolean executing;

TRUE while the terminal is executing a command

GList *pending_commands;

more commands to execute if ready

GIOChannel *shell_stream;

the stream we use to communicate with the shell

struct CuiWidget *last_command_window;

the last embedded window

TerminalStatus status;

gint hold_shift;

are user press the shift key (in keyboard)

gboolean overwrite;


terminal_new ()

Terminal*   terminal_new                    (GtkTextView *text_view);

text_view :

Returns :


terminal_apply_tag ()

void        terminal_apply_tag              (Terminal *t,
                                             gchar *tag,
                                             GtkTextMark *mbegin,
                                             GtkTextMark *mend);

t :

tag :

mbegin :

mend :


terminal_send_command ()

gint        terminal_send_command           (Terminal *t,
                                             gchar *command,
                                             gboolean send);

Emits a command to the terminal.

t :

command :

send :

Returns :


terminal_get_token_marks ()

gint        terminal_get_token_marks        (Terminal *terminal,
                                             char *token,
                                             GtkTextMark **mbegin,
                                             GtkTextMark **mend);

terminal :

token :

mbegin :

mend :

Returns :


terminal_get_char ()

int         terminal_get_char               (Terminal *t,
                                             char *buf,
                                             int max_size);

t :

buf :

max_size :

Returns :


terminal_get_working_directory ()

const gchar* terminal_get_working_directory (Terminal *terminal);

Returns the name of the current working directory from the BASH prompt. The memory area returned should not be tampered.

terminal :

a Terminal

Returns :

the name of the current working directory