Class: Kang::View

Inherits:
Object
  • Object
show all
Defined in:
lib/kang/view.rb

Instance Method Summary collapse

Constructor Details

#initialize(controller, data) ⇒ View

Returns a new instance of View.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/kang/view.rb', line 17

def initialize(controller,data)
  reg_text=data.regex_string
  match_text=data.match_string
  @controller = controller
  @data = data
  @window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
  @window.set_title  "Kang"
  @window.border_width = 10
  @window.set_size_request(600, 400)
  @window.signal_connect('delete_event') { Gtk.main_quit }

  wintop = Gtk::ScrolledWindow.new
  wintop.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS)

  winbottom = Gtk::ScrolledWindow.new
  winbottom.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS)

  winright = Gtk::ScrolledWindow.new
  winright.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)

  @statusbar = Gtk::Statusbar.new
  @statusbar.push(0,"")

  @regview = Gtk::TextView.new
  @regview.buffer.text = reg_text

  @matchview = Gtk::TextView.new
  @matchview.buffer.text = match_text
  @tags = Tags.new(@matchview)

  wintop.add(@regview)
  wintop.set_size_request(400,100)
  winbottom.add(@matchview)
  winbottom.set_size_request(400,200)

  @list_store = Gtk::ListStore.new(String, String)
  treeview = Gtk::TreeView.new(@list_store)
  renderer = Gtk::CellRendererText.new
  column0 = Gtk::TreeViewColumn.new("#",renderer, {:text => 0})
  column1 = Gtk::TreeViewColumn.new("Match",renderer, {:text => 1})
  column1.set_cell_data_func(renderer) do |tvc,cell,model,iter|
    cell.background_gdk = @tags[iter.path.to_str.to_i].background_gdk
  end
  treeview.append_column(column0)
  treeview.append_column(column1)
  treeview.selection.mode = Gtk::SELECTION_NONE
  treeview.set_size_request(200,-1)
  winright.add(treeview)
  #winright.set_size_request(200,-1)

  vpaned = Gtk::VPaned.new
  vpaned.add1(wintop)
  vpaned.add2(winbottom)
  vpaned.set_size_request(400,400)
  hpaned = Gtk::HPaned.new
  hpaned.pack1(vpaned,true,false)
  hpaned.pack2(winright,true,false)
  hpaned.set_size_request(100,-1)
  vbox = Gtk::VBox.new(false,0)
  vbox.pack_start(hpaned,true,true,0)
  @multiline = Gtk::CheckButton.new("multiline")
  vbox.pack_start(@multiline,false,false,0)
  @spinbutton = Gtk::SpinButton.new(1, 1, 1)
  @spinbutton.sensitive=false
  vbox.pack_start(@spinbutton,false,false,0)
  vbox.pack_start(@statusbar,false,false,0)
  @window.add(vbox)

  @regview.signal_connect("key-release-event") {|view,event| @controller.key_up_reg(view,event,view.buffer.text)}
  @matchview.signal_connect("key-release-event") {|view,event| @controller.key_up_match(view,event,view.buffer.text)}
  @multiline.signal_connect("clicked") {|view,event| @controller.multiline_click(view,event)}
  @spinbutton.signal_connect("value-changed") {|button| @controller.spin_change(button.value.to_i)}
end

Instance Method Details

#repaintObject



100
101
102
103
104
105
# File 'lib/kang/view.rb', line 100

def repaint
  update_status
  update_spin_count
  update_match_groups
  update_tag if @data.match
end

#startObject



91
92
93
94
95
96
97
98
# File 'lib/kang/view.rb', line 91

def start
  @window.show_all
  begin
    Gtk.main
  rescue SystemExit, Interrupt
    exit(0)
  end
end