class GerminalWindow
Copyright 2015-2016 Cédric LE MOIGNE, cedlemo@gmx.com This file is part of Germinal.
Germinal is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.
Germinal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Germinal. If not, see <www.gnu.org/licenses/>.
Attributes
bar[R]
css_editor_style[R]
current_label[R]
current_tab[R]
notebook[R]
overlay[R]
Public Class Methods
new(application)
click to toggle source
Calls superclass method
# File lib/window.rb, line 27 def initialize(application) super(:application => application) set_icon_from_file("#{DATA_PATH}/germinal-icon.png") load_css_properties set_position(:center) create_header_bar create_containers show_all signal_connect "key-press-event" do |widget, event| GerminalShortcuts.handle_key_press(widget, event) end end
Public Instance Methods
add_terminal(cmd = @shell)
click to toggle source
# File lib/window.rb, line 40 def add_terminal(cmd = @shell) exit_overlay_mode working_dir = nil # Check if current tab is a GerminalTerminal (can be GerminalCssEditor) if @notebook.current.class == GerminalTerminal && @notebook.n_pages > 0 working_dir = @notebook.current.pid_dir end terminal = GerminalTerminal.new(cmd, working_dir) terminal.show terminal.signal_connect "size-allocate" do |widget| w = widget.column_count h = widget.row_count size_infos = "#{w}x#{h}" if @overlay.children.size == 1 add_overlay(GerminalResizeMessage.new(size_infos)) add_resize_timeout elsif @overlay.children[1].class == GerminalResizeMessage GLib::Source.remove(@resize_timeout) if @resize_timeout @overlay.children[1].text = size_infos add_resize_timeout end end @notebook.append_page(terminal, Gtk::Label.new) @notebook.set_tab_reorderable(terminal, true) @notebook.set_page(@notebook.n_pages - 1) end
close_current_tab()
click to toggle source
# File lib/window.rb, line 129 def close_current_tab exit_overlay_mode @notebook.remove_current_page end
display_about()
click to toggle source
# File lib/window.rb, line 115 def display_about Gtk::AboutDialog.show(self, "authors" => ["Cédric Le Moigne <cedlemo@gmx.com>"], "comments" => "Terminal Emulator based on the ruby bindings of Gtk3 and Vte3", "copyright" => "Copyright (C) 2015-2016 Cédric Le Moigne", "license" => "This program is licenced under the licence GPL-3.0 and later.", "logo" => Gdk::Pixbuf.new("#{DATA_PATH}/germinal-icon-128.png"), "program_name" => "Germinal", "version" => "1.2.3", "website" => "https://github.com/cedlemo/germinal", "website_label" => "Germinal github repository" ) end
exit_overlay_mode()
click to toggle source
# File lib/window.rb, line 102 def exit_overlay_mode @overlay.children[1].destroy if in_overlay_mode? end
in_overlay_mode?()
click to toggle source
# File lib/window.rb, line 134 def in_overlay_mode? @overlay.children.size > 1 ? true : false end
load_css_properties()
click to toggle source
# File lib/window.rb, line 106 def load_css_properties @default_width = style_get_property("width") @default_height = style_get_property("height") set_default_size(@default_width, @default_height) set_size_request(@default_width, @default_height) @shell = style_get_property("shell") @css_editor_style = style_get_property("css-editor-style") end
quit_gracefully()
click to toggle source
# File lib/window.rb, line 68 def quit_gracefully exit_overlay_mode @notebook.remove_all_pages application.quit end
show_color_selector()
click to toggle source
# File lib/window.rb, line 74 def show_color_selector toggle_overlay(GerminalColorSelector) if @notebook.current.class == GerminalTerminal end
show_css_editor()
click to toggle source
# File lib/window.rb, line 96 def show_css_editor css_editor = GerminalCssEditor.new(self) @notebook.append_page(css_editor, Gtk::Label.new) @notebook.set_page(window.notebook.n_pages - 1) end
show_font_selector()
click to toggle source
# File lib/window.rb, line 92 def show_font_selector toggle_overlay(GerminalFontSelector) if @notebook.current.class == GerminalTerminal end
show_next_tab()
click to toggle source
# File lib/window.rb, line 83 def show_next_tab exit_overlay_mode @notebook.cycle_next_page end
show_prev_tab()
click to toggle source
# File lib/window.rb, line 78 def show_prev_tab exit_overlay_mode @notebook.cycle_prev_page end
show_terminal_chooser()
click to toggle source
# File lib/window.rb, line 88 def show_terminal_chooser toggle_overlay(GerminalTermChooser) end
Private Instance Methods
add_overlay(widget)
click to toggle source
# File lib/window.rb, line 140 def add_overlay(widget) @overlay.add_overlay(widget) @overlay.set_overlay_pass_through(widget, true) end
add_resize_timeout()
click to toggle source
# File lib/window.rb, line 182 def add_resize_timeout @resize_timeout = GLib::Timeout.add_seconds(2) do second_child = @overlay.children[1] || nil if second_child && second_child.class == GerminalResizeMessage @overlay.children[1].hide end end end
create_containers()
click to toggle source
# File lib/window.rb, line 145 def create_containers @notebook = GerminalNotebook.new @overlay = Gtk::Overlay.new @overlay.add(@notebook) add(@overlay) end
create_header_bar()
click to toggle source
# File lib/window.rb, line 152 def create_header_bar @bar = GerminalHeaderBar.generate_header_bar(self) @current_label = GerminalHeaderBar.generate_current_label(self) @current_tab = GerminalHeaderBar.generate_current_tab add_buttons_at_begining add_buttons_at_end end
toggle_overlay(klass)
click to toggle source
# File lib/window.rb, line 191 def toggle_overlay(klass) if in_overlay_mode? && @overlay.children[1].class == klass exit_overlay_mode else exit_overlay_mode add_overlay(klass.new(self)) @overlay.children[1].show_all end end