OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 08 Декабрь, 2019 10:25

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15  След.
Автор Сообщение
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 29 Апрель, 2010 22:39 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Илья, тогда к тебе просьба: показать те самые заглушки вместе с примером. Можно на эл. ящик (лучше обсудить в личке). Мне интересно как это работает.

Даже другой вариант: создать подсистему, ориентированную специально на работу с файлами по образу Texts.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 29 Апрель, 2010 22:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Илья Ермаков писал(а):
Host не нужен для консольной работы каркаса.

Это как, без реализации-то? А если нужно статически связывать в библиотеку?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 29 Апрель, 2010 22:52 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9162
Откуда: Россия, Орёл
Ну так нет статических зависимостей на Host.

Вот возможный комплект файлов для неграфического ББ:
Цитата:
"Text/Rsrc/Strings.odc"
"Text/Code/Views.ocf" "Text/Code/Setters.ocf" "Text/Code/Rulers.ocf"
"Text/Code/Models.ocf" "Text/Code/Mappers.ocf" "Text/Code/Controllers.ocf"
"Text/Code/Cmds.ocf"

"System/Rsrc/Strings.odc"
"System/Code/Windows.ocf" "System/Code/Views.ocf"
"System/Code/Strings.ocf" "System/Code/Stores.ocf" "System/Code/SMath.ocf"
"System/Code/Services.ocf" "System/Code/Sequencers.ocf" "System/Code/Properties.ocf"
"System/Code/Printing.ocf" "System/Code/Printers.ocf" "System/Code/Ports.ocf"
"System/Code/Out.ocf" "System/Code/Models.ocf" "System/Code/Meta.ocf"
"System/Code/Mechanisms.ocf" "System/Code/Math.ocf" "System/Code/Log.ocf"
"System/Code/Integers.ocf" "System/Code/Init.ocf"
"System/Code/In.ocf" "System/Code/Fonts.ocf" "System/Code/Files.ocf"
"System/Code/Documents.ocf" "System/Code/Dialog.ocf" "System/Code/Dates.ocf"
"System/Code/Converters.ocf" "System/Code/Controls.ocf" "System/Code/Controllers.ocf"
"System/Code/Containers.ocf" "System/Code/Config.ocf"

"Std/Rsrc/Strings.odc" "Std/Code/Stamps.ocf" "Std/Code/Scrollers.ocf"
"Std/Code/Log.ocf" "Std/Code/Loader.ocf"
"Std/Code/Links.ocf" "Std/Code/Interpreter.ocf" "Std/Code/Headers.ocf"
"Std/Code/Folds.ocf" "Std/Code/Dialog.ocf"
"Std/Code/Debug.ocf" "Std/Code/Coder.ocf" "Std/Code/Cmds.ocf"
"Std/Code/CFrames.ocf" "Std/Code/Api.ocf"

"Obx/Code/Random.ocf"

"Comm/Code/V24.ocf"
"Comm/Code/TCP.ocf" "Comm/Code/Streams.ocf"


Всё это хозяйство будет работать, на обоих ОС, за исключением всяких команд открытия на экране, получения фокуса и т.п. Можно открывать odc, и проч.

Из заглушек...
Обязательно надо реализовать и инсталлировать Fonts.Directory (пустую реализацию), там что-то из Text к нему обращается.
Можно реализовать Log.LogHook (если будете выводить через модуль Log) и Dialog.ShowHook.
Ну, ещё, если нужны Dates, то для них тоже воткнуть разъёмы.

Конечно, Init переписывается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 29 Апрель, 2010 23:12 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2933
Откуда: г. Ярославль
Роман М. писал(а):
Итого - для работы с файлами текстового представления нужен GUI. Опа! Приехали. :twisted:
Ну, если под "текстовым представлением" понимать TextViews, тогда да :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 29 Апрель, 2010 23:33 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9162
Откуда: Россия, Орёл
И тогда - нет.
Вы будете открывать ODC - и соврешенно спокойно столкнётесь и обработаете этот TextView.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 30 Апрель, 2010 06:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8209
Откуда: Троицк, Москва
По-моему, вполне возможно (и даже не особо трудно) сделать затычки, которые позволят минимально работать с odc в чисто текстовом режиме. Вьюшки представлять особым символом, типа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 01 Май, 2010 12:18 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
С Texts понемногу буду разбираться по данным советам.

Тем временем, провожу обзор возможности переноса разных модулей и готовлю наподобие отчёта по способам реализации.
Кто-нибудь имеет понятие, можно ли совместно использовать петлю обработки сообщений от пользователя с API X Window, а отрисовку виджетов отдать другой библиотеке (GTK+, Qt, ...)? Или это будет означать - делать через одно место? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 09 Сентябрь, 2010 15:58 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 349
Откуда: Украина, Днепропетровская обл.
Димыч, а Вы не рассматривали в качестве альтернативы X11/GTK/Qt для переноса графической подсистемы BlackBox под линукс такую вещь, как SDL (http://www.libsdl.org) (что ближе к X11) и, в частности, SDL_gui или другие поверх SDL (их здесь довольно много: http://www.libsdl.org/libraries.php) (что ближе к Qt/GTK/wx). Возможно, это менее трудоёмкий вариант, чем работа с чистым X11 без обёрток, и близкий к линуксам, наряду с Qt/GTK, ибо сама библиотека SDL проста, переносима и уже давно используется для разработки игр и графических приложений под самые разные платформы. Естественно, для нас она ценна не более чем подложка, на которой всё остальное придётся отрисовывать, но посмотрите всё же в эту сторону.

Сам я мечтаю о консольном IDE для Компонентного Паскаля, а ля TurboPascal/FreePascal IDE. Интересно, насколько трудоёмко портировать TurboVision на КП?

Здесь на форуме есть люди, которые потихоньку сделали себе интерфейсную часть к SDL http://forum.oberoncore.ru/viewtopic.php?f=2&t=314&hilit=SDL и ею пользуются и поделиться не спешат (или я плохо искал, или кто-то http://forum.oberoncore.ru/viewtopic.php?f=47&t=2019&p=37582&hilit=SDL#p37582 плохо просил?). Неплохо бы их подружить.

Господа, я предлагаю не зажимать такие вещи и делиться ими, и чтобы они лежали все по возможности в одном месте. Димыч проделал неплохую работу для портирования ББ под линукс. Можно же складировать решения не только в закрытом SVN OberonCore, но и на открытом сайте http://oberonrevival.sourceforge.net? Тем более уже создан неплохой для этого задел. Димыч, Вы согласны размещать там исходники готовых и полуготовых библиотек (и интерфейсных обвязок вокруг готовых библиотек)? :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 10 Сентябрь, 2010 07:56 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Как интересно переплелись два последних сообщения :)
Oleg N. Cher писал(а):
Димыч, а Вы не рассматривали в качестве альтернативы X11/GTK/Qt для переноса графической подсистемы BlackBox под линукс такую вещь, как SDL

Не рассматривал.
Сейчас по прошествии времени могу сказать, что дело не в ГУИ библиотеке, которая будет в основе "BB-on-Linux".
Сделать привязку [к любой библиотеке] относительно не сложно, тем более, что библиотеки доросли до автогенерации (QtScript или Doxygen-документация в wxWidgets 2.9). Сложно переделать модель, в которой работает программа. Вы вынуждены использовать механизмы, заложенные в библиотеку. А вот это уже совсем другая песня.

Роман М. писал(а):
Кто-нибудь имеет понятие, можно ли совместно использовать петлю обработки сообщений от пользователя с API X Window, а отрисовку виджетов отдать другой библиотеке (GTK+, Qt, ...)? Или это будет означать - делать через одно место? :)
Это действительно будет через одно место.
ББ внутри себя рассчитывает видеть виндовый цикл сообщений, из которого вызываются процедуры. ГУИ библиотеки же построены по другому принципу. Им callback подавай или сигналы (читай указатели на процедуры). В теории скрестить это несложно, тем более, что это все локализовано в Host-подсистеме. В практике же Host-подсистему придется переписывать с нуля.
И вот это - переписывание, а точнее сказать, перепроектирование - и есть, собственно, задача. Библиотека же в этом смысле, вторична. Хоть SDL, хоть wx, хоть qt. Если есть понимание, как работает библиотека, как ее обработчики получают управление, да если есть понимание, как это переложить на высокоуровневые вызовы ББ - считайте делом техники получить работающую систему.
Oleg N. Cher писал(а):
Господа, я предлагаю не зажимать такие вещи и делиться ими, и чтобы они лежали все по возможности в одном месте. Димыч проделал неплохую работу для портирования ББ под линукс. Можно же складировать решения не только в закрытом SVN OberonCore, но и на открытом сайте http://oberonrevival.sourceforge.net? Тем более уже создан неплохой для этого задел. Димыч, Вы согласны размещать там исходники готовых и полуготовых библиотек (и интерфейсных обвязок вокруг готовых библиотек)? :D
Согласен, если размещать буду не я. У меня сейчас, к сожалению, на это нет времени и сил. Мои контактные данные есть, можем по этому вопросу пообщаться дополнительно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 10 Сентябрь, 2010 11:36 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Димыч писал(а):
Это действительно будет через одно место.
ББ внутри себя рассчитывает видеть виндовый цикл сообщений, из которого вызываются процедуры. ГУИ библиотеки же построены по другому принципу. Им callback подавай или сигналы (читай указатели на процедуры). В теории скрестить это несложно, тем более, что это все локализовано в Host-подсистеме. В практике же Host-подсистему придется переписывать с нуля.
И вот это - переписывание, а точнее сказать, перепроектирование - и есть, собственно, задача. Библиотека же в этом смысле, вторична. Хоть SDL, хоть wx, хоть qt.

Ой, а таки давайте не будем мешать SDL и X11 с wx и qt в одну кучу, а? Это принципиально разные штуки.
В SDL и X11 в своей программе ты сам организуешь цикл сообщений, также как и Win32API-приложении.
SDL и X11 не имеют своих виджетов и не навязывают каких-либо высокоуровневых парадигм. В этом плане они очень гибки.

wx, qt, gtk -- это гуйно-фреймворки, с виджетами, каллбэками, оборачивающие цикл сообщений в свой API. С высокоуровневыми подходами, которые навязываются программисту (что хорошо, если лепишь типовое приложение, и что ужасно если нужно сделать нечто о чем создатели либы не подумали).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 10 Сентябрь, 2010 11:45 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Роман М. писал(а):
Кто-нибудь имеет понятие, можно ли совместно использовать петлю обработки сообщений от пользователя с API X Window, а отрисовку виджетов отдать другой библиотеке (GTK+, Qt, ...)? Или это будет означать - делать через одно место? :)

В иксах на одном окошке могут рисовать и вообще получать сообщения, сразу несколько приложений. Быть может это вам поможет ;-)

Вообще, можно тут множество всяких схем придумать. Например легко пропатчить сам Qt, или xlib чтобы воткнуться между иксами и qt.

Но я не вижу во всем этом высшего смысла. Отрисовка виджетов -- одна из самых простых вещей. Много интересней их поведение, реакция на события, расположение и т.д. и т.п. Это примерно как синтаксический анализ при написании компилятора. Синтаксис виден всем и кажется, что если уж научился распозновать грамматику, то всё. Компилятор на 80 процентов написан. Однако это совсем не так. Так и тут -- внешний вид и отрисовка это самая простая, хоть и самая заметная для неопытного программиста, часть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 13 Сентябрь, 2010 06:24 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Alexey Veselovsky писал(а):
Димыч писал(а):
И вот это - переписывание, а точнее сказать, перепроектирование - и есть, собственно, задача. Библиотека же в этом смысле, вторична. Хоть SDL, хоть wx, хоть qt.

Ой, а таки давайте не будем мешать SDL и X11 с wx и qt в одну кучу, а? Это принципиально разные штуки.
Может я неверно выразился.
Я хотел донести мысль о том, что основная задача состоит в том, что Host-подсистема должна быть переписана с нуля в любом случае, даже если идеология (X vs Win32, например) будет совпадата. А для переписывания нужно ее сначала спроектировать, с оглядкой на ту библиотеку, которая будет использована (или написана). Во всяком случае, этот тот урок, который вынес я из портирования: основные проблемы лежат на более высоком уровне, чем конкретные вызовы функций.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 25 Сентябрь, 2010 19:49 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Интерфейсные модули для иксов на Обероне уже были написаны и применялись для VisualOberon’a. Собрал их по примеру модуля WinApi и предлагаю для тестирования. Похоже, что авторы делали их конвертером. Кривизны я тоже, наверно, добавил. В первую очередь надо обратить внимание на флаги подгружаемых библиотек. Оставил их незаполненными или вписывал имена тех модулей, из которых взята процедура. У меня Wine не установлен, поэтому, ничего проверить не могу. Если не затруднит того, кто станет его допиливать, просьба отписаться здесь, как что получится и сообщить об исправлениях.


Вложения:
LinApi.zip [43.23 КБ]
Скачиваний: 220
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 26 Сентябрь, 2010 10:17 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Проверил код, не компилируя, и заметил отсутствие системных флагов [noalign] в описаниях типов записей и массивов.

А без примера даже тестировать не на чём, хотя есть такая возможность.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 26 Сентябрь, 2010 14:01 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Странно. Под Windows компилируется нормально. Пример есть в этой теме из FreePascal’я. Его можно переделать. Главное – разобраться с загружаемыми библиотеками.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 26 Сентябрь, 2010 17:25 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Кажется, понял - какую я деталь упустил.

Модуль Х11 использует процедуры из библиотек libX11.so, LibX11Prefix (?), LibX11Suffix (?).

Модуль Xft использует libXft.so, libX11.so, libXext.so, libXrender.so.

Xft2 использует libX11.so, libXrender.so, libfreetype.so, libexpat.so, libz.so.

Xrender использует libXrender.so, libX11.so, libXext.so.

Xv использует libX11.so, libXext.so, libXv.so.

Теперь нужно рассортировать по интерфейсным модулям процедуры из LinApi для каждой библиотеки, и должна получиться система аналогичная Windows-версии с USER32.osf, GDI32.osf и т.д. Учитывая, что для HostWindows нужно только несколько процедур, значит на каждую библиотеку интерфейсного модуля делать не придется.

Теперь остается вопрос – как ВВ запускать? Ведь можно собрать только so-файл, а стандартный пускач требует точку входа. Другой вариант – so-файл, собранный через DevLinker.LinkDynDll, имеет при запуске некоторые свойства исполняемого файла. Может это прокатит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 27 Сентябрь, 2010 09:29 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
id_ler писал(а):
Теперь остается вопрос – как ВВ запускать? Ведь можно собрать только so-файл, а стандартный пускач требует точку входа. Другой вариант – so-файл, собранный через DevLinker.LinkDynDll, имеет при запуске некоторые свойства исполняемого файла. Может это прокатит?

Для запуска программ я готовлю компонент в виде библиотеки libBBox.so, способный динамически запускать скомпилированные модули (.ocf, .osf) как это делает среда BlackBox. Поскольку DevElfLinker не способен на данный момент создавать исполняемые файлы, я готовлю интерфейсную часть загрузчика для внешних средств (каким-либо из компиляторов XDS/GCC/FPC). Так что будет использоваться отдельный загрузчик этого компонента с интерфейсом для командной строки в виде исполняемого файла ELF.
Большей частью всё готово, осталось только наладить механизм обмена сообщениями о статусе загрузки.

id_ler писал(а):
Теперь нужно рассортировать по интерфейсным модулям процедуры из LinApi для каждой библиотеки, и должна получиться система аналогичная Windows-версии с USER32.osf, GDI32.osf и т.д. Учитывая, что для HostWindows нужно только несколько процедур, значит на каждую библиотеку интерфейсного модуля делать не придется.
Перенос на Линукс это нечто большее, нежели просто подготовка интерфейсных модулей для графики X.
Я пока что готовлю почву для работы BB в linux: консольный компилятор уже имеется, динамическая загрузка модулей уже вот-вот будет готова.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 27 Сентябрь, 2010 10:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8209
Откуда: Троицк, Москва
Роман М. писал(а):
Я пока что готовлю почву для работы BB в linux: консольный компилятор уже имеется, динамическая загрузка модулей уже вот-вот будет готова.
Начинаю капать на эту конкретную тему в ЦЕРНе и около (в смысле физиков из стран-участниц).
Быстро это не сработает, но куда-нибудь ввинтиться со временем шанец есть.

Успехов!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 27 Сентябрь, 2010 16:08 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Роман М. писал(а):
я готовлю интерфейсную часть загрузчика для внешних средств (каким-либо из компиляторов XDS/GCC/FPC)
Почти все Оберон-2—инструменты использую Си и, соответственно, компилятор. Можно использовать их или посмотреть интерфейсы.
COP (Oberon; DOS)
OO2C (Oberon-2 -> C; LNX)
XOO2C (Oberon-2 -> C; DOS)
Oxford Oberon-2 (LNX, W32)
O2C (Oberon-2 -> C; LNX)
Ofront (Oberon-2 -> C; LNX)
JACOB (Oberon-2 -> C; LNX)
Ссылки на разработчиков или отдельные файлы могу посмотреть в архиве.

Роман М. писал(а):
Перенос на Линукс это нечто большее, нежели просто подготовка интерфейсных модулей для графики X.
Если Вы о сокетах, то предлагаю подумать о варианте коннектить ВВ и Linux через Самбу. Такое может показаться несерьезным, но, с другой стороны, чем меньше исправлений, тем лучше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 27 Сентябрь, 2010 18:06 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8209
Откуда: Троицк, Москва
Да, надо про XDS тоже не забывать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB