topinambour 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 76fa93f28cb01a9f218e3f9bc87e64adf76ef14d
4
- data.tar.gz: 834c19b5bdc2ea89740083164ef3bed96ef12c15
3
+ metadata.gz: d9731f01ec7dc60445c7c44ff02d54fc422ca2aa
4
+ data.tar.gz: d187f4634172dbab1d86b8a174106a1013c2eff0
5
5
  SHA512:
6
- metadata.gz: 49e9f72f92b495e00b42802938f22b0359a8c5f48316b50c22ad80b2abb7c4b123a908f5f8d36546fa76535d66f31b1e365c64649fa0d200247f99c8cbdf2777
7
- data.tar.gz: 432e048bb7e5546f9e8fe3c053362fe3a0e3d3959c6b921654f6478df01b391f8d2eb0f178e0eda659ab27fa887c5df04b6d6fed3fe00c9c268883e9e8b57ba0
6
+ metadata.gz: 54a2232474f93220cfdbc90ed920d7ecfb420a1054baee9c2bf6c11af0a7a72973e176f471a97b5523aa0a13467668ad42f791a9470ef25c06a921326e2b721b
7
+ data.tar.gz: 2d9c1d7e4da1e81198406c14710c578b91b50b8ec219e845d03be0f8d846f6210e14cc7e9d018db84557cd23cfdec4461ac8c73293df690e651f9ee0f67db28d
data/README.md CHANGED
@@ -12,23 +12,17 @@ Topinambour is Terminal written with the Gtk3 and Vte3 ruby bindings from the pr
12
12
 
13
13
  ## Features
14
14
 
15
- * tabs supports
16
- * tabs can be reordered or selected through the preview mode ( `Shift + Ctrl + o` )
17
- <a href="https://raw.github.com/cedlemo/topinambour/master/screenshot2.png"><img src="https://raw.github.com/cedlemo/topinambour/master/screenshot2_prev.png" width="576" height="324" alt="Screenshot"></a>
18
-
15
+ * Tabs supports
16
+ * Tabs can be reordered or selected through the preview mode ( `Shift + Ctrl + o` )
19
17
  * Each tab can be named.
20
18
  * The configuration can be done via a Css file
21
19
  * Terminal colors can be changed on the fly and saved in the CSS configuration file
22
- <a href="https://raw.github.com/cedlemo/topinambour/master/screenshot3.png"><img src="https://raw.github.com/cedlemo/topinambour/master/screenshot3_prev.png" width="576" height="324" alt="Screenshot"></a>
23
20
  * Terminal font can be changed on the fly and saved in the CSS configuration file
24
- <a href="https://raw.github.com/cedlemo/topinambour/master/screenshot4.png"><img src="https://raw.github.com/cedlemo/topinambour/master/screenshot4_prev.png" width="576" height="324" alt="Screenshot"></a>
25
-
26
21
  * The Css file can be edited in a tab of Topinambour and saved. Each modifications are applied while you are writting them. (Use `Shift + Ctrl + w` to close the editor)
27
- <a href="https://raw.github.com/cedlemo/topinambour/master/screenshot5.png"><img src="https://raw.github.com/cedlemo/topinambour/master/screenshot5_prev.png" width="576" height="324" alt="Screenshot"></a>
28
- * Topinambour allows users to modify existing modules. For example if a user copy the css_editor.rb in the directory *~/.config/topinambour/lib/css_editor.rb*, he should be able to modify it in order to fit its needs.
22
+ * Topinambour allows users to modify existing modules. For example if a user copy the css_editor.rb in the directory *~/.config/topinambour/lib/css_editor.rb*, he should be able to modify it in order to fit its needs.
29
23
 
30
24
  ## TODO:
31
- * Regex support in the terminals in order to launch web navigator if there is an url or launch a media player if there is a match for avi file for example.
25
+ * Extand the regex support for colors pattern (hexadecimal or rgb/css form).
32
26
  * Create more Css properties in oder to configure the terminals (cursor shape or blink mode, audible bell or not ...)
33
27
  * Make Topinambour allows users to easily create their own modules. For example create a tab that will act as a MPD client. There will be widgets that control a MPD server and a GtkTree widget that displays the playlist of the MPD server for example.
34
28
 
@@ -25,30 +25,19 @@ require "fileutils"
25
25
  require "sass"
26
26
 
27
27
  CURRENT_PATH = File.expand_path(File.dirname(__FILE__))
28
- ROOT_PATH = File.expand_path("#{CURRENT_PATH}/..")
29
28
  LIB_PATH = "#{CURRENT_PATH}/../lib"
30
29
  DATA_PATH = "#{CURRENT_PATH}/../data"
31
30
  CONFIG_DIR = File.expand_path("#{ENV['HOME']}/.config/topinambour")
32
31
  USR_CSS = "#{CONFIG_DIR}/topinambour.css"
33
32
  USR_LIB_PATH = "#{CONFIG_DIR}/lib"
34
- gresource_bin = "/tmp/topinambour.gresource"
35
- gresource_xml = "#{DATA_PATH}/topinambour.gresource.xml"
36
-
37
- system("glib-compile-resources",
38
- "--target", gresource_bin,
39
- "--sourcedir", File.dirname(gresource_xml),
40
- gresource_xml)
41
-
42
- at_exit do
43
- FileUtils.rm_f(gresource_bin)
44
- end
33
+ gresource_bin = "#{DATA_PATH}/topinambour.gresource"
45
34
 
46
35
  resource = Gio::Resource.load(gresource_bin)
47
36
  Gio::Resources.register(resource)
48
37
  # Load default libraries !!WARNING!! loading order matters
49
- #%w(actions style_properties css_handler application terminal notebook color_selector font_selector
38
+
50
39
  %w(actions style_properties css_handler application terminal_regex terminal notebook color_selector font_selector
51
- terminal_chooser headerbar shortcuts window resize_message css_editor).each do |l|
40
+ terminal_chooser headerbar shortcuts window css_editor).each do |l|
52
41
  if File.exist?("#{USR_LIB_PATH}/#{l}.rb")
53
42
  require "#{USR_LIB_PATH}/#{l}.rb"
54
43
  else
@@ -25,32 +25,24 @@
25
25
  -TopinambourWindow-width: 1000;*/
26
26
  }
27
27
 
28
- TopinambourWindow GtkHeaderBar GtkEntry{
28
+ TopinambourWindow headerbar entry{
29
29
  border-radius: 4px;
30
30
  }
31
- TopinambourWindow GtkOverlay GtkBox#resize_box{
32
- background: rgba(49, 150, 188, 0.5);
33
- border: solid 1px rgba(49, 150, 188, 1);
34
- border-radius: 6px 0px 0px 0px;
35
- }
36
- TopinambourWindow GtkOverlay GtkScrolledWindow#terminal_chooser GtkBox{
37
- background-color: rgba(49, 150, 188, 0.5);
31
+
32
+ #OverviewBox {
33
+ background-color: rgba(0,0,0,0.2);
38
34
  border: solid 1px rgba(49, 150, 188, 1);
39
35
  border-radius: 6px 0px 0px 6px;
40
36
  }
41
37
 
42
- TopinambourWindow GtkOverlay GtkScrolledWindow GtkGrid GtkButton {
38
+ grid button {
43
39
  margin: 0px;
44
40
  padding: 0px;
45
- }
46
41
 
47
- TopinambourWindow GtkOverlay GtkScrolledWindow GtkGrid GtkButton GtkImage {
48
- border: solid 3px rgba(0, 0, 0, 0.0);
49
42
  }
50
43
 
51
- .tooltip {
52
- background:rgba(50, 50, 50,0.5);
53
- border:none;
54
- color: #ddd;
55
- border-radius: 0px 6px 0px 6px;
44
+ grid button image {
45
+ border: solid 3px rgba(0, 0, 0, 0.0);
46
+ margin: 0px;
47
+ padding: 0px;
56
48
  }
@@ -111,7 +111,6 @@ SECTOOLTIP
111
111
  window.show_terminal_chooser
112
112
  end
113
113
  end
114
-
115
114
  def self.gen_icon_button(icon_name, tooltip)
116
115
  button = Gtk::Button.new
117
116
  image = Gtk::Image.new(:icon_name => icon_name, :size => :button)
@@ -15,10 +15,8 @@
15
15
  # along with Topinambour. If not, see <http://www.gnu.org/licenses/>.
16
16
  class TopinambourNotebook < Gtk::Notebook
17
17
  attr_reader :visible
18
- attr_accessor :gen_preview
19
18
  def initialize
20
19
  super()
21
- @gen_preview = true
22
20
  signal_connect "hide" do
23
21
  @visible = false
24
22
  end
@@ -30,15 +28,7 @@ class TopinambourNotebook < Gtk::Notebook
30
28
  signal_connect "switch-page" do |_widget, next_page, next_page_num|
31
29
  toplevel.current_label.text = next_page.terminal_title if next_page.class == TopinambourTerminal
32
30
  toplevel.current_tab.text = "#{next_page_num + 1}/#{n_pages}"
33
-
34
- if page >= 0 && @gen_preview
35
- current.queue_draw
36
- _x, _y, w, h = current.allocation.to_a
37
- pix = current.window.to_pixbuf(0, 0, w, h)
38
- current.preview = pix if pix
39
- elsif !@gen_preview
40
- @gen_preview = true
41
- end
31
+ generate_tab_preview if page >= 0
42
32
  end
43
33
 
44
34
  signal_connect "page-reordered" do
@@ -83,4 +73,14 @@ class TopinambourNotebook < Gtk::Notebook
83
73
  def toggle_visibility
84
74
  @visible ? hide : show
85
75
  end
76
+
77
+ def generate_tab_preview
78
+ _x, _y, w, h = current.allocation.to_a
79
+ surface = Cairo::ImageSurface.new(Cairo::FORMAT_ARGB32,
80
+ w, h)
81
+ cr = Cairo::Context.new(surface)
82
+ current.draw(cr)
83
+ pix = surface.to_pixbuf(0, 0, w, h)
84
+ current.preview = pix if pix
85
+ end
86
86
  end
@@ -55,7 +55,7 @@ module TopinambourShortcuts
55
55
  when Gdk::Keyval::KEY_Right # next tab
56
56
  window.show_next_tab
57
57
  true
58
- when Gdk::Keyval::KEY_O # next tab
58
+ when Gdk::Keyval::KEY_O
59
59
  window.show_terminal_chooser
60
60
  true
61
61
  when Gdk::Keyval::KEY_E
@@ -93,7 +93,9 @@ class TopinambourTerminal
93
93
  private
94
94
 
95
95
  def parse_css_color(color_name)
96
- default_color = Gdk::RGBA.parse(DEFAULT_TERMINAL_COLORS[TERMINAL_COLOR_NAMES.index(color_name.to_sym)])
96
+ color_index = TERMINAL_COLOR_NAMES.index(color_name.to_sym)
97
+ color_value = DEFAULT_TERMINAL_COLORS[color_index]
98
+ default_color = Gdk::RGBA.parse(color_value)
97
99
  color_from_css = style_get_property(color_name)
98
100
  color = color_from_css ? color_from_css : default_color
99
101
  color
@@ -110,7 +112,8 @@ class TopinambourTerminal
110
112
 
111
113
  def add_matches
112
114
  @regexes = [:REGEX_URL_AS_IS, :REGEX_URL_FILE, :REGEX_URL_HTTP,
113
- :REGEX_URL_VOIP, :REGEX_EMAIL, :REGEX_NEWS_MAN]
115
+ :REGEX_URL_VOIP, :REGEX_EMAIL, :REGEX_NEWS_MAN,
116
+ :CSS_COLORS]
114
117
  @regexes.each do |name|
115
118
  regex_name = TopinambourRegex.const_get(name)
116
119
  flags = [GLib::RegexCompileFlags::OPTIMIZE,
@@ -138,22 +141,40 @@ class TopinambourTerminal
138
141
  def manage_regex_on_click(_widget, event)
139
142
  match, regex_type = match_check_event(event)
140
143
  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]}"
144
+ case @regexes[regex_type]
145
+ when :REGEX_EMAIL
146
+ launch_default_for_regex_match("mailto:" + match, @regexes[regex_type])
147
+ when :REGEX_URL_HTTP
148
+ launch_default_for_regex_match("http://" + match, @regexes[regex_type])
149
+ when :CSS_COLORS
150
+ launch_color_visualizer(match)
151
+ else
152
+ launch_default_for_regex_match(match, @regexes[regex_type])
153
153
  end
154
154
  end
155
155
 
156
156
  def when_terminal_title_change
157
157
  parent.toplevel.current_label.text = terminal_title
158
158
  end
159
+
160
+ def launch_default_for_regex_match(match, regex_type)
161
+ begin
162
+ Gio::AppInfo.launch_default_for_uri(match)
163
+ rescue => e
164
+ puts "error : #{e.message}\n\tfor match: #{match} of type :#{regex_type}"
165
+ end
166
+ end
167
+
168
+ def launch_color_visualizer(color_name)
169
+ dialog = Gtk::ColorChooserDialog.new(:title => color_name,
170
+ :parent => parent.toplevel)
171
+ dialog.show_editor = true
172
+ dialog.use_alpha = true
173
+ dialog.rgba = Gdk::RGBA.parse(color_name)
174
+ if dialog.run == Gtk::ResponseType::OK
175
+ clipboard = Gtk::Clipboard.get_default(Gdk::Display.default)
176
+ clipboard.text = dialog.rgba.to_s
177
+ end
178
+ dialog.destroy
179
+ end
159
180
  end
@@ -22,11 +22,12 @@ class TopinambourTermChooser < Gtk::ScrolledWindow
22
22
  set_valign(:center)
23
23
  set_name("terminal_chooser")
24
24
 
25
- generate_previews_pixbufs
25
+ window.notebook.generate_tab_preview
26
26
  generate_grid
27
27
  fill_grid
28
28
 
29
29
  @box = Gtk::Box.new(:vertical, 4)
30
+ @box.name = "OverviewBox"
30
31
  @box.pack_start(@grid, :expand => true, :fill => true, :padding => 4)
31
32
  add(@box)
32
33
  end
@@ -92,10 +93,7 @@ class TopinambourTermChooser < Gtk::ScrolledWindow
92
93
  button = Gtk::Button.new
93
94
  button.add(generate_preview_image(child.preview))
94
95
  button.set_tooltip_text(i.to_s)
95
- button.signal_connect "clicked" do
96
- @window.notebook.gen_preview = false
97
- @window.notebook.set_current_page(i)
98
- end
96
+ button.signal_connect("clicked") { @window.notebook.current_page = i }
99
97
  button
100
98
  end
101
99
 
@@ -121,28 +119,6 @@ class TopinambourTermChooser < Gtk::ScrolledWindow
121
119
  button
122
120
  end
123
121
 
124
- def generate_previews_pixbufs
125
- current_page = @window.notebook.page
126
-
127
- if @window.notebook.children.size == 1
128
- # If we have only one vte, just generate the preview
129
- _x, _y, w, h = @window.notebook.current.allocation.to_a
130
- @window.notebook.current.preview = @window.notebook.current.window.to_pixbuf(0, 0, w, h)
131
- else
132
- # If we have more terminals, just cycle through them
133
- # the previews will be generated in the "switch-page" event of the notebook
134
- begin
135
- @window.notebook.cycle_next_page
136
- end while @window.notebook.page == current_page
137
- # Here I disable the preview generation in the notebook "switch-page" event
138
- # before returning to the current page.
139
- # This is a Hack, If I don't disable the preview, all the previews will be
140
- # the same.
141
- @window.notebook.gen_preview = false
142
- @window.notebook.set_current_page(current_page)
143
- end
144
- end
145
-
146
122
  def add_drag_and_drop_functionalities(button)
147
123
  add_dnd_source(button)
148
124
  add_dnd_destination(button)
@@ -15,8 +15,7 @@
15
15
  # along with Topinambour. If not, see <http://www.gnu.org/licenses/>.
16
16
 
17
17
  # Stolen from https://github.com/GNOME/gnome-terminal/blob/master/src/terminal-regex.h
18
- module TopinambourRegex
19
- SCHEME = "(?ix: news | telnet | nntp | https? | ftps? | sftp | webcal )"
18
+ module UserPassRegexes
20
19
  USERCHARS = "-+.[:alnum:]"
21
20
  # Nonempty username, e.g. "john.smith"
22
21
  USER = "[#{USERCHARS}]+"
@@ -25,6 +24,9 @@ module TopinambourRegex
25
24
  PASS = "(?x: :#{PASSCHARS_CLASS}* )?"
26
25
  # Optional at-terminated username (with perhaps a password too), e.g. "joe@", "pete:secret@", "" */
27
26
  USERPASS = "(?:#{USER}#{PASS}@)?"
27
+ end
28
+
29
+ module IpRegexes
28
30
  # S4: IPv4 segment (number between 0 and 255) with lookahead at the end so that we don't match "25" in the string "256".
29
31
  # The lookahead could go to the last segment of IPv4 only but this construct allows nicer unittesting. */
30
32
  S4_DEF = "(?(DEFINE)(?<S4>(?x: (?: [0-9] | [1-9][0-9] | 1[0-9]{2} | 2[0-4][0-9] | 25[0-5] ) (?! [0-9] ) )))"
@@ -57,6 +59,9 @@ module TopinambourRegex
57
59
  IP_DEF = "#{IPV4_DEF}#{S6_DEF}(?(DEFINE)(?<IPV6>(?x: (?: #{IPV6_NULL} | #{IPV6_LEFT} | #{IPV6_MID} | #{IPV6_RIGHT} \
58
60
  | #{IPV6_FULL} | (?: #{IPV6V4_FULL} | #{IPV6V4_LEFT} | #{IPV6V4_MID} | #{IPV6V4_RIGHT} \
59
61
  ) (?&IPV4) ) (?! [.:[:xdigit:]] ) )))"
62
+ end
63
+
64
+ module HostnameRegexes
60
65
  # Either an alphanumeric character or dash; or if [negative lookahead] not ASCII
61
66
  # then any graphical Unicode character.
62
67
  # A segment can consist entirely of numbers.
@@ -74,17 +79,46 @@ module TopinambourRegex
74
79
  # Technically an e-mail with a single-component hostname might be valid on a local network,
75
80
  # but let's avoid tons of false positives (e.g. in a typical shell prompt). */
76
81
  EMAIL_HOST = "(?x: #{HOSTNAME2} | \\[ (?: (?&IPV4) | (?&IPV6) ) \\] )"
82
+ end
83
+
84
+ module PortRegexes
77
85
  # Number between 1 and 65535, with lookahead at the end so that we don't match "6789" in the string "67890",
78
86
  # and in turn we don't eventually match "http://host:6789" in "http://host:67890". */
79
87
  N_1_65535 = "(?x: (?: [1-9][0-9]{0,3} | [1-5][0-9]{4} | 6[0-4][0-9]{3} | 65[0-4][0-9]{2} | 655[0-2][0-9] | 6553[0-5] ) (?! [0-9] ) )"
80
88
  # Optional colon-prefixed port, e.g. ":1080", "" */
81
89
  PORT = "(?x: \\:#{N_1_65535} )?"
90
+ end
91
+
92
+ module PathRegexes
82
93
  PATHCHARS_CLASS = "[-[:alnum:]\\Q_$.+!*,:;@&=?/~#|%\\E]"
83
94
  # Chars not to end a URL */
84
95
  PATHNONTERM_CLASS = "[\\Q.!,?\\E]"
85
96
  # Lookbehind at the end, so that the last character (if we matched a character at all) is not from PATHTERM_CLASS */
86
97
  URLPATH = "(?x: /#{PATHCHARS_CLASS}* (?<! #{PATHNONTERM_CLASS} ) )?"
87
98
  VOIP_PATH = "(?x: [;?]#{PATHCHARS_CLASS}* (?<! #{PATHNONTERM_CLASS} ) )?"
99
+ end
100
+
101
+ module ColorRegexes
102
+ HEX_CLASS = "[a-fA-F0-9]"
103
+ # /*http://www.regular-expressions.info/numericranges.html*/
104
+ UINT8_CLASS = "\\b([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\\b"
105
+ PERCENT_CLASS = "(0{0,2}[0-9]\\s*\\%|0?[1-9][0-9]\\s*\\%|100\\s*\\%)"
106
+ HEX_COLOR = "#(#{HEX_CLASS}{16}|#{HEX_CLASS}{12}|#{HEX_CLASS}{9}|#{HEX_CLASS}{8}|#{HEX_CLASS}{6}|#{HEX_CLASS}{4}|#{HEX_CLASS}{3})"
107
+ RGB_COLOR = "rgb\\s*\\(\\s*#{UINT8_CLASS}\\s*\\,\\s*#{UINT8_CLASS}\\s*\\,\\s*#{UINT8_CLASS}\\s*\\)"
108
+ RGBPERC_COLOR = "rgb\\s*\\(\\s*#{PERCENT_CLASS}\\s*\\,\\s*#{PERCENT_CLASS}\\s*\\,\\s*#{PERCENT_CLASS}\\s*\\)"
109
+ RGBA_COLOR = "rgba\\s*\\(\\s*#{UINT8_CLASS}\\s*\\,\\s*#{UINT8_CLASS}\\s*\\,\\s*#{UINT8_CLASS}\\s*\\,\\s*[0-1](\\.[0-9]*)?\\s*\\)"
110
+ RGBAPERC_COLOR = "rgba\\s*\\(\\s*#{PERCENT_CLASS}\\s*\\,\\s*#{PERCENT_CLASS}\\s*\\,\\s*#{PERCENT_CLASS}\\s*\\,\\s*[0-1](\\.[0-9]*)?\\s*\\)"
111
+ CSS_COLORS = "#{HEX_COLOR}|#{RGB_COLOR}|#{RGBPERC_COLOR}|#{RGBA_COLOR}|#{RGBAPERC_COLOR}"
112
+ end
113
+
114
+ module TopinambourRegex
115
+ SCHEME = "(?ix: news | telnet | nntp | https? | ftps? | sftp | webcal )"
116
+ include UserPassRegexes
117
+ include IpRegexes
118
+ include HostnameRegexes
119
+ include PortRegexes
120
+ include PathRegexes
121
+
88
122
  # Now let's put these fragments together */
89
123
  DEFS = IP_DEF
90
124
  REGEX_URL_AS_IS = "#{DEFS}#{SCHEME}://#{USERPASS}#{URL_HOST}#{PORT}#{URLPATH}"
@@ -96,4 +130,5 @@ module TopinambourRegex
96
130
  REGEX_URL_VOIP = "#{DEFS}(?i:h323:|sips?:)#{USERPASS}#{URL_HOST}#{PORT}#{VOIP_PATH}"
97
131
  REGEX_EMAIL = "#{DEFS}(?i:mailto:)?#{USER}@#{EMAIL_HOST}"
98
132
  REGEX_NEWS_MAN = "(?i:news:|man:|info:)[-[:alnum:]\\Q^_{|}~!\"#$%&'()*+,./;:=?`\\E]+"
133
+ include ColorRegexes
99
134
  end
@@ -40,19 +40,6 @@ class TopinambourWindow
40
40
 
41
41
  terminal = TopinambourTerminal.new(cmd, working_dir)
42
42
  terminal.show
43
- terminal.signal_connect "size-allocate" do |widget|
44
- w = widget.column_count
45
- h = widget.row_count
46
- size_infos = "#{w}x#{h}"
47
- if @overlay.children.size == 1
48
- add_overlay(TopinambourResizeMessage.new(size_infos))
49
- add_resize_timeout
50
- elsif @overlay.children[1].class == TopinambourResizeMessage
51
- GLib::Source.remove(@resize_timeout) if @resize_timeout
52
- @overlay.children[1].text = size_infos
53
- add_resize_timeout
54
- end
55
- end
56
43
  @notebook.append_page(terminal)
57
44
  @notebook.set_tab_reorderable(terminal, true)
58
45
  @notebook.set_page(@notebook.n_pages - 1)
@@ -64,7 +51,7 @@ class TopinambourWindow
64
51
  @notebook.remove_all_pages
65
52
  application.quit
66
53
  end
67
-
54
+
68
55
  def show_color_selector
69
56
  toggle_overlay(TopinambourColorSelector) if @notebook.current.class == TopinambourTerminal
70
57
  end
@@ -80,10 +67,6 @@ class TopinambourWindow
80
67
  @notebook.cycle_next_page
81
68
  @notebook.current.grab_focus
82
69
  end
83
-
84
- def show_terminal_chooser
85
- toggle_overlay(TopinambourTermChooser)
86
- end
87
70
 
88
71
  def show_font_selector
89
72
  toggle_overlay(TopinambourFontSelector) if @notebook.current.class == TopinambourTerminal
@@ -95,6 +78,10 @@ class TopinambourWindow
95
78
  @notebook.set_page(@notebook.n_pages - 1)
96
79
  end
97
80
 
81
+ def show_terminal_chooser
82
+ toggle_overlay(TopinambourTermChooser)
83
+ end
84
+
98
85
  def exit_overlay_mode
99
86
  @overlay.children[1].destroy if in_overlay_mode?
100
87
  end
@@ -121,7 +108,7 @@ class TopinambourWindow
121
108
  "website_label" => "Topinambour github repository"
122
109
  )
123
110
  end
124
-
111
+
125
112
  def close_current_tab
126
113
  exit_overlay_mode
127
114
  @notebook.remove_current_page
@@ -144,7 +131,7 @@ class TopinambourWindow
144
131
  @overlay.add(@notebook)
145
132
  add(@overlay)
146
133
  end
147
-
134
+
148
135
  def create_header_bar
149
136
  @bar = TopinambourHeaderBar.generate_header_bar(self)
150
137
  @current_label = TopinambourHeaderBar.generate_current_label(self)
@@ -175,15 +162,6 @@ class TopinambourWindow
175
162
  @bar.pack_end(button)
176
163
  end
177
164
 
178
- def add_resize_timeout
179
- @resize_timeout = GLib::Timeout.add_seconds(2) do
180
- second_child = @overlay.children[1] || nil
181
- if second_child && second_child.class == TopinambourResizeMessage
182
- @overlay.children[1].hide
183
- end
184
- end
185
- end
186
-
187
165
  def toggle_overlay(klass)
188
166
  if in_overlay_mode? && @overlay.children[1].class == klass
189
167
  exit_overlay_mode
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.7
4
+ version: 1.0.8
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-04-09 00:00:00.000000000 Z
11
+ date: 2016-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: vte3
@@ -91,6 +91,7 @@ files:
91
91
  - data/tab-new-symbolic.svg
92
92
  - data/terminal-menu.ui
93
93
  - data/topinambour.css
94
+ - data/topinambour.gresource
94
95
  - data/topinambour.gresource.xml
95
96
  - data/window-close-symbolic.svg
96
97
  - data/window-menu.ui