Обувь - очень удобный инструмент с графическим интерфейсом. Я хотел бы сделать форму поиска, чтобы пользователю помогали перемещаться по более крупным текстам для редактирования. Для этого мне нужно переместить курсор внутри элемента поля редактирования.
Здесь вы увидите мой вопрос в коде:
Shoes.app do
stack do
p=para "After pressing 'search' a question will arise"
box=edit_box
box.text = "One\nof\nthe\nmost\nstriking\ndifferences\nbetween\na\ncat\nand\na\nlie\nis\nthat\na\ncat\nhas\nonly\nnine lives."
flow :margin_top=>0.1 do
search=edit_line
button("search") do
pos=box.text.index search.text
y = box.text[0..pos].split.size-1 if pos
if not y.nil?
#For example if you searched "only" then
#cursor should jump/scroll to line 17.
#
#Anything there for cursor positioning,
#like: box.cursor=[0,y]
#
p.text = "How can I move editbox's cursor in line #{y+1}?"
else
alert "'#{search.text}' not found"
end
end
end
end
end
Есть ли способ изменить положение курсора в поле редактирования? Если нет, знаете ли вы альтернативный способ реализации?

К сожалению, «Обувь», похоже, не предоставляет возможности для этого. Это единственные методы, определенные в EditBox (он наследуется от Native, у которого есть несколько методов, но, опять же, ни одного для изменения положения курсора).
rb_define_method(cEditBox, "text", CASTHOOK(shoes_edit_box_get_text), 0);
rb_define_method(cEditBox, "text = ", CASTHOOK(shoes_edit_box_set_text), 1);
rb_define_method(cEditBox, "draw", CASTHOOK(shoes_edit_box_draw), 2);
rb_define_method(cEditBox, "change", CASTHOOK(shoes_control_change), -1);
http://github.com/why/shoes/blob/cea39a8bf9a5b7057b1824a9fab868d1f8609d69/shoes/ruby.c
атомота, добро пожаловать в StackOverflow!