Оберон-клуб «ВЄДАsoft»
https://zx.oberon.org/forum/

коммандер vs консоль - вопросы эргономики
https://zx.oberon.org/forum/viewtopic.php?f=2&t=409
Страница 1 из 1

Автор:  budden [ 30 сен 2018, 12:07 ]
Заголовок сообщения:  коммандер vs консоль - вопросы эргономики

Здесь будет обсуждаться идея консоли для BlackBoxComponentBuilder. Каков бы ни был консольный интерпретатор по семантике, у него есть и внешнее оформление. Культура даёт понятие о консоли (в видео ещё не упомянут psql из postgres, в нём тоже есть важные культурные элементы). Но у ББКБ - своя культура, у него есть коммандеры, которые похожи на "рабочие тетради" Mathematica с другой организацией функционала.

Моя цель на данный момент - минимальными усилиями сделать всё это удобным (сейчас оно не удобно) и, по возможности, взять лучшее из обеих культур.

Один очевидный вариант - такой (он обсуждался в теме про REPL).
Цитата:
некая горячая клавиша (допустим, Ctrl-m или Ctrl-j) вставляла бы значёк завершения коммандера и сразу выполняла последний коммандер (в интерпретаторе Евгения).


А теперь хватит болтать - попробую реализовать. Единственное, что горячая клавиша после выполнения команды должна ещё вставлять новый коммандер в конец текста, так, чтобы вывод от команды Out шёл выше этого коммандера. Это, наверное, будет нелегко.

Автор:  budden [ 30 сен 2018, 13:50 ]
Заголовок сообщения:  Re: коммандер vs консоль - вопросы эргономики

Нда, не особо пока продвинулся. Бесит всё же необходимость всё время выделять слово мышью. Нашёл HasSelection, GetSelection - оно во многих местах используется. Два вопроса к знатокам:

- где находится обработчик двойного щелчка мышью, который выделяет слово?

- где может находиться код, который при исчезновении выделения делает команду ГлавноеМеню/Инфо/Исходный текст невидимой? (Ответ: - это «сторож» - последний пункт в описании меню, в данном случае - TextCmds.SelectionGuard).

Автор:  ivan_denisov [ 30 сен 2018, 16:22 ]
Заголовок сообщения:  Re: коммандер vs консоль - вопросы эргономики

Можно не делать выделение мышью, а считывать текст задом наперед от места где стоит каретка до первого отображения, которое попадется. И потом считать вперед до того места где была каретка и это отправить в интерпретатор.

Автор:  budden [ 30 сен 2018, 16:39 ]
Заголовок сообщения:  Re: коммандер vs консоль - вопросы эргономики

А где можно позаимствовать код, который ищет отображение назад? Я пока нашёл StdCmds.SelectNextView, но оно не связано с текущей позицией в тексте.

Двойной щелчок я искал, чтобы сделать возможность искать исходник без того, чтобы сначала выделять слово. Т.е. заменить GetSelection на какое-нибудь подлежащее написанию GetSelectionOrCurrentWord.

Автор:  budden [ 30 сен 2018, 17:03 ]
Заголовок сообщения:  Re: коммандер vs консоль - вопросы эргономики

Пока с помощью «разврата мозга» нашёл такой фрагмент стека:
Код: "OBERON"
  1.  
  2. TextSetters.StdSetter.GetWord
  3. TextControllers.GetThisChunk
  4. ...
  5. Containers.Track
  6. TextControllers.Controller.HandleCtrlMsg
  7. ...
  8. HostWindows.Window.ForwardCtrlMsg
  9. HostWindows.Window.MouseDown
  10.  

Пока не очень понятно, где именно нужно ткнуть, чтобы отловить именно двойное нажатие мыши, но да ладно. GetThisChunk/GetWord содержат код для поиска текущего слова.

Автор:  budden [ 30 сен 2018, 17:58 ]
Заголовок сообщения:  Re: коммандер vs консоль - вопросы эргономики

Пока ходил за водой, дошло, что сам коммандер-то ищет свой конец. Вижу такой стек:
Код: "OBERON"
  1.  
  2. DevCommanders.Execute
  3. DevCommanders.Track
  4. DevCommanders.StdView.HandleCtrlMsg
  5.  

В HandleCtrlMsg есть modifiersSet - видимо, тут надо искать инфу о том, что это двойное или одинарное нажатие.
Execute выкусывает команду (слишком долго сегодня над этим сижу, придётся прерваться, продолжение следует).

Автор:  budden [ 01 окт 2018, 16:55 ]
Заголовок сообщения:  Re: коммандер vs консоль - вопросы эргономики

Есть проблемка. Смыслы текста в коммандере уже заняты. Если без кавычек - то это команда. Если поменять смысл, сломается совместимость. Вот и сижу, думаю, нормально ли будет так:
- в двойных кавычках - всё по старому
- без кавычек - всё по старому
- > - точка входа в новый интерпретатор

У Евгения Темиргалеева в начале каждой команды стоит ipuiK288.Exec, что несколько избыточно.

Страница 1 из 1 Часовой пояс: UTC + 2 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/