topinambour 1.0.6 → 1.0.7
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.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/bin/topinambour +2 -2
- data/lib/actions.rb +10 -1
- data/lib/application.rb +3 -14
- data/lib/css_editor.rb +20 -7
- data/lib/notebook.rb +2 -1
- data/lib/terminal.rb +30 -11
- data/lib/window.rb +3 -3
- metadata +2 -7
- data/data/topinambour-icon-128.png +0 -0
- data/data/topinambour-icon-16.png +0 -0
- data/data/topinambour-icon-32.png +0 -0
- data/data/topinambour-icon-64.png +0 -0
- data/data/topinambour-icon.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76fa93f28cb01a9f218e3f9bc87e64adf76ef14d
|
4
|
+
data.tar.gz: 834c19b5bdc2ea89740083164ef3bed96ef12c15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49e9f72f92b495e00b42802938f22b0359a8c5f48316b50c22ad80b2abb7c4b123a908f5f8d36546fa76535d66f31b1e365c64649fa0d200247f99c8cbdf2777
|
7
|
+
data.tar.gz: 432e048bb7e5546f9e8fe3c053362fe3a0e3d3959c6b921654f6478df01b391f8d2eb0f178e0eda659ab27fa887c5df04b6d6fed3fe00c9c268883e9e8b57ba0
|
data/README.md
CHANGED
@@ -4,7 +4,9 @@
|
|
4
4
|
[](https://codeclimate.com/github/cedlemo/topinambour)
|
5
5
|
|
6
6
|
|
7
|
-
<a href="https://raw.github.com/cedlemo/topinambour/master/
|
7
|
+
<a href="https://raw.github.com/cedlemo/topinambour/master/terminal_selector_screen.gif"><img src="https://raw.github.com/cedlemo/topinambour/master/terminal_selector_screen.gif" style="width:576px;height:324px;" alt="Color selection gif"></a>
|
8
|
+
|
9
|
+
<a href="https://raw.github.com/cedlemo/topinambour/master/color_selection_screen.gif"><img src="https://raw.github.com/cedlemo/topinambour/master/color_selection_screen.gif" style="width:576px;height:324px;" alt="Color selection gif"></a>
|
8
10
|
|
9
11
|
Topinambour is Terminal written with the Gtk3 and Vte3 ruby bindings from the project [ruby-gnome2](https://github.com/ruby-gnome2/ruby-gnome2). I have written it for testing purpose, but Topinambour works well and I use it as my primary terminal emulator.
|
10
12
|
|
data/bin/topinambour
CHANGED
@@ -46,8 +46,8 @@ end
|
|
46
46
|
resource = Gio::Resource.load(gresource_bin)
|
47
47
|
Gio::Resources.register(resource)
|
48
48
|
# Load default libraries !!WARNING!! loading order matters
|
49
|
-
#%w(actions style_properties css_handler application
|
50
|
-
%w(actions style_properties css_handler application terminal notebook color_selector font_selector
|
49
|
+
#%w(actions style_properties css_handler application terminal notebook color_selector font_selector
|
50
|
+
%w(actions style_properties css_handler application terminal_regex terminal notebook color_selector font_selector
|
51
51
|
terminal_chooser headerbar shortcuts window resize_message css_editor).each do |l|
|
52
52
|
if File.exist?("#{USR_LIB_PATH}/#{l}.rb")
|
53
53
|
require "#{USR_LIB_PATH}/#{l}.rb"
|
data/lib/actions.rb
CHANGED
@@ -53,7 +53,16 @@ module TopinambourActions
|
|
53
53
|
|
54
54
|
def self.generate_term_copy_action(application)
|
55
55
|
action = generate_action("term_copy") do |_act, _param|
|
56
|
-
application.windows[0].notebook.current
|
56
|
+
term = application.windows[0].notebook.current
|
57
|
+
event = Gtk.current_event
|
58
|
+
|
59
|
+
_match, regex_type = term.match_check_event(event)
|
60
|
+
if term.has_selection? || regex_type == -1
|
61
|
+
term.copy_clipboard
|
62
|
+
else
|
63
|
+
clipboard = Gtk::Clipboard.get_default(Gdk::Display.default)
|
64
|
+
clipboard.text = term.last_match
|
65
|
+
end
|
57
66
|
end
|
58
67
|
action
|
59
68
|
end
|
data/lib/application.rb
CHANGED
@@ -53,8 +53,6 @@ class TopinambourApplication < Gtk::Application
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
private
|
57
|
-
|
58
56
|
def replace_old_conf_with(new_conf)
|
59
57
|
if File.exist?(USR_CSS)
|
60
58
|
new_name = "#{USR_CSS}_#{Time.new.strftime('%Y-%m-%d-%H-%M-%S')}.backup"
|
@@ -64,8 +62,11 @@ class TopinambourApplication < Gtk::Application
|
|
64
62
|
File.open(USR_CSS, "w") do |file|
|
65
63
|
file.puts new_conf
|
66
64
|
end
|
65
|
+
@css_content = new_conf
|
67
66
|
end
|
68
67
|
|
68
|
+
private
|
69
|
+
|
69
70
|
def load_menu_ui_in(application)
|
70
71
|
builder = Gtk::Builder.new(:resource => "/com/github/cedlemo/topinambour/app-menu.ui")
|
71
72
|
app_menu = builder["appmenu"]
|
@@ -99,18 +100,6 @@ class TopinambourApplication < Gtk::Application
|
|
99
100
|
end
|
100
101
|
end
|
101
102
|
|
102
|
-
def css_properties
|
103
|
-
@props = {}
|
104
|
-
return @props if windows[0].notebook.current.class == TopinambourTerminal
|
105
|
-
|
106
|
-
terminal_colors = windows[0].notebook.current.colors
|
107
|
-
TERMINAL_COLOR_NAMES.each_with_index do |c, i|
|
108
|
-
@props["-TopinambourTerminal-#{c}"] = terminal_colors[i].to_s
|
109
|
-
end
|
110
|
-
@props["-TopinambourTerminal-font"] = DEFAULT_TERMINAL_FONT
|
111
|
-
@props["-TopinambourWindow-shell"] = "\'/usr/bin/fish\'"
|
112
|
-
end
|
113
|
-
|
114
103
|
def check_and_create_if_no_config_dir
|
115
104
|
Dir.mkdir(CONFIG_DIR) unless Dir.exist?(CONFIG_DIR)
|
116
105
|
end
|
data/lib/css_editor.rb
CHANGED
@@ -20,7 +20,7 @@ class TopinambourCssEditor < Gtk::Grid
|
|
20
20
|
super()
|
21
21
|
@window = window
|
22
22
|
@provider = window.application.provider
|
23
|
-
@default_css =
|
23
|
+
@default_css = window.application.css_content
|
24
24
|
@modified_css = @default_css
|
25
25
|
@tab_label = "Css Editor"
|
26
26
|
|
@@ -32,14 +32,17 @@ class TopinambourCssEditor < Gtk::Grid
|
|
32
32
|
sw.add(@view)
|
33
33
|
attach(sw, 0, 0, 3, 1)
|
34
34
|
|
35
|
-
button =
|
35
|
+
button = gen_close_button
|
36
36
|
attach(button, 0, 1, 1, 1)
|
37
37
|
|
38
|
+
button = gen_reset_button
|
39
|
+
attach(button, 1, 1, 1, 1)
|
40
|
+
|
38
41
|
@style_button = gen_style_chooser_button
|
39
|
-
attach(@style_button,
|
42
|
+
attach(@style_button, 2, 1, 1, 1)
|
40
43
|
|
41
|
-
button = gen_save_button
|
42
|
-
attach(button,
|
44
|
+
button = gen_save_button(@view.buffer)
|
45
|
+
attach(button, 3, 1, 1, 1)
|
43
46
|
manage_buffer_changes
|
44
47
|
manage_css_errors
|
45
48
|
show_all
|
@@ -64,6 +67,16 @@ class TopinambourCssEditor < Gtk::Grid
|
|
64
67
|
@view.smart_backspace = true
|
65
68
|
end
|
66
69
|
|
70
|
+
def gen_close_button
|
71
|
+
button = Gtk::Button.new(:label => "Close Tab")
|
72
|
+
button.signal_connect "clicked" do
|
73
|
+
toplevel.close_current_tab
|
74
|
+
end
|
75
|
+
button.vexpand = false
|
76
|
+
button.hexpand = false
|
77
|
+
button
|
78
|
+
end
|
79
|
+
|
67
80
|
def gen_reset_button
|
68
81
|
button = Gtk::Button.new(:label => "Reset")
|
69
82
|
button.signal_connect "clicked" do
|
@@ -92,10 +105,10 @@ class TopinambourCssEditor < Gtk::Grid
|
|
92
105
|
button
|
93
106
|
end
|
94
107
|
|
95
|
-
def gen_save_button
|
108
|
+
def gen_save_button(buffer)
|
96
109
|
button = Gtk::Button.new(:label => "Save")
|
97
110
|
button.signal_connect "clicked" do
|
98
|
-
@window.application.
|
111
|
+
@window.application.replace_old_conf_with(buffer.text)
|
99
112
|
reload_custom_css_properties
|
100
113
|
end
|
101
114
|
button.vexpand = false
|
data/lib/notebook.rb
CHANGED
@@ -22,12 +22,13 @@ class TopinambourNotebook < Gtk::Notebook
|
|
22
22
|
signal_connect "hide" do
|
23
23
|
@visible = false
|
24
24
|
end
|
25
|
+
|
25
26
|
signal_connect "show" do
|
26
27
|
@visible = true
|
27
28
|
end
|
28
29
|
|
29
30
|
signal_connect "switch-page" do |_widget, next_page, next_page_num|
|
30
|
-
toplevel.current_label.text = next_page.terminal_title
|
31
|
+
toplevel.current_label.text = next_page.terminal_title if next_page.class == TopinambourTerminal
|
31
32
|
toplevel.current_tab.text = "#{next_page_num + 1}/#{n_pages}"
|
32
33
|
|
33
34
|
if page >= 0 && @gen_preview
|
data/lib/terminal.rb
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
##
|
18
18
|
# The default vte terminal customized
|
19
19
|
class TopinambourTerminal
|
20
|
-
attr_reader :pid, :menu
|
20
|
+
attr_reader :pid, :menu, :regexes, :last_match
|
21
21
|
attr_accessor :preview, :colors, :custom_title
|
22
22
|
|
23
23
|
##
|
@@ -48,6 +48,7 @@ class TopinambourTerminal
|
|
48
48
|
signal_connect "button-press-event" do |widget, event|
|
49
49
|
if event.type == Gdk::EventType::BUTTON_PRESS &&
|
50
50
|
event.button == Gdk::BUTTON_SECONDARY
|
51
|
+
manage_regex_on_right_click(widget, event)
|
51
52
|
display_copy_past_menu(widget, event)
|
52
53
|
true
|
53
54
|
elsif event.button == Gdk::BUTTON_PRIMARY
|
@@ -108,15 +109,15 @@ class TopinambourTerminal
|
|
108
109
|
end
|
109
110
|
|
110
111
|
def add_matches
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
112
|
+
@regexes = [:REGEX_URL_AS_IS, :REGEX_URL_FILE, :REGEX_URL_HTTP,
|
113
|
+
:REGEX_URL_VOIP, :REGEX_EMAIL, :REGEX_NEWS_MAN]
|
114
|
+
@regexes.each do |name|
|
115
|
+
regex_name = TopinambourRegex.const_get(name)
|
116
|
+
flags = [GLib::RegexCompileFlags::OPTIMIZE,
|
117
|
+
GLib::RegexCompileFlags::MULTILINE]
|
118
|
+
regex = GLib::Regex.new(regex_name, :compile_options => flags)
|
119
|
+
match_add_gregex(regex, 0)
|
120
|
+
end
|
120
121
|
end
|
121
122
|
|
122
123
|
def display_copy_past_menu(widget, event)
|
@@ -130,8 +131,26 @@ class TopinambourTerminal
|
|
130
131
|
widget.menu.show
|
131
132
|
end
|
132
133
|
|
134
|
+
def manage_regex_on_right_click(_widget, event)
|
135
|
+
@last_match, _regex_type = match_check_event(event)
|
136
|
+
end
|
137
|
+
|
133
138
|
def manage_regex_on_click(_widget, event)
|
134
|
-
|
139
|
+
match, regex_type = match_check_event(event)
|
140
|
+
return nil if regex_type == -1
|
141
|
+
modified_match = case @regexes[regex_type]
|
142
|
+
when :REGEX_EMAIL
|
143
|
+
"mailto:" + match
|
144
|
+
when :REGEX_URL_HTTP
|
145
|
+
"http://" + match
|
146
|
+
else
|
147
|
+
match
|
148
|
+
end
|
149
|
+
begin
|
150
|
+
Gio::AppInfo.launch_default_for_uri(modified_match)
|
151
|
+
rescue => e
|
152
|
+
puts "error : #{e.message}\n\tfor match: #{match} of type :#{@regexes[regex_type]}"
|
153
|
+
end
|
135
154
|
end
|
136
155
|
|
137
156
|
def when_terminal_title_change
|
data/lib/window.rb
CHANGED
@@ -19,7 +19,7 @@ class TopinambourWindow
|
|
19
19
|
|
20
20
|
def initialize(application)
|
21
21
|
super(:application => application)
|
22
|
-
|
22
|
+
set_icon_name("utilities-terminal-symbolic")
|
23
23
|
load_css_properties
|
24
24
|
set_position(:center)
|
25
25
|
create_header_bar
|
@@ -114,9 +114,9 @@ class TopinambourWindow
|
|
114
114
|
"comments" => "Terminal Emulator based on the ruby bindings of Gtk3 and Vte3",
|
115
115
|
"copyright" => "Copyright (C) 2015-2016 Cédric Le Moigne",
|
116
116
|
"license" => "This program is licenced under the licence GPL-3.0 and later.",
|
117
|
-
"
|
117
|
+
"logo_icon_name" => "utilities-terminal-symbolic",
|
118
118
|
"program_name" => "Topinambour",
|
119
|
-
"version" => "1.
|
119
|
+
"version" => "1.0.7",
|
120
120
|
"website" => "https://github.com/cedlemo/topinambour",
|
121
121
|
"website_label" => "Topinambour github repository"
|
122
122
|
)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: topinambour
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cédric LE MOIGNE
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vte3
|
@@ -90,11 +90,6 @@ files:
|
|
90
90
|
- data/pan-start-symbolic.svg
|
91
91
|
- data/tab-new-symbolic.svg
|
92
92
|
- data/terminal-menu.ui
|
93
|
-
- data/topinambour-icon-128.png
|
94
|
-
- data/topinambour-icon-16.png
|
95
|
-
- data/topinambour-icon-32.png
|
96
|
-
- data/topinambour-icon-64.png
|
97
|
-
- data/topinambour-icon.png
|
98
93
|
- data/topinambour.css
|
99
94
|
- data/topinambour.gresource.xml
|
100
95
|
- data/window-close-symbolic.svg
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/data/topinambour-icon.png
DELETED
Binary file
|