OberonCore https://forum.oberoncore.ru/ |
|
Перевод BlackBox под Linux https://forum.oberoncore.ru/viewtopic.php?f=34&t=1280 |
Страница 8 из 15 |
Автор: | Alexey Veselovsky [ Среда, 25 Март, 2009 11:29 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Димыч писал(а): С точки зрения ГУИ нарисовалась проблема - в GTK нет (штатной) возможности создать MDI приложение. Или я плохо искал. Но как это сделать, я не знаю. Так что придется делать интерфейс с закладками (как в gedit). Ни за что не поверю что в gtk одно окно не может иметь несколько дочерних Руками нужно приделать только заголовок для них (чтобы тягать мышкой можно было) и скроллбары. Вот и MDI в полной красе. |
Автор: | Valery Solovey [ Среда, 25 Март, 2009 11:57 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Закладки - это просто ужас. А зачем MDI вообще нужен? На нём что-то завязано? Если нет, то пусть будут обычные окна. |
Автор: | Alexey Veselovsky [ Среда, 25 Март, 2009 12:00 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Valery Solovey писал(а): Закладки - это просто ужас. А зачем MDI вообще нужен? На нём что-то завязано? Если нет, то пусть будут обычные окна. В BB на MDI завязано всё. Весь интерфейс там MDI. Без MDI либо докинга, с обычными свободно болтающимися окнами будет полный баррдак. |
Автор: | Valery Solovey [ Среда, 25 Март, 2009 12:15 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Докинг - это прилипание? Тоже не нужно. Просто без MDI встаёт вопрос о способе работы с самой средой. Если не пытаться придумать что-то новое, то самым подходящим на данный момент кажется плавающая панелька, как в Delphi. Из неё можно и справку вывести, и новый документ создать. А в config можно задавать её показ при запуске. Достаточно, чтобы она состояла из двух частей: 1. строка заголовка. Стандартный элемент, присутствующий почти у всех окон. За него можно перемещать окно. 2. строка меню. Тоже стандартный элемент. Показывает меню Blackbox. Но без MDI, наверное, немного усложняется навигация, поскольку меню отделено от своих окон, а также усложняется выполнение некоторых команд (например, сравнение текстов), выполняющих действие над двумя последними выбранными окнами. |
Автор: | Борис Рюмшин [ Среда, 25 Март, 2009 12:26 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
MDI в полном смысле в линуксе нет. Эту возможность не поддерживает X-Window. Некоторая эмуляция на тему, вполне удачная, есть в Qt. Без МДИ это выглядит примерно так: верхняя панель с меню в виде полоски и отдельные окна документов. Сам МДИ в ББ... по всей видимости его появлением мы обязаны Макам. Первый ББ создавался под них, а там одно меню вверху экрана на все приложения, которое динамически меняется по конкретику. Поэтому работа в ББ чем-то смахивает на работу с рабочим столом МакОС. Рискну предположить, что использование МДИ было наиболее простым способом переноса среды под Винду. Однако МДИ стал и отдним из препятствих при переносе на Линух. На его особенности многое завязано. Далее. В ГТК собственная система обработки событий, достаточно изощерённая. И связать то, что есть в ББ с этими механизмами (корректно связать!) - не есть простая задача. И ещё одна проблема. Подсистема Хост, в отличии от всего остального, крайне сумбурна. Её по-хорошему следует переписать. В т.ч. и для винды. |
Автор: | Alexey Veselovsky [ Среда, 25 Март, 2009 13:06 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Гм. Разве в X-Window нету дочерних окон? Вроде есть. А больше от него ничего и не требуется. |
Автор: | Trurl [ Среда, 25 Март, 2009 16:37 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Alexey Veselovsky писал(а): Ни за что не поверю что в gtk одно окно не может иметь несколько дочерних Руками нужно приделать только заголовок для них (чтобы тягать мышкой можно было) и скроллбары. Вот и MDI в полной красе. "Чтобы тягать мышкой можно было" тоже нужно руками приделывать. |
Автор: | Alexey Veselovsky [ Среда, 25 Март, 2009 16:57 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Trurl писал(а): Alexey Veselovsky писал(а): Ни за что не поверю что в gtk одно окно не может иметь несколько дочерних Руками нужно приделать только заголовок для них (чтобы тягать мышкой можно было) и скроллбары. Вот и MDI в полной красе. "Чтобы тягать мышкой можно было" тоже нужно руками приделывать. Дык, я же ж написал про загловок За него и тягать. А вот про рамку для этих окон я, кстати, забыл. Помнится я как раз такую штуковину делал. MDI в не MDI окне. Правда под виндой. Но это не важно, ибо от платформы не зависит. Там всё довольно просто. |
Автор: | Пётр Кушнир [ Среда, 25 Март, 2009 17:04 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Развивая идею, можно превратить одно окно(Gtk, Иксы - не важно) в ББ-контейнер(Container) особого типа, который будет эффективно и платформонезависимо содержать в себе меню, и MDI, и хоть чОрта лысого. Опять же, от системы нужен минимум(сообщения), ну и, может быть, механизм вырывания контролов аля CFrames. |
Автор: | Info21 [ Среда, 25 Март, 2009 18:35 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Пётр Кушнир писал(а): Развивая идею, можно превратить одно окно(Gtk, Иксы - не важно) в ББ-контейнер(Container) особого типа, который будет эффективно и платформонезависимо содержать в себе меню, и MDI, и хоть чОрта лысого. Поддерживаю. И это, по-моему, не так уж сложно сделать.Хотя это противоречит исходной "фишке" Блэкбокса: чтобы на каждой платформе сохранялся родной look-and-feel. Так и черт с ней, с фишкой. Какой там look-and-feel на линуксе, вот и будет ... нормальный! |
Автор: | Пётр Кушнир [ Среда, 25 Март, 2009 18:46 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Ну вот для Look&Feel есть CFrames(для тех, кто не в курсе - это такой механизм обёртывания системных контроллов во фрейм ББ, вон, в win-версии так оно и работает(правда, почему-то, не привинтили режим реагирования на "наезд" мыши, т.н. hover, но это дело наживное)). |
Автор: | Борис Рюмшин [ Среда, 25 Март, 2009 22:37 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Alexey Veselovsky писал(а): Гм. Разве в X-Window нету дочерних окон? Вроде есть. А больше от него ничего и не требуется. К сожалению, MDI это далеко не только дочерние окна. |
Автор: | Alexey Veselovsky [ Четверг, 26 Март, 2009 01:03 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Борис Рюмшин писал(а): Alexey Veselovsky писал(а): Гм. Разве в X-Window нету дочерних окон? Вроде есть. А больше от него ничего и не требуется. К сожалению, MDI это далеко не только дочерние окна. Ещё менюшка общая, да. Но это, как и бордюры окон, заголовки, их перемещение и ресайз, вне компетенции X11. |
Автор: | Димыч [ Четверг, 26 Март, 2009 04:49 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Alexey Veselovsky писал(а): Гм. Разве в X-Window нету дочерних окон? Вроде есть. А больше от него ничего и не требуется. Тут есть терминологическая путаница. В Windows есть понятие "child window". Это окно, которое насильно затолкано внутрь родительского окна. Но это - окно, причем самостоятельное. В X Window System правильнее говорить о child widget, т.е. о widget'ах, которые встреных в окно. Заниматься самостоятельной отрисовкой кучи widget'ов - муторное занятие имхо. |
Автор: | igor [ Четверг, 26 Март, 2009 11:11 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Борис Рюмшин писал(а): И ещё одна проблема. Подсистема Хост, в отличии от всего остального, крайне сумбурна. Её по-хорошему следует переписать. В т.ч. и для винды. Я бы отметил ещё одну проблему. Блэкбокс насквозь заражён "вирусом" COM. Чтобы прочувствовать это предлагаю провести такой опыт (разумеется, приняв меры предосторожности):1. В модуле Kernel переименуйте процедуру Release. 2. Исправьте все модули-клиенты, вызывающие эту прцедуру (OleServer). 3. Откомпилируйте исправленные модули. 4. Пересобирите Блэкбокс стандартной командой с динамически загружаемыми модулями. 5. Запустите на исполнение вновь собранный Блэкбокс. И вот тут начнутся чудеса. Error 03. Kernel.Release not found (imported from OleData). 6. Открываем модуль OleData и видим в секции IMPORT, что он вообще не импортирует модуль Kernel. Что тут можно сказать? Это не просто "недокументированная возможность", а грубое нарушение спецификации языка. Интересно, как эти "особенности" учитываются при портировании Блэкбокс под Linux? |
Автор: | Trurl [ Четверг, 26 Март, 2009 11:42 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Alexey Veselovsky писал(а): Дык, я же ж написал про загловок За него и тягать. Тягать можно за что угодно. Но это же надо собственный менеджер окон встраивать. |
Автор: | Илья Ермаков [ Четверг, 26 Март, 2009 18:24 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Игорь Лоскутов писал(а): Что тут можно сказать? Это не просто "недокументированная возможность", а грубое нарушение спецификации языка. Интересно, как эти "особенности" учитываются при портировании Блэкбокс под Linux? Процедура Release относится, как и неск. других процедур Kernel, к обеспечивающим во время выполнения. Пример: Kernel.New, которая динамически связывается с теми местами кода, где вызывается NEW. Release вызывается для объектов COM. А эти объекты описываются в модулях с IMPORT COM (псевдомодуль). Всё локализовано. И любой псевдомодуль компилятора по определению расширяет язык. |
Автор: | igor [ Пятница, 27 Март, 2009 09:36 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Командира! Компилятора -- шайтан, однако |
Автор: | igor [ Пятница, 27 Март, 2009 10:02 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Назначение процедуры Release мне понятно. Непонятно мне другое, зачем надо было так сильно привязывать реализацию Блэкбокс к технологии COM. На уровне компилятора. Котлеты, мухи -- всё в перемешку! Как это разгребать при портировании системы? Кроссплатформенность страдает. "Пополамный полумух", например, использует объектную модель SOM, которая лучше, чем COM. Интересно, в Линукс COM как-нибудь представлена? Ответьте, кто юзает. Если нет, то: Игорь Лоскутов писал(а): Интересно, как эти "особенности" учитываются при портировании Блэкбокс под Linux?
|
Автор: | Илья Ермаков [ Пятница, 27 Март, 2009 12:08 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
В неграфическом плане вообще не мешает... Из ядра выкидывается эта часть. Компилятор вообще можно не трогать. В графике кое-где вплетено, но тоже отслаивается. Графику вообще переписывать надо, подсистему Host. |
Страница 8 из 15 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |