2013-02-26 52 views
0

我正在为我的应用程序“查找并重新添加按钮”。我正在使用gtk和红宝石。如果有的话,我可以找到多少字。另外,我想获得搜索词的选择词,我应该标记它们。我的一些代码:如何设置textView的标记?

def search(ent, txtvu) 
start = txtvu.buffer.start_iter 
first, last = start.forward_search(ent.text, Gtk::TextIter::SEARCH_TEXT_ONLY, nil) 
count = 0 
while (first) 
mark = start.buffer.create_mark(nil, first, false) 
txtvu.scroll_mark_onscreen(mark) 
txtvu.buffer.delete_mark(mark) 
txtvu.buffer.select_range(first, last) 
start.forward_char 
first, last = start.forward_search(ent.text, Gtk::TextIter::SEARCH_TEXT_ONLY, nil) 
start = first 
count += 1 
end 

count说我有多少单词涉及我的代码不起作用。 :(为什么呢?我想,以纪念所有的搜索词。

+0

请您提供失败的例子吗?伯爵不计数?选择不适用?它是“Ruby-GNOME2”吗?如果是,文档清楚地说,[select_range](http://ruby-gnome2.sourceforge.jp/hiki.cgi?Gtk%3A%3ATextBuffer#select_range)也不应该工作。 – mudasobwa 2013-02-26 05:00:49

回答

0

如果我理解正确的话,你要突出所有发现的话,不只是一个。在这种情况下,select_range是不是调用的函数,因为它。将选择更改为当前的单词,并GtkTextView选择单一,连续

相反,创建一个亮点标记,并将其应用到所有的搜索,例如:

# create the "highlight" tag (run this only once) 
textvu.buffer.create_tag("highlight", {background => "yellow"}) 

# ... later, in the loop: 
textvu.buffer.apply_tag("highlight", first, last) 

你的比赛都会出现高亮。

+0

感谢您的帮助 – deniz 2013-03-06 19:53:50