BotCommander/include/typedefs.h

188 lines
4.4 KiB
C

/* vim: set foldmethod=marker : */
/* {{{ Legal info
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}}} */
/* {{{ Author and file info
* typedefs.h
*
* Wed Nov 09 22:16:59 2005
* Copyright (C) 2005 Gergely POLONKAI
* polesz@techinfo.hu
*
* Type definitions
}}} */
/* {{{ _BC_TYPEDEFS_H */
#ifndef _BC_TYPEDEFS_H
# define _BC_TYPEDEFS_H
/* {{{ Includes */
# include <gtk/gtk.h>
# include "defines.h"
/* }}} */
/* {{{ Bot data */
typedef struct _t_bot_data {
/* The bot's name. NULL if now known */
gchar *botname;
/* The hostname of the bot */
gchar *host;
/* The port number of the bot */
guint port;
/* The handle in the bot (may be NULL) */
gchar *handle;
/* The config key value for this bot (used only when loading bot data from config */
guint id;
} t_bot_data;
/* }}} */
/* {{{ History data */
typedef struct _t_history_data {
gchar *line;
struct _t_history_data *next;
} t_history_data;
/* }}} */
/* {{{ Tab data */
typedef struct _t_tab_data {
/* General data */
/* The number of the tab */
gint num;
/* The current mode in the tab (b|e|m)*/
char mode;
/* The bot assigned to this tab */
t_bot_data *bot;
/* The history data */
t_history_data *history;
/* The current position in the history list */
gint history_position;
/* BC script related data */
/* Currently we are in the middle of the channel list */
gboolean chanlist_process;
/* Currently we are in the middle of the user list */
gboolean userlist_process;
/* Currently we are processing the properties of this channel */
gchar *chanprops_process;
/* This is number x in the property list */
gint chanprops_list_num;
/* The channel list */
GList *actual_channel_list;
/* The user list */
GList *actual_user_list;
/* Networking data */
/* TRUE if the tab is connected, FALSE otherwise */
gboolean connected;
/* The socket descriptor */
int sock;
/* The GDK socket tag */
gint socktag;
/* Set to TRUE when the first byte arrives from the other side */
gboolean data_arrived;
/* Widgets */
/* The virtual terminal */
GtkWidget *vt;
/* Command line */
GtkWidget *editbox;
/* The hbox containing the tab label and the close button */
GtkWidget *labelbox;
/* The tab label */
GtkWidget *label;
/* The close button */
GtkWidget *closebutton;
/* List of channels */
GtkWidget *channel_list;
/* List of users (handles) */
GtkWidget *user_list;
/* Channel store */
GtkListStore *channel_store;
/* User store */
GtkListStore *user_store;
} t_tab_data;
/* }}} */
/* {{{ Configuration data */
typedef struct _t_config_data {
/* GUI options */
gboolean change_to_new_tab;
/* VTE options */
gboolean scroll_on_output;
gboolean transparent_background;
gfloat background_saturation;
gchar *vte_font;
/* General options */
gboolean change_to_message;
#ifdef DEBUG
gboolean debug;
#endif /* DEBUG */
gchar default_mode;
gboolean save_prefs;
gint history_len;
} t_config_data;
/* }}} */
/* {{{ Command Data */
typedef struct _t_command {
/* The command verb */
gchar *command_verb;
/* Type of the command: 0 - Internal; 1 - From a module; 2 - From a script */
guint type;
/* How many parameters do we require? */
gint min_paramnum;
/* Can this command be abbreviated? */
gboolean can_abbrev;
/* The commands function */
BC_COMMAND_DEF(func);
} t_command;
/* }}} */
/* {{{ Channel data */
typedef struct _t_channel {
/* The channel name */
char *name;
/* TRUE if then channel is active */
gboolean active;
/* The property list */
GList *properties;
} t_channel;
/* }}} */
/* {{{ User data */
typedef struct _t_user {
/* The use name */
char *name;
} t_user;
/* }}} */
/* {{{ Channel properties */
typedef struct _t_chan_prop {
char *name;
gboolean bool_prop;
gboolean bool_value;
gchar *string_value;
} t_chan_prop;
/* }}} */
#endif
/* }}} */