These are chat archives for defuz/sublimate

6th
Feb 2016
Vladimir Motylenko
@vldm
Feb 06 2016 00:02
@defuz у меня вопрос по поводу разделения функционала, будет ли core знать о физических величинах, к примеру о размерах View? Просто мне интересно, как должна обрабатываться команда к примеру "Клик по тексту" или "нажатие клавиши стрелка вниз" . В GTK о физических размерах знает только сам View, но он может их сообщить либо их можно изменить, просто если этим всем будет управлять Core, то тогда не нужно вообще таскать TextView и заморачиваться с адаптерами ко всем его классам, а действитель обойтись Canvas`ом.
Просто не могу определиться насколько "тупой" должна быть логика в View
Ivan Ivashchenko
@defuz
Feb 06 2016 00:03

будет ли core знать о физических величинах, к примеру о размерах View

Вообще да, но в данном случае это как раз исключение из правила.

Просто мне интересно, как должна обрабатываться команда к примеру "Клик по тексту" или "нажатие клавиши стрелка вниз"

core умеет генерировать объект HotkeyPerformer. Его задача – на вход получать нажатия клавиш, на выходе отдавать команды, которые нужно выполнить. Этот объект создается из core, но владеет ним view.

Немного сложно ответить на твой вопрос. :)
Дело в том, что по логике, core не должен заботится о физических величинах, и в большинствев случае это действительно так.
Но вот в случае с View плагинам нужна такая информация.
Но я думаю, что тут нет ничего страшного в дублировании этой инфы. Т.е. View может просто уведомлять ядро о своих характеристиках.
Ivan Ivashchenko
@defuz
Feb 06 2016 00:08
Так я хочу сделать в TUI
В общем случае виджеты сами управляют своим положением на экране, позицией скролла, фокусом и т.п. Core хранит только “модель данных”.
@vldm Важный момент – у тебя должна быть возможность перехватывать ВСЕ события TextView. Даже движение курсора по кнопке вниз должно происходить через команду в ядро. Потому что пользователь может изменить хоткей, по которому это может происходить (так происходит в плагине Vintage например).
Vladimir Motylenko
@vldm
Feb 06 2016 00:12
@defuz я понял, как раз по этому и спрашиваю, посмотрел api sublime и gtk и увидел эту несовместимость. Я правильно понимаю, что всё что нужно в api саблайма, должно быть доступно в самом core? и core не будет запрашивать информацию из view?
Ivan Ivashchenko
@defuz
Feb 06 2016 00:13

Я правильно понимаю, что всё что нужно в api саблайма, должно быть доступно в самом core?

да, на 100%

и core не будет запрашивать информацию из view?

Если я правильно тебя понял – нет. В качестве хака, можно сделать так, чтобы View уведомляло Core об изменениях своего размера и других величинах.

Но core точно не должен ходить во view для получения информации. Core вообще даже не знает о том, что есть view. Это просто объект, у которого “кто-то” дергает методы.
Vladimir Motylenko
@vldm
Feb 06 2016 00:22
@defuz ну если так, то тогда, скорее всего, буду делать всё с канваса, либо какого-то более легковесного виджета, так как в этом случае часть представления берет на себя core )
Ivan Ivashchenko
@defuz
Feb 06 2016 00:23
@vldm Мне тоже нравится такое решение, потому что оно сразу дает 100% гибкости.
Andrew
@drfels
Feb 06 2016 00:23
@vldm ты будешь разрабатывать sublimate-gtk?
Ivan Ivashchenko
@defuz
Feb 06 2016 00:25
@vldm А что ты думаешь на счет остальных компонентов редактора? Ты хочешь использовать стандартные компоненты Gtk?
Vladimir Motylenko
@vldm
Feb 06 2016 00:25
@drfels постораюсь :smile:
@defuz хотелось бы использовать по возможности стандартные, иначе интерфейс будет сильно не нативным)
Ivan Ivashchenko
@defuz
Feb 06 2016 00:27
@vldm окей!
Andrew
@drfels
Feb 06 2016 00:27
А на чем UI в Sublime? Что-то там на питоне кажись..
Ivan Ivashchenko
@defuz
Feb 06 2016 00:28
@drfels нет. самописный тулкит на С++
Vladimir Motylenko
@vldm
Feb 06 2016 00:28
Вроде как остальные компоненты не требуют такой обратной связи) а значит должно хватить стандартного)
Ivan Ivashchenko
@defuz
Feb 06 2016 00:28
@vldm Да, остальные компоненты в основном сами за себя отвечают. :)
Andrew
@drfels
Feb 06 2016 00:29
Всем доброй ночи :)
Vladimir Motylenko
@vldm
Feb 06 2016 00:29
Спокойной ночи)
Andrew
@drfels
Feb 06 2016 10:12
Screenshot - 02062016 - 12:11:20 PM.png
Я не пойму где сама структура Sublime и почему нет реализаций у функций. Мне казалось только типажи их могут не иметь.
И что-то странное они возвращают. int какие-то..
Поясните мне =)
Vladimir Motylenko
@vldm
Feb 06 2016 10:15
@drfels код нигде не используется, просто для того чтоб отталкиваться от него, а что за структура?
Andrew
@drfels
Feb 06 2016 10:38
@vldm Да в том то и дело, что её нет =) Только impl для неё, а struct Sublime нет.
Vladimir Motylenko
@vldm
Feb 06 2016 10:40
@drfels а понял, да этот код в любом случае не используется, можешь считать это псевдокодом пока что) там вон даже необязательные параметры есть, которых в rust нету.
Andrew
@drfels
Feb 06 2016 10:44
Хорошо
Ivan Ivashchenko
@defuz
Feb 06 2016 12:17
@drfels @vldm все верно, это просто черновик для того, что в будущем должно стать реализацией plugin API. Монжно не обращать внимания. :)