irssi/src/fe-common/core/themes.h
Timo Sirainen 87777968c3 Beginnings of configurable statusbar. The existing items can be configured
in default.theme.

If some abstract isn't set in theme, it fallbacks to the one in
default.theme now. This should help with old themes, and maybe themes
that don't change something should just keep those parts commented out..


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1386 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-03-15 02:26:12 +00:00

66 lines
2.0 KiB
C

#ifndef __THEMES_H
#define __THEMES_H
typedef struct {
char *name;
int count;
char **formats; /* in same order as in module's default formats */
char **expanded_formats; /* this contains the formats after
expanding {templates} */
} MODULE_THEME_REC;
typedef struct {
char *path;
char *name;
time_t last_modify;
int default_color; /* default color to use with text with default
background. default is 0 which means the default
color set by terminal */
int default_real_color; /* default color to use with background set.
this shouldn't be 0, unless black is really
wanted. default is 7 (white). */
GHashTable *modules;
int replace_keys[256]; /* index to replace_values for each char */
GSList *replace_values;
GHashTable *abstracts;
void *gui_data;
} THEME_REC;
typedef struct _FORMAT_REC FORMAT_REC;
extern GSList *themes;
extern THEME_REC *current_theme;
extern GHashTable *default_formats;
THEME_REC *theme_create(const char *path, const char *name);
void theme_destroy(THEME_REC *rec);
THEME_REC *theme_load(const char *name);
#define theme_register(formats) theme_register_module(MODULE_NAME, formats)
#define theme_unregister() theme_unregister_module(MODULE_NAME)
void theme_register_module(const char *module, FORMAT_REC *formats);
void theme_unregister_module(const char *module);
#define EXPAND_FLAG_IGNORE_REPLACES 0x01 /* don't use the character replaces when expanding */
#define EXPAND_FLAG_IGNORE_EMPTY 0x02 /* if abstract's argument is empty, don't try to expand it (ie. {xx }, but not {xx}) */
#define EXPAND_FLAG_RECURSIVE_MASK 0x0f
/* private */
#define EXPAND_FLAG_ROOT 0x10
#define EXPAND_FLAG_LASTCOLOR_ARG 0x20
char *theme_format_expand(THEME_REC *theme, const char *format);
char *theme_format_expand_data(THEME_REC *theme, const char **format,
char default_fg, char default_bg,
char *save_last_fg, char *save_last_bg,
int flags);
void themes_init(void);
void themes_deinit(void);
#endif