6
7
8
9
10
11
12
13
14
15
16
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
|
# File 'lib/RelationBuilder/SearchWindow.rb', line 6
def initialize(rb)
@rb=rb
super(Gtk::Window::POPUP)
add(
Gtk::Table.new(3,2).
attach(@search_entry=Gtk::Entry.new.set_can_default(true),0,3,0,1).
attach(@left_arrow=Gtk::Button.new.set_image(Gtk::Image.new(Gtk::Stock::GO_BACK,Gtk::IconSize::SMALL_TOOLBAR)).set_can_focus(false).set_can_default(false),0,1,1,2,Gtk::EXPAND,Gtk::EXPAND).
attach(@combo=Gtk::ComboBox.new(Gtk::TreeModelFilter.new(Gtk::ListStore.new(String,TrueClass))).set_width_request(300).set_can_focus(false).set_can_default(false),1,2,1,2).
attach(@right_arrow=Gtk::Button.new.set_image(Gtk::Image.new(Gtk::Stock::GO_FORWARD,Gtk::IconSize::SMALL_TOOLBAR)).set_can_focus(false).set_can_default(false),2,3,1,2)
)
set_destroy_with_parent(true)
set_modal(true)
set_window_position(Gtk::Window::POS_CENTER_ON_PARENT)
set_decorated(false)
@combo.pack_start(renderer=Gtk::CellRendererText.new,true).add_attribute(renderer,:text,0)
@combo.model.set_visible_column(1)
@combo.signal_connect("changed"){
if @combo.active_iter and @rb.tables.has_key?(@combo.active_iter[0])
@rb.tables[@combo.active_iter[0]].center_on_me
@rb.set_focused_item(@rb.tables[@combo.active_iter[0]])
end
}
@search_entry.signal_connect("key-release-event"){|me,ev| hide if ev.keyval == Gdk::Keyval::GDK_KEY_Escape}
@combo.signal_connect("key-release-event"){|me,ev| hide if ev.keyval == Gdk::Keyval::GDK_KEY_Escape}
@left_arrow.signal_connect("pressed"){|me|
unless i=@combo.active_iter then i=@combo.model.iter_first end
ii=@combo.model.iter_first
iip=ii.clone
until ii == i do iip=ii.clone;ii.next!;end
@combo.set_active_iter(iip)
}
@right_arrow.signal_connect("pressed"){|me|
if i=@combo.active_iter then i.next! else i=@combo.model.iter_first end
@combo.set_active_iter(i)
}
@search_entry.signal_connect("key-release-event"){|me,ev|
@combo.model.child_model.each{|model,path,iter|
iter[1]=!iter[0].upcase.index(me.text.upcase).nil?
}
}
@ag=Gtk::AccelGroup.new
@ag.connect(Gdk::Keyval::GDK_KEY_f, Gdk::Window::CONTROL_MASK, Gtk::ACCEL_VISIBLE){
show_all
}
end
|