Как разместить курсор редактирования в туфлях?

Обувь - очень удобный инструмент с графическим интерфейсом. Я хотел бы сделать форму поиска, чтобы пользователю помогали перемещаться по более крупным текстам для редактирования. Для этого мне нужно переместить курсор внутри элемента поля редактирования.

Здесь вы увидите мой вопрос в коде:

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

Есть ли способ изменить положение курсора в поле редактирования? Если нет, знаете ли вы альтернативный способ реализации?

атомота, добро пожаловать в StackOverflow!

Lucas Jones 24.01.2009 20:27
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
2
1
588
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

К сожалению, «Обувь», похоже, не предоставляет возможности для этого. Это единственные методы, определенные в 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

Другие вопросы по теме