mirror of
https://github.com/irssi/irssi.git
synced 2026-08-11 21:00:40 +02:00
Added Irssi::TextUI.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1733 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
22e1a6dacc
commit
01d3e74f63
9 changed files with 349 additions and 3 deletions
97
src/perl/textui/TextUI.xs
Normal file
97
src/perl/textui/TextUI.xs
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
#include "module.h"
|
||||
|
||||
static void perl_main_window_fill_hash(HV *hv, MAIN_WINDOW_REC *window)
|
||||
{
|
||||
hv_store(hv, "active", 6, plain_bless(window->active, "Irssi::UI::Window"), 0);
|
||||
|
||||
hv_store(hv, "first_line", 10, newSViv(window->first_line), 0);
|
||||
hv_store(hv, "last_line", 9, newSViv(window->last_line), 0);
|
||||
hv_store(hv, "width", 5, newSViv(window->width), 0);
|
||||
hv_store(hv, "height", 6, newSViv(window->height), 0);
|
||||
|
||||
hv_store(hv, "statusbar_lines", 15, newSViv(window->statusbar_lines), 0);
|
||||
}
|
||||
|
||||
static void perl_text_buffer_fill_hash(HV *hv, TEXT_BUFFER_REC *buffer)
|
||||
{
|
||||
hv_store(hv, "first_line", 10, plain_bless(buffer->first_line, "Irssi::TextUI::Line"), 0);
|
||||
hv_store(hv, "lines_count", 11, newSViv(buffer->lines_count), 0);
|
||||
hv_store(hv, "cur_line", 8, plain_bless(buffer->cur_line, "Irssi::TextUI::Line"), 0);
|
||||
hv_store(hv, "last_eol", 8, newSViv(buffer->last_eol), 0);
|
||||
}
|
||||
|
||||
static void perl_text_buffer_view_fill_hash(HV *hv, TEXT_BUFFER_VIEW_REC *view)
|
||||
{
|
||||
hv_store(hv, "buffer", 6, plain_bless(view->buffer, "Irssi::TextUI::TextBuffer"), 0);
|
||||
hv_store(hv, "width", 5, newSViv(view->width), 0);
|
||||
hv_store(hv, "height", 6, newSViv(view->height), 0);
|
||||
|
||||
hv_store(hv, "default_indent", 14, newSViv(view->default_indent), 0);
|
||||
hv_store(hv, "longword_noindent", 17, newSViv(view->longword_noindent), 0);
|
||||
|
||||
hv_store(hv, "ypos", 4, newSViv(view->ypos), 0);
|
||||
|
||||
hv_store(hv, "startline", 9, plain_bless(view->startline, "Irssi::TextUI::Line"), 0);
|
||||
hv_store(hv, "subline", 7, newSViv(view->subline), 0);
|
||||
|
||||
hv_store(hv, "bottom_startline", 16, plain_bless(view->bottom_startline, "Irssi::TextUI::Line"), 0);
|
||||
hv_store(hv, "bottom_subline", 14, newSViv(view->bottom_subline), 0);
|
||||
|
||||
hv_store(hv, "empty_linecount", 15, newSViv(view->empty_linecount), 0);
|
||||
hv_store(hv, "bottom", 6, newSViv(view->bottom), 0);
|
||||
}
|
||||
|
||||
static void perl_line_fill_hash(HV *hv, LINE_REC *line)
|
||||
{
|
||||
hv_store(hv, "refcount", 8, newSViv(line->refcount), 0);
|
||||
hv_store(hv, "info", 4, plain_bless(&line->info, "Irssi::TextUI::LineInfo"), 0);
|
||||
}
|
||||
|
||||
static void perl_line_cache_fill_hash(HV *hv, LINE_CACHE_REC *cache)
|
||||
{
|
||||
hv_store(hv, "last_access", 11, newSViv(cache->last_access), 0);
|
||||
hv_store(hv, "count", 5, newSViv(cache->count), 0);
|
||||
/*LINE_CACHE_SUB_REC lines[1];*/
|
||||
}
|
||||
|
||||
static void perl_line_info_fill_hash(HV *hv, LINE_INFO_REC *info)
|
||||
{
|
||||
hv_store(hv, "level", 5, newSViv(info->level), 0);
|
||||
hv_store(hv, "time", 4, newSViv(info->time), 0);
|
||||
}
|
||||
|
||||
static PLAIN_OBJECT_INIT_REC textui_plains[] = {
|
||||
{ "Irssi::TextUI::MainWindow", (PERL_OBJECT_FUNC) perl_main_window_fill_hash },
|
||||
{ "Irssi::TextUI::TextBuffer", (PERL_OBJECT_FUNC) perl_text_buffer_fill_hash },
|
||||
{ "Irssi::TextUI::TextBufferView", (PERL_OBJECT_FUNC) perl_text_buffer_view_fill_hash },
|
||||
{ "Irssi::TextUI::Line", (PERL_OBJECT_FUNC) perl_line_fill_hash },
|
||||
{ "Irssi::TextUI::LineCache", (PERL_OBJECT_FUNC) perl_line_cache_fill_hash },
|
||||
{ "Irssi::TextUI::LineInfo", (PERL_OBJECT_FUNC) perl_line_info_fill_hash },
|
||||
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
MODULE = Irssi::TextUI PACKAGE = Irssi::TextUI
|
||||
|
||||
PROTOTYPES: ENABLE
|
||||
|
||||
void
|
||||
init()
|
||||
PREINIT:
|
||||
static int initialized = FALSE;
|
||||
CODE:
|
||||
if (initialized) return;
|
||||
initialized = TRUE;
|
||||
|
||||
irssi_add_plains(textui_plains);
|
||||
|
||||
MODULE = Irssi::TextUI PACKAGE = Irssi
|
||||
|
||||
void
|
||||
gui_printtext(xpos, ypos, str)
|
||||
int xpos
|
||||
int ypos
|
||||
char *str
|
||||
|
||||
INCLUDE: TextBuffer.xs
|
||||
INCLUDE: TextBufferView.xs
|
||||
Loading…
Add table
Add a link
Reference in a new issue