From 00423151f9c0b8d9f3d92ebdc5f2cc83829960c7 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 17 Nov 2001 00:25:20 +0000 Subject: [PATCH] Didn't I already commit these? .. added format_get_text(), gui_printtext_after(), last_line_insert() and fixed a few memleaks. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2040 dbcabf3a-b0e7-0310-adc4-f8d773084564 --- src/perl/textui/TextUI.xs | 37 +++++++++++++++++++++++++++++++++++++ src/perl/ui/Formats.xs | 28 ++++++++++++++++++++++++++++ src/perl/ui/Themes.xs | 16 +++++++++------- src/perl/ui/UI.xs | 1 + 4 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 src/perl/ui/Formats.xs diff --git a/src/perl/textui/TextUI.xs b/src/perl/textui/TextUI.xs index ba08ccdf..e1cea3ae 100644 --- a/src/perl/textui/TextUI.xs +++ b/src/perl/textui/TextUI.xs @@ -111,6 +111,43 @@ gui_printtext(xpos, ypos, str) int ypos char *str +MODULE = Irssi::TextUI PACKAGE = Irssi::UI::Window + +void +gui_printtext_after(window, prev, level, str) + Irssi::UI::Window window + Irssi::TextUI::Line prev + int level + char *str +PREINIT: + TEXT_DEST_REC dest; +CODE: + format_create_dest(&dest, NULL, NULL, level, window); + gui_printtext_after(&dest, prev, str); + +Irssi::TextUI::Line +last_line_insert(window) + Irssi::UI::Window window +CODE: + RETVAL = WINDOW_GUI(window)->insert_after; +OUTPUT: + RETVAL + +MODULE = Irssi::TextUI PACKAGE = Irssi::UI::Server + +void +gui_printtext_after(server, target, prev, level, str) + Irssi::Server server + char *target + Irssi::TextUI::Line prev + int level + char *str +PREINIT: + TEXT_DEST_REC dest; +CODE: + format_create_dest(&dest, server, target, level, NULL); + gui_printtext_after(&dest, prev, str); + BOOT: irssi_boot(TextUI__Statusbar); irssi_boot(TextUI__TextBuffer); diff --git a/src/perl/ui/Formats.xs b/src/perl/ui/Formats.xs new file mode 100644 index 00000000..84368d78 --- /dev/null +++ b/src/perl/ui/Formats.xs @@ -0,0 +1,28 @@ +#include "module.h" + +MODULE = Irssi::UI::Formats PACKAGE = Irssi::UI::Window +PROTOTYPES: ENABLE + +void +format_get_text(window, module, server, target, formatnum, ...) + Irssi::UI::Window window + char *module + Irssi::Server server + char *target + int formatnum +PREINIT: + char **charargs; + char *ret; + int n; + STRLEN n_a; +PPCODE: + charargs = g_new0(char *, items-5+1); + charargs[items-5] = NULL; + for (n = 5; n < items; n++) { + charargs[n-5] = (char *)SvPV(ST(n), n_a); + } + ret = format_get_text(module, window, server, target, formatnum, charargs); + g_free(charargs); + + XPUSHs(sv_2mortal(new_pv(ret))); + g_free_not_null(ret); diff --git a/src/perl/ui/Themes.xs b/src/perl/ui/Themes.xs index 46787d92..cae50865 100644 --- a/src/perl/ui/Themes.xs +++ b/src/perl/ui/Themes.xs @@ -207,17 +207,19 @@ CODE: MODULE = Irssi::UI::Themes PACKAGE = Irssi::UI::Theme PREFIX = theme_ #******************************* -char * +void theme_format_expand(theme, format, flags=0) Irssi::UI::Theme theme char *format int flags -CODE: +PREINIT: + char *ret; +PPCODE: if (flags == 0) { - RETVAL = theme_format_expand(theme, format); + ret = theme_format_expand(theme, format); } else { - RETVAL = theme_format_expand_data(theme, (const char **) &format, 'n', 'n', - NULL, NULL, EXPAND_FLAG_ROOT | flags); + ret = theme_format_expand_data(theme, (const char **) &format, 'n', 'n', + NULL, NULL, EXPAND_FLAG_ROOT | flags); } -OUTPUT: - RETVAL + XPUSHs(sv_2mortal(new_pv(ret))); + g_free_not_null(ret); diff --git a/src/perl/ui/UI.xs b/src/perl/ui/UI.xs index 1af7f96f..e1ed56b4 100644 --- a/src/perl/ui/UI.xs +++ b/src/perl/ui/UI.xs @@ -87,5 +87,6 @@ CODE: perl_themes_deinit(); BOOT: + irssi_boot(UI__Formats); irssi_boot(UI__Themes); irssi_boot(UI__Window);