topinambour 1.0.8 → 1.0.9

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.
@@ -1,4 +1,4 @@
1
- # Copyright 2015-2016 Cédric LE MOIGNE, cedlemo@gmx.com
1
+ # Copyright 2015-2016 Cedric LE MOIGNE, cedlemo@gmx.com
2
2
  # This file is part of Topinambour.
3
3
  #
4
4
  # Topinambour is free software: you can redistribute it and/or modify
@@ -17,7 +17,7 @@ class TopinambourTermChooser < Gtk::ScrolledWindow
17
17
  def initialize(window)
18
18
  super(nil, nil)
19
19
  @window = window
20
- set_size_request(184, @window.notebook.current.allocation.to_a[3] - 8)
20
+ set_size_request(250, @window.notebook.current.allocation.to_a[3] - 8)
21
21
  set_halign(:end)
22
22
  set_valign(:center)
23
23
  set_name("terminal_chooser")
@@ -43,11 +43,14 @@ class TopinambourTermChooser < Gtk::ScrolledWindow
43
43
 
44
44
  def fill_grid
45
45
  @window.notebook.children.each_with_index do |child, i|
46
- button = generate_preview_button(child, i)
46
+ button = Gtk::Label.new("tab. #{(i + 1).to_s}")
47
+ button.angle = 45
47
48
  @grid.attach(button, 0, i, 1, 1)
49
+ button = generate_preview_button(child, i)
50
+ @grid.attach(button, 1, i, 1, 1)
48
51
  add_drag_and_drop_functionalities(button)
49
52
  button = generate_close_tab_button
50
- @grid.attach(button, 1, i, 1, 1)
53
+ @grid.attach(button, 2, i, 1, 1)
51
54
  end
52
55
  @grid.attach(generate_separator, 0, @window.notebook.n_pages, 2, 1)
53
56
  button = generate_quit_button
@@ -84,21 +87,20 @@ class TopinambourTermChooser < Gtk::ScrolledWindow
84
87
 
85
88
  def update_preview_button_tooltip(range)
86
89
  (range).each do |j|
87
- puts j
88
90
  @grid.get_child_at(0, j).tooltip_text = j.to_s
89
91
  end
90
92
  end
91
93
 
92
94
  def generate_preview_button(child, i)
93
95
  button = Gtk::Button.new
94
- button.add(generate_preview_image(child.preview))
95
- button.set_tooltip_text(i.to_s)
96
+ button.image = generate_preview_image(child.preview)
97
+ button.set_tooltip_text((i + 1).to_s)
96
98
  button.signal_connect("clicked") { @window.notebook.current_page = i }
97
99
  button
98
100
  end
99
101
 
100
102
  def generate_preview_image(pixbuf)
101
- scaled_pix = pixbuf.scale(150, 75, Gdk::Pixbuf::INTERP_BILINEAR)
103
+ scaled_pix = pixbuf.scale(150, 75, :bilinear)
102
104
  img = Gtk::Image.new(:pixbuf => scaled_pix)
103
105
  img.show
104
106
  img
@@ -130,18 +132,19 @@ class TopinambourTermChooser < Gtk::ScrolledWindow
130
132
  [["test", Gtk::TargetFlags::SAME_APP, 12_345]],
131
133
  Gdk::DragAction::COPY |
132
134
  Gdk::DragAction::MOVE)
133
- button.drag_source_set_icon_name("grab")
135
+ #button.drag_source_set_icon_name("grab")
134
136
  # Drag source signals
135
137
  # drag-begin User starts a drag Set-up drag icon
136
138
  # drag-data-get When drag data is requested by the destination Transfer drag data from source to destination
137
139
  # drag-data-delete When a drag with the action Gdk.DragAction.MOVE is completed Delete data from the source to complete the "move"
138
140
  # drag-end When the drag is complete Undo anything done in drag-begin
139
141
 
140
- # button.signal_connect "drag-begin" do
141
- # puts "drag begin for #{index}"
142
- # end
143
- button.signal_connect("drag-data-get") do |_widget, _context, selection_data, _info, _time|
144
- index = @grid.child_get_property(button, "top-attach")
142
+ button.signal_connect "drag-begin" do |widget|
143
+ widget.drag_source_set_icon_pixbuf(widget.image.pixbuf)
144
+ end
145
+
146
+ button.signal_connect("drag-data-get") do |widget, _context, selection_data, _info, _time|
147
+ index = grid_line_of(widget)
145
148
  selection_data.set(Gdk::Selection::TYPE_INTEGER, index.to_s)
146
149
  end
147
150
  # button.signal_connect "drag-data-delete" do
@@ -169,21 +172,25 @@ class TopinambourTermChooser < Gtk::ScrolledWindow
169
172
  button.signal_connect("drag-drop") do |widget, context, _x, _y, time|
170
173
  widget.drag_get_data(context, context.targets[0], time)
171
174
  end
172
- button.signal_connect("drag-data-received") do |_widget, context, _x, _y, selection_data, _info, _time|
173
- index = @grid.child_get_property(button, "top-attach")
175
+ button.signal_connect("drag-data-received") do |widget, context, _x, _y, selection_data, _info, _time|
176
+ index = grid_line_of(widget)
174
177
  index_of_dragged_object = index
175
178
  context.targets.each do |target|
176
179
  next unless target.name == "test" || selection_data.type == :type_integer
177
- data_len = selection_data.data[1]
178
- index_of_dragged_object = selection_data.data[0].pack("C#{data_len}").to_i
180
+ data_len = selection_data.data.size
181
+ index_of_dragged_object = selection_data.data.pack("C#{data_len}").to_i
179
182
  end
180
183
  if index_of_dragged_object != index
181
184
  dragged = @window.notebook.get_nth_page(index_of_dragged_object)
182
185
  @window.notebook.reorder_child(dragged, index)
183
186
  @window.notebook.children.each_with_index do |child, i|
184
- @grid.get_child_at(0, i).image = generate_preview_image(child.preview)
187
+ @grid.get_child_at(1, i).image = generate_preview_image(child.preview)
185
188
  end
186
189
  end
187
190
  end
188
191
  end
192
+
193
+ def grid_line_of(widget)
194
+ @grid.child_get_property(widget, "top-attach")
195
+ end
189
196
  end
@@ -1,4 +1,4 @@
1
- # Copyright 2016 Cédric LE MOIGNE, cedlemo@gmx.com
1
+ # Copyright 2016 Cedric LE MOIGNE, cedlemo@gmx.com
2
2
  # This file is part of Topinambour.
3
3
  #
4
4
  # Topinambour is free software: you can redistribute it and/or modify
@@ -108,7 +108,8 @@ RGB_COLOR = "rgb\\s*\\(\\s*#{UINT8_CLASS}\\s*\\,\\s*#{UINT8_CLASS}\\s*\\,\\s*#{U
108
108
  RGBPERC_COLOR = "rgb\\s*\\(\\s*#{PERCENT_CLASS}\\s*\\,\\s*#{PERCENT_CLASS}\\s*\\,\\s*#{PERCENT_CLASS}\\s*\\)"
109
109
  RGBA_COLOR = "rgba\\s*\\(\\s*#{UINT8_CLASS}\\s*\\,\\s*#{UINT8_CLASS}\\s*\\,\\s*#{UINT8_CLASS}\\s*\\,\\s*[0-1](\\.[0-9]*)?\\s*\\)"
110
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}"
111
+ include RgbNames
112
+ CSS_COLORS = "#{HEX_COLOR}|#{RGB_COLOR}|#{RGBPERC_COLOR}|#{RGBA_COLOR}|#{RGBAPERC_COLOR}|#{COLOR_NAMES}"
112
113
  end
113
114
 
114
115
  module TopinambourRegex
data/lib/window.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright 2015-2016 Cédric LE MOIGNE, cedlemo@gmx.com
1
+ # Copyright 2015-2016 Cedric LE MOIGNE, cedlemo@gmx.com
2
2
  # This file is part of Topinambour.
3
3
  #
4
4
  # Topinambour is free software: you can redistribute it and/or modify
@@ -15,8 +15,8 @@
15
15
  # along with Topinambour. If not, see <http://www.gnu.org/licenses/>.
16
16
 
17
17
  class TopinambourWindow
18
- attr_reader :notebook, :bar, :overlay, :current_label, :current_tab, :css_editor_style
19
-
18
+ attr_reader :notebook, :bar, :overlay, :current_label, :current_tab
19
+ attr_accessor :shell, :css_editor_style
20
20
  def initialize(application)
21
21
  super(:application => application)
22
22
  set_icon_name("utilities-terminal-symbolic")
@@ -28,6 +28,9 @@ class TopinambourWindow
28
28
  signal_connect "key-press-event" do |widget, event|
29
29
  TopinambourShortcuts.handle_key_press(widget, event)
30
30
  end
31
+ signal_connect "scroll-event" do |widget, event|
32
+ TopinambourShortcuts.handle_scroll(widget, event)
33
+ end
31
34
  end
32
35
 
33
36
  def add_terminal(cmd = @shell)
@@ -82,6 +85,10 @@ class TopinambourWindow
82
85
  toggle_overlay(TopinambourTermChooser)
83
86
  end
84
87
 
88
+ def show_terminal_chooser2
89
+ toggle_overlay(TopinambourTermChooserb)
90
+ end
91
+
85
92
  def exit_overlay_mode
86
93
  @overlay.children[1].destroy if in_overlay_mode?
87
94
  end
@@ -90,20 +97,19 @@ class TopinambourWindow
90
97
  @default_width = style_get_property("width")
91
98
  @default_height = style_get_property("height")
92
99
  set_default_size(@default_width, @default_height)
93
- set_size_request(@default_width, @default_height)
94
100
  @shell = style_get_property("shell")
95
101
  @css_editor_style = style_get_property("css-editor-style")
96
102
  end
97
103
 
98
104
  def display_about
99
105
  Gtk::AboutDialog.show(self,
100
- "authors" => ["Cédric Le Moigne <cedlemo@gmx.com>"],
106
+ "authors" => ["Cedric Le Moigne <cedlemo@gmx.com>"],
101
107
  "comments" => "Terminal Emulator based on the ruby bindings of Gtk3 and Vte3",
102
- "copyright" => "Copyright (C) 2015-2016 Cédric Le Moigne",
108
+ "copyright" => "Copyright (C) 2015-2016 Cedric Le Moigne",
103
109
  "license" => "This program is licenced under the licence GPL-3.0 and later.",
104
110
  "logo_icon_name" => "utilities-terminal-symbolic",
105
111
  "program_name" => "Topinambour",
106
- "version" => "1.0.7",
112
+ "version" => "1.0.9",
107
113
  "website" => "https://github.com/cedlemo/topinambour",
108
114
  "website_label" => "Topinambour github repository"
109
115
  )
@@ -118,11 +124,28 @@ class TopinambourWindow
118
124
  @overlay.children.size > 1 ? true : false
119
125
  end
120
126
 
127
+ def show_searchbar
128
+ toggle_overlay(TopinambourSearchBar)
129
+ overlayed_widget = @overlay.children[1]
130
+ overlayed_widget.search_mode = true if overlayed_widget
131
+ end
132
+
133
+ def toggle_shrink
134
+ w, h = size
135
+ if @shrink_saved_height
136
+ resize(w, @shrink_saved_height)
137
+ @shrink_saved_height = nil
138
+ else
139
+ resize(w, 1)
140
+ @shrink_saved_height = h
141
+ end
142
+ end
143
+
121
144
  private
122
145
 
123
146
  def add_overlay(widget)
124
147
  @overlay.add_overlay(widget)
125
- @overlay.set_overlay_pass_through(widget, true)
148
+ @overlay.set_overlay_pass_through(widget, false)
126
149
  end
127
150
 
128
151
  def create_containers
@@ -133,33 +156,75 @@ class TopinambourWindow
133
156
  end
134
157
 
135
158
  def create_header_bar
136
- @bar = TopinambourHeaderBar.generate_header_bar(self)
137
- @current_label = TopinambourHeaderBar.generate_current_label(self)
138
- @current_tab = TopinambourHeaderBar.generate_current_tab
139
- add_buttons_at_begining
140
- add_buttons_at_end
141
- end
142
-
143
- def add_buttons_at_begining
144
- button = TopinambourHeaderBar.generate_prev_button(self)
145
- @bar.pack_start(button)
146
- @bar.pack_start(@current_tab)
147
- button = TopinambourHeaderBar.generate_next_button(self)
148
- @bar.pack_start(button)
149
- @bar.pack_start(@current_label)
150
- button = TopinambourHeaderBar.generate_new_tab_button(self)
151
- @bar.pack_start(button)
152
- end
153
-
154
- def add_buttons_at_end
155
- button = TopinambourHeaderBar.generate_open_menu_button(self)
156
- @bar.pack_end(button)
157
- button = TopinambourHeaderBar.generate_font_sel_button(self)
158
- @bar.pack_end(button)
159
- button = TopinambourHeaderBar.generate_color_sel_button(self)
160
- @bar.pack_end(button)
161
- button = TopinambourHeaderBar.generate_term_overv_button(self)
162
- @bar.pack_end(button)
159
+ resource_file = "/com/github/cedlemo/topinambour/headerbar.ui"
160
+ builder = Gtk::Builder.new(:resource => resource_file)
161
+ set_titlebar(builder["headerbar"])
162
+ @current_label = builder["current_label"]
163
+ current_label_signals
164
+ @current_tab = builder["current_tab"]
165
+ next_prev_new_signals(builder)
166
+ overview_font_color_signals(builder)
167
+ main_menu_signal(builder)
168
+ end
169
+
170
+ def current_label_signals
171
+ @current_label.signal_connect "activate" do |entry|
172
+ @notebook.current.custom_title = entry.text
173
+ @notebook.current.grab_focus
174
+ end
175
+
176
+ @current_label.signal_connect "icon-release" do |entry, position|
177
+ if position == :primary
178
+ close_current_tab
179
+ elsif position == :secondary
180
+ @notebook.current.custom_title = nil
181
+ entry.text = @notebook.current.window_title
182
+ end
183
+ end
184
+ end
185
+
186
+ def next_prev_new_signals(builder)
187
+ builder["prev_button"].signal_connect "clicked" do
188
+ show_prev_tab
189
+ end
190
+
191
+ builder["next_button"].signal_connect "clicked" do
192
+ show_next_tab
193
+ end
194
+
195
+ builder["new_term"].signal_connect "clicked" do
196
+ add_terminal
197
+ end
198
+ end
199
+
200
+ def overview_font_color_signals(builder)
201
+ builder["term_overv_button"].signal_connect "clicked" do
202
+ show_terminal_chooser
203
+ end
204
+
205
+ builder["font_sel_button"].signal_connect "clicked" do
206
+ show_font_selector
207
+ end
208
+
209
+ builder["colors_sel_button"].signal_connect "clicked" do
210
+ show_color_selector
211
+ end
212
+ end
213
+
214
+ def main_menu_signal(builder)
215
+ builder["menu_button"].signal_connect "clicked" do |button|
216
+ ui_file = "/com/github/cedlemo/topinambour/window-menu.ui"
217
+ winmenu = Gtk::Builder.new(:resource => ui_file)["winmenu"]
218
+ event = Gtk.current_event
219
+ menu = Gtk::Popover.new(button, winmenu)
220
+ x, y = event.window.coords_to_parent(event.x,
221
+ event.y)
222
+ rect = Gdk::Rectangle.new(x - button.allocation.x,
223
+ y - button.allocation.y,
224
+ 1, 1)
225
+ menu.set_pointing_to(rect)
226
+ menu.show
227
+ end
163
228
  end
164
229
 
165
230
  def toggle_overlay(klass)
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.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
- - Cédric LE MOIGNE
7
+ - Cedric LE MOIGNE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-23 00:00:00.000000000 Z
11
+ date: 2016-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: vte3
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 3.0.7
22
+ version: 3.0.9
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '3.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 3.0.7
32
+ version: 3.0.9
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: gtksourceview3
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '3.0'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 3.0.7
42
+ version: 3.0.9
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '3.0'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 3.0.7
52
+ version: 3.0.9
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: sass
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -86,8 +86,10 @@ files:
86
86
  - data/color-select-symbolic.svg
87
87
  - data/emblem-photos-symbolic.svg
88
88
  - data/font-select-symbolic.svg
89
+ - data/headerbar.ui
89
90
  - data/pan-end-symbolic.svg
90
91
  - data/pan-start-symbolic.svg
92
+ - data/prefs-dialog.ui
91
93
  - data/tab-new-symbolic.svg
92
94
  - data/terminal-menu.ui
93
95
  - data/topinambour.css
@@ -102,9 +104,11 @@ files:
102
104
  - lib/css_editor.rb
103
105
  - lib/css_handler.rb
104
106
  - lib/font_selector.rb
105
- - lib/headerbar.rb
106
107
  - lib/notebook.rb
108
+ - lib/preferences.rb
107
109
  - lib/resize_message.rb
110
+ - lib/rgb_names_regexes.rb
111
+ - lib/searchbar.rb
108
112
  - lib/shortcuts.rb
109
113
  - lib/style_properties.rb
110
114
  - lib/terminal.rb
@@ -136,4 +140,3 @@ signing_key:
136
140
  specification_version: 4
137
141
  summary: Ruby-gnome2 Terminal emulator
138
142
  test_files: []
139
- has_rdoc:
data/lib/headerbar.rb DELETED
@@ -1,126 +0,0 @@
1
- # Copyright 2016 Cédric 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 TopinambourHeaderBar
18
- def self.generate_header_bar(window)
19
- bar = Gtk::HeaderBar.new
20
- bar.title = "Topinambour"
21
- bar.has_subtitle = false
22
- bar.show_close_button = true
23
- window.set_titlebar(bar)
24
- bar
25
- end
26
-
27
- def self.generate_current_label_tooltips(label)
28
- label.tooltip_text = <<-TOOLTIP
29
- Change the name of the tab and hit
30
- enter in order to validate
31
- TOOLTIP
32
- label.set_icon_tooltip_text(:secondary, <<-SECTOOLTIP)
33
- Reset your changes and use the
34
- default label for the current tab
35
- SECTOOLTIP
36
- end
37
-
38
- def self.generate_current_label_signals(label, window)
39
- label.signal_connect "activate" do |entry|
40
- window.notebook.current.custom_title = entry.text
41
- end
42
-
43
- label.signal_connect "icon-release" do |entry, position|
44
- if position == :secondary
45
- window.notebook.current.custom_title = nil
46
- entry.text = window.notebook.current.window_title
47
- end
48
- end
49
- end
50
-
51
- def self.generate_current_label(window)
52
- label = Gtk::Entry.new
53
- label.has_frame = false
54
- label.width_chars = 35
55
- label.set_icon_from_icon_name(:secondary, "edit-clear")
56
-
57
- generate_current_label_tooltips(label)
58
- generate_current_label_signals(label, window)
59
- label
60
- end
61
-
62
- def self.generate_prev_button(window)
63
- gen_icon_button("pan-start-symbolic", "prev") do
64
- window.show_prev_tab
65
- end
66
- end
67
-
68
- def self.generate_current_tab
69
- Gtk::Label.new("1/1")
70
- end
71
-
72
- def self.generate_next_button(window)
73
- gen_icon_button("pan-end-symbolic", "next") do
74
- window.show_next_tab
75
- end
76
- end
77
-
78
- def self.generate_new_tab_button(window)
79
- gen_icon_button("tab-new-symbolic", "New terminal") do
80
- window.add_terminal
81
- end
82
- end
83
-
84
- def self.generate_open_menu_button(window)
85
- gen_icon_button("open-menu-symbolic", "Main Menu") do |button|
86
- builder = Gtk::Builder.new(:resource => "/com/github/cedlemo/topinambour/window-menu.ui")
87
- menu = Gtk::Menu.new(builder["winmenu"])
88
- menu.attach_to_widget(button)
89
- menu.children[0].signal_connect("activate") { window.show_css_editor }
90
-
91
- menu.show_all
92
- event = Gtk.current_event
93
- menu.popup(nil, nil, event.button, event.time)
94
- end
95
- end
96
-
97
- def self.generate_font_sel_button(window)
98
- gen_icon_button("font-select-symbolic", "Set font") do
99
- window.show_font_selector
100
- end
101
- end
102
-
103
- def self.generate_color_sel_button(window)
104
- gen_icon_button("color-select-symbolic", "Set colors") do
105
- window.show_color_selector
106
- end
107
- end
108
-
109
- def self.generate_term_overv_button(window)
110
- gen_icon_button("emblem-photos-symbolic", "Terminals overview") do
111
- window.show_terminal_chooser
112
- end
113
- end
114
- def self.gen_icon_button(icon_name, tooltip)
115
- button = Gtk::Button.new
116
- image = Gtk::Image.new(:icon_name => icon_name, :size => :button)
117
- button.add(image)
118
- button.tooltip_text = tooltip
119
- if block_given?
120
- button.signal_connect "clicked" do |widget|
121
- yield(widget)
122
- end
123
- end
124
- button
125
- end
126
- end