summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/perl/textui/TextUI.xs37
-rw-r--r--src/perl/ui/Formats.xs28
-rw-r--r--src/perl/ui/Themes.xs16
-rw-r--r--src/perl/ui/UI.xs1
4 files changed, 75 insertions, 7 deletions
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);