mirror of
https://github.com/irssi/irssi.git
synced 2024-09-01 04:14:16 -04: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
@ -118,7 +118,7 @@ EXTRA_DIST = \
|
||||
$(UI_SOURCES)
|
||||
|
||||
all-local:
|
||||
for dir in common irc ui; do \
|
||||
for dir in common irc ui textui; do \
|
||||
cd $$dir && \
|
||||
if [ ! -f Makefile ]; then \
|
||||
$(perlpath) Makefile.PL $(PERL_MM_PARAMS); \
|
||||
@ -128,16 +128,17 @@ all-local:
|
||||
done
|
||||
|
||||
install-exec-local:
|
||||
for dir in common irc ui; do \
|
||||
for dir in common irc ui textui; do \
|
||||
cd $$dir && $(MAKE) install && cd ..; \
|
||||
done
|
||||
|
||||
clean-generic:
|
||||
rm -f common/Makefile irc/Makefile ui/Makefile
|
||||
rm -f common/Makefile irc/Makefile ui/Makefile textui/Makefile
|
||||
|
||||
distclean: distclean-am
|
||||
-(cd common && $(MAKE) realclean && rm -f Makefile.PL)
|
||||
-(cd irc && $(MAKE) realclean && rm -f Makefile.PL)
|
||||
-(cd ui && $(MAKE) realclean && rm -f Makefile.PL)
|
||||
-(cd textui && $(MAKE) realclean && rm -f Makefile.PL)
|
||||
|
||||
libperl_core_la_LIBADD = $(PERL_LDFLAGS)
|
||||
|
7
src/perl/textui/.cvsignore
Normal file
7
src/perl/textui/.cvsignore
Normal file
@ -0,0 +1,7 @@
|
||||
Makefile
|
||||
Makefile.PL
|
||||
TextUI.c
|
||||
TextUI.bs
|
||||
*.o
|
||||
pm_to_blib
|
||||
blib
|
7
src/perl/textui/Makefile.PL.in
Normal file
7
src/perl/textui/Makefile.PL.in
Normal file
@ -0,0 +1,7 @@
|
||||
use ExtUtils::MakeMaker;
|
||||
|
||||
WriteMakefile('NAME' => 'Irssi::TextUI',
|
||||
'LIBS' => '',
|
||||
'TYPEMAPS' => ['../common/typemap', '../ui/typemap'],
|
||||
'INC' => '-I../../.. -I@top_srcdir@/src -I@top_srcdir@/src/core -I@top_srcdir@/src/fe-common/core -I@top_srcdir@/src/fe-text @GLIB_CFLAGS@',
|
||||
'VERSION_FROM' => '@srcdir@/TextUI.pm');
|
80
src/perl/textui/TextBuffer.xs
Normal file
80
src/perl/textui/TextBuffer.xs
Normal file
@ -0,0 +1,80 @@
|
||||
MODULE = Irssi::TextUI PACKAGE = Irssi
|
||||
|
||||
Irssi::TextUI::TextBuffer
|
||||
textbuffer_create()
|
||||
|
||||
#*******************************
|
||||
MODULE = Irssi::TextUI PACKAGE = Irssi::TextUI::TextBuffer PREFIX = textbuffer_
|
||||
#*******************************
|
||||
|
||||
void
|
||||
textbuffer_destroy(buffer)
|
||||
Irssi::TextUI::TextBuffer buffer
|
||||
|
||||
Irssi::TextUI::Line
|
||||
textbuffer_append(buffer, data, len, info)
|
||||
Irssi::TextUI::TextBuffer buffer
|
||||
char *data
|
||||
int len
|
||||
Irssi::TextUI::LineInfo info
|
||||
|
||||
Irssi::TextUI::Line
|
||||
textbuffer_insert(buffer, insert_after, data, len, info)
|
||||
Irssi::TextUI::TextBuffer buffer
|
||||
Irssi::TextUI::Line insert_after
|
||||
char *data
|
||||
int len
|
||||
Irssi::TextUI::LineInfo info
|
||||
|
||||
void
|
||||
textbuffer_remove(buffer, line)
|
||||
Irssi::TextUI::TextBuffer buffer
|
||||
Irssi::TextUI::Line line
|
||||
|
||||
void
|
||||
textbuffer_remove_all_lines(buffer)
|
||||
Irssi::TextUI::TextBuffer buffer
|
||||
|
||||
#*******************************
|
||||
MODULE = Irssi::TextUI PACKAGE = Irssi::TextUI::Line PREFIX = textbuffer_line_
|
||||
#*******************************
|
||||
|
||||
Irssi::TextUI::Line
|
||||
textbuffer_line_prev(line)
|
||||
Irssi::TextUI::Line line
|
||||
CODE:
|
||||
RETVAL = line->prev;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
Irssi::TextUI::Line
|
||||
textbuffer_line_next(line)
|
||||
Irssi::TextUI::Line line
|
||||
CODE:
|
||||
RETVAL = line->next;
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
void
|
||||
textbuffer_line_ref(line)
|
||||
Irssi::TextUI::Line line
|
||||
|
||||
void
|
||||
textbuffer_line_unref(line, buffer)
|
||||
Irssi::TextUI::Line line
|
||||
Irssi::TextUI::TextBuffer buffer
|
||||
CODE:
|
||||
textbuffer_line_unref(buffer, line);
|
||||
|
||||
void
|
||||
textbuffer_line_get_text(line, coloring)
|
||||
Irssi::TextUI::Line line
|
||||
int coloring
|
||||
PREINIT:
|
||||
GString *str;
|
||||
PPCODE:
|
||||
str = g_string_new(NULL);
|
||||
textbuffer_line2text(line, coloring, str);
|
||||
XPUSHs(sv_2mortal(new_pv(str->str)));
|
||||
g_string_free(str, TRUE);
|
||||
|
98
src/perl/textui/TextBufferView.xs
Normal file
98
src/perl/textui/TextBufferView.xs
Normal file
@ -0,0 +1,98 @@
|
||||
MODULE = Irssi::TextUI PACKAGE = Irssi::TextUI::TextBuffer PREFIX = textbuffer_
|
||||
|
||||
Irssi::TextUI::TextBufferView
|
||||
textbuffer_view_create(buffer, width, height, default_indent, longword_noindent)
|
||||
Irssi::TextUI::TextBuffer buffer
|
||||
int width
|
||||
int height
|
||||
int default_indent
|
||||
int longword_noindent
|
||||
|
||||
#*******************************
|
||||
MODULE = Irssi::TextUI PACKAGE = Irssi::TextUI::TextBufferView PREFIX = textbuffer_view_
|
||||
#*******************************
|
||||
|
||||
void
|
||||
textbuffer_view_destroy(view)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
|
||||
void
|
||||
textbuffer_view_set_default_indent(view, default_indent, longword_noindent)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
int default_indent
|
||||
int longword_noindent
|
||||
|
||||
void
|
||||
textbuffer_view_resize(view, width, height)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
int width
|
||||
int height
|
||||
|
||||
void
|
||||
textbuffer_view_clear(view)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
|
||||
void
|
||||
textbuffer_view_get_lines(view)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
|
||||
void
|
||||
textbuffer_view_scroll(view, lines)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
int lines
|
||||
|
||||
void
|
||||
textbuffer_view_scroll_line(view, line)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
Irssi::TextUI::Line line
|
||||
|
||||
Irssi::TextUI::LineCache
|
||||
textbuffer_view_get_line_cache(view, line)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
Irssi::TextUI::Line line
|
||||
|
||||
void
|
||||
textbuffer_view_insert_line(view, line)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
Irssi::TextUI::Line line
|
||||
|
||||
void
|
||||
textbuffer_view_remove_line(view, line)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
Irssi::TextUI::Line line
|
||||
|
||||
void
|
||||
textbuffer_view_remove_all_lines(view)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
|
||||
void
|
||||
textbuffer_view_set_bookmark(view, name, line)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
char *name
|
||||
Irssi::TextUI::Line line
|
||||
|
||||
void
|
||||
textbuffer_view_set_bookmark_bottom(view, name);
|
||||
Irssi::TextUI::TextBufferView view
|
||||
char *name
|
||||
|
||||
Irssi::TextUI::Line
|
||||
textbuffer_view_get_bookmark(view, name);
|
||||
Irssi::TextUI::TextBufferView view
|
||||
char *name
|
||||
|
||||
void
|
||||
textbuffer_view_redraw(view)
|
||||
Irssi::TextUI::TextBufferView view
|
||||
|
||||
#*******************************
|
||||
MODULE = Irssi::TextUI PACKAGE = Irssi::UI::Window
|
||||
#*******************************
|
||||
|
||||
Irssi::TextUI::TextBufferView
|
||||
view(window)
|
||||
Irssi::UI::Window window
|
||||
CODE:
|
||||
RETVAL = WINDOW_GUI(window)->view;
|
||||
OUTPUT:
|
||||
RETVAL
|
24
src/perl/textui/TextUI.pm
Normal file
24
src/perl/textui/TextUI.pm
Normal file
@ -0,0 +1,24 @@
|
||||
#
|
||||
# Perl interface to irssi functions.
|
||||
#
|
||||
|
||||
package Irssi::TextUI;
|
||||
|
||||
use strict;
|
||||
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
|
||||
|
||||
$VERSION = "0.20";
|
||||
|
||||
require Exporter;
|
||||
require DynaLoader;
|
||||
|
||||
@ISA = qw(Exporter DynaLoader);
|
||||
@EXPORT = qw();
|
||||
@EXPORT_OK = qw();
|
||||
|
||||
bootstrap Irssi::TextUI $VERSION;
|
||||
|
||||
Irssi::TextUI::init();
|
||||
|
||||
1;
|
||||
|
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
|
14
src/perl/textui/module.h
Normal file
14
src/perl/textui/module.h
Normal file
@ -0,0 +1,14 @@
|
||||
#include "../ui/module.h"
|
||||
|
||||
#include "mainwindows.h"
|
||||
#include "gui-windows.h"
|
||||
#include "gui-printtext.h"
|
||||
#include "textbuffer.h"
|
||||
#include "textbuffer-view.h"
|
||||
|
||||
typedef MAIN_WINDOW_REC *Irssi__TextUI__MainWindow;
|
||||
typedef TEXT_BUFFER_REC *Irssi__TextUI__TextBuffer;
|
||||
typedef TEXT_BUFFER_VIEW_REC *Irssi__TextUI__TextBufferView;
|
||||
typedef LINE_REC *Irssi__TextUI__Line;
|
||||
typedef LINE_CACHE_REC *Irssi__TextUI__LineCache;
|
||||
typedef LINE_INFO_REC *Irssi__TextUI__LineInfo;
|
18
src/perl/textui/typemap
Normal file
18
src/perl/textui/typemap
Normal file
@ -0,0 +1,18 @@
|
||||
TYPEMAP
|
||||
Irssi::TextUI::MainWindow T_PlainObj
|
||||
Irssi::TextUI::TextBuffer T_PlainObj
|
||||
Irssi::TextUI::TextBufferView T_PlainObj
|
||||
Irssi::TextUI::Line T_PlainObj
|
||||
Irssi::TextUI::LineCache T_PlainObj
|
||||
Irssi::TextUI::LineInfo T_PlainObj
|
||||
|
||||
INPUT
|
||||
|
||||
T_PlainObj
|
||||
$var = irssi_ref_object($arg)
|
||||
|
||||
OUTPUT
|
||||
|
||||
T_PlainObj
|
||||
$arg = plain_bless($var, \"$type\");
|
||||
|
Loading…
Reference in New Issue
Block a user