OberonCore
https://forum.oberoncore.ru/

Пересмотр внутренней структуры BB
https://forum.oberoncore.ru/viewtopic.php?f=127&t=4654
Страница 6 из 7

Автор:  Иван Денисов [ Воскресенье, 08 Декабрь, 2013 01:35 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Пётр Кушнир писал(а):
Или не решат.
Не знаю. Но, я бы не стал недооценивать Роберта :) думаю, он сам кому надо поможет.

А вот благодаря тому, что ты нашел формулу петли, мы скоро узнаем как это можно будет сделать на двух ОС. Мне придется делать так-же для своих графиков, не зря изучал этот hook )))

Автор:  Пётр Кушнир [ Воскресенье, 08 Декабрь, 2013 01:42 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Напомню, что оригинал обсуждаемой схемы вот здесь.
Как можно увидеть в правой части - стрелочки красные только внизу.
А Host-для-компонентов не импортирует Host.
Поэтому не подойдет твое решение, Иван. Ты закопаешься в гонке за интерфейсом хоста.
А уж новым пользователям я вообще не хочу повторять пять страниц этого обсуждения.

Вложения:
Комментарий к файлу: обсуждаемая схема
Снимок.PNG
Снимок.PNG [ 30.39 КБ | Просмотров: 5731 ]

Автор:  Иван Денисов [ Воскресенье, 08 Декабрь, 2013 01:52 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Не понял тебя, если честно. Сегодня нет возможности продолжить, до связи. Я подозреваю, что противоречие исключительно внешнее, терминологическое, а говорим мы про одно и то-же.

Автор:  Пётр Кушнир [ Воскресенье, 08 Декабрь, 2013 02:05 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Что делает Роберт:
Код:
IMPORT HostPorts, WinApi;
и по накатанным рельсам.
При том, что HostPorts меняется от ОС к ОС, это забавно.
В общем, я прекрасно понимаю, о чем вы мне рассказываете, но мы этот вариант уже обдумали, он недостаточно верный. Полумеры не нужны, только время на них тратить. :|

Автор:  Иван Денисов [ Воскресенье, 08 Декабрь, 2013 07:48 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Пётр Кушнир писал(а):
Что делает Роберт:
Код:
IMPORT HostPorts, WinApi;
и по накатанным рельсам.
При том, что HostPorts меняется от ОС к ОС, это забавно.
В общем, я прекрасно понимаю, о чем вы мне рассказываете, но мы этот вариант уже обдумали, он недостаточно верный. Полумеры не нужны, только время на них тратить. :|
Просто, чтобы получить доступ к HostPorts.Rider или к константам нажатия клавиш мыши... это поправить, все равно, что пыль смахнуть. Вы потрудитесь посмотреть дальше секции импорта! Есть логика в дизайне ББ, и она годится как исходная точка для исправления и аккумуляции фиксов, которых наберется отсилы 5%.

Автор:  Пётр Кушнир [ Вторник, 24 Декабрь, 2013 14:22 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Для лучшего понимания структуры ББ визуализировал схему взаимных реализаций для трех подсистем System + Std + Host (для Windows).
Можно заметить, что левая крупная группа реализует возможности работы ББ вообще, а правая часть реализует все, что касается пользовательского интерфейса и работы с документами.

Вложения:
Комментарий к файлу: схема
bbdirhooks.png
bbdirhooks.png [ 38.72 КБ | Просмотров: 5606 ]

Автор:  Иван Кузьмицкий [ Суббота, 28 Декабрь, 2013 20:39 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Произвёл собственную герметизацию хоста для лучшего понимания. Взял эталон ББ и прошёл по пути Петра (кое-где сделал по-своему).

На уровне хоста зафиксированы подсистемы Comm, Ole, Win, x86win32host. Ещё пара модулей SqlOdbc, SqlOdbc3 нетронуты. Все стандартные менюшки указывают на новый хост (на мой взгляд, изменить меню под новый хост совершенно несложно, дело нескольких минут). С подсистемой Comm даже не стал разбираться. На данный момент это для меня неактуально, а гарантировать работоспособность перелопаченной Comm пока что не возьмусь.

Мою сборку можно поднять по следующему алгоритму:

1. Склонировать репозиторий
Код:
hg clone https://akastargazer@bitbucket.org/akastargazer/bb.kia

2. Положить в папку bb.kia комплект ББ в одном .EXE (инструкцию по сборке такого комплекта брать здесь, а собирать лучше всего в эталоне)

3. Запустите однофайловый ББ. Скорее всего, это будет MyBlackBox.exe, и перетащите в него документ bb.kia\Docu\KuzmitskyIA\About.odc (через меню File, Open это сделать не получится - так как будет мешать System\Rsrc\Menus, нацеленное на новый хост).

4. Выполните все три шага из раздела 1.2 Компиляция сборки. Там надо методично откомпилировать все исходники (методично - потому что компилятор будет постоянно запрашивать разрешение на создание каталогов Code и Sym для каждой подсистемы), скомпилировать псевдомодуль и собрать новый пускач.

Закрывайте ненужный теперь MyBlackBox и запускайте x86win32.exe.

История герметизации описана в документе "bb.kia\Docu\KuzmitskyIA\My hermetization.odc".

Что я могу сказать по итогам работы? Хотя система и носит название BlackBox, но есть довольно много архитектурных вещей, которые по тем или иным причинам нарушают провозглашённый принцип чёрного ящика. Для меня было важно разобраться с этими нарушениями для того, чтобы было легче строить новые хосты.

Автор:  Пётр Кушнир [ Воскресенье, 29 Декабрь, 2013 01:32 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Иван Кузьмицкий писал(а):
1. Склонировать репозиторий
Код:
hg clone https://akastargazer@bitbucket.org/akastargazer/bb.kia
Только не нужно использовать имя пользователя akastargazer :)
Иван Кузьмицкий писал(а):
История герметизации описана в документе "bb.kia\Docu\KuzmitskyIA\My hermetization.odc".

Что я могу сказать по итогам работы? Хотя система и носит название BlackBox, но есть довольно много архитектурных вещей, которые по тем или иным причинам нарушают провозглашённый принцип чёрного ящика. Для меня было важно разобраться с этими нарушениями для того, чтобы было легче строить новые хосты.
Отличная работа, она демонстрирует, какой относительно небольшой переход необходим для улучшения ситуации с заменой хост-части. Теперь действительно, ничего не мешает сделать x86ubuntu из содержимого известной сборки и получить полноценную кроссплатформенную виндовс+линукс сборку ББ.
"My hermetization.odc", "Мои университеты" :)

Автор:  Иван Кузьмицкий [ Воскресенье, 29 Декабрь, 2013 09:44 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Да, вот правильная ссылка:
Код:
hg clone https://bitbucket.org/akastargazer/bb.kia

Автор:  Евгений Темиргалеев [ Воскресенье, 29 Декабрь, 2013 14:47 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Info21 писал(а):
Иван Кузьмицкий писал(а):
ББ выглядит так, будто его кроили из двух важных концепций.
Первая из них - это объектная оберон-ОС, к её реализации отнеслись серьёзно и она проработана прекрасно.
Вторая из них - прокладка между первой концепцией и гостевой ОС, где возникают явные сложности с качественной проработкой абстракций самой ОС.
В этои и была главная фишка замысла: к оберон-ОС приделать skin, подстраивающийся под look-and-feel гостевой ОС.

И все сложности именно оттуда, от гостевых ОС, за которыми не угонишься.

Возможно, надо наплевать на look-and-feel. Не гнаться.
Иметь чирикающий Оберон с более-менее общепринятыми интерфейсами важнее, чем фокусы с полной мимикрией под гостевую ОС.
По-моему, замысел оказался не удачен. Сначала приклепали кнопки, потом их вид под look-and-feel. Вот до сих пор формы с кнопками и клепаются... лет 20 уже?

А вопрос портирования того, что получилось, о проблемах которого говорит Иван, может быть ещё одним примером пробивания стены (viewtopic.php?p=85010#p85010). Очевидно, что портировать ББ без кнопок и форм, особенно look-and-feel, гораздо проще, чем с ними. Но сама проблема рассмотрения этого вопроса обычно упирается в "а как же мы без форм и кнопок?"...

Автор:  Kemet [ Воскресенье, 29 Декабрь, 2013 15:42 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Иван Кузьмицкий писал(а):
Мою сборку можно поднять по следующему алгоритму:

Почему бы не сделать нормальную сборку, чтобы исключить эти танцы с бубном, чтобы скачать и запустить.

Автор:  Димыч [ Воскресенье, 29 Декабрь, 2013 16:09 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Kemet писал(а):
Иван Кузьмицкий писал(а):
Мою сборку можно поднять по следующему алгоритму:

Почему бы не сделать нормальную сборку, чтобы исключить эти танцы с бубном, чтобы скачать и запустить.

Потому, полагаю, что это work in progress.

Автор:  Иван Кузьмицкий [ Воскресенье, 29 Декабрь, 2013 16:36 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Kemet писал(а):
Иван Кузьмицкий писал(а):
Мою сборку можно поднять по следующему алгоритму:

Почему бы не сделать нормальную сборку, чтобы исключить эти танцы с бубном, чтобы скачать и запустить.
Откуда вы знаете, где я компилирую мою сборку? Кодовые могут быть совершенно левые. Чтобы гарантировать кодовые, я храню в репе только исходники. И правильно Димыч сказал, работа всё ещё in progress. Кстати, создать запускаемую сборку очень легко - это всего лишь вопрос упаковки папки bb.kia, только какой в этом смысл? Там обычный ББ, ничего интересного :)

Автор:  adva [ Пятница, 22 Декабрь, 2017 16:30 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Иван Денисов писал(а):
Как показывает опыт с Gtk2 + Pango, а также с Cairo, Ports доделывать не сложно. Современные требования к каркасу в плане графики возросли, поэтому логично рассмотреть вопрос о его обновлении.

А нет исходников, где можно было бы глянуть работу с панго? А то как понял, через cairo текст не очень то просто выводить.

Автор:  Иван Денисов [ Пятница, 22 Декабрь, 2017 17:35 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

adva писал(а):
Иван Денисов писал(а):
Как показывает опыт с Gtk2 + Pango, а также с Cairo, Ports доделывать не сложно. Современные требования к каркасу в плане графики возросли, поэтому логично рассмотреть вопрос о его обновлении.

А нет исходников, где можно было бы глянуть работу с панго? А то как понял, через cairo текст не очень то просто выводить.

https://github.com/bbcb/bbcp/blob/maste ... /Fonts.odc

Автор:  Trurl [ Пятница, 22 Декабрь, 2017 18:31 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Через pango текст тоже непросто выводить. Pango вообще текст не выводит, а только размечает, как его надо выводить.

Автор:  adva [ Пятница, 22 Декабрь, 2017 19:09 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Спасибо, Иван!

Trurl писал(а):
Через pango текст тоже непросто выводить. Pango вообще текст не выводит, а только размечает, как его надо выводить.

На первый взгляд, сложность будет сопоставима с работой через cairo. Видимо пока отложу вывод "разнокалиберного" текста, на конец, пока буду простой через cairo выводить.

Вопрос такой: не смог через кайро вывести русскую строку.

Тип для вывода текста, задан как:

Код:
String* =  POINTER TO ARRAY [untagged] OF SHORTCHAR; (* UTF-8 encoded string *) (* unsafe *)


Если пытаюсь типу присвоить, например, "Привет", то ругается на несовместимость. Если же меняю массив на CHAR, то для английского выводится только первая буква (или так выглядит), а для русского какие-то непонятные комбинации

Автор:  adva [ Пятница, 22 Декабрь, 2017 19:15 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Хотя про вывод текста еще вопрос: в принципе хватило бы стандартного вывода текста блекбоксом, но можно ли как то его поместить на поверхность кайро? Как вариант наверное можно в рисунок преобразовать, а рисунок уже использовать в кайро, или есть другие варианты? Опять же, как в рисунок сохранить можно стандартную текстовую вьюшку?

Автор:  Иван Денисов [ Пятница, 22 Декабрь, 2017 21:04 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Текст надо конвертировать в UTF8 с помощью команды Strings.StringToUtf8. В Блэкбоксе строки в UTF16.

Автор:  Trurl [ Суббота, 23 Декабрь, 2017 12:26 ]
Заголовок сообщения:  Re: Пересмотр внутренней структуры BB

Alexander Shiryaev писал(а):
А если HostFiles ("EmbedFiles") уже и так будет загружен (статически), то зачем ещё один HostFiles?

А вот почему у TextModels есть внутри StdModel, а у Files нету? Хотя заменить реализацию текстов куда больше поводов.

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