vte 0.90.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +75 -0
- data/README +34 -0
- data/Rakefile +13 -0
- data/ext/vte/Makefile +162 -0
- data/ext/vte/depend +5 -0
- data/ext/vte/extconf.rb +57 -0
- data/ext/vte/rbvte-access.c +33 -0
- data/ext/vte/rbvte-access.o +0 -0
- data/ext/vte/rbvte-reaper.c +31 -0
- data/ext/vte/rbvte-reaper.o +0 -0
- data/ext/vte/rbvte-terminal.c +1030 -0
- data/ext/vte/rbvte-terminal.o +0 -0
- data/ext/vte/rbvte.c +31 -0
- data/ext/vte/rbvte.h +28 -0
- data/ext/vte/rbvte.o +0 -0
- data/ext/vte/ruby-vte.pc +3 -0
- data/ext/vte/vte.so +0 -0
- data/extconf.rb +49 -0
- data/lib/vte.rb +2 -0
- data/sample/multiterm.rb +103 -0
- data/sample/terminal.rb +28 -0
- metadata +104 -0
data/ChangeLog
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
2011-01-22 Masaaki Aoyagi
|
2
|
+
|
3
|
+
* src/lib/: -> lib/.
|
4
|
+
|
5
|
+
* src/: -> ext/vte/.
|
6
|
+
|
7
|
+
* extconf.rb: -> ext/vte/extconf.rb
|
8
|
+
|
9
|
+
* ext/vte/extconf.rb: support directory structure change.
|
10
|
+
|
11
|
+
* extconf.rb: add.
|
12
|
+
|
13
|
+
* Rakefile: add.
|
14
|
+
|
15
|
+
2010-09-23 Kouhei Sutou <kou@cozmixng.org>
|
16
|
+
|
17
|
+
* extconf.rb: support Ruby/GLib2 directory structure change.
|
18
|
+
|
19
|
+
2009-06-28 Kouhei Sutou <kou@cozmixng.org>
|
20
|
+
|
21
|
+
* src/rbvte-terminal.c:
|
22
|
+
- support vte_terminal_{set,get}_cursor_blink_mode().
|
23
|
+
- support vte_terminal_{set,get}_cursor_shape().
|
24
|
+
- support vte_terminal_get_pty().
|
25
|
+
- support vte_terminal_get_child_exit_status().
|
26
|
+
|
27
|
+
* extconf.rb, src/rbvte.h: use VTE_CHECK_VERSION provided by VTE itself.
|
28
|
+
|
29
|
+
2008-11-01 Kouhei Sutou <kou@cozmixng.org>
|
30
|
+
|
31
|
+
* src/: use RARRAY_PTR() and RARRAY_LEN().
|
32
|
+
|
33
|
+
2008-09-13 Kouhei Sutou <kou@cozmixng.org>
|
34
|
+
|
35
|
+
* extconf.rb: use check_cairo.
|
36
|
+
|
37
|
+
2008-04-13 Kouhei Sutou <kou@cozmixng.org>
|
38
|
+
|
39
|
+
* extconf.rb: fix rcairo's source path.
|
40
|
+
|
41
|
+
2007-07-13 Guillaume Cottenceau
|
42
|
+
|
43
|
+
* src/rbvte-terminal.c: replace RTEST uses by RVAL2CBOOL
|
44
|
+
|
45
|
+
2007-06-16 Kouhei Sutou <kou@cozmixng.org>
|
46
|
+
|
47
|
+
* src/rbvte-terminal.c: used RSTRING_LEN/RSTRING_PTR instead of
|
48
|
+
RSTRING()->len/ptr to support ruby 1.9.
|
49
|
+
|
50
|
+
2006-06-17 Masao Mutoh <mutoh@highway.ne.jp>
|
51
|
+
|
52
|
+
* sample/*.rb: code cleanup.
|
53
|
+
|
54
|
+
2006-05-26 Kouhei Sutou <kou@cozmixng.org>
|
55
|
+
|
56
|
+
* src/rbvte.h: added extern modifier.
|
57
|
+
|
58
|
+
2006-05-19 Kouhei Sutou <kou@cozmixng.org>
|
59
|
+
|
60
|
+
* src/rbvte-terminal.c (term_set_color_highlight,
|
61
|
+
term_set_word_chars): accepted nil.
|
62
|
+
(term_get_text, term_get_text_range, term_match_check): fixed
|
63
|
+
memory leak.
|
64
|
+
(word_char?): fixed typo.
|
65
|
+
|
66
|
+
2006-05-18 Kouhei Sutou <kou@cozmixng.org>
|
67
|
+
|
68
|
+
* src/rbvte-terminal.c (term_set_color_cursor): accepted nil.
|
69
|
+
|
70
|
+
* README: required 0.12.1 or later.
|
71
|
+
* extconf.rb: ditto.
|
72
|
+
|
73
|
+
2006-05-17 Kouhei Sutou <kou@cozmixng.org>
|
74
|
+
|
75
|
+
* .: imported.
|
data/README
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
Ruby/VTE
|
2
|
+
========
|
3
|
+
|
4
|
+
Ruby/VTE is a Ruby binding of VTE.
|
5
|
+
|
6
|
+
Requirements
|
7
|
+
------------
|
8
|
+
|
9
|
+
Ruby: http://www.ruby-lang.org/
|
10
|
+
VTE [*]: http://www.gnome.org/
|
11
|
+
Ruby/GTK2: http://ruby-gnome2.sourceforge.net/
|
12
|
+
|
13
|
+
[*]: 0.12.1 or later is required.
|
14
|
+
|
15
|
+
Install
|
16
|
+
-------
|
17
|
+
|
18
|
+
0. install ruby and VTE.
|
19
|
+
1. ruby extconf.rb
|
20
|
+
2. make
|
21
|
+
3. su
|
22
|
+
4. make install
|
23
|
+
|
24
|
+
Copying
|
25
|
+
-------
|
26
|
+
Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
|
27
|
+
|
28
|
+
This program is free software.
|
29
|
+
You can distribute/modify this program under the terms of
|
30
|
+
the GNU LESSER GENERAL PUBLIC LICENSE Version 2.1.
|
31
|
+
|
32
|
+
Project Website
|
33
|
+
---------------
|
34
|
+
http://ruby-gnome2.sourceforge.jp/
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require './../glib2/lib/gnome2-raketask'
|
4
|
+
|
5
|
+
package = GNOME2Package.new do |_package|
|
6
|
+
_package.summary = "Ruby/VTE is a Ruby binding of VTE."
|
7
|
+
_package.description = "Ruby/VTE is a Ruby binding of VTE."
|
8
|
+
_package.dependency.gem.runtime = ["gtk2"]
|
9
|
+
_package.win32.packages = []
|
10
|
+
_package.win32.dependencies = []
|
11
|
+
end
|
12
|
+
package.define_tasks
|
13
|
+
|
data/ext/vte/Makefile
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
|
2
|
+
SHELL = /bin/sh
|
3
|
+
|
4
|
+
#### Start of system configuration section. ####
|
5
|
+
|
6
|
+
srcdir = /home/kou/work/ruby/ruby-gnome2/vte/ext/vte
|
7
|
+
topdir = /usr/lib/ruby/1.8/x86_64-linux
|
8
|
+
hdrdir = $(topdir)
|
9
|
+
VPATH = $(srcdir):$(topdir):$(hdrdir)
|
10
|
+
exec_prefix = $(prefix)
|
11
|
+
prefix = $(DESTDIR)/usr
|
12
|
+
sharedstatedir = $(prefix)/com
|
13
|
+
mandir = $(prefix)/share/man
|
14
|
+
psdir = $(docdir)
|
15
|
+
oldincludedir = $(DESTDIR)/usr/include
|
16
|
+
localedir = $(datarootdir)/locale
|
17
|
+
bindir = $(exec_prefix)/bin
|
18
|
+
libexecdir = $(prefix)/lib/ruby1.8
|
19
|
+
sitedir = $(DESTDIR)/usr/local/lib/site_ruby
|
20
|
+
htmldir = $(docdir)
|
21
|
+
vendorarchdir = $(vendorlibdir)/$(sitearch)
|
22
|
+
includedir = $(prefix)/include
|
23
|
+
infodir = $(prefix)/share/info
|
24
|
+
vendorlibdir = $(vendordir)/$(ruby_version)
|
25
|
+
sysconfdir = $(DESTDIR)/etc
|
26
|
+
libdir = $(exec_prefix)/lib
|
27
|
+
sbindir = $(exec_prefix)/sbin
|
28
|
+
rubylibdir = $(libdir)/ruby/$(ruby_version)
|
29
|
+
docdir = $(datarootdir)/doc/$(PACKAGE)
|
30
|
+
dvidir = $(docdir)
|
31
|
+
vendordir = $(libdir)/ruby/vendor_ruby
|
32
|
+
datarootdir = $(prefix)/share
|
33
|
+
pdfdir = $(docdir)
|
34
|
+
archdir = $(rubylibdir)/$(arch)
|
35
|
+
sitearchdir = $(sitelibdir)/$(sitearch)
|
36
|
+
datadir = $(datarootdir)
|
37
|
+
localstatedir = $(DESTDIR)/var
|
38
|
+
sitelibdir = $(sitedir)/$(ruby_version)
|
39
|
+
|
40
|
+
CC = gcc
|
41
|
+
LIBRUBY = $(LIBRUBY_SO)
|
42
|
+
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
43
|
+
LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
|
44
|
+
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
|
45
|
+
|
46
|
+
RUBY_EXTCONF_H =
|
47
|
+
CFLAGS = -fPIC -fno-strict-aliasing -g -g -O2 -fPIC $(cflags) -Wall -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gtk-2.0 -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/lib/gtk-2.0/include -pthread
|
48
|
+
INCFLAGS = -I. -I/home/kou/work/ruby/ruby-gnome2/gtk2/ext/gtk2 -I/home/kou/work/ruby/ruby-gnome2/gtk2/ext/gtk2 -I/home/kou/work/ruby/ruby-gnome2/gtk2/ext/gtk2 -I/home/kou/work/ruby/ruby-gnome2/atk/ext/atk -I/home/kou/work/ruby/ruby-gnome2/atk/ext/atk -I/home/kou/work/ruby/ruby-gnome2/atk/ext/atk -I/home/kou/work/ruby/ruby-gnome2/glib2/ext/glib2 -I/home/kou/work/ruby/ruby-gnome2/glib2/ext/glib2 -I/home/kou/work/ruby/ruby-gnome2/glib2/ext/glib2 -I. -I/usr/lib/ruby/1.8/x86_64-linux -I/home/kou/work/ruby/ruby-gnome2/vte/ext/vte
|
49
|
+
DEFS =
|
50
|
+
CPPFLAGS = -DHAVE_RB_DEFINE_ALLOC_FUNC -DHAVE_RB_BLOCK_PROC -DHAVE_OBJECT_ALLOCATE -DHAVE_NODE_ATTRASGN -DHAVE_TYPE_VTETERMINALCURSORBLINKMODE -DRUBY_VTE_COMPILATION
|
51
|
+
CXXFLAGS = $(CFLAGS)
|
52
|
+
ldflags = -L. -rdynamic -Wl,-export-dynamic -pthread
|
53
|
+
dldflags =
|
54
|
+
archflag =
|
55
|
+
DLDFLAGS = $(ldflags) $(dldflags) $(archflag)
|
56
|
+
LDSHARED = $(CC) -shared
|
57
|
+
AR = ar
|
58
|
+
EXEEXT =
|
59
|
+
|
60
|
+
RUBY_INSTALL_NAME = ruby1.8
|
61
|
+
RUBY_SO_NAME = ruby1.8
|
62
|
+
arch = x86_64-linux
|
63
|
+
sitearch = x86_64-linux
|
64
|
+
ruby_version = 1.8
|
65
|
+
ruby = /usr/bin/ruby1.8
|
66
|
+
RUBY = $(ruby)
|
67
|
+
RM = rm -f
|
68
|
+
MAKEDIRS = mkdir -p
|
69
|
+
INSTALL = /usr/bin/install -c
|
70
|
+
INSTALL_PROG = $(INSTALL) -m 0755
|
71
|
+
INSTALL_DATA = $(INSTALL) -m 644
|
72
|
+
COPY = cp
|
73
|
+
|
74
|
+
#### End of system configuration section. ####
|
75
|
+
|
76
|
+
preload =
|
77
|
+
|
78
|
+
libpath = . $(libdir)
|
79
|
+
LIBPATH = -L. -L$(libdir)
|
80
|
+
DEFFILE =
|
81
|
+
|
82
|
+
CLEANFILES = mkmf.log
|
83
|
+
DISTCLEANFILES =
|
84
|
+
|
85
|
+
extout =
|
86
|
+
extout_prefix =
|
87
|
+
target_prefix =
|
88
|
+
LOCAL_LIBS =
|
89
|
+
LIBS = $(LIBRUBYARG_SHARED) -lvte -lglib-2.0 -lgobject-2.0 -lgthread-2.0 -lrt -lpango-1.0 -lgmodule-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lgio-2.0 -latk-1.0 -lpangoft2-1.0 -lfreetype -lfontconfig -lX11 -lpthread -lrt -ldl -lcrypt -lm -lc
|
90
|
+
SRCS = rbvte-terminal.c rbvte-reaper.c rbvte-access.c rbvte.c
|
91
|
+
OBJS = rbvte-terminal.o rbvte-reaper.o rbvte-access.o rbvte.o
|
92
|
+
TARGET = vte
|
93
|
+
DLLIB = $(TARGET).so
|
94
|
+
EXTSTATIC =
|
95
|
+
STATIC_LIB =
|
96
|
+
|
97
|
+
BINDIR = $(bindir)
|
98
|
+
RUBYCOMMONDIR = $(sitedir)$(target_prefix)
|
99
|
+
RUBYLIBDIR = $(sitelibdir)$(target_prefix)
|
100
|
+
RUBYARCHDIR = $(sitearchdir)$(target_prefix)
|
101
|
+
|
102
|
+
TARGET_SO = $(DLLIB)
|
103
|
+
CLEANLIBS = $(TARGET).so $(TARGET).il? $(TARGET).tds $(TARGET).map
|
104
|
+
CLEANOBJS = *.o *.a *.s[ol] *.pdb *.exp *.bak
|
105
|
+
|
106
|
+
all: $(DLLIB)
|
107
|
+
static: $(STATIC_LIB)
|
108
|
+
|
109
|
+
clean:
|
110
|
+
@-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
|
111
|
+
|
112
|
+
distclean: clean
|
113
|
+
@-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
|
114
|
+
@-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
|
115
|
+
|
116
|
+
realclean: distclean
|
117
|
+
install: install-so install-rb
|
118
|
+
|
119
|
+
install-so: $(RUBYARCHDIR)
|
120
|
+
install-so: $(RUBYARCHDIR)/$(DLLIB)
|
121
|
+
$(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
|
122
|
+
$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
|
123
|
+
install-rb: pre-install-rb install-rb-default
|
124
|
+
install-rb-default: pre-install-rb-default
|
125
|
+
pre-install-rb: Makefile
|
126
|
+
pre-install-rb-default: Makefile
|
127
|
+
$(RUBYARCHDIR):
|
128
|
+
$(MAKEDIRS) $@
|
129
|
+
|
130
|
+
site-install: site-install-so site-install-rb
|
131
|
+
site-install-so: install-so
|
132
|
+
site-install-rb: install-rb
|
133
|
+
|
134
|
+
.SUFFIXES: .c .m .cc .cxx .cpp .C .o
|
135
|
+
|
136
|
+
.cc.o:
|
137
|
+
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
138
|
+
|
139
|
+
.cxx.o:
|
140
|
+
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
141
|
+
|
142
|
+
.cpp.o:
|
143
|
+
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
144
|
+
|
145
|
+
.C.o:
|
146
|
+
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
147
|
+
|
148
|
+
.c.o:
|
149
|
+
$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $<
|
150
|
+
|
151
|
+
$(DLLIB): $(OBJS) Makefile
|
152
|
+
@-$(RM) $@
|
153
|
+
$(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
###
|
158
|
+
install:
|
159
|
+
if test -n "$(pkgconfigdir)"; then \
|
160
|
+
$(MAKEDIRS) $(pkgconfigdir); \
|
161
|
+
$(INSTALL_DATA) ../ruby-vte.pc $(pkgconfigdir); \
|
162
|
+
fi
|
data/ext/vte/depend
ADDED
data/ext/vte/extconf.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
=begin
|
2
|
+
extconf.rb for Ruby/VTE extention library
|
3
|
+
=end
|
4
|
+
|
5
|
+
require 'pathname'
|
6
|
+
|
7
|
+
base_dir = Pathname(__FILE__).dirname.parent.parent.expand_path
|
8
|
+
top_dir = base_dir.parent
|
9
|
+
top_build_dir = Pathname(".").parent.parent.parent.expand_path
|
10
|
+
|
11
|
+
mkmf_gnome2_dir = top_dir + "glib2" + 'lib'
|
12
|
+
version_suffix = ""
|
13
|
+
unless mkmf_gnome2_dir.exist?
|
14
|
+
if /(-\d+\.\d+\.\d+)(?:\.\d+)?\z/ =~ base_dir.basename.to_s
|
15
|
+
version_suffix = $1
|
16
|
+
mkmf_gnome2_dir = top_dir + "glib2#{version_suffix}" + 'lib'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
$LOAD_PATH.unshift(mkmf_gnome2_dir.to_s)
|
21
|
+
|
22
|
+
module_name = "vte"
|
23
|
+
package_id = "vte"
|
24
|
+
|
25
|
+
require 'mkmf-gnome2'
|
26
|
+
|
27
|
+
setup_win32(module_name, base_dir)
|
28
|
+
|
29
|
+
PKGConfig.have_package(package_id, 0, 12, 1) or exit(false)
|
30
|
+
|
31
|
+
["glib2", "atk", "gtk2"].each do |package|
|
32
|
+
directory = "#{package}#{version_suffix}"
|
33
|
+
build_dir = "#{directory}/tmp/#{RUBY_PLATFORM}/#{package}/#{RUBY_VERSION}"
|
34
|
+
add_depend_package(package, "#{directory}/ext/#{package}",
|
35
|
+
top_dir.to_s,
|
36
|
+
:top_build_dir => top_build_dir.to_s,
|
37
|
+
:target_build_dir => build_dir)
|
38
|
+
end
|
39
|
+
|
40
|
+
vte_headers = ["vte/vte.h"]
|
41
|
+
have_type("VteTerminalCursorBlinkMode", vte_headers)
|
42
|
+
|
43
|
+
unless have_macro("VTE_CHECK_VERSION", vte_headers)
|
44
|
+
make_version_header("VTE", package_id, ".")
|
45
|
+
end
|
46
|
+
|
47
|
+
create_pkg_config_file("Ruby/VTE", package_id)
|
48
|
+
$defs << "-DRUBY_VTE_COMPILATION"
|
49
|
+
create_makefile(module_name)
|
50
|
+
pkg_config_dir = with_config("pkg-config-dir")
|
51
|
+
if pkg_config_dir.is_a?(String)
|
52
|
+
File.open("Makefile", "ab") do |makefile|
|
53
|
+
makefile.puts
|
54
|
+
makefile.puts("pkgconfigdir=#{pkg_config_dir}")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/**********************************************************************
|
3
|
+
|
4
|
+
rbvte-access.c -
|
5
|
+
|
6
|
+
$Author: ktou $
|
7
|
+
$Date: 2006/05/17 12:40:47 $
|
8
|
+
|
9
|
+
Copyright (C) 2006 Ruby-GNOME2 Project Team
|
10
|
+
|
11
|
+
**********************************************************************/
|
12
|
+
|
13
|
+
#include "rbvte.h"
|
14
|
+
|
15
|
+
static VALUE
|
16
|
+
ta_initialize(VALUE self, VALUE terminal)
|
17
|
+
{
|
18
|
+
G_INITIALIZE(self, vte_terminal_accessible_new(RVAL2TERM(terminal)));
|
19
|
+
return Qnil;
|
20
|
+
}
|
21
|
+
|
22
|
+
void
|
23
|
+
Init_vte_access(VALUE mVte)
|
24
|
+
{
|
25
|
+
VALUE cTerminalAccessible;
|
26
|
+
|
27
|
+
cTerminalAccessible = G_DEF_CLASS(VTE_TYPE_TERMINAL_ACCESSIBLE,
|
28
|
+
"TerminalAccessible", mVte);
|
29
|
+
|
30
|
+
rb_define_method(cTerminalAccessible, "initialize", ta_initialize, 1);
|
31
|
+
|
32
|
+
G_DEF_SETTERS(cTerminalAccessible);
|
33
|
+
}
|
Binary file
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/**********************************************************************
|
3
|
+
|
4
|
+
rbvte-reaper.c -
|
5
|
+
|
6
|
+
$Author: ktou $
|
7
|
+
$Date: 2006/05/17 12:40:47 $
|
8
|
+
|
9
|
+
Copyright (C) 2006 Ruby-GNOME2 Project Team
|
10
|
+
|
11
|
+
**********************************************************************/
|
12
|
+
|
13
|
+
#include "rbvte.h"
|
14
|
+
|
15
|
+
static VALUE
|
16
|
+
reaper_get(VALUE self)
|
17
|
+
{
|
18
|
+
return GOBJ2RVAL(vte_reaper_get());
|
19
|
+
}
|
20
|
+
|
21
|
+
void
|
22
|
+
Init_vte_reaper(VALUE mVte)
|
23
|
+
{
|
24
|
+
VALUE cReaper;
|
25
|
+
|
26
|
+
cReaper = G_DEF_CLASS(VTE_TYPE_REAPER, "Reaper", mVte);
|
27
|
+
|
28
|
+
rb_define_module_function(cReaper, "get", reaper_get, 0);
|
29
|
+
|
30
|
+
G_DEF_SETTERS(cReaper);
|
31
|
+
}
|
Binary file
|
@@ -0,0 +1,1030 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/**********************************************************************
|
3
|
+
|
4
|
+
rbvte-terminal.c -
|
5
|
+
|
6
|
+
$Author: ggc $
|
7
|
+
$Date: 2007/07/13 16:07:34 $
|
8
|
+
|
9
|
+
Copyright (C) 2006 Ruby-GNOME2 Project Team
|
10
|
+
|
11
|
+
**********************************************************************/
|
12
|
+
|
13
|
+
#include "rbvte.h"
|
14
|
+
|
15
|
+
static VALUE cCharAttributes;
|
16
|
+
static ID id_new, id_call;
|
17
|
+
static ID id_row, id_column, id_fore, id_back, id_underline, id_strikethrough;
|
18
|
+
|
19
|
+
|
20
|
+
static char **
|
21
|
+
rval2cstrary(VALUE ary)
|
22
|
+
{
|
23
|
+
long i, len;
|
24
|
+
char **result;
|
25
|
+
|
26
|
+
if (NIL_P(ary))
|
27
|
+
return NULL;
|
28
|
+
|
29
|
+
len = RARRAY_LEN(ary);
|
30
|
+
result = ALLOC_N(char *, len + 1);
|
31
|
+
for (i = 0; i < len; i++) {
|
32
|
+
result[i] = g_strdup(RVAL2CSTR(RARRAY_PTR(ary)[i]));
|
33
|
+
}
|
34
|
+
result[i] = NULL;
|
35
|
+
|
36
|
+
return result;
|
37
|
+
}
|
38
|
+
|
39
|
+
static void
|
40
|
+
free_cstrary(char **ary)
|
41
|
+
{
|
42
|
+
long i;
|
43
|
+
|
44
|
+
if (!ary) return;
|
45
|
+
|
46
|
+
for (i = 0; ary[i] != NULL; i++) {
|
47
|
+
g_free(ary[i]);
|
48
|
+
}
|
49
|
+
g_free(ary);
|
50
|
+
}
|
51
|
+
|
52
|
+
static VALUE
|
53
|
+
attrary2rval(GArray *attrs)
|
54
|
+
{
|
55
|
+
long i, len;
|
56
|
+
VALUE rb_attrs;
|
57
|
+
|
58
|
+
len = attrs->len;
|
59
|
+
rb_attrs = rb_ary_new2(len);
|
60
|
+
|
61
|
+
for (i = 0; i < len; i++) {
|
62
|
+
VteCharAttributes *attr;
|
63
|
+
attr = &g_array_index(attrs, VteCharAttributes, i);
|
64
|
+
rb_ary_push(rb_attrs, rb_funcall(cCharAttributes, id_new, 6,
|
65
|
+
LONG2NUM(attr->row),
|
66
|
+
LONG2NUM(attr->column),
|
67
|
+
COLOR2RVAL(&(attr->fore)),
|
68
|
+
COLOR2RVAL(&(attr->back)),
|
69
|
+
CBOOL2RVAL(attr->underline),
|
70
|
+
CBOOL2RVAL(attr->strikethrough)));
|
71
|
+
}
|
72
|
+
|
73
|
+
return rb_attrs;
|
74
|
+
}
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
static VALUE
|
79
|
+
ca_initialize(VALUE self, VALUE row, VALUE column, VALUE fore, VALUE back,
|
80
|
+
VALUE underline, VALUE strikethrough)
|
81
|
+
{
|
82
|
+
rb_ivar_set(self, id_row, row);
|
83
|
+
rb_ivar_set(self, id_column, column);
|
84
|
+
rb_ivar_set(self, id_fore, fore);
|
85
|
+
rb_ivar_set(self, id_back, back);
|
86
|
+
rb_ivar_set(self, id_underline, underline);
|
87
|
+
rb_ivar_set(self, id_strikethrough, strikethrough);
|
88
|
+
return Qnil;
|
89
|
+
}
|
90
|
+
|
91
|
+
static VALUE
|
92
|
+
ca_get_underline(VALUE self)
|
93
|
+
{
|
94
|
+
return rb_ivar_get(self, id_underline);
|
95
|
+
}
|
96
|
+
|
97
|
+
static VALUE
|
98
|
+
ca_get_strikethrough(VALUE self)
|
99
|
+
{
|
100
|
+
return rb_ivar_get(self, id_strikethrough);
|
101
|
+
}
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
static VALUE
|
106
|
+
term_initialize(VALUE self)
|
107
|
+
{
|
108
|
+
RBGTK_INITIALIZE(self, vte_terminal_new());
|
109
|
+
return Qnil;
|
110
|
+
}
|
111
|
+
|
112
|
+
static VALUE
|
113
|
+
term_fork_command(int argc, VALUE *argv, VALUE self)
|
114
|
+
{
|
115
|
+
VALUE rb_command, rb_command_argv, rb_envv, rb_directory;
|
116
|
+
VALUE lastlog, utmp, wtmp;
|
117
|
+
char *command;
|
118
|
+
char **command_argv;
|
119
|
+
char **envv;
|
120
|
+
char *directory;
|
121
|
+
pid_t pid;
|
122
|
+
|
123
|
+
rb_scan_args(argc, argv, "07", &rb_command, &rb_command_argv,
|
124
|
+
&rb_envv, &rb_directory, &lastlog, &utmp, &wtmp);
|
125
|
+
|
126
|
+
command = NIL_P(rb_command) ? NULL : RVAL2CSTR(rb_command);
|
127
|
+
command_argv = rval2cstrary(rb_command_argv);
|
128
|
+
envv = rval2cstrary(rb_envv);
|
129
|
+
directory = NIL_P(rb_directory) ? NULL : RVAL2CSTR(rb_directory);
|
130
|
+
pid = vte_terminal_fork_command(RVAL2TERM(self), command,
|
131
|
+
command_argv, envv, directory,
|
132
|
+
NIL_P(lastlog) ? TRUE : RVAL2CBOOL(lastlog),
|
133
|
+
NIL_P(utmp) ? TRUE : RVAL2CBOOL(utmp),
|
134
|
+
NIL_P(wtmp) ? TRUE : RVAL2CBOOL(wtmp));
|
135
|
+
free_cstrary(command_argv);
|
136
|
+
free_cstrary(envv);
|
137
|
+
|
138
|
+
return INT2NUM(pid);
|
139
|
+
}
|
140
|
+
|
141
|
+
static VALUE
|
142
|
+
term_fork_pty(int argc, VALUE *argv, VALUE self)
|
143
|
+
{
|
144
|
+
VALUE rb_envv, rb_directory, lastlog, utmp, wtmp;
|
145
|
+
char **envv;
|
146
|
+
char *directory;
|
147
|
+
pid_t pid;
|
148
|
+
|
149
|
+
rb_scan_args(argc, argv, "05", &rb_envv, &rb_directory,
|
150
|
+
&lastlog, &utmp, &wtmp);
|
151
|
+
|
152
|
+
envv = rval2cstrary(rb_envv);
|
153
|
+
directory = NIL_P(rb_directory) ? NULL : RVAL2CSTR(rb_directory);
|
154
|
+
pid = vte_terminal_forkpty(RVAL2TERM(self), envv, directory,
|
155
|
+
NIL_P(lastlog) ? TRUE : RVAL2CBOOL(lastlog),
|
156
|
+
NIL_P(utmp) ? TRUE : RVAL2CBOOL(utmp),
|
157
|
+
NIL_P(wtmp) ? TRUE : RVAL2CBOOL(wtmp));
|
158
|
+
free_cstrary(envv);
|
159
|
+
|
160
|
+
return INT2NUM(pid);
|
161
|
+
}
|
162
|
+
|
163
|
+
static VALUE
|
164
|
+
term_feed(VALUE self, VALUE data)
|
165
|
+
{
|
166
|
+
glong length;
|
167
|
+
|
168
|
+
length = RSTRING_LEN(data);
|
169
|
+
|
170
|
+
if (length > 0) {
|
171
|
+
vte_terminal_feed(RVAL2TERM(self), RSTRING_PTR(data), length);
|
172
|
+
}
|
173
|
+
|
174
|
+
return Qnil;
|
175
|
+
}
|
176
|
+
|
177
|
+
static VALUE
|
178
|
+
term_feed_child(VALUE self, VALUE data)
|
179
|
+
{
|
180
|
+
glong length;
|
181
|
+
|
182
|
+
length = RSTRING_LEN(data);
|
183
|
+
|
184
|
+
if (length > 0) {
|
185
|
+
vte_terminal_feed_child(RVAL2TERM(self), RSTRING_PTR(data), length);
|
186
|
+
}
|
187
|
+
|
188
|
+
return Qnil;
|
189
|
+
}
|
190
|
+
|
191
|
+
static VALUE
|
192
|
+
term_feed_child_binary(VALUE self, VALUE data)
|
193
|
+
{
|
194
|
+
glong length;
|
195
|
+
|
196
|
+
length = RSTRING_LEN(data);
|
197
|
+
|
198
|
+
if (length > 0) {
|
199
|
+
vte_terminal_feed_child_binary(RVAL2TERM(self),
|
200
|
+
RSTRING_PTR(data), length);
|
201
|
+
}
|
202
|
+
|
203
|
+
return Qnil;
|
204
|
+
}
|
205
|
+
|
206
|
+
static VALUE
|
207
|
+
term_copy_clipboard(VALUE self)
|
208
|
+
{
|
209
|
+
vte_terminal_copy_clipboard(RVAL2TERM(self));
|
210
|
+
return Qnil;
|
211
|
+
}
|
212
|
+
|
213
|
+
static VALUE
|
214
|
+
term_paste_clipboard(VALUE self)
|
215
|
+
{
|
216
|
+
vte_terminal_paste_clipboard(RVAL2TERM(self));
|
217
|
+
return Qnil;
|
218
|
+
}
|
219
|
+
|
220
|
+
static VALUE
|
221
|
+
term_copy_primary(VALUE self)
|
222
|
+
{
|
223
|
+
vte_terminal_copy_primary(RVAL2TERM(self));
|
224
|
+
return Qnil;
|
225
|
+
}
|
226
|
+
|
227
|
+
static VALUE
|
228
|
+
term_paste_primary(VALUE self)
|
229
|
+
{
|
230
|
+
vte_terminal_paste_primary(RVAL2TERM(self));
|
231
|
+
return Qnil;
|
232
|
+
}
|
233
|
+
|
234
|
+
static VALUE
|
235
|
+
term_set_size(VALUE self, VALUE columns, VALUE rows)
|
236
|
+
{
|
237
|
+
vte_terminal_set_size(RVAL2TERM(self), NUM2LONG(columns), NUM2LONG(rows));
|
238
|
+
return Qnil;
|
239
|
+
}
|
240
|
+
|
241
|
+
static VALUE
|
242
|
+
term_set_audible_bell(VALUE self, VALUE is_audible)
|
243
|
+
{
|
244
|
+
vte_terminal_set_audible_bell(RVAL2TERM(self), RVAL2CBOOL(is_audible));
|
245
|
+
return Qnil;
|
246
|
+
}
|
247
|
+
|
248
|
+
static VALUE
|
249
|
+
term_get_audible_bell(VALUE self)
|
250
|
+
{
|
251
|
+
return CBOOL2RVAL(vte_terminal_get_audible_bell(RVAL2TERM(self)));
|
252
|
+
}
|
253
|
+
|
254
|
+
static VALUE
|
255
|
+
term_set_visible_bell(VALUE self, VALUE is_visible)
|
256
|
+
{
|
257
|
+
vte_terminal_set_visible_bell(RVAL2TERM(self), RVAL2CBOOL(is_visible));
|
258
|
+
return Qnil;
|
259
|
+
}
|
260
|
+
|
261
|
+
static VALUE
|
262
|
+
term_get_visible_bell(VALUE self)
|
263
|
+
{
|
264
|
+
return CBOOL2RVAL(vte_terminal_get_visible_bell(RVAL2TERM(self)));
|
265
|
+
}
|
266
|
+
|
267
|
+
static VALUE
|
268
|
+
term_set_scroll_background(VALUE self, VALUE scroll)
|
269
|
+
{
|
270
|
+
vte_terminal_set_scroll_background(RVAL2TERM(self), RVAL2CBOOL(scroll));
|
271
|
+
return Qnil;
|
272
|
+
}
|
273
|
+
|
274
|
+
static VALUE
|
275
|
+
term_set_scroll_on_output(VALUE self, VALUE scroll)
|
276
|
+
{
|
277
|
+
vte_terminal_set_scroll_on_output(RVAL2TERM(self), RVAL2CBOOL(scroll));
|
278
|
+
return Qnil;
|
279
|
+
}
|
280
|
+
|
281
|
+
static VALUE
|
282
|
+
term_set_scroll_on_keystroke(VALUE self, VALUE scroll)
|
283
|
+
{
|
284
|
+
vte_terminal_set_scroll_on_keystroke(RVAL2TERM(self), RVAL2CBOOL(scroll));
|
285
|
+
return Qnil;
|
286
|
+
}
|
287
|
+
|
288
|
+
static VALUE
|
289
|
+
term_set_color_dim(VALUE self, VALUE dim)
|
290
|
+
{
|
291
|
+
vte_terminal_set_color_dim(RVAL2TERM(self), RVAL2COLOR(dim));
|
292
|
+
return Qnil;
|
293
|
+
}
|
294
|
+
|
295
|
+
static VALUE
|
296
|
+
term_set_color_bold(VALUE self, VALUE bold)
|
297
|
+
{
|
298
|
+
vte_terminal_set_color_bold(RVAL2TERM(self), RVAL2COLOR(bold));
|
299
|
+
return Qnil;
|
300
|
+
}
|
301
|
+
|
302
|
+
static VALUE
|
303
|
+
term_set_color_foreground(VALUE self, VALUE foreground)
|
304
|
+
{
|
305
|
+
vte_terminal_set_color_foreground(RVAL2TERM(self), RVAL2COLOR(foreground));
|
306
|
+
return Qnil;
|
307
|
+
}
|
308
|
+
|
309
|
+
static VALUE
|
310
|
+
term_set_color_background(VALUE self, VALUE background)
|
311
|
+
{
|
312
|
+
vte_terminal_set_color_background(RVAL2TERM(self), RVAL2COLOR(background));
|
313
|
+
return Qnil;
|
314
|
+
}
|
315
|
+
|
316
|
+
static VALUE
|
317
|
+
term_set_color_cursor(VALUE self, VALUE cursor)
|
318
|
+
{
|
319
|
+
vte_terminal_set_color_cursor(RVAL2TERM(self),
|
320
|
+
NIL_P(cursor) ? NULL : RVAL2COLOR(cursor));
|
321
|
+
return Qnil;
|
322
|
+
}
|
323
|
+
|
324
|
+
static VALUE
|
325
|
+
term_set_color_highlight(VALUE self, VALUE highlight)
|
326
|
+
{
|
327
|
+
vte_terminal_set_color_highlight(RVAL2TERM(self),
|
328
|
+
NIL_P(highlight) ?
|
329
|
+
NULL : RVAL2COLOR(highlight));
|
330
|
+
return Qnil;
|
331
|
+
}
|
332
|
+
|
333
|
+
static VALUE
|
334
|
+
term_set_colors(VALUE self, VALUE foreground, VALUE background,
|
335
|
+
VALUE rb_palette)
|
336
|
+
{
|
337
|
+
glong i, len;
|
338
|
+
GdkColor *palette;
|
339
|
+
|
340
|
+
len = RARRAY_LEN(rb_palette);
|
341
|
+
|
342
|
+
if (!(len == 0 || len == 8 || len == 16 || len == 24)) {
|
343
|
+
char *inspect;
|
344
|
+
inspect = RVAL2CSTR(rb_palette);
|
345
|
+
rb_raise(rb_eArgError, "palette size must be 0, 8, 16 or 24: %s",
|
346
|
+
inspect);
|
347
|
+
}
|
348
|
+
|
349
|
+
palette = ALLOCA_N(GdkColor, len);
|
350
|
+
for (i = 0; i < len; i++) {
|
351
|
+
GdkColor *color;
|
352
|
+
color = RVAL2COLOR(RARRAY_PTR(rb_palette)[i]);
|
353
|
+
palette[i] = *color;
|
354
|
+
}
|
355
|
+
|
356
|
+
vte_terminal_set_colors(RVAL2TERM(self), RVAL2COLOR(foreground),
|
357
|
+
RVAL2COLOR(background), palette, len);
|
358
|
+
return Qnil;
|
359
|
+
}
|
360
|
+
|
361
|
+
static VALUE
|
362
|
+
term_set_default_colors(VALUE self)
|
363
|
+
{
|
364
|
+
vte_terminal_set_default_colors(RVAL2TERM(self));
|
365
|
+
return Qnil;
|
366
|
+
}
|
367
|
+
|
368
|
+
static VALUE
|
369
|
+
term_set_background_image(VALUE self, VALUE image_or_path)
|
370
|
+
{
|
371
|
+
if (RVAL2CBOOL(rb_obj_is_kind_of(image_or_path, rb_cString))) {
|
372
|
+
vte_terminal_set_background_image_file(RVAL2TERM(self),
|
373
|
+
RVAL2CSTR(image_or_path));
|
374
|
+
} else {
|
375
|
+
vte_terminal_set_background_image(RVAL2TERM(self),
|
376
|
+
RVAL2GOBJ(image_or_path));
|
377
|
+
}
|
378
|
+
|
379
|
+
return Qnil;
|
380
|
+
}
|
381
|
+
|
382
|
+
static VALUE
|
383
|
+
term_set_background_tint_color(VALUE self, VALUE color)
|
384
|
+
{
|
385
|
+
vte_terminal_set_background_tint_color(RVAL2TERM(self), RVAL2COLOR(color));
|
386
|
+
return Qnil;
|
387
|
+
}
|
388
|
+
|
389
|
+
static VALUE
|
390
|
+
term_set_background_saturation(VALUE self, VALUE saturation)
|
391
|
+
{
|
392
|
+
vte_terminal_set_background_saturation(RVAL2TERM(self),
|
393
|
+
NUM2DBL(saturation));
|
394
|
+
return Qnil;
|
395
|
+
}
|
396
|
+
|
397
|
+
static VALUE
|
398
|
+
term_set_background_transparent(VALUE self, VALUE transparent)
|
399
|
+
{
|
400
|
+
vte_terminal_set_background_transparent(RVAL2TERM(self),
|
401
|
+
RVAL2CBOOL(transparent));
|
402
|
+
return Qnil;
|
403
|
+
}
|
404
|
+
|
405
|
+
static VALUE
|
406
|
+
term_set_cursor_blinks(VALUE self, VALUE blink)
|
407
|
+
{
|
408
|
+
#if VTE_CHECK_VERSION(0, 18, 0)
|
409
|
+
VteTerminalCursorBlinkMode mode;
|
410
|
+
|
411
|
+
mode = RVAL2CBOOL(blink) ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF;
|
412
|
+
vte_terminal_set_cursor_blink_mode(RVAL2TERM(self), mode);
|
413
|
+
#else
|
414
|
+
vte_terminal_set_cursor_blinks(RVAL2TERM(self), RVAL2CBOOL(blink));
|
415
|
+
#endif
|
416
|
+
return Qnil;
|
417
|
+
}
|
418
|
+
|
419
|
+
#if VTE_CHECK_VERSION(0, 18, 0)
|
420
|
+
static VALUE
|
421
|
+
term_set_cursor_blink_mode(VALUE self, VALUE rb_mode)
|
422
|
+
{
|
423
|
+
VteTerminalCursorBlinkMode mode;
|
424
|
+
|
425
|
+
mode = RVAL2GENUM(rb_mode, VTE_TYPE_TERMINAL_CURSOR_BLINK_MODE);
|
426
|
+
vte_terminal_set_cursor_blink_mode(RVAL2TERM(self), mode);
|
427
|
+
return Qnil;
|
428
|
+
}
|
429
|
+
|
430
|
+
static VALUE
|
431
|
+
term_get_cursor_blink_mode(VALUE self)
|
432
|
+
{
|
433
|
+
VteTerminalCursorBlinkMode mode;
|
434
|
+
|
435
|
+
mode = vte_terminal_get_cursor_blink_mode(RVAL2TERM(self));
|
436
|
+
return GENUM2RVAL(mode, VTE_TYPE_TERMINAL_CURSOR_BLINK_MODE);
|
437
|
+
}
|
438
|
+
#endif
|
439
|
+
|
440
|
+
#if VTE_CHECK_VERSION(0, 19, 1)
|
441
|
+
static VALUE
|
442
|
+
term_set_cursor_shape(VALUE self, VALUE rb_shape)
|
443
|
+
{
|
444
|
+
VteTerminalCursorShape shape;
|
445
|
+
|
446
|
+
shape = RVAL2GENUM(rb_shape, VTE_TYPE_TERMINAL_CURSOR_SHAPE);
|
447
|
+
vte_terminal_set_cursor_shape(RVAL2TERM(self), shape);
|
448
|
+
return Qnil;
|
449
|
+
}
|
450
|
+
|
451
|
+
static VALUE
|
452
|
+
term_get_cursor_shape(VALUE self)
|
453
|
+
{
|
454
|
+
VteTerminalCursorShape shape;
|
455
|
+
|
456
|
+
shape = vte_terminal_get_cursor_shape(RVAL2TERM(self));
|
457
|
+
return GENUM2RVAL(shape, VTE_TYPE_TERMINAL_CURSOR_SHAPE);
|
458
|
+
}
|
459
|
+
|
460
|
+
static VALUE
|
461
|
+
term_get_pty(VALUE self)
|
462
|
+
{
|
463
|
+
return INT2NUM(vte_terminal_get_pty(RVAL2TERM(self)));
|
464
|
+
}
|
465
|
+
|
466
|
+
static VALUE
|
467
|
+
term_get_child_exit_status(VALUE self)
|
468
|
+
{
|
469
|
+
return INT2NUM(vte_terminal_get_child_exit_status(RVAL2TERM(self)));
|
470
|
+
}
|
471
|
+
#endif
|
472
|
+
|
473
|
+
static VALUE
|
474
|
+
term_set_scrollback_lines(VALUE self, VALUE lines)
|
475
|
+
{
|
476
|
+
vte_terminal_set_scrollback_lines(RVAL2TERM(self), NUM2LONG(lines));
|
477
|
+
return Qnil;
|
478
|
+
}
|
479
|
+
|
480
|
+
static VALUE
|
481
|
+
term_im_append_menuitems(VALUE self, VALUE menushell)
|
482
|
+
{
|
483
|
+
vte_terminal_im_append_menuitems(RVAL2TERM(self), RVAL2GOBJ(menushell));
|
484
|
+
return Qnil;
|
485
|
+
}
|
486
|
+
|
487
|
+
static VALUE
|
488
|
+
term_set_font(int argc, VALUE *argv, VALUE self)
|
489
|
+
{
|
490
|
+
VALUE font_desc_or_name, rb_antialias;
|
491
|
+
VteTerminalAntiAlias antialias = VTE_ANTI_ALIAS_USE_DEFAULT;
|
492
|
+
VteTerminal *term;
|
493
|
+
|
494
|
+
rb_scan_args(argc, argv, "11", &font_desc_or_name, &rb_antialias);
|
495
|
+
|
496
|
+
term = RVAL2TERM(self);
|
497
|
+
if (!NIL_P(rb_antialias))
|
498
|
+
antialias = RVAL2AA(rb_antialias);
|
499
|
+
|
500
|
+
if (rb_obj_is_kind_of(font_desc_or_name, rb_cString)) {
|
501
|
+
char *name;
|
502
|
+
name = RVAL2CSTR(font_desc_or_name);
|
503
|
+
if (NIL_P(rb_antialias))
|
504
|
+
vte_terminal_set_font_from_string(term, name);
|
505
|
+
else
|
506
|
+
vte_terminal_set_font_from_string_full(term, name, antialias);
|
507
|
+
} else {
|
508
|
+
PangoFontDescription *font_desc;
|
509
|
+
font_desc = RVAL2PFD(font_desc_or_name);
|
510
|
+
if (NIL_P(rb_antialias))
|
511
|
+
vte_terminal_set_font(term, font_desc);
|
512
|
+
else
|
513
|
+
vte_terminal_set_font_full(term, font_desc, antialias);
|
514
|
+
}
|
515
|
+
|
516
|
+
return Qnil;
|
517
|
+
}
|
518
|
+
|
519
|
+
static VALUE
|
520
|
+
term_get_font(VALUE self)
|
521
|
+
{
|
522
|
+
PangoFontDescription *font_desc;
|
523
|
+
font_desc = (PangoFontDescription *)vte_terminal_get_font(RVAL2TERM(self));
|
524
|
+
return PFD2RVAL(font_desc);
|
525
|
+
}
|
526
|
+
|
527
|
+
static VALUE
|
528
|
+
term_get_using_xft(VALUE self)
|
529
|
+
{
|
530
|
+
return CBOOL2RVAL(vte_terminal_get_using_xft(RVAL2TERM(self)));
|
531
|
+
}
|
532
|
+
|
533
|
+
static VALUE
|
534
|
+
term_set_allow_bold(VALUE self, VALUE allow_bold)
|
535
|
+
{
|
536
|
+
vte_terminal_set_allow_bold(RVAL2TERM(self), RVAL2CBOOL(allow_bold));
|
537
|
+
return Qnil;
|
538
|
+
}
|
539
|
+
|
540
|
+
static VALUE
|
541
|
+
term_get_allow_bold(VALUE self)
|
542
|
+
{
|
543
|
+
return CBOOL2RVAL(vte_terminal_get_allow_bold(RVAL2TERM(self)));
|
544
|
+
}
|
545
|
+
|
546
|
+
static VALUE
|
547
|
+
term_get_has_selection(VALUE self)
|
548
|
+
{
|
549
|
+
return CBOOL2RVAL(vte_terminal_get_has_selection(RVAL2TERM(self)));
|
550
|
+
}
|
551
|
+
|
552
|
+
static VALUE
|
553
|
+
term_set_word_chars(VALUE self, VALUE word_chars)
|
554
|
+
{
|
555
|
+
vte_terminal_set_word_chars(RVAL2TERM(self),
|
556
|
+
NIL_P(word_chars) ?
|
557
|
+
NULL : RVAL2CSTR(word_chars));
|
558
|
+
return Qnil;
|
559
|
+
}
|
560
|
+
|
561
|
+
static VALUE
|
562
|
+
term_is_word_char(VALUE self, VALUE c)
|
563
|
+
{
|
564
|
+
return CBOOL2RVAL(vte_terminal_is_word_char(RVAL2TERM(self), NUM2UINT(c)));
|
565
|
+
}
|
566
|
+
|
567
|
+
static VALUE
|
568
|
+
term_set_backspace_binding(VALUE self, VALUE binding)
|
569
|
+
{
|
570
|
+
vte_terminal_set_backspace_binding(RVAL2TERM(self), RVAL2EB(binding));
|
571
|
+
return Qnil;
|
572
|
+
}
|
573
|
+
|
574
|
+
static VALUE
|
575
|
+
term_set_delete_binding(VALUE self, VALUE binding)
|
576
|
+
{
|
577
|
+
vte_terminal_set_delete_binding(RVAL2TERM(self), RVAL2EB(binding));
|
578
|
+
return Qnil;
|
579
|
+
}
|
580
|
+
|
581
|
+
static VALUE
|
582
|
+
term_get_mouse_autohide(VALUE self)
|
583
|
+
{
|
584
|
+
return CBOOL2RVAL(vte_terminal_get_mouse_autohide(RVAL2TERM(self)));
|
585
|
+
}
|
586
|
+
|
587
|
+
static VALUE
|
588
|
+
term_set_mouse_autohide(VALUE self, VALUE setting)
|
589
|
+
{
|
590
|
+
vte_terminal_set_mouse_autohide(RVAL2TERM(self), RVAL2CBOOL(setting));
|
591
|
+
return Qnil;
|
592
|
+
}
|
593
|
+
|
594
|
+
static VALUE
|
595
|
+
term_reset(VALUE self, VALUE full, VALUE clear_history)
|
596
|
+
{
|
597
|
+
vte_terminal_reset(RVAL2TERM(self), RVAL2CBOOL(full),
|
598
|
+
RVAL2CBOOL(clear_history));
|
599
|
+
return Qnil;
|
600
|
+
}
|
601
|
+
|
602
|
+
static gboolean
|
603
|
+
term_is_selected_cb(VteTerminal *terminal, glong column, glong row,
|
604
|
+
gpointer data)
|
605
|
+
{
|
606
|
+
gboolean result = TRUE;
|
607
|
+
VALUE callback = (VALUE)data;
|
608
|
+
|
609
|
+
if (!NIL_P(callback)) {
|
610
|
+
VALUE rb_result;
|
611
|
+
rb_result = rb_funcall(callback, id_call, 3, GOBJ2RVAL(terminal),
|
612
|
+
LONG2NUM(column), LONG2NUM(row));
|
613
|
+
result = RVAL2CBOOL(rb_result);
|
614
|
+
}
|
615
|
+
|
616
|
+
return result;
|
617
|
+
}
|
618
|
+
|
619
|
+
static VALUE
|
620
|
+
term_get_text(int argc, VALUE *argv, VALUE self)
|
621
|
+
{
|
622
|
+
VALUE get_attrs, include_trailing_spaces, proc, rb_text;
|
623
|
+
GArray *attrs = NULL;
|
624
|
+
char *text;
|
625
|
+
|
626
|
+
rb_scan_args(argc, argv, "02&", &get_attrs,
|
627
|
+
&include_trailing_spaces, &proc);
|
628
|
+
|
629
|
+
if (get_attrs != Qfalse)
|
630
|
+
attrs = g_array_new(FALSE, TRUE, sizeof(VteCharAttributes));
|
631
|
+
|
632
|
+
if (RVAL2CBOOL(include_trailing_spaces)) {
|
633
|
+
text = vte_terminal_get_text_include_trailing_spaces(
|
634
|
+
RVAL2TERM(self), term_is_selected_cb, (gpointer)proc, attrs);
|
635
|
+
} else {
|
636
|
+
text = vte_terminal_get_text(RVAL2TERM(self), term_is_selected_cb,
|
637
|
+
(gpointer)proc, attrs);
|
638
|
+
}
|
639
|
+
rb_text = CSTR2RVAL(text);
|
640
|
+
free(text);
|
641
|
+
|
642
|
+
if (attrs) {
|
643
|
+
VALUE rb_attrs;
|
644
|
+
rb_attrs = attrary2rval(attrs);
|
645
|
+
g_array_free(attrs, TRUE);
|
646
|
+
return rb_ary_new3(2, rb_text, rb_attrs);
|
647
|
+
} else {
|
648
|
+
return rb_text;
|
649
|
+
}
|
650
|
+
}
|
651
|
+
|
652
|
+
static VALUE
|
653
|
+
term_get_text_range(int argc, VALUE *argv, VALUE self)
|
654
|
+
{
|
655
|
+
VALUE start_row, start_col, end_row, end_col, get_attrs, proc, rb_text;
|
656
|
+
GArray *attrs = NULL;
|
657
|
+
char *text;
|
658
|
+
|
659
|
+
rb_scan_args(argc, argv, "41&", &start_row, &start_col,
|
660
|
+
&end_row, &end_col, &get_attrs, &proc);
|
661
|
+
|
662
|
+
if (get_attrs != Qfalse)
|
663
|
+
attrs = g_array_new(FALSE, TRUE, sizeof(VteCharAttributes));
|
664
|
+
|
665
|
+
text = vte_terminal_get_text_range(RVAL2TERM(self),
|
666
|
+
NUM2LONG(start_row),
|
667
|
+
NUM2LONG(start_col),
|
668
|
+
NUM2LONG(end_row),
|
669
|
+
NUM2LONG(end_col),
|
670
|
+
term_is_selected_cb,
|
671
|
+
(gpointer)proc,
|
672
|
+
attrs);
|
673
|
+
rb_text = CSTR2RVAL(text);
|
674
|
+
free(text);
|
675
|
+
|
676
|
+
if (attrs) {
|
677
|
+
VALUE rb_attrs;
|
678
|
+
rb_attrs = attrary2rval(attrs);
|
679
|
+
g_array_free(attrs, TRUE);
|
680
|
+
return rb_ary_new3(2, rb_text, rb_attrs);
|
681
|
+
} else {
|
682
|
+
return rb_text;
|
683
|
+
}
|
684
|
+
}
|
685
|
+
|
686
|
+
static VALUE
|
687
|
+
term_get_cursor_position(VALUE self)
|
688
|
+
{
|
689
|
+
glong column, row;
|
690
|
+
vte_terminal_get_cursor_position(RVAL2TERM(self), &column, &row);
|
691
|
+
return rb_ary_new3(2, LONG2NUM(column), LONG2NUM(row));
|
692
|
+
}
|
693
|
+
|
694
|
+
static VALUE
|
695
|
+
term_match_clear_all(VALUE self)
|
696
|
+
{
|
697
|
+
vte_terminal_match_clear_all(RVAL2TERM(self));
|
698
|
+
return Qnil;
|
699
|
+
}
|
700
|
+
|
701
|
+
static VALUE
|
702
|
+
term_match_add(VALUE self, VALUE match)
|
703
|
+
{
|
704
|
+
return INT2NUM(vte_terminal_match_add(RVAL2TERM(self), RVAL2CSTR(match)));
|
705
|
+
}
|
706
|
+
|
707
|
+
static VALUE
|
708
|
+
term_match_set_cursor(VALUE self, VALUE tag, VALUE cursor)
|
709
|
+
{
|
710
|
+
vte_terminal_match_set_cursor(RVAL2TERM(self), NUM2INT(tag),
|
711
|
+
RVAL2GOBJ(cursor));
|
712
|
+
return Qnil;
|
713
|
+
}
|
714
|
+
|
715
|
+
static VALUE
|
716
|
+
term_match_set_cursor_type(VALUE self, VALUE tag, VALUE cursor_type)
|
717
|
+
{
|
718
|
+
vte_terminal_match_set_cursor_type(RVAL2TERM(self), NUM2INT(tag),
|
719
|
+
RVAL2CT(cursor_type));
|
720
|
+
return Qnil;
|
721
|
+
}
|
722
|
+
|
723
|
+
static VALUE
|
724
|
+
term_match_remove(VALUE self, VALUE tag)
|
725
|
+
{
|
726
|
+
vte_terminal_match_remove(RVAL2TERM(self), NUM2INT(tag));
|
727
|
+
return Qnil;
|
728
|
+
}
|
729
|
+
|
730
|
+
static VALUE
|
731
|
+
term_match_check(VALUE self, VALUE column, VALUE row)
|
732
|
+
{
|
733
|
+
char *string;
|
734
|
+
int tag;
|
735
|
+
|
736
|
+
string = vte_terminal_match_check(RVAL2TERM(self), NUM2LONG(column),
|
737
|
+
NUM2LONG(row), &tag);
|
738
|
+
if (string) {
|
739
|
+
VALUE rb_string;
|
740
|
+
rb_string = CSTR2RVAL(string);
|
741
|
+
free(string);
|
742
|
+
return rb_ary_new3(2, rb_string, INT2NUM(tag));
|
743
|
+
} else {
|
744
|
+
return Qnil;
|
745
|
+
}
|
746
|
+
}
|
747
|
+
|
748
|
+
static VALUE
|
749
|
+
term_set_emulation(VALUE self, VALUE emulation)
|
750
|
+
{
|
751
|
+
vte_terminal_set_emulation(RVAL2TERM(self), RVAL2CSTR(emulation));
|
752
|
+
return Qnil;
|
753
|
+
}
|
754
|
+
|
755
|
+
static VALUE
|
756
|
+
term_get_emulation(VALUE self)
|
757
|
+
{
|
758
|
+
return CSTR2RVAL(vte_terminal_get_emulation(RVAL2TERM(self)));
|
759
|
+
}
|
760
|
+
|
761
|
+
static VALUE
|
762
|
+
term_get_default_emulation(VALUE self)
|
763
|
+
{
|
764
|
+
return CSTR2RVAL(vte_terminal_get_default_emulation(RVAL2TERM(self)));
|
765
|
+
}
|
766
|
+
|
767
|
+
static VALUE
|
768
|
+
term_set_encoding(VALUE self, VALUE encoding)
|
769
|
+
{
|
770
|
+
vte_terminal_set_encoding(RVAL2TERM(self), RVAL2CSTR(encoding));
|
771
|
+
return Qnil;
|
772
|
+
}
|
773
|
+
|
774
|
+
static VALUE
|
775
|
+
term_get_encoding(VALUE self)
|
776
|
+
{
|
777
|
+
return CSTR2RVAL(vte_terminal_get_encoding(RVAL2TERM(self)));
|
778
|
+
}
|
779
|
+
|
780
|
+
static VALUE
|
781
|
+
term_get_status_line(VALUE self)
|
782
|
+
{
|
783
|
+
return CSTR2RVAL(vte_terminal_get_status_line(RVAL2TERM(self)));
|
784
|
+
}
|
785
|
+
|
786
|
+
static VALUE
|
787
|
+
term_get_padding(VALUE self)
|
788
|
+
{
|
789
|
+
int xpad, ypad;
|
790
|
+
vte_terminal_get_padding(RVAL2TERM(self), &xpad, &ypad);
|
791
|
+
return rb_ary_new3(2, INT2NUM(xpad), INT2NUM(ypad));
|
792
|
+
}
|
793
|
+
|
794
|
+
static VALUE
|
795
|
+
term_set_pty(VALUE self, VALUE pty_master)
|
796
|
+
{
|
797
|
+
vte_terminal_set_pty(RVAL2TERM(self), NUM2INT(pty_master));
|
798
|
+
return Qnil;
|
799
|
+
}
|
800
|
+
|
801
|
+
static VALUE
|
802
|
+
term_get_adjustment(VALUE self)
|
803
|
+
{
|
804
|
+
return GOBJ2RVAL(vte_terminal_get_adjustment(RVAL2TERM(self)));
|
805
|
+
}
|
806
|
+
|
807
|
+
static VALUE
|
808
|
+
term_get_char_width(VALUE self)
|
809
|
+
{
|
810
|
+
return LONG2NUM(vte_terminal_get_char_width(RVAL2TERM(self)));
|
811
|
+
}
|
812
|
+
|
813
|
+
static VALUE
|
814
|
+
term_get_char_height(VALUE self)
|
815
|
+
{
|
816
|
+
return LONG2NUM(vte_terminal_get_char_height(RVAL2TERM(self)));
|
817
|
+
}
|
818
|
+
|
819
|
+
static VALUE
|
820
|
+
term_get_char_descent(VALUE self)
|
821
|
+
{
|
822
|
+
return LONG2NUM(vte_terminal_get_char_descent(RVAL2TERM(self)));
|
823
|
+
}
|
824
|
+
|
825
|
+
static VALUE
|
826
|
+
term_get_char_ascent(VALUE self)
|
827
|
+
{
|
828
|
+
return LONG2NUM(vte_terminal_get_char_ascent(RVAL2TERM(self)));
|
829
|
+
}
|
830
|
+
|
831
|
+
static VALUE
|
832
|
+
term_get_row_count(VALUE self)
|
833
|
+
{
|
834
|
+
return LONG2NUM(vte_terminal_get_row_count(RVAL2TERM(self)));
|
835
|
+
}
|
836
|
+
|
837
|
+
static VALUE
|
838
|
+
term_get_column_count(VALUE self)
|
839
|
+
{
|
840
|
+
return LONG2NUM(vte_terminal_get_column_count(RVAL2TERM(self)));
|
841
|
+
}
|
842
|
+
|
843
|
+
static VALUE
|
844
|
+
term_get_window_title(VALUE self)
|
845
|
+
{
|
846
|
+
return CSTR2RVAL(vte_terminal_get_window_title(RVAL2TERM(self)));
|
847
|
+
}
|
848
|
+
|
849
|
+
static VALUE
|
850
|
+
term_get_icon_title(VALUE self)
|
851
|
+
{
|
852
|
+
return CSTR2RVAL(vte_terminal_get_icon_title(RVAL2TERM(self)));
|
853
|
+
}
|
854
|
+
|
855
|
+
|
856
|
+
void
|
857
|
+
Init_vte_terminal(VALUE mVte)
|
858
|
+
{
|
859
|
+
VALUE cTerminal, cTerminalEraseBinding, cTerminalAntiAlias;
|
860
|
+
#if VTE_CHECK_VERSION(0, 18, 0)
|
861
|
+
VALUE cTerminalCursorBlinkMode;
|
862
|
+
#endif
|
863
|
+
#if VTE_CHECK_VERSION(0, 19, 1)
|
864
|
+
VALUE cTerminalCursorShape;
|
865
|
+
#endif
|
866
|
+
|
867
|
+
id_new = rb_intern("new");
|
868
|
+
id_call = rb_intern("call");
|
869
|
+
|
870
|
+
id_row = rb_intern("@row");
|
871
|
+
id_column = rb_intern("@column");
|
872
|
+
id_fore = rb_intern("@fore");
|
873
|
+
id_back = rb_intern("@back");
|
874
|
+
id_underline = rb_intern("@underline");
|
875
|
+
id_strikethrough = rb_intern("@strikethrough");
|
876
|
+
|
877
|
+
cTerminal = G_DEF_CLASS(VTE_TYPE_TERMINAL, "Terminal", mVte);
|
878
|
+
cTerminalEraseBinding = G_DEF_CLASS(VTE_TYPE_TERMINAL_ERASE_BINDING,
|
879
|
+
"TerminalEraseBinding", mVte);
|
880
|
+
#if VTE_CHECK_VERSION(0, 18, 0)
|
881
|
+
cTerminalCursorBlinkMode = G_DEF_CLASS(VTE_TYPE_TERMINAL_CURSOR_BLINK_MODE,
|
882
|
+
"TerminalCursorBlinkMode", mVte);
|
883
|
+
#endif
|
884
|
+
#if VTE_CHECK_VERSION(0, 19, 1)
|
885
|
+
cTerminalCursorShape = G_DEF_CLASS(VTE_TYPE_TERMINAL_CURSOR_SHAPE,
|
886
|
+
"TerminalCursorShape", mVte);
|
887
|
+
#endif
|
888
|
+
cTerminalAntiAlias = G_DEF_CLASS(VTE_TYPE_TERMINAL_ANTI_ALIAS,
|
889
|
+
"TerminalAntiAlias", mVte);
|
890
|
+
|
891
|
+
cCharAttributes = rb_define_class_under(mVte, "CharAttributes", rb_cObject);
|
892
|
+
|
893
|
+
rb_define_method(cCharAttributes, "initialize", ca_initialize, 6);
|
894
|
+
rb_attr(cCharAttributes, rb_intern("row"), TRUE, FALSE, TRUE);
|
895
|
+
rb_attr(cCharAttributes, rb_intern("column"), TRUE, FALSE, TRUE);
|
896
|
+
rb_attr(cCharAttributes, rb_intern("fore"), TRUE, FALSE, TRUE);
|
897
|
+
rb_attr(cCharAttributes, rb_intern("back"), TRUE, FALSE, TRUE);
|
898
|
+
rb_define_alias(cCharAttributes, "foreground", "fore");
|
899
|
+
rb_define_alias(cCharAttributes, "background", "back");
|
900
|
+
rb_define_method(cCharAttributes, "underline?", ca_get_underline, 0);
|
901
|
+
rb_define_method(cCharAttributes, "strikethrough?",
|
902
|
+
ca_get_strikethrough, 0);
|
903
|
+
|
904
|
+
|
905
|
+
rb_define_method(cTerminal, "initialize", term_initialize, 0);
|
906
|
+
|
907
|
+
rb_define_method(cTerminal, "fork_command", term_fork_command, -1);
|
908
|
+
rb_define_method(cTerminal, "fork_pty", term_fork_pty, -1);
|
909
|
+
|
910
|
+
rb_define_method(cTerminal, "feed", term_feed, 1);
|
911
|
+
rb_define_method(cTerminal, "feed_child", term_feed_child, 1);
|
912
|
+
rb_define_method(cTerminal, "feed_child_binary", term_feed_child_binary, 1);
|
913
|
+
|
914
|
+
rb_define_method(cTerminal, "copy_clipboard", term_copy_clipboard, 0);
|
915
|
+
rb_define_method(cTerminal, "paste_clipboard", term_paste_clipboard, 0);
|
916
|
+
rb_define_method(cTerminal, "copy_primary", term_copy_primary, 0);
|
917
|
+
rb_define_method(cTerminal, "paste_primary", term_paste_primary, 0);
|
918
|
+
|
919
|
+
rb_define_method(cTerminal, "set_size", term_set_size, 2);
|
920
|
+
|
921
|
+
rb_define_method(cTerminal, "set_audible_bell", term_set_audible_bell, 1);
|
922
|
+
rb_define_method(cTerminal, "audible_bell?", term_get_audible_bell, 0);
|
923
|
+
rb_define_method(cTerminal, "set_visible_bell", term_set_visible_bell, 1);
|
924
|
+
rb_define_method(cTerminal, "visible_bell?", term_get_visible_bell, 0);
|
925
|
+
|
926
|
+
rb_define_method(cTerminal, "set_scroll_background",
|
927
|
+
term_set_scroll_background, 1);
|
928
|
+
rb_define_method(cTerminal, "set_scroll_on_output",
|
929
|
+
term_set_scroll_on_output, 1);
|
930
|
+
rb_define_method(cTerminal, "set_scroll_on_keystroke",
|
931
|
+
term_set_scroll_on_keystroke, 1);
|
932
|
+
|
933
|
+
rb_define_method(cTerminal, "set_color_dim", term_set_color_dim, 1);
|
934
|
+
rb_define_method(cTerminal, "set_color_bold", term_set_color_bold, 1);
|
935
|
+
rb_define_method(cTerminal, "set_color_foreground",
|
936
|
+
term_set_color_foreground, 1);
|
937
|
+
rb_define_method(cTerminal, "set_color_background",
|
938
|
+
term_set_color_background, 1);
|
939
|
+
rb_define_method(cTerminal, "set_color_cursor", term_set_color_cursor, 1);
|
940
|
+
rb_define_method(cTerminal, "set_color_highlight",
|
941
|
+
term_set_color_highlight, 1);
|
942
|
+
rb_define_method(cTerminal, "set_colors", term_set_colors, 3);
|
943
|
+
rb_define_method(cTerminal, "set_default_colors",
|
944
|
+
term_set_default_colors, 0);
|
945
|
+
rb_define_method(cTerminal, "set_background_image",
|
946
|
+
term_set_background_image, 1);
|
947
|
+
rb_define_method(cTerminal, "set_background_tint_color",
|
948
|
+
term_set_background_tint_color, 1);
|
949
|
+
rb_define_method(cTerminal, "set_background_saturation",
|
950
|
+
term_set_background_saturation, 1);
|
951
|
+
rb_define_method(cTerminal, "set_background_transparent",
|
952
|
+
term_set_background_transparent, 1);
|
953
|
+
rb_define_method(cTerminal, "set_cursor_blinks", term_set_cursor_blinks, 1);
|
954
|
+
#if VTE_CHECK_VERSION(0, 18, 0)
|
955
|
+
rb_define_method(cTerminal, "set_cursor_blink_mode",
|
956
|
+
term_set_cursor_blink_mode, 1);
|
957
|
+
rb_define_method(cTerminal, "cursor_blink_mode",
|
958
|
+
term_get_cursor_blink_mode, 0);
|
959
|
+
#endif
|
960
|
+
#if VTE_CHECK_VERSION(0, 19, 1)
|
961
|
+
rb_define_method(cTerminal, "set_cursor_shape", term_set_cursor_shape, 1);
|
962
|
+
rb_define_method(cTerminal, "cursor_shape", term_get_cursor_shape, 0);
|
963
|
+
rb_define_method(cTerminal, "pty", term_get_pty, 0);
|
964
|
+
rb_define_method(cTerminal, "child_exit_status",
|
965
|
+
term_get_child_exit_status, 0);
|
966
|
+
#endif
|
967
|
+
rb_define_method(cTerminal, "set_scrollback_lines",
|
968
|
+
term_set_scrollback_lines, 1);
|
969
|
+
|
970
|
+
rb_define_method(cTerminal, "im_append_menuitems",
|
971
|
+
term_im_append_menuitems, 1);
|
972
|
+
|
973
|
+
rb_define_method(cTerminal, "set_font", term_set_font, -1);
|
974
|
+
rb_define_method(cTerminal, "font", term_get_font, 0);
|
975
|
+
rb_define_method(cTerminal, "using_xft?", term_get_using_xft, 0);
|
976
|
+
rb_define_method(cTerminal, "set_allow_bold", term_set_allow_bold, 1);
|
977
|
+
rb_define_method(cTerminal, "allow_bold?", term_get_allow_bold, 0);
|
978
|
+
rb_define_method(cTerminal, "has_selection?", term_get_has_selection, 0);
|
979
|
+
rb_define_alias(cTerminal, "have_selection?", "has_selection?");
|
980
|
+
rb_define_method(cTerminal, "set_word_chars", term_set_word_chars, 1);
|
981
|
+
rb_define_method(cTerminal, "word_char?", term_is_word_char, 1);
|
982
|
+
rb_define_method(cTerminal, "set_backspace_binding",
|
983
|
+
term_set_backspace_binding, 1);
|
984
|
+
rb_define_method(cTerminal, "set_delete_binding",
|
985
|
+
term_set_delete_binding, 1);
|
986
|
+
rb_define_method(cTerminal, "mouse_autohide?", term_get_mouse_autohide, 0);
|
987
|
+
rb_define_method(cTerminal, "set_mouse_autohide",
|
988
|
+
term_set_mouse_autohide, 1);
|
989
|
+
|
990
|
+
rb_define_method(cTerminal, "reset", term_reset, 2);
|
991
|
+
|
992
|
+
rb_define_method(cTerminal, "get_text", term_get_text, -1);
|
993
|
+
rb_define_method(cTerminal, "get_text_range", term_get_text_range, -1);
|
994
|
+
|
995
|
+
rb_define_method(cTerminal, "cursor_position", term_get_cursor_position, 0);
|
996
|
+
|
997
|
+
rb_define_method(cTerminal, "match_clear_all", term_match_clear_all, 0);
|
998
|
+
rb_define_method(cTerminal, "match_add", term_match_add, 1);
|
999
|
+
rb_define_method(cTerminal, "match_set_cursor",
|
1000
|
+
term_match_set_cursor, 2);
|
1001
|
+
rb_define_method(cTerminal, "match_set_cursor_type",
|
1002
|
+
term_match_set_cursor_type, 2);
|
1003
|
+
rb_define_method(cTerminal, "match_remove", term_match_remove, 1);
|
1004
|
+
rb_define_method(cTerminal, "match_check", term_match_check, 2);
|
1005
|
+
|
1006
|
+
rb_define_method(cTerminal, "set_emulation", term_set_emulation, 1);
|
1007
|
+
rb_define_method(cTerminal, "emulation", term_get_emulation, 0);
|
1008
|
+
rb_define_method(cTerminal, "default_emulation",
|
1009
|
+
term_get_default_emulation, 0);
|
1010
|
+
|
1011
|
+
rb_define_method(cTerminal, "set_encoding", term_set_encoding, 1);
|
1012
|
+
rb_define_method(cTerminal, "encoding", term_get_encoding, 0);
|
1013
|
+
|
1014
|
+
rb_define_method(cTerminal, "status_line", term_get_status_line, 0);
|
1015
|
+
rb_define_method(cTerminal, "padding", term_get_padding, 0);
|
1016
|
+
|
1017
|
+
rb_define_method(cTerminal, "set_pty", term_set_pty, 1);
|
1018
|
+
|
1019
|
+
rb_define_method(cTerminal, "adjustment", term_get_adjustment, 0);
|
1020
|
+
rb_define_method(cTerminal, "char_width", term_get_char_width, 0);
|
1021
|
+
rb_define_method(cTerminal, "char_height", term_get_char_height, 0);
|
1022
|
+
rb_define_method(cTerminal, "char_descent", term_get_char_descent, 0);
|
1023
|
+
rb_define_method(cTerminal, "char_ascent", term_get_char_ascent, 0);
|
1024
|
+
rb_define_method(cTerminal, "row_count", term_get_row_count, 0);
|
1025
|
+
rb_define_method(cTerminal, "column_count", term_get_column_count, 0);
|
1026
|
+
rb_define_method(cTerminal, "window_title", term_get_window_title, 0);
|
1027
|
+
rb_define_method(cTerminal, "icon_title", term_get_icon_title, 0);
|
1028
|
+
|
1029
|
+
G_DEF_SETTERS(cTerminal);
|
1030
|
+
}
|