X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fperl%2Fui%2FThemes.xs;fp=apps%2Firssi%2Fsrc%2Fperl%2Fui%2FThemes.xs;h=0000000000000000000000000000000000000000;hb=72c2de619079457f7a68100eb13385275a424a23;hp=4afd437c4dc92f03c466715b7b08e6e3169deb40;hpb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;p=runtime.git diff --git a/apps/irssi/src/perl/ui/Themes.xs b/apps/irssi/src/perl/ui/Themes.xs deleted file mode 100644 index 4afd437c..00000000 --- a/apps/irssi/src/perl/ui/Themes.xs +++ /dev/null @@ -1,281 +0,0 @@ -#include "module.h" - -void printformat_perl(TEXT_DEST_REC *dest, char *format, char **arglist) -{ - THEME_REC *theme; - char *module, *str; - int formatnum; - - module = g_strdup(perl_get_package()); - formatnum = format_find_tag(module, format); - if (formatnum < 0) { - die("printformat(): unregistered format '%s'", format); - g_free(module); - return; - } - - theme = dest->window->theme == NULL ? current_theme : - dest->window->theme; - signal_emit("print format", 5, theme, module, - dest, GINT_TO_POINTER(formatnum), arglist); - - str = format_get_text_theme_charargs(theme, module, dest, formatnum, arglist); - if (*str != '\0') printtext_dest(dest, "%s", str); - g_free(str); - g_free(module); -} - -static void perl_unregister_theme(const char *package) -{ - FORMAT_REC *formats; - int n; - - formats = g_hash_table_lookup(default_formats, package); - if (formats == NULL) return; - - for (n = 0; formats[n].def != NULL; n++) { - g_free(formats[n].tag); - g_free(formats[n].def); - } - g_free(formats); - theme_unregister_module(package); -} - -static void sig_script_destroyed(PERL_SCRIPT_REC *script) -{ - perl_unregister_theme(script->package); -} - -void perl_themes_init(void) -{ - signal_add("script destroyed", (SIGNAL_FUNC) sig_script_destroyed); -} - -void perl_themes_deinit(void) -{ - signal_remove("script destroyed", (SIGNAL_FUNC) sig_script_destroyed); -} - -MODULE = Irssi::UI::Themes PACKAGE = Irssi -PROTOTYPES: ENABLE - -Irssi::UI::Theme -current_theme() -CODE: - RETVAL = current_theme; -OUTPUT: - RETVAL - -int -EXPAND_FLAG_IGNORE_REPLACES() -CODE: - RETVAL = EXPAND_FLAG_IGNORE_REPLACES; -OUTPUT: - RETVAL - -int -EXPAND_FLAG_IGNORE_EMPTY() -CODE: - RETVAL = EXPAND_FLAG_IGNORE_EMPTY; -OUTPUT: - RETVAL - -int -EXPAND_FLAG_RECURSIVE_MASK() -CODE: - RETVAL = EXPAND_FLAG_RECURSIVE_MASK; -OUTPUT: - RETVAL - -void -theme_register(formats) - SV *formats -PREINIT: - AV *av; - FORMAT_REC *formatrecs; - char *key, *value; - int len, n, fpos; -CODE: - - if (!SvROK(formats)) - croak("formats is not a reference to list"); - av = (AV *) SvRV(formats); - len = av_len(av)+1; - if (len == 0 || (len & 1) != 0) - croak("formats list is invalid - not divisible by 2 (%d)", len); - - formatrecs = g_new0(FORMAT_REC, len/2+2); - formatrecs[0].tag = g_strdup(perl_get_package()); - formatrecs[0].def = g_strdup("Perl script"); - - for (fpos = 1, n = 0; n < len; n++, fpos++) { - key = SvPV(*av_fetch(av, n, 0), PL_na); n++; - value = SvPV(*av_fetch(av, n, 0), PL_na); - - formatrecs[fpos].tag = g_strdup(key); - formatrecs[fpos].def = g_strdup(value); - formatrecs[fpos].params = MAX_FORMAT_PARAMS; - } - - theme_register_module(perl_get_package(), formatrecs); - -void -printformat(level, format, ...) - int level - char *format -PREINIT: - TEXT_DEST_REC dest; - char *arglist[MAX_FORMAT_PARAMS+1]; - int n; -CODE: - format_create_dest(&dest, NULL, NULL, level, NULL); - memset(arglist, 0, sizeof(arglist)); - for (n = 2; n < items && n < MAX_FORMAT_PARAMS+2; n++) { - arglist[n-2] = SvPV(ST(n), PL_na); - } - - printformat_perl(&dest, format, arglist); - -void -abstracts_register(abstracts) - SV *abstracts -PREINIT: - AV *av; - char *key, *value; - int i, len; -CODE: - if (!SvROK(abstracts)) - croak("abstracts is not a reference to list"); - av = (AV *) SvRV(abstracts); - len = av_len(av)+1; - if (len == 0 || (len & 1) != 0) - croak("abstracts list is invalid - not divisible by 2 (%d)", len); - - for (i = 0; i < len; i++) { - key = SvPV(*av_fetch(av, i, 0), PL_na); i++; - value = SvPV(*av_fetch(av, i, 0), PL_na); - - theme_set_default_abstract(key, value); - } - themes_reload(); - -void -themes_reload() - -#******************************* -MODULE = Irssi::UI::Themes PACKAGE = Irssi::Server -#******************************* - -void -printformat(server, target, level, format, ...) - Irssi::Server server - char *target - int level - char *format -PREINIT: - TEXT_DEST_REC dest; - char *arglist[MAX_FORMAT_PARAMS+1]; - int n; -CODE: - format_create_dest(&dest, server, target, level, NULL); - memset(arglist, 0, sizeof(arglist)); - for (n = 4; n < items && n < MAX_FORMAT_PARAMS+4; n++) { - arglist[n-4] = SvPV(ST(n), PL_na); - } - - printformat_perl(&dest, format, arglist); - -#******************************* -MODULE = Irssi::UI::Themes PACKAGE = Irssi::UI::Window -#******************************* - -void -printformat(window, level, format, ...) - Irssi::UI::Window window - int level - char *format -PREINIT: - TEXT_DEST_REC dest; - char *arglist[MAX_FORMAT_PARAMS+1]; - int n; -CODE: - format_create_dest(&dest, NULL, NULL, level, window); - memset(arglist, 0, sizeof(arglist)); - for (n = 3; n < items && n < MAX_FORMAT_PARAMS+3; n++) { - arglist[n-3] = SvPV(ST(n), PL_na); - } - - printformat_perl(&dest, format, arglist); - -#******************************* -MODULE = Irssi::UI::Themes PACKAGE = Irssi::Windowitem -#******************************* - -void -printformat(item, level, format, ...) - Irssi::Windowitem item - int level - char *format -PREINIT: - TEXT_DEST_REC dest; - char *arglist[MAX_FORMAT_PARAMS+1]; - int n; -CODE: - format_create_dest(&dest, item->server, item->visible_name, level, NULL); - memset(arglist, 0, sizeof(arglist)); - for (n = 3; n < items && n < MAX_FORMAT_PARAMS+3; n++) { - arglist[n-3] = SvPV(ST(n), PL_na); - } - - printformat_perl(&dest, format, arglist); - -#******************************* -MODULE = Irssi::UI::Themes PACKAGE = Irssi::UI::Theme PREFIX = theme_ -#******************************* - -void -theme_format_expand(theme, format, flags=0) - Irssi::UI::Theme theme - char *format - int flags -PREINIT: - char *ret; -PPCODE: - if (flags == 0) { - ret = theme_format_expand(theme, format); - } else { - ret = theme_format_expand_data(theme, (const char **) &format, 'n', 'n', - NULL, NULL, EXPAND_FLAG_ROOT | flags); - } - XPUSHs(sv_2mortal(new_pv(ret))); - g_free_not_null(ret); - -char * -theme_get_format(theme, module, tag) - Irssi::UI::Theme theme - char *module - char *tag -PREINIT: - MODULE_THEME_REC *modtheme; - FORMAT_REC *formats; - int i; -CODE: - formats = g_hash_table_lookup(default_formats, module); - if (formats == NULL) - croak("Unknown module: %s", module); - - for (i = 0; formats[i].def != NULL; i++) { - if (formats[i].tag != NULL && - g_strcasecmp(formats[i].tag, tag) == 0) - break; - } - - if (formats[i].def == NULL) - croak("Unknown format tag: %s", tag); - - modtheme = g_hash_table_lookup(theme->modules, module); - RETVAL = modtheme == NULL ? NULL : modtheme->formats[i]; - if (RETVAL == NULL) - RETVAL = formats[i].def; -OUTPUT: - RETVAL