OberonCore
https://forum.oberoncore.ru/

Tyler - Плиточный BlackBox
https://forum.oberoncore.ru/viewtopic.php?f=24&t=6525
Страница 1 из 1

Автор:  adimetrius [ Понедельник, 30 Декабрь, 2019 00:53 ]
Заголовок сообщения:  Tyler - Плиточный BlackBox

Коллеги,

Представляю вам Tyler - плиточный оконный менеджер для BlackBox. Клонировать: https://github.com/adimetrius/Tyler или скачать:
Вложение:
Tyler.StdCoded.odc [1.15 МБ]
Скачиваний: 165

Инструкции - в Quick-Start.

Приглашаю присоединиться к тестированию и обкатке. Приветствую положительную обратную связь, вопросы, конструктивные предложения и сообщения об ошибках.

Проект Tyler - это одноименная подсистема (Tyler) + ряд изменений в стандартных модулях BB, которые оказались необходимы или желательны в связи с существенной перетряской оконной системы. Больше всего изменились интерфейсы Windows и HostWindows, расширена реализация и интерфейс Views, кое-что подправлено в Kernel; ряд модулей потребовали незначительных поправок в связи с изменением интерфейса Windows.

Поэтому Tyler не получится "добавить" к вашему BlackBox secondary directory. Tyler сейчас можно установить в пустую папку и потестировать. Скорее всего, получится "скопировать" в Тайлер ваши рабочие проекты и попробовать их оттуда - если они не завязаны жестко на Windows/HostWindows.

Поставляется в скомпилированном виде. Исходники поставляются только от самой подсистемы Tyler и модуль Config. В ближайшее время опубликую и прочие правленные исходники и "пояснительные записки" к ним - после того, как закончу их "подчистку".

Кратко - возможности и снимок:
Окно разделено на три дорожки. Лог и какой-нибудь блокнотный документ открываются в системной (левой) дорожке, документы - в пользовательской (по центру); в дополнительную (справа) можно перетаскивать документы.
Пользовательская и дополнительная - с вкладками, системная - делится между всеми открытыми там документами.
Границы между дорожками и документами можно двигать мышью (и программно, канешн).

Трапы и прочие дампы Variables отправляются в дополнительный трек (справа); "отправляются" эвристикой, которую можно изменять или настраивать.

Плиточные окна сочетаются с неплиточными - открыто окно поиска.

Состав дорожек определяется гибко, можно сделать "под себя". Можно несколько плиточных окон (метаокон) - для двух- и трехголовых компьютеров.

Вложения:
Снимок Тайлер.png
Снимок Тайлер.png [ 311.93 КБ | Просмотров: 965 ]

Автор:  adimetrius [ Понедельник, 30 Декабрь, 2019 07:56 ]
Заголовок сообщения:  Re: Tyler - Плиточный BlackBox

Существенное ограничение: пока только под Linux.

Автор:  Пётр Кушнир [ Понедельник, 30 Декабрь, 2019 21:02 ]
Заголовок сообщения:  Re: Tyler - Плиточный BlackBox

А что конкретно не получилось, ради чего пожертвовали совместимостью базовых интерфейсов? Чисто интересно, что как?

Автор:  adimetrius [ Понедельник, 30 Декабрь, 2019 22:33 ]
Заголовок сообщения:  Re: Tyler - Плиточный BlackBox

Пётр Кушнир писал(а):
А что конкретно не получилось, ради чего пожертвовали совместимостью базовых интерфейсов? Чисто интересно, что как?


Самое принципиальное расширение - что теперь Views.RootFrame могут быть подфреймами. Это нужно, чтобы окна могли быть внутри окон. Раньше они всегда могли быть только "вверху": RootFrame.up = NIL. Большинству приложений, я полагаю, "по барабану" (коллеги, поправьте меня, если ваши приложения полагаются на этот инвариант).

Самые масштабные изменения - в Windows/HostWindows. Раньше Windows содержал абстрактный интерфейс, в основном вся реализация была в HostWindows. В том числе вещей, которые относятся к ББ, а вовсе не к хосту: например, управление Front и Target window, фокусное окно, и т.п. - платформо-независимые вещи.
Теперь в HostWindows остались только платформо-зависимые вещи (обработчики сигналов Gtk), все, что платформо-независимо, я перенес в Windows. Для сравнения: по числу операторов Windows вдвое увеличился, HostWindows - вдвое уменьшился.

Автор:  Пётр Кушнир [ Вторник, 31 Декабрь, 2019 00:36 ]
Заголовок сообщения:  Re: Tyler - Плиточный BlackBox

Смело, смело. Про rootFrame я бы с вами поспорил о необходимости окон внутри окон (и изменений ради этого), потому что если вы внимательно всё изучили, то понимаете, что окна внутри окон не нужны ни для какой из задач, с которыми не справятся фреймы сами по себе. По сути, окна сами по себе тоже не нужны для большинства задач.

Вообще, конечно, для таких "стандартных" вещей есть как минимум подсистема Std, То есть, я конечно поддерживаю начинание, но надо как-то вписываться, это же всё же фреймворк. Вот никто же не мешал сделать из одного окна полуабстракцию для контейнера окон (StdМультиОкно) и реализацию на уровне нового хоста. Тогда никто из клиентов окон ничего бы не понял даже.

Но ок, ок.

Автор:  Иван Денисов [ Вторник, 31 Декабрь, 2019 14:48 ]
Заголовок сообщения:  Re: Tyler - Плиточный BlackBox

Антон, замечательные наработки. Для Linux назрел SDI. Вот еще меню, как делал Иван Кузьмицкий с Петром в Sdl сборке надо будет прикрутить в окно.

adimetrius писал(а):
Самые масштабные изменения - в Windows/HostWindows. Раньше Windows содержал абстрактный интерфейс, в основном вся реализация была в HostWindows. В том числе вещей, которые относятся к ББ, а вовсе не к хосту: например, управление Front и Target window, фокусное окно, и т.п. - платформо-независимые вещи.
Теперь в HostWindows остались только платформо-зависимые вещи (обработчики сигналов Gtk), все, что платформо-независимо, я перенес в Windows. Для сравнения: по числу операторов Windows вдвое увеличился, HostWindows - вдвое уменьшился.

А эти изменения позволяют работать старой оконной системе как раньше? Надо на совместимость с Windows версией проверить.

Автор:  adimetrius [ Вторник, 31 Декабрь, 2019 17:42 ]
Заголовок сообщения:  Re: Tyler - Плиточный BlackBox

Иван, спасибо.
Иван Денисов писал(а):
А эти изменения позволяют работать старой оконной системе как раньше?

Да, позволяют. Плиточные и неплиточные окна прекрасно сочетаются. На снимке - модуль Windows открыт в независимом окне. В меню Tyler снимается галочка Вкл и все открывается по-прежнему. При желании программист может поправить эвристику, и нужные вам окна будут сами открываться независимыми.
Вложение:
Shot.png
Shot.png [ 342.1 КБ | Просмотров: 844 ]

Кстати, большинство программных несовместимостей сводится к тому, что нужно вместо, напр, Windows.dir.Focus() вызывать Windows.Focus(), так что это очень легко поправляется. При этом можно по-прежнему вызывать Windows.dir.Focus(), но при этом в консоли будет выводиться deprecation warning.

Иван Денисов писал(а):
Антон, замечательные наработки. Для Linux назрел SDI. Вот еще меню, как делал Иван Кузьмицкий с Петром в Sdl сборке надо будет прикрутить в окно.

Согласен, меню нужно сделать. Только я никак не воображу себе, как это должно быть: если меню "вкрутить" в мета-окно (которое содержит плитки), что тогда во втором мета-окне, которое, напр, на втором мониторе? Дублировать? А что делать независимым окнам? метаокно предполагается на весь экран; если открыть независимое (поверх), а потом нужно в меню - то всплывает большое метаокно и перекрывает независимое. Дублировать меню в каждом окне? Связываться с хост-менеджером окон и независимые делать Always on top? тогда они перекрывать будут окна других программ. А какие потребности будут в Production? все-таки я тайлер больше вижу как часть IDE, для продакшн людям наэн больше подойдут независимые окна со special containers/wrappers?

Автор:  adimetrius [ Вторник, 31 Декабрь, 2019 18:06 ]
Заголовок сообщения:  Re: Tyler - Плиточный BlackBox

Пётр Кушнир писал(а):
Про rootFrame я бы с вами поспорил о необходимости окон внутри окон

Про окна внутри окон я выразился неясно: визуально они внутри др др, на программном же уровне - как вы и говорите, фреймы вложены во фреймы и со всем справляются.
Пётр Кушнир писал(а):
сделать из одного окна полуабстракцию для контейнера окон (StdМультиОкно)

Я рассматривал такой вариант, но не смог так сделать. Если Мультиокно расширяет Windows.Window, то это как раз то, что сделал я - пришлось переучивать модуль Views, чтобы корни могли быть внутри корней. Если же Мультиокно не расширяет Windows.Window, то оно "выпадает" из системы доставки сообщений, и для реализации его собственного содержимого (табы, крестики, границы) нельзя использовать вьюшки.
С положительной стороны - в окно теперь кроме документа (представляющего персистентные данные - сохраняемый вид) можно вставить дополнительные произвольные (неперсистентные) виды - например, тулбар, или немодальный диалог. Пример такого диалога есть в тайлере - это диалог при закрытии несохраненного файла. (Визуально он не доведен до красоты, но как пример работоспособности выбранного подхода - вполне. И работоспособен, хоть и не красив.) См. TylerWindows.InstallAsPane.

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