vte3 1.2.0
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/README +34 -0
- data/Rakefile +47 -0
- data/ext/vte3/depend +6 -0
- data/ext/vte3/extconf.rb +67 -0
- data/ext/vte3/rbvte.c +47 -0
- data/ext/vte3/rbvte3conversions.h +39 -0
- data/ext/vte3/rbvte3private.h +24 -0
- data/ext/vte3/rbvtecharattributes.c +76 -0
- data/ext/vte3/rbvtepty.c +114 -0
- data/ext/vte3/rbvtereaper.c +39 -0
- data/ext/vte3/rbvteterminal.c +964 -0
- data/ext/vte3/rbvteterminalaccessible.c +41 -0
- data/extconf.rb +49 -0
- data/lib/vte3/deprecated.rb +44 -0
- data/lib/vte3.rb +4 -0
- data/sample/multiterm.rb +103 -0
- data/sample/terminal.rb +28 -0
- metadata +98 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/*
|
3
|
+
* Copyright (C) 2006-2011 Ruby-GNOME2 Project Team
|
4
|
+
*
|
5
|
+
* This library is free software; you can redistribute it and/or
|
6
|
+
* modify it under the terms of the GNU Lesser General Public
|
7
|
+
* License as published by the Free Software Foundation; either
|
8
|
+
* version 2.1 of the License, or (at your option) any later version.
|
9
|
+
*
|
10
|
+
* This library is distributed in the hope that it will be useful,
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
* Lesser General Public License for more details.
|
14
|
+
*
|
15
|
+
* You should have received a copy of the GNU Lesser General Public
|
16
|
+
* License along with this library; if not, write to the Free Software
|
17
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
18
|
+
* MA 02110-1301 USA
|
19
|
+
*/
|
20
|
+
|
21
|
+
#include "rbvte3private.h"
|
22
|
+
|
23
|
+
#define RG_TARGET_NAMESPACE cTerminalAccessible
|
24
|
+
|
25
|
+
static VALUE
|
26
|
+
rg_initialize(VALUE self, VALUE terminal)
|
27
|
+
{
|
28
|
+
G_INITIALIZE(self, vte_terminal_accessible_new(RVAL2VTETERMINAL(terminal)));
|
29
|
+
return Qnil;
|
30
|
+
}
|
31
|
+
|
32
|
+
void
|
33
|
+
Init_vte_access(VALUE mVte)
|
34
|
+
{
|
35
|
+
VALUE RG_TARGET_NAMESPACE;
|
36
|
+
|
37
|
+
RG_TARGET_NAMESPACE = G_DEF_CLASS(VTE_TYPE_TERMINAL_ACCESSIBLE,
|
38
|
+
"TerminalAccessible", mVte);
|
39
|
+
|
40
|
+
RG_DEF_METHOD(initialize, 1);
|
41
|
+
}
|
data/extconf.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
require 'mkmf'
|
5
|
+
require 'rbconfig'
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
package = "vte3"
|
9
|
+
|
10
|
+
base_dir = Pathname(__FILE__).dirname.expand_path
|
11
|
+
ext_dir = base_dir + "ext" + package
|
12
|
+
mkmf_gnome2_dir = base_dir + 'lib'
|
13
|
+
|
14
|
+
ruby = File.join(RbConfig::CONFIG['bindir'],
|
15
|
+
RbConfig::CONFIG['ruby_install_name'] +
|
16
|
+
RbConfig::CONFIG["EXEEXT"])
|
17
|
+
|
18
|
+
build_dir = Pathname("ext") + package
|
19
|
+
FileUtils.mkdir_p(build_dir.to_s) unless build_dir.exist?
|
20
|
+
extconf_rb_path = ext_dir + "extconf.rb"
|
21
|
+
system(ruby, "-C", build_dir.to_s, extconf_rb_path.to_s, *ARGV) || exit(false)
|
22
|
+
|
23
|
+
create_makefile(package)
|
24
|
+
FileUtils.mv("Makefile", "Makefile.lib")
|
25
|
+
|
26
|
+
File.open("Makefile", "w") do |makefile|
|
27
|
+
makefile.puts(<<-EOM)
|
28
|
+
all:
|
29
|
+
(cd ext/#{package} && $(MAKE))
|
30
|
+
$(MAKE) -f Makefile.lib
|
31
|
+
|
32
|
+
install:
|
33
|
+
(cd ext/#{package} && $(MAKE) install)
|
34
|
+
$(MAKE) -f Makefile.lib install
|
35
|
+
|
36
|
+
site-install:
|
37
|
+
(cd ext/#{package} && $(MAKE) site-install)
|
38
|
+
$(MAKE) -f Makefile.lib site-install
|
39
|
+
|
40
|
+
clean:
|
41
|
+
(cd ext/#{package} && $(MAKE) clean)
|
42
|
+
$(MAKE) -f Makefile.lib clean
|
43
|
+
|
44
|
+
distclean:
|
45
|
+
(cd ext/#{package} && $(MAKE) distclean)
|
46
|
+
$(MAKE) -f Makefile.lib distclean
|
47
|
+
@rm -f Makefile.lib
|
48
|
+
EOM
|
49
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Vte
|
2
|
+
extend GLib::Deprecatable
|
3
|
+
define_deprecated_const :TerminalEraseBinding, 'Vte::Terminal::EraseBinding'
|
4
|
+
define_deprecated_const :TerminalCursorBlinkMode, 'Vte::Terminal::CursorBlinkMode'
|
5
|
+
define_deprecated_const :TerminalCursorShape, 'Vte::Terminal::CursorShape'
|
6
|
+
|
7
|
+
class Terminal
|
8
|
+
extend GLib::Deprecatable
|
9
|
+
define_deprecated_method :match_set_cursor_type, :match_set_cursor
|
10
|
+
define_deprecated_method :fork_pty, :raise => "Use 'Vte::Pty#fork'."
|
11
|
+
define_deprecated_method :using_xft?, :warn => "Don't use this method." do |_self|
|
12
|
+
false
|
13
|
+
end
|
14
|
+
define_deprecated_method :padding, :warn => "Use 'inner-border' style property." do |_self|
|
15
|
+
[0, 0]
|
16
|
+
end
|
17
|
+
define_deprecated_method :char_descent, :warn => "Don't use this method." do |_self|
|
18
|
+
0
|
19
|
+
end
|
20
|
+
define_deprecated_method :char_ascent, :warn => "Don't use this method." do |_self|
|
21
|
+
0
|
22
|
+
end
|
23
|
+
define_deprecated_method_by_hash_args :fork_command,
|
24
|
+
'command, argv, envv, directory, lastlog, utmp, wtmp',
|
25
|
+
':pty_flags => :default, :working_directory => <current>, :argv => <user_shell>, :envv => nil, :spawn_flags => :child_inherits_stdin' do
|
26
|
+
|_self, command, argv, envv, directory, lastlog = true, utmp = true, wtmp = true|
|
27
|
+
pty_flags = [!lastlog && :no_lastlog, !utmp && :no_utmp, !wtmp && :no_wtmp].select{|f| f}
|
28
|
+
argv = command && [command, *argv]
|
29
|
+
[{:pty_flags => pty_flags, :working_directory => directory, :argv => argv, :envv => envv}]
|
30
|
+
end
|
31
|
+
|
32
|
+
alias :__set_font__ :set_font
|
33
|
+
private :__set_font__
|
34
|
+
def set_font(*args)
|
35
|
+
if args.size == 1
|
36
|
+
params = args.first
|
37
|
+
else
|
38
|
+
raise GLib::DeprecatedError.new("#{caller[0]}: '#{self.class}#set_font(desc_or_name, antialias)' style has been deprecated. Use '#{self.class}#set_font(desc_or_name)' style.")
|
39
|
+
end
|
40
|
+
__set_font__(params)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
data/lib/vte3.rb
ADDED
data/sample/multiterm.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
=begin
|
3
|
+
multiterm.rb - Ruby/VTE sample script.
|
4
|
+
|
5
|
+
Copyright (c) 2006 Ruby-GNOME2 Project Team
|
6
|
+
This program is licenced under the same licence as Ruby-GNOME2.
|
7
|
+
|
8
|
+
$Id: multiterm.rb,v 1.2 2006/06/17 13:27:51 mutoh Exp $
|
9
|
+
=end
|
10
|
+
|
11
|
+
require "vte3"
|
12
|
+
|
13
|
+
class MultiTerm
|
14
|
+
def initialize
|
15
|
+
@terminals = []
|
16
|
+
init_window
|
17
|
+
add_terminal
|
18
|
+
end
|
19
|
+
|
20
|
+
def run
|
21
|
+
@window.show_all
|
22
|
+
@notebook.get_nth_page(@notebook.page).grab_focus
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def init_window
|
27
|
+
@window = Gtk::Window.new("MultiTerm sample")
|
28
|
+
@window.signal_connect("destroy") do |widget|
|
29
|
+
Gtk.main_quit
|
30
|
+
end
|
31
|
+
init_notebook
|
32
|
+
@window.add(@notebook)
|
33
|
+
end
|
34
|
+
|
35
|
+
def init_notebook
|
36
|
+
@notebook = Gtk::Notebook.new
|
37
|
+
@last_page_index = nil
|
38
|
+
@notebook.signal_connect_after("switch-page") do |widget, page, i|
|
39
|
+
max_page_index = widget.n_pages - 1
|
40
|
+
if max_page_index > 0 and i == max_page_index
|
41
|
+
widget.page = @last_page_index
|
42
|
+
end
|
43
|
+
end
|
44
|
+
@notebook.signal_connect("switch-page") do |widget, page, i|
|
45
|
+
@last_page_index ||= i
|
46
|
+
terminal = widget.get_nth_page(i)
|
47
|
+
if terminal.respond_to?(:window_title)
|
48
|
+
@last_page_index = i
|
49
|
+
update_window_title(terminal.window_title)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
@notebook.tab_reorderable = true if @notebook.respond_to?(:tab_reorderable=)
|
53
|
+
@notebook.scrollable = true
|
54
|
+
init_new_tab_label
|
55
|
+
dummy = Gtk::EventBox.new
|
56
|
+
@notebook.append_page(dummy, @new_tab_label)
|
57
|
+
end
|
58
|
+
|
59
|
+
def init_new_tab_label
|
60
|
+
@new_tab_label = Gtk::EventBox.new
|
61
|
+
@new_tab_label.signal_connect("button-press-event") do |widget, event|
|
62
|
+
add_terminal
|
63
|
+
@notebook.page = @last_page_index
|
64
|
+
true
|
65
|
+
end
|
66
|
+
# @new_tab_label.set_size_request(30, -1)
|
67
|
+
image = Gtk::Image.new(Gtk::Stock::NEW, Gtk::IconSize::MENU)
|
68
|
+
image.show
|
69
|
+
@new_tab_label.add(image)
|
70
|
+
@new_tab_label
|
71
|
+
end
|
72
|
+
|
73
|
+
def destroy
|
74
|
+
@window.destroy
|
75
|
+
end
|
76
|
+
|
77
|
+
def add_terminal
|
78
|
+
terminal = Vte::Terminal.new
|
79
|
+
terminal.signal_connect("child-exited") do |widget|
|
80
|
+
@notebook.remove_page(@notebook.page_num(widget))
|
81
|
+
@terminals.delete(widget)
|
82
|
+
destroy if @terminals.empty?
|
83
|
+
end
|
84
|
+
terminal.signal_connect("window-title-changed") do |widget|
|
85
|
+
@notebook.set_tab_label_text(widget, widget.window_title)
|
86
|
+
update_window_title(widget.window_title)
|
87
|
+
end
|
88
|
+
terminal.set_font("Monospace 14")
|
89
|
+
terminal.fork_command
|
90
|
+
terminal.show
|
91
|
+
last = @notebook.n_pages
|
92
|
+
@notebook.insert_page(last - 1, terminal)
|
93
|
+
@terminals << terminal
|
94
|
+
end
|
95
|
+
|
96
|
+
def update_window_title(title)
|
97
|
+
@window.title = title if title
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
multi_term = MultiTerm.new
|
102
|
+
multi_term.run
|
103
|
+
Gtk.main
|
data/sample/terminal.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
=begin
|
3
|
+
terminal.rb - Ruby/VTE sample script.
|
4
|
+
|
5
|
+
Copyright (c) 2006 Ruby-GNOME2 Project Team
|
6
|
+
This program is licenced under the same licence as Ruby-GNOME2.
|
7
|
+
|
8
|
+
$Id: terminal.rb,v 1.2 2006/06/17 13:27:51 mutoh Exp $
|
9
|
+
=end
|
10
|
+
|
11
|
+
require "vte3"
|
12
|
+
|
13
|
+
window = Gtk::Window.new("Terminal sample")
|
14
|
+
window.signal_connect("destroy"){Gtk.main_quit}
|
15
|
+
|
16
|
+
terminal = Vte::Terminal.new
|
17
|
+
terminal.set_font("Monospace 16", Vte::TerminalAntiAlias::FORCE_ENABLE)
|
18
|
+
terminal.signal_connect("child-exited") do |widget|
|
19
|
+
Gtk.main_quit
|
20
|
+
end
|
21
|
+
terminal.signal_connect("window-title-changed") do |widget|
|
22
|
+
window.title = terminal.window_title
|
23
|
+
end
|
24
|
+
terminal.fork_command
|
25
|
+
window.add(terminal)
|
26
|
+
window.show_all
|
27
|
+
|
28
|
+
Gtk.main
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vte3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 31
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 1.2.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- The Ruby-GNOME2 Project Team
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2013-01-24 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: gtk3
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 31
|
29
|
+
segments:
|
30
|
+
- 1
|
31
|
+
- 2
|
32
|
+
- 0
|
33
|
+
version: 1.2.0
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
description: Ruby/VTE is a Ruby binding of VTE.
|
37
|
+
email: ruby-gnome2-devel-en@lists.sourceforge.net
|
38
|
+
executables: []
|
39
|
+
|
40
|
+
extensions:
|
41
|
+
- ext/vte3/extconf.rb
|
42
|
+
extra_rdoc_files: []
|
43
|
+
|
44
|
+
files:
|
45
|
+
- README
|
46
|
+
- Rakefile
|
47
|
+
- extconf.rb
|
48
|
+
- lib/vte3.rb
|
49
|
+
- lib/vte3/deprecated.rb
|
50
|
+
- ext/vte3/rbvteterminal.c
|
51
|
+
- ext/vte3/rbvtepty.c
|
52
|
+
- ext/vte3/extconf.rb
|
53
|
+
- ext/vte3/rbvte3conversions.h
|
54
|
+
- ext/vte3/rbvteterminalaccessible.c
|
55
|
+
- ext/vte3/rbvte3private.h
|
56
|
+
- ext/vte3/rbvtecharattributes.c
|
57
|
+
- ext/vte3/rbvte.c
|
58
|
+
- ext/vte3/rbvtereaper.c
|
59
|
+
- ext/vte3/depend
|
60
|
+
- sample/multiterm.rb
|
61
|
+
- sample/terminal.rb
|
62
|
+
homepage: http://ruby-gnome2.sourceforge.jp/
|
63
|
+
licenses: []
|
64
|
+
|
65
|
+
post_install_message: This library is experimental.
|
66
|
+
rdoc_options: []
|
67
|
+
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 55
|
76
|
+
segments:
|
77
|
+
- 1
|
78
|
+
- 9
|
79
|
+
- 2
|
80
|
+
version: 1.9.2
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
requirements: []
|
91
|
+
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 1.8.24
|
94
|
+
signing_key:
|
95
|
+
specification_version: 3
|
96
|
+
summary: Ruby/VTE is a Ruby binding of VTE.
|
97
|
+
test_files: []
|
98
|
+
|