class GSuper::Program
Public Instance Methods
create_main_window(super_window)
click to toggle source
# File lib/gsuper/program.rb, line 47 def create_main_window(super_window) return Window.new.tap { |window| window.signal_connect("delete-event") { window.hide true } window.border_width = 18 VBox.new(false, 18).tap { |vbox| HBox.new(false, 12).tap { |hbox| font_button = FontButton.new.tap { |font_button| font_button.font_name = @settings['font'] } font_button.signal_connect('font-set') { @settings['font'] = super_window.font_name = font_button.font_name } color_hbox = HBox.new(true, 0).tap { |color_hbox| color_button1 = ColorButton.new.tap { |b| b.color = super_window.text_color b.signal_connect('color-set') { super_window.text_color = b.color @settings['text-color'] = Color::pango_triple(b.color) } } color_button2 = ColorButton.new.tap { |b| b.color = super_window.shadow_color b.signal_connect('color-set') { super_window.shadow_color = b.color @settings['shadow-color'] = Color::pango_triple(b.color) } } color_hbox.pack_start(color_button1, false) color_hbox.pack_start(color_button2, false) } toggle_button = ToggleButton.new("字幕操作") toggle_button.active = super_window.interactive? toggle_button.modify_bg(Gtk::STATE_ACTIVE, Color::gdk_color([0, 1.0, 0])) toggle_button.signal_connect('toggled') { toggle_button.active = super_window.interactive = !super_window.interactive? } hbox.pack_start(font_button, false) hbox.pack_start(color_hbox, false) hbox.pack_start(toggle_button, false) vbox.pack_start(hbox, false) } text_view = TextView.new text_view.wrap_mode = TextTag::WRAP_WORD_CHAR text_view.buffer.signal_connect('changed') { @settings['text'] = super_window.text = text_view.buffer.text } ScrolledWindow.new.tap { |sw| sw.hscrollbar_policy = POLICY_AUTOMATIC sw.vscrollbar_policy = POLICY_AUTOMATIC text_view.buffer.text = @settings['text'] sw.add(text_view) vbox.pack_start(sw) } window.add(vbox) } } end
create_status_icon(popup_menu, super_window, main_window)
click to toggle source
# File lib/gsuper/program.rb, line 117 def create_status_icon(popup_menu, super_window, main_window) status_icon = StatusIcon.new status_icon.title = "gsuper" status_icon.tooltip = "gsuper" status_icon.pixbuf = Gdk::Pixbuf.new(File.dirname(__FILE__) + '/images/icon.png') status_icon.signal_connect("activate") {|s| main_window.present # p [:activate, @present] } status_icon.signal_connect('popup-menu') do |widget, button, time| # p [:"popup-menu", widget, button, time] popup_menu.popup(nil, nil, button, time) end status_icon.signal_connect('scroll-event') do |widget, event| # p [:"scroll-event", widget, event] end return status_icon end
create_super_window()
click to toggle source
# File lib/gsuper/program.rb, line 136 def create_super_window super_window = SuperWindow.new super_window.text = @settings['text'] super_window.font_name = @settings['font'] super_window.text_color = Color::gdk_color @settings['text-color'] super_window.shadow_color = Color::gdk_color @settings['shadow-color'] super_window.resize(@settings['super-width'], @settings['super-height']) super_window.move(@settings['super-x'], @settings['super-y']) super_window.signal_connect('configure-event') do |_widget, config| @settings['super-x'] = config.x @settings['super-y'] = config.y @settings['super-width'] = config.width @settings['super-height'] = config.height false end return super_window end
run()
click to toggle source
# File lib/gsuper/program.rb, line 154 def run @present = true @settings = Settings.load at_exit { # STDERR.puts "saving settings" Settings.save(@settings) } @super_window = create_super_window @super_window.show @window = create_main_window(@super_window) menu = create_popup_menu @status_icon = create_status_icon(menu, @super_window, @window) @window.show_all Gtk.main end