Use normal binding for SimpleObserver.
[kaya.git] / lib / console.rb
blob27fcbf9aacc03709bf6ba0c17d25c7814d311438
1 require 'qtutils'
3 class Console < Qt::Widget
4   include Observable
6   def initialize(parent)
7     super
8     
9     layout = Qt::VBoxLayout.new
10     @output = Qt::TextEdit.new(self)
11     @input = Qt::LineEdit.new(self)
12     
13     layout.add_widget(@output)
14     layout.add_widget(@input)
15     setLayout layout
16     
17     @output.read_only = true
18     f = @output.font
19     f.family = 'monospace'
20     @output.font = f
21     @output.current_font = f
22     @bold_font = f
23     @bold_font.bold = true
25     @input.on(:returnPressed) do
26       text = @input.text
27       with_font(@bold_font) do
28         @output.append text
29       end
30       @input.text = ''
31       fire :input => text
32     end
33   end
35   def with_font(font)
36     old = @output.current_font
37     @output.current_font = font
38     yield
39     @output.current_font = old
40   end
41   
42   def append(text)
43     @output.append(text)
44   end
45 end