2001-11-17 00:25:20 +00:00
|
|
|
#include "module.h"
|
|
|
|
|
|
2002-05-13 14:45:54 +00:00
|
|
|
static int magic_free_text_dest(SV *sv, MAGIC *mg)
|
|
|
|
|
{
|
|
|
|
|
TEXT_DEST_REC *dest = (TEXT_DEST_REC *) mg->mg_ptr;
|
|
|
|
|
g_free((char *) dest->target);
|
|
|
|
|
g_free(dest);
|
|
|
|
|
mg->mg_ptr = NULL;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static MGVTBL vtbl_free_text_dest =
|
|
|
|
|
{
|
|
|
|
|
NULL, NULL, NULL, NULL, magic_free_text_dest
|
|
|
|
|
};
|
|
|
|
|
|
2001-11-17 00:25:20 +00:00
|
|
|
MODULE = Irssi::UI::Formats PACKAGE = Irssi::UI::Window
|
|
|
|
|
PROTOTYPES: ENABLE
|
|
|
|
|
|
2002-05-11 22:17:16 +00:00
|
|
|
int
|
|
|
|
|
format_get_length(str)
|
|
|
|
|
char *str
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
format_real_length(str, len)
|
|
|
|
|
char *str
|
|
|
|
|
int len
|
|
|
|
|
|
|
|
|
|
char *
|
|
|
|
|
strip_codes(input)
|
|
|
|
|
char *input
|
|
|
|
|
|
2001-11-17 00:25:20 +00:00
|
|
|
void
|
|
|
|
|
format_get_text(window, module, server, target, formatnum, ...)
|
|
|
|
|
Irssi::UI::Window window
|
|
|
|
|
char *module
|
|
|
|
|
Irssi::Server server
|
|
|
|
|
char *target
|
|
|
|
|
int formatnum
|
|
|
|
|
PREINIT:
|
2002-04-27 18:41:59 +00:00
|
|
|
TEXT_DEST_REC dest;
|
|
|
|
|
THEME_REC *theme;
|
2001-11-17 00:25:20 +00:00
|
|
|
char **charargs;
|
|
|
|
|
char *ret;
|
|
|
|
|
int n;
|
|
|
|
|
PPCODE:
|
|
|
|
|
charargs = g_new0(char *, items-5+1);
|
|
|
|
|
for (n = 5; n < items; n++) {
|
2001-12-11 16:44:53 +00:00
|
|
|
charargs[n-5] = (char *)SvPV(ST(n), PL_na);
|
2001-11-17 00:25:20 +00:00
|
|
|
}
|
2002-04-27 18:41:59 +00:00
|
|
|
|
|
|
|
|
format_create_dest(&dest, server, target, 0, window);
|
|
|
|
|
theme = window_get_theme(dest.window);
|
|
|
|
|
|
|
|
|
|
ret = format_get_text_theme_charargs(theme, module, &dest, formatnum, charargs);
|
2001-11-17 00:25:20 +00:00
|
|
|
g_free(charargs);
|
|
|
|
|
|
|
|
|
|
XPUSHs(sv_2mortal(new_pv(ret)));
|
|
|
|
|
g_free_not_null(ret);
|
2002-05-13 14:45:54 +00:00
|
|
|
|
|
|
|
|
MODULE = Irssi::UI::Formats PACKAGE = Irssi
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
format_create_dest(server, target=NULL, level=MSGLEVEL_CLIENTNOTICE, window=NULL)
|
|
|
|
|
Irssi::Server server
|
|
|
|
|
char *target
|
|
|
|
|
int level
|
|
|
|
|
Irssi::UI::Window window
|
|
|
|
|
PREINIT:
|
|
|
|
|
TEXT_DEST_REC *dest;
|
|
|
|
|
SV *sv;
|
|
|
|
|
PPCODE:
|
|
|
|
|
dest = g_new0(TEXT_DEST_REC, 1);
|
|
|
|
|
format_create_dest(dest, server, g_strdup(target), level, window);
|
|
|
|
|
|
|
|
|
|
sv = plain_bless(dest, "Irssi::UI::TextDest");
|
|
|
|
|
XPUSHs(sv_2mortal(sv));
|
|
|
|
|
|
|
|
|
|
sv = *hv_fetch(hvref(sv), "_irssi", 6, 0);
|
|
|
|
|
sv_magic(sv, NULL, '~', NULL, 0);
|
|
|
|
|
|
|
|
|
|
SvMAGIC(sv)->mg_private = 0x1551; /* HF */
|
|
|
|
|
SvMAGIC(sv)->mg_virtual = &vtbl_free_text_dest;
|
|
|
|
|
SvMAGIC(sv)->mg_ptr = (char *) dest;
|
|
|
|
|
|
|
|
|
|
MODULE = Irssi::UI::Formats PACKAGE = Irssi::UI::TextDest
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
print(dest, str)
|
|
|
|
|
Irssi::UI::TextDest dest
|
|
|
|
|
char *str
|
|
|
|
|
CODE:
|
|
|
|
|
printtext_dest(dest, str);
|