topinambour 2.0.4 → 2.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/topinambour +22 -24
- data/data/gschemas.compiled +0 -0
- data/data/prefs-dialog.ui +6 -6
- data/data/topinambour.css +7 -46
- data/data/topinambour.gresource +0 -0
- data/data/topinambour.gresource.xml +0 -1
- data/data/topinambour.gschema.xml +4 -4
- data/lib/about.rb +46 -0
- data/lib/actions.rb +2 -0
- data/lib/application.rb +80 -83
- data/lib/color_selector.rb +148 -22
- data/lib/font_selector.rb +43 -21
- data/lib/preferences.rb +6 -2
- data/lib/profile.rb +62 -0
- data/lib/shortcuts.rb +2 -5
- data/lib/terminal.rb +87 -70
- data/lib/terminal_regex.rb +9 -0
- data/lib/version.rb +25 -0
- data/lib/window.rb +67 -95
- metadata +28 -8
- data/data/window.ui +0 -58
data/lib/terminal_regex.rb
CHANGED
@@ -138,3 +138,12 @@ module TopinambourRegex
|
|
138
138
|
REGEX_NEWS_MAN = "(?i:news:|man:|info:)[-[:alnum:]\\Q^_{|}~!\"#$%&'()*+,./;:=?`\\E]+"
|
139
139
|
include ColorRegexes
|
140
140
|
end
|
141
|
+
|
142
|
+
module Pcre2
|
143
|
+
# PCRE2_UTF | PCRE2_NO_UTF_CHECK | PCRE2_MULTILINE
|
144
|
+
UTF = "0x00080000".to_i(16)
|
145
|
+
NO_UTF_CHECK = "0x40000000".to_i(16)
|
146
|
+
MULTILINE = "0x00000400".to_i(16)
|
147
|
+
ALL_FLAGS = UTF | NO_UTF_CHECK | MULTILINE
|
148
|
+
|
149
|
+
end
|
data/lib/version.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Copyright 2018 Cedric LE MOIGNE, cedlemo@gmx.com
|
2
|
+
# This file is part of Topinambour.
|
3
|
+
#
|
4
|
+
# Topinambour is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# any later version.
|
8
|
+
#
|
9
|
+
# Topinambour is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with Topinambour. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
## Module that stores the version information for About class and
|
18
|
+
# the gemspec.
|
19
|
+
module Version
|
20
|
+
MAJOR = 2
|
21
|
+
MINOR = 0
|
22
|
+
MICRO = 6
|
23
|
+
|
24
|
+
STRING = "#{MAJOR}.#{MINOR}.#{MICRO}".freeze
|
25
|
+
end
|
data/lib/window.rb
CHANGED
@@ -14,137 +14,109 @@
|
|
14
14
|
# You should have received a copy of the GNU General Public License
|
15
15
|
# along with Topinambour. If not, see <http://www.gnu.org/licenses/>.
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
super(application)
|
21
|
-
set_icon_name("utilities-terminal-symbolic")
|
22
|
-
set_name("topinambour-window")
|
23
|
-
load_settings
|
24
|
-
set_position(:center)
|
25
|
-
create_header_bar
|
26
|
-
@overlay = Gtk::Overlay.new
|
27
|
-
add(@overlay)
|
28
|
-
show_all
|
29
|
-
signal_connect "key-press-event" do |widget, event|
|
30
|
-
TopinambourShortcuts.handle_key_press(widget, event)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_terminal(cmd = nil)
|
35
|
-
cmd = cmd || application.settings["default-shell"]
|
36
|
-
|
37
|
-
terminal = TopinambourTermBox.new(cmd)
|
38
|
-
@overlay.add(terminal)
|
39
|
-
@terminal = terminal.term
|
40
|
-
terminal.term.load_settings
|
41
|
-
end
|
42
|
-
|
17
|
+
## Actions of the window that will be called throught the Application instance.
|
18
|
+
# or throught terminal signals.
|
19
|
+
module TopinambourWindowActions
|
43
20
|
def quit_gracefully
|
44
|
-
application.quit
|
21
|
+
@application.quit
|
45
22
|
end
|
46
23
|
|
47
24
|
def show_color_selector
|
48
|
-
toggle_overlay(TopinambourColorSelector)
|
25
|
+
@overlay.toggle_overlay(TopinambourColorSelector)
|
49
26
|
end
|
50
27
|
|
51
28
|
def show_font_selector
|
52
|
-
toggle_overlay(TopinambourFontSelector)
|
53
|
-
end
|
54
|
-
|
55
|
-
def exit_overlay_mode
|
56
|
-
@overlay.children[1].destroy if in_overlay_mode?
|
29
|
+
@overlay.toggle_overlay(TopinambourFontSelector)
|
57
30
|
end
|
58
31
|
|
59
32
|
def display_about
|
60
|
-
|
61
|
-
"authors" => ["Cedric Le Moigne <cedlemo@gmx.com>"],
|
62
|
-
"comments" => "Terminal Emulator based on the ruby bindings of Gtk3 and Vte3",
|
63
|
-
"copyright" => "Copyright (C) 2015-2018 Cedric Le Moigne",
|
64
|
-
"license" => "This program is licenced under the licence GPL-3.0 and later.",
|
65
|
-
"logo_icon_name" => "utilities-terminal-symbolic",
|
66
|
-
"program_name" => "Topinambour",
|
67
|
-
"version" => "2.0.4",
|
68
|
-
"website" => "https://github.com/cedlemo/topinambour",
|
69
|
-
"website_label" => "Topinambour github repository"
|
70
|
-
)
|
71
|
-
end
|
72
|
-
|
73
|
-
def in_overlay_mode?
|
74
|
-
@overlay.children.size > 1 ? true : false
|
75
|
-
end
|
76
|
-
|
77
|
-
def toggle_shrink
|
78
|
-
w, h = size
|
79
|
-
if @shrink_saved_height
|
80
|
-
resize(w, @shrink_saved_height)
|
81
|
-
@shrink_saved_height = nil
|
82
|
-
else
|
83
|
-
resize(w, 1)
|
84
|
-
@shrink_saved_height = h
|
85
|
-
end
|
33
|
+
About.dialog(self)
|
86
34
|
end
|
87
35
|
|
88
36
|
def show_shortcuts
|
89
|
-
resource_file =
|
90
|
-
builder = Gtk::Builder.new(:
|
91
|
-
shortcuts_win = builder[
|
37
|
+
resource_file = '/com/github/cedlemo/topinambour/shortcuts.ui'
|
38
|
+
builder = Gtk::Builder.new(resource: resource_file)
|
39
|
+
shortcuts_win = builder['shortcuts-window']
|
92
40
|
shortcuts_win.transient_for = self
|
93
41
|
shortcuts_win.show
|
94
42
|
end
|
95
|
-
|
43
|
+
end
|
96
44
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
45
|
+
## Main window of Topinambour
|
46
|
+
#
|
47
|
+
class TopinambourWindow < Gtk::ApplicationWindow
|
48
|
+
attr_reader :terminal, :overlay
|
49
|
+
include TopinambourWindowActions
|
50
|
+
|
51
|
+
def initialize(application)
|
52
|
+
super(application)
|
53
|
+
@application = application
|
54
|
+
set_icon_name('utilities-terminal-symbolic')
|
55
|
+
set_name('topinambour-window')
|
56
|
+
set_position(:center)
|
57
|
+
@overlay = TopinambourOverlay.new
|
58
|
+
create_header_bar
|
59
|
+
|
60
|
+
signal_connect 'key-press-event' do |widget, event|
|
61
|
+
TopinambourShortcuts.handle_key_press(widget, event)
|
62
|
+
end
|
63
|
+
|
64
|
+
add(@overlay)
|
101
65
|
end
|
102
66
|
|
103
|
-
def
|
104
|
-
|
105
|
-
@
|
67
|
+
def add_terminal(cmd = '/usr/bin/zsh')
|
68
|
+
terminal = TopinambourTermBox.new(cmd, self)
|
69
|
+
@terminal = terminal.term
|
70
|
+
@overlay.add_main_widget(terminal)
|
106
71
|
end
|
107
72
|
|
108
73
|
def create_header_bar
|
109
74
|
headerbar = Gtk::HeaderBar.new
|
110
|
-
headerbar.name =
|
75
|
+
headerbar.name = 'topinambour-headerbar'
|
111
76
|
headerbar.show_close_button = true
|
112
77
|
set_titlebar(headerbar)
|
113
78
|
end
|
114
79
|
|
115
|
-
def
|
116
|
-
|
117
|
-
ui_file = "/com/github/cedlemo/topinambour/main-menu-popover.ui"
|
118
|
-
menu_builder = Gtk::Builder.new(:resource => ui_file)
|
119
|
-
main_menu = menu_builder["main_menu_popover"]
|
120
|
-
button.set_popover(main_menu)
|
121
|
-
button.popover.modal = true
|
122
|
-
add_theme_menu_buttons_signals(menu_builder)
|
80
|
+
def exit_overlay_mode
|
81
|
+
@overlay.exit_overlay_mode
|
123
82
|
end
|
83
|
+
end
|
124
84
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
85
|
+
## This overlay contains the main terminal and allows another widgets to be
|
86
|
+
# displayed on top of it.
|
87
|
+
class TopinambourOverlay < Gtk::Overlay
|
88
|
+
def initialize
|
89
|
+
super()
|
90
|
+
end
|
130
91
|
|
131
|
-
|
132
|
-
|
133
|
-
|
92
|
+
def add_main_widget(terminal)
|
93
|
+
@terminal = terminal
|
94
|
+
add(@terminal)
|
95
|
+
end
|
134
96
|
|
135
|
-
|
136
|
-
|
137
|
-
|
97
|
+
# Add a widget over the main widget of the overlay.
|
98
|
+
def add_secondary_widget(widget)
|
99
|
+
add_overlay(widget)
|
100
|
+
set_overlay_pass_through(widget, false)
|
101
|
+
end
|
102
|
+
|
103
|
+
# Check if there is a widget displayed on top of the main widget.
|
104
|
+
def in_overlay_mode?
|
105
|
+
children.size > 1
|
106
|
+
end
|
107
|
+
|
108
|
+
# Display only the main widget.
|
109
|
+
def exit_overlay_mode
|
110
|
+
children[1].destroy if in_overlay_mode?
|
138
111
|
end
|
139
112
|
|
140
113
|
def toggle_overlay(klass)
|
114
|
+
exit_overlay_mode
|
141
115
|
if in_overlay_mode? && @overlay.children[1].class == klass
|
142
|
-
|
143
|
-
@terminal.grab_focus
|
116
|
+
@terminal.term.grab_focus
|
144
117
|
else
|
145
|
-
|
146
|
-
|
147
|
-
@overlay.children[1].show_all
|
118
|
+
add_secondary_widget(klass.new(@terminal.toplevel))
|
119
|
+
children[1].show_all
|
148
120
|
end
|
149
121
|
end
|
150
122
|
end
|
metadata
CHANGED
@@ -1,15 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: topinambour
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cedric LE MOIGNE
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: gtk3
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.2'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 3.2.6
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.2'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.2.6
|
13
33
|
- !ruby/object:Gem::Dependency
|
14
34
|
name: vte3
|
15
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -30,8 +50,7 @@ dependencies:
|
|
30
50
|
- - ">="
|
31
51
|
- !ruby/object:Gem::Version
|
32
52
|
version: 3.1.0
|
33
|
-
description: Terminal Emulator based on the
|
34
|
-
project
|
53
|
+
description: Terminal Emulator based on the ruby bindings of Gtk3 and Vte3
|
35
54
|
email: cedlemo@gmx.com
|
36
55
|
executables:
|
37
56
|
- topinambour
|
@@ -53,16 +72,18 @@ files:
|
|
53
72
|
- data/topinambour.gresource.xml
|
54
73
|
- data/topinambour.gschema.xml
|
55
74
|
- data/window-menu.ui
|
56
|
-
-
|
75
|
+
- lib/about.rb
|
57
76
|
- lib/actions.rb
|
58
77
|
- lib/application.rb
|
59
78
|
- lib/color_selector.rb
|
60
79
|
- lib/font_selector.rb
|
61
80
|
- lib/preferences.rb
|
81
|
+
- lib/profile.rb
|
62
82
|
- lib/rgb_names_regexes.rb
|
63
83
|
- lib/shortcuts.rb
|
64
84
|
- lib/terminal.rb
|
65
85
|
- lib/terminal_regex.rb
|
86
|
+
- lib/version.rb
|
66
87
|
- lib/window.rb
|
67
88
|
homepage: https://github.com/cedlemo/topinambour
|
68
89
|
licenses:
|
@@ -83,9 +104,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
104
|
- !ruby/object:Gem::Version
|
84
105
|
version: '0'
|
85
106
|
requirements: []
|
86
|
-
|
87
|
-
rubygems_version: 2.7.3
|
107
|
+
rubygems_version: 3.0.3
|
88
108
|
signing_key:
|
89
109
|
specification_version: 4
|
90
|
-
summary:
|
110
|
+
summary: Vte3 Terminal emulator in ruby.
|
91
111
|
test_files: []
|
data/data/window.ui
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<!-- Generated with glade 3.18.3 -->
|
3
|
-
<interface>
|
4
|
-
<requires lib="gtk+" version="3.12"/>
|
5
|
-
<template class="window" parent="GtkWindow">
|
6
|
-
<property name="can_focus">False</property>
|
7
|
-
<child>
|
8
|
-
<object class="GtkNotebook" id="notebook">
|
9
|
-
<property name="visible">True</property>
|
10
|
-
<property name="can_focus">True</property>
|
11
|
-
<property name="show_border">False</property>
|
12
|
-
<property name="scrollable">True</property>
|
13
|
-
<property name="enable_popup">True</property>
|
14
|
-
<child>
|
15
|
-
<placeholder/>
|
16
|
-
</child>
|
17
|
-
<child type="tab">
|
18
|
-
<object class="GtkLabel" id="label1">
|
19
|
-
<property name="visible">True</property>
|
20
|
-
<property name="can_focus">False</property>
|
21
|
-
<property name="label" translatable="yes">page 1</property>
|
22
|
-
</object>
|
23
|
-
<packing>
|
24
|
-
<property name="tab_fill">False</property>
|
25
|
-
</packing>
|
26
|
-
</child>
|
27
|
-
<child>
|
28
|
-
<placeholder/>
|
29
|
-
</child>
|
30
|
-
<child type="tab">
|
31
|
-
<object class="GtkLabel" id="label2">
|
32
|
-
<property name="visible">True</property>
|
33
|
-
<property name="can_focus">False</property>
|
34
|
-
<property name="label" translatable="yes">page 2</property>
|
35
|
-
</object>
|
36
|
-
<packing>
|
37
|
-
<property name="position">1</property>
|
38
|
-
<property name="tab_fill">False</property>
|
39
|
-
</packing>
|
40
|
-
</child>
|
41
|
-
<child>
|
42
|
-
<placeholder/>
|
43
|
-
</child>
|
44
|
-
<child type="tab">
|
45
|
-
<object class="GtkLabel" id="label3">
|
46
|
-
<property name="visible">True</property>
|
47
|
-
<property name="can_focus">False</property>
|
48
|
-
<property name="label" translatable="yes">page 3</property>
|
49
|
-
</object>
|
50
|
-
<packing>
|
51
|
-
<property name="position">2</property>
|
52
|
-
<property name="tab_fill">False</property>
|
53
|
-
</packing>
|
54
|
-
</child>
|
55
|
-
</object>
|
56
|
-
</child>
|
57
|
-
</template>
|
58
|
-
</interface>
|