From: Jacek Podkanski Date: 2002-09-10T01:51:51+09:00 Subject: Re: Ruby-gtk, Gtk::Text question. it didn't work LESS wrote: > Am Mon, 2002-09-09 um 13.51 schrieb Jacek Podkanski: >> Hi, >> What should I do to make my Gtk::Text widget accept keyboard input >> without need of clicking on it first? > > try text.set_editable(true) > text.grab_focus > Sorry, but it didn't work. Below is a program I'm trying to write. ################################################################ #!/usr/bin/ruby require 'gtk' class Status_bar < Gtk::Label def initialize(vbox,m='') @label=Gtk::Label.new(m) vbox.pack_start(@label,false,false) end def message(m) @label.set_text(m) end end#class class Text def initialize(vbox) @text=Gtk::Text.new @text.set_editable(true) @text.grab_focus #it didn't work here ################################# ####################################################################### #t='ala ma kota' #@text.insert_text(t,0) #@text.signal_connect("grab_focus") {puts 'you got focus now'} @text.signal_connect("key_press_event") {|w,e| $com.set_status('you pressed key *** '+e.keyval.to_s) #puts @text.has_focus?,'######' } vbox.pack_start(@text,true,true) end end#class class Menu def initialize(vbox) #super 'menu will go here' @menubar=Gtk::MenuBar.new vbox.pack_start(@menubar,false,false) menubaritem = Gtk::MenuItem.new("File") @menubar.append(menubaritem) filemenu=Gtk::Menu.new#menu under 'File' that contains 'Quit' item menubaritem.set_submenu(filemenu) quit=Gtk::MenuItem.new('Quit') filemenu.append(quit) quit.signal_connect("button_press_event") { puts 'you pressed Menu/File/Quit' $com.quit } help=Gtk::MenuItem.new('Help') @menubar.append(help) helpmenu=Gtk::Menu.new help.set_submenu(helpmenu) about=Gtk::MenuItem.new 'About' helpmenu.append(about) about.signal_connect("button_press_event") { $com.set_status('Author: Jacek Podkanski') } end end#class class Toolbar def initialize(vbox) @label=Gtk::Label.new('toolbar will be here') vbox.pack_start(@label,false,false) end end#class class Com #program in such way that you don't need --> attr_reader :ed def initialize(edytorek); @ed=edytorek; end def quit puts 'quitting'; exit end def set_status(m='') @ed.status.message(m) end end#class ################################################################### class Edytorek attr_reader :status def initialize $com=Com.new(self) window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL) window.set_title('edytorek') window.signal_connect("delete_event") { $com.quit } window.signal_connect("destroy_event") { $com.quit } #window.signal_connect("key_press_event") {|w,e| # $com.set_status('Nacisnales klawisz '+e.keyval.to_s) #} vbox=Gtk::VBox.new() window.add(vbox) @menu=Menu.new(vbox) @toolbar=Toolbar.new(vbox) @text=Text.new(vbox) @status=Status_bar.new(vbox) $com.set_status('statusbar will go here...') window.show_all #window.set_default_size( 200,200 ) window.set_uposition( 0,0 ) Gtk::main() end#def end#class if $0==__FILE__ Edytorek.new end ###################################################### -- Jacek Podkanski